Я хотел спросить, как люди будут описывать язык программирования, который в основном описывает поведение программы, а не ее реализацию - т.е.язык, который игнорирует проблемы реализации (например, имеет только один класс или функцию, где другие языки могут иметь разные классы или функции, которые делают то же самое, но разными способами) и вместо этого полностью полагается на автоматическую оптимизацию.
Is "декларативный "правильный термин?"Может быть "преднамеренным"?«Ориентированный на цель» - это термин, который, похоже, тоже имеет аналогичное значение.Может быть, что-то еще.Мне интересно, потому что проект, который я создаю, называется Лима, подходит под это описание (http://www.btetrud.com/Lima/Lima-Documentation.html).Я знаю, что Stack Overflow нравятся вещи, на которые есть ответы, поэтому ответ пойдет на человека с самыми проницательными комментариями.
Мне также интересно, насколько близкие люди думают, что эта идея является идеей Пола Грэма о столетииязык: http://www.paulgraham.com/hundred.html.Мне нравится, что то, что он предлагает делать со строками как списками символов и избавляться от массивов в пользу более общей «хэш-таблицы» (то есть ассоциативного массива), - это то, что я делал в Лиме, когда впервые задумал об этом.
Основные идеи, лежащие в основе lima:
Программирование на основе значений - избавление от любой логики, которая заботится о том, какой "тип" является значением.В Лиме нет типов, а значения - это просто значения.Типы все еще существуют в языке, но только для ограничения того, какие значения может принимать переменная - они не могут изменять, какой метод вызывать, и не определяют объем памяти в значении.
Описательное программирование - то, что я описал выше о языке программирования, который исключает необходимость (и даже возможность) оптимизировать ваш код в самом коде (скорее, оптимизация будет выполняться с помощью автоматических оптимизаторов)
Полная расширяемость языка - возможность писать любые конструкции в языке на самом языке (например, возможность не только переписать функцию 'sin', но и переписать оператор 'if', циклоператоры и создавать собственные DSL, которые можно использовать на языке и в других DSL.