Comments 10
10 лет назад десктопные приложения писали на Си.
Питон и перл — инди-языки.
Sun(!) и Майкрософт сражаются за байт-код.
Читал с ощущением того, что автора только что выпустили из крио-камеры. А потом таки глянул, что оригинал статьи 20-летней давности.
Забавно почитать, но все же тут осталось мало актуального.
А я наоборот удивился, как много актуального в этой статье.
golang писался как снисходительный язык от умных разработчиков для макак с клавиатурами.
rust писался хаккерами для себя.
Уж не лисп ли вы переизобрели?
Статью напишите, что ли.
Спасибо за комментарий! почитал по диагонали в вики про форт. «все определения разделяются пробелами» + символы конца строки — у меня не зарезервированных заранее символов и последовательностей.
《Математические выражения представляются постфиксной записью при использовании стековой нотации.》 — для моего языка это всего лишь один из способов выражения мысли, по сути частный случай, коих можно не мало реализовать, даже в рамках одной программы. Далее 《Структура «типичной» статьи словаря Форта:》 у меня нет никаких типичных структур, и тем более более общих понятий типа: статья, словарь, коды целового процессора, параметры, интерпретатор ссылок, стек возвратов, и тп. и тд. Сегменты кода недоступные для изменения — в моих программах можно переписать все до последнего символа программы во время выполнения (теоретически, не писал пока таких программ). Глубоко не вникал, но в примерах видел if else, сразу мимо. В моем языке такие конструкции выводятся с 0ля.
Немного поясню про 《мой язык》. Классическая тема: вход -> черный ящик -> выход. На входе строка, сформированная по определенным правилам, представляющая из себя последовательность комманд (《вопрос/ответ》), или просто 《вопрос》 или несколько, без ограничений на используемые символы, главное чтобы программист сам понимал что пишет. На выходе тоже строка, того же формата. Черный ящик — это память и 《ядро》, обрабатывающее данные в памяти. Изначально ящик полность пуст. 《Ядро》 это общий закон существования данных в памяти (а коробка по сути это размеченная на блоки память)- разбирает входную строку на комманды и последовательно их выполняет… Пожалуй пока достаточно. Если интересно, единственная программа которую я написал на текущий момент — машина Тьюринга, думаю не нужно объяснять почему. Статью писать пока не планирую, понятия не имею что это может привнести в мою скромную жизнь. Алоха!
На самом деле, из повлиявших на меня авторов (наряду с Джоэлом Спольски, Стивом Йегге, Дугласом Крокфордом и Джеффом Раскиным), он, наверное, повлиял сильнее всех, благодаря своему умению излагать весьма нетривиальные идеи (кстати, не всегда относящиеся к компьютерным делам) четким, понятным, кратким и ясным языком.
Ну а что до актуальности, то в этой статье двадцатилетней давности и сейчас больше актуального, чем устаревшего. Вот эта вот мысль вообще еще долго не устареет: «проектирование языков программирования подобно проектированию стульев: нужно справляться с человеческими слабостями.»
Еще чуть соображений по пунктам:
«4. Краткость — сестра таланта»
Меня МНОГОСЛОВНОСТЬ Джавы просто удручает. И не только меня: в попытках уменьшить ее синтаксическую шумность родился Lombok, да и Котлин, думаю, рождался с этой целью (одной из).
«2. Скорость приходит от профайлеров»
Мне не так уж часто приходилось сталкиваться с преждевременными оптимизациями, настоящей целью которых было выпендриться на code review, но и того, что видел, хватило, чтобы осознать — и действительно, ускоряют там, где и так не тормозит, чаще чем хотелось бы.
«3. Вам нужно приложение, которое заставляет ваш язык развиваться»
Это предложение сейчас выглядит и правда архаично, но двадцать лет назад мы видели, что самые лучшие кустарные программы получались у тех, кто ими сам постоянно пользовался. Может быть, самой известной такой программой стал Emacs.
«Думаю, что эффективность будет иметь значение, по крайней мере в узких местах вычислений. Особенно важным это будет для операций ввода-вывода, потому что серверные приложения производят множество таких операций.»
Теперь мы видим nodejs, golang, Kotlin и еще не готовый Loom — а все это делалось для «эффективности для операций ввода-вывода», в том числе.
«У вас есть браузер на телефоне?»
Сейчас почти каждый может сказать, что да, браузер на телефоне есть.
«Я думаю, что люди в больших компаниях любят ООП, отчасти, потому что оно даёт многое из того, что выглядит как работа. То, что, естественно, может быть представлено как, скажем, список целых чисел, теперь может быть представлено как класс со всеми видами строительных лесов, с шумом и суетой.»
И еще с тестами.
Пять вопросов о проектировании языков программирования