Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!

Присутствующие разделили сожаление по поводу распространения в качестве фактического стандарта крайне неудачного языка программирования «Си»
И гости, и хозяева согласились с неразумностью использования каких-либо операционных систем в системах реального времени. Именно исключение операционной системы профессор Вирт считает своей основной заслугой при проектировании программного обеспечения беспилотного вертолёта.
Замечу раньше уровень программирования был значительно выше и сомневаться в качестве реализации не вижу смысла.
слишком уж кривые классические реализации (Java, С#)
но это не сборка мусора, а принципиально другой подход (ООП
, сказав что значением функции является значение ее последнего выражения.
А критерии очень простые, многократно описаны в работах классиков и годятся для любого языка:
— По возможности сжатость (иначе можно писать на ассемблере).
— По возможности понятность.
— Возможность разделить работу между исполнителями.
— Возможность применить написанное в новых проектах.
Но вот взять хотя бы простую задачу: «разработать алгоритм сортировки произвольной линейной структуры данных, в которой хранятся объекты пользовательского типа, для которой определены операции доступа по индексу, а объекты сравнимы операцией „меньше“».
Классический способ — экспортировать тип и операцию сравнения из модуля и работать с ними. Не знаю, реализуемо ли это на Oberon, очень давно на него смотрел.
Ну почему же, это решение необязательно намекает на C++. Это можно совершенно без напряжений сделать на Python и на массе других языков
Наиболее мощные средства построения абстракций — макросы, функции высшего порядка, параметрический полиморфизм — в Oberon «вне закона». Даже ООП ограничено и модули не параметризуемы.
Ну или переписать весь язык с нуля, да.
По поводу молотка — я вот думаю, что дело обстоит как раз наоборот, обобщённое программирование и итерация по коллекции значительно снижают вероятность ошибок. Потому что без обобщённого программирования я должен заново реализовывать библиотечные алгоритмы, а без итерации по коллекции могу перепутать индексы.
Апдейт стандарта раз 13 лет — разве это часто?
T = RECORD END;T1 = RECORD (T)
field: AbstractType
END;Однако жизнь показала, что идея эта нежизнеспособна, потому что сложные понятия требуют сложного языка. И даже те языки, которые начинались как «простые» (вроде тех же C# и Java), сейчас по сложности стремительно догоняют C++.
То есть Lisp предлагает управлять сложностью, а не бежать от нее.
Это дает низкий уровень вхождения, но совершенно бесполезно при разработке больших систем.
Python я бы не назвал слишком простым языком. В него легко войти, но встроенных средств в него заложено очень немало. К тому же предположу, что рано или поздно и там начнутся добавления, потому что будет «почему Вася может написать на своём языке Х, а я не могу?»
Да и у Питона свои недостатки (которые являются продолжениями его достоинств) — интерпретация, динамические типы. Не всегда я им рад.
Никлаус Вирт: 80-летие классика программирования