История изменений
Исправление den73, (текущая версия) :
Обобщая, кажется, я нащупываю, в чём корень проблемы.
С концептуальной точки зрения тикль кажется гениально хорошим: в нём всего один тип данных, причём тот, который наиболее удобен для пользователя, а именно, строка. В апологии особенно подчёркивается, что в Си «всё - это число», и это менее удобно, чем «всё - это строка». А в лиспе есть разные типы данных, поэтому он не в той же степени сведён к минимальному набору аксиом, сложнее и МП в нём тоже сложнее. Это вроде похоже на правду - в лиспе есть отдельно функции и отдельно макросы, а в тикле - только одни команды, при этом МП в тикле не менее мощное.
Но на практике при программировании упираешься в то, что тикль ведёт себя неожиданно и зачастую подводит.
Как так? В какой момент было допущено повреждение столь кристально ясной идеи?
Моя текущая гипотеза на данный момент состоит в том, что недостатки тикля являются следствием того, что он сверх-мощен, и его авторы не смогли сладить с этой мощью.
Каждая команда тикля, в т.ч. встроенная - это новый полный DSL. Сам тикль только лишь подготавливает аргументы по единым правилам, а что внутри аргументов - дело самой команды. И эти DSL-и не совсем точно синхронизированы между собой. Отличия между ними - обычно тонкие, которые в спешке легко не заметить и проскочить. Например, _почти_ каждая строка без пробелов - это список из одного элемента, но не каждая. Синтаксис индексов массивов - почти такой же, как у аргументов в командной строке, но чуть другой. Конкатенация строк похожа на сложение списков. Наверняка каждая такая аномалия оправдана. Но в сумме получается грязновато.
Исходная версия den73, :
Обобщая, кажется, я нащупываю, в чём корень проблемы.
С концептуальной точки зрения тикль кажется гениально хорошим: в нём всего один тип данных, причём тот, который наиболее удобен для пользователя, а именно, строка. В апологии особенно подчёркивается, что в Си «всё - это число», и это менее удобно, чем «всё - это строка». А в лиспе есть разные типы данных, поэтому он не в той же степени сведён к минимальному набору аксиом, сложнее и МП в нём тоже сложнее. Это вроде похоже на правду - в лиспе есть отдельно функции и отдельно макросы, а в тикле - только одни процедуры, а МП в тикле не менее мощное.
Но на практике при программировании упираешься в то, что тикль ведёт себя неожиданно и зачастую подводит.
Как так? В какой момент было допущено повреждение столь кристально ясной идеи?
Моя текущая гипотеза на данный момент состоит в том, что недостатки тикля являются следствием того, что он сверх-мощен, и его авторы не смогли сладить с этой мощью.
Каждая команда тикля, в т.ч. встроенная - это новый полный DSL. Сам тикль только лишь подготавливает аргументы по единым правилам, а что внутри аргументов - дело самой команды. И эти DSL-и не совсем точно синхронизированы между собой. Отличия между ними - обычно тонкие, которые в спешке легко не заметить и проскочить. Например, _почти_ каждая строка без пробелов - это список из одного элемента, но не каждая. Синтаксис индексов массивов - почти такой же, как у аргументов в командной строке, но чуть другой. Конкатенация строк похожа на сложение списков. Наверняка каждая такая аномалия оправдана. Но в сумме получается грязновато.