[an error occurred while processing this directive]
Постоянно приходится программировать на :
Си (под х86),
Паскале-Дельфи (под Форточки),
ВБА (довольно навороченные макросы для акада и эксела),
и ... бальзам на душу программиста...
на Форте (под ДОС и 51)
Мое ИМХО.
Первые три отличаются только в синтаксических конструкциях (что, не скрою, сильно раздражает), да названиями сходных функций (что раздражает еще больше :). В целом же, остаются детишками постфиксной нотации. А постфиксная нотация, принципиально не совместима с "компьютерной логикой", которой сначала надо операнды дать, а уж потом операцию с ними проводить. Вот и упражняются уважаемые компиляторо-писатели над парсингом конструкций типа:
x = (2 + 3)*4;
или не дай бог:
x := (2 + 3)*функция_которая_возращает_целое()
и т.д.
Отсюда же растут ноги (или что там у них) остальных атавизмов, прежде всего типов данных и указателей на них. (Ведь надоже компилятору знать вызов какой функции умножения компилировать - для integer, double или float...
Однако сколько веревочке не виться все прийдет к одному - операнды один за другим лягут на стек (в виде литералов или адресов памяти) и долгожданным call функция_которая_все_это_разгребет (или схлопочет General Protection Error если компилятор не понял всю глубину ваших глубин :-) Шучу.
Но есть и другая концепция. Это Форт... :-)
В нем нет типов данных... и вообще нет никаких ограничений - твори программист, и компилятор не будет тебе мешать вывести долгожданное Hello World на экран... чужого компьютера :-)
Тот же пример на Форте:
2 3 + функциz_которая_возращает_слово * x !
Согласитесь, парсинг такого выражения - тривиальная задача :)
Заканчиваю затянувшийся пост. Просто хотелось зародить в Вас сомнения.
:-)
Для тех кто дочитал - в следующем посте приведу пример на форте.
E-mail: info@telesys.ru