Если есть хоть какая-то специфика предметной области, функции/классы/методы рационально писать свои чтобы не повторять код в каждом конкретном месте. Вопрос — почему макросы настолько отличаются от функций, что нельзя писать свои.
Лисперы говорят, что к скобочкам привыкаешь и через некоторое время начинаешь сквозь них видеть семантику так же как и на других языках. Вы пробовали? Опишите свои ощущения.
Тут вы правы — я совершеннейшее быдло с быдлозадачами. Мой поинт не в том что ЛИСП синтаксис — манна небесная для всех, а в том, что нельзя сказать что ЛИСП фигня на основании того, что быдлокодеру первые десять минут в нем непривычно. Чтобы понять, так это или не так, надо:
во-первых, испытывать его на небыдлокодерских задачах
во-вторых, дать себе некоторе время привыкнуть к такому подходу
По поводу LISP — не только слышал о нём, но и изучал некоторое время.
Тогда зачем называть синтаксис «как ни у кого». Лисп создавался в 50е.
По поводу неважности синтаксиса — это выражение из той же серии что «главное — это душа».
Кстати, заметил, что при длительном общении с женщинами привыкаешь со временем к каким-то внешним особенностям и перестаешь их видеть.
Безусловно, семантика важнее внешнего вида языка, но ломать себе голову пытаясь читать ужасное скопление символов ради не очень понятно чего — тоже не дело.
Не «ужасное» а «непривычное».
Возможность создавать свои eDSL можно реализовать и в си-подобном синтаксисе, не так ли?
Есть, например, Nemerle. Но если синтаксис кода отличается от синтаксиса списка, то, если хочется использовать все функции накопленные для обращения со списками, применять постоянно какие-то преобразования.
Простым синтаксисом достигается унификация и уменьшение количества частных случаев, которых надо рассматривать.
Чорт, мне придется пересмотреть свои взгляды. Я думал, это Hello, world появляется так же при некотором посредничестве операционной системы, аппаратуры и прочего, с которыми интерпретатор общается на каком-то языке. Оказывается, интерпретатор все делает сам :)
В скобках то главная сила и заключается. Кстати, я давно уже вывел критерий, как плохого программиста от хорошего отличить: плохой программист заморачивается синтаксисом, а хорошему на синтаксис наплевать, он интересуется только семантикой.
Главная фича скобочек — это то, что ты программируешь в чистом AST. Соответственно, ты так же легко можешь программно код прочитать и код сгенерить — и это и есть наиболее мощная разновидность метапрограммирования.
> результат работы самой интерпертируемой программы.
Программа-интерпретатор написана в терминах какого-то языка: машинного кода, API ОС другого. Соответственно она транслирует искодный язык в выходной. А действия получаются в результате интерпретации этих вызовов нижележащими слоями.
Я так понял, что автор опирается на книжку по редкому языку, которая ссылается на статью Ершова в части определений. Не очень понятно, где именно у Ершова даны эти определения oberon2005.oberoncore.ru/classics/ae1977.pdf не могли бы вы уточнить? Я там вижу в начале слово трансляция, причем оно не определяется, а рассказывается о его свойствах.
С моей классификацией согласны русская и английская википедии, и точно помню, что в советском учебнике информатики было так же.
Мне кажется, также, что сами термины имеют англоязычные корни и английские значения слов ближе к моей версии.
Перечитайте статью в википедии. Транслятор вообще любой переводчик из одного языка в другой. Интерпретатор — частный случай транслятора когда перевод осуществляется символ за символом — то есть выполнение по мере разбора. Компилятор, когда переводит целиком.
Там где-нибудь написано «Ни в коем случае не давать альтернативный способ входа, если не сработал основной, как, например, сделано в Windows»?
И вообще понимать, зачем, откуда, что и к чему.
Тогда зачем называть синтаксис «как ни у кого». Лисп создавался в 50е.
Кстати, заметил, что при длительном общении с женщинами привыкаешь со временем к каким-то внешним особенностям и перестаешь их видеть.
Не «ужасное» а «непривычное».
Есть, например, Nemerle. Но если синтаксис кода отличается от синтаксиса списка, то, если хочется использовать все функции накопленные для обращения со списками, применять постоянно какие-то преобразования.
Простым синтаксисом достигается унификация и уменьшение количества частных случаев, которых надо рассматривать.
То есть как только мы используем виртуальную машину у нас компилятор перестает быть компилятором при этом ничуть не изменившись?
Чорт, мне придется пересмотреть свои взгляды. Я думал, это Hello, world появляется так же при некотором посредничестве операционной системы, аппаратуры и прочего, с которыми интерпретатор общается на каком-то языке. Оказывается, интерпретатор все делает сам :)
Это, я думаю, вы просто не очень интересуетесь языками программирования, раз не знаете про LISP.
Прочитайте про макросы LISP — возможность создавать свои eDSL.
Процитирую классику
Программа-интерпретатор написана в терминах какого-то языка: машинного кода, API ОС другого. Соответственно она транслирует искодный язык в выходной. А действия получаются в результате интерпретации этих вызовов нижележащими слоями.
его можно рассматривать как
Translator — переводчик ( slovari.yandex.ru/translator/en-ru )
Interpreter — устный переводчик ( slovari.yandex.ru/interpreter/en-ru )
> В таком случае перевод во что мы осуществляем?
В машинный код (в форме вызова предзаписанных его кусочков) так же как устный переводчик представляет целевой языке в виде звуковых волн.
Процессор, вероятно, переводит машкод в электрические сигналы на его выводах.
С моей классификацией согласны русская и английская википедии, и точно помню, что в советском учебнике информатики было так же.
Мне кажется, также, что сами термины имеют англоязычные корни и английские значения слов ближе к моей версии.