Бесконечная эпоха перемен.
sorhed — 14.09.2012 Когда-то в эпоху тёплых ламповых компьютеров люди писали прямо в машинных кодах, пользуясь ассемблером, или даже просто так. Существовали ещё и специализированные языки программирования: фортран, для вычислений, кобол, для бухгалтерии и прочего энтерпрайза, и ещё этот, со скобками. Всякие там PL/1 вспоминать не будем, для экономии времени.И вдруг внезапно появился C — универсальный язык, который сохранил преемственность (можно ковыряться с битами и делать всякие там longjmp ну прям как раньше), и одновременно был языком высокого уровня, с настоящими функциями, аргументами, возвращаемыми значениями, flow control и whatsnot. Это позволило толпам уже имеющихся программистов не ломать мозги над каким-нибудь APL, а сразу же переходить на C, сохранив старые привычки.
Главным конкурентом C, как известно, был паскаль — аккуратный язык высокого уровня, с приличным синтаксисом и швейцарской причёсанностью. Но в нём надо было всецело отдаваться приличному процедурному программированию, без всяких там goto, ковыряний битов и прямых манипуляций с адресами. Короче, переходить в новую парадигму, и народу не понравилось — прагматичная сишечка больше отвечала народным чаяниям.
Через некоторое время история повторилась. В моду очень быстро вошло объектно-ориентированное программирование. И Страуструп тут же надстроил возможности худо-бедно работать с объектами над обычным C, сохранив все его возможности. Язык получился очень странным — сочетать ООП и нетривиальные compile-time вычисления с адресной арифметикой это то ещё развлечение. Зато он предоставил возможность перехода толпам уже существующих программистов на C, и получил огромное распространение. Потом C++ подчистили, добавили (почти) everything is an object, сборку мусора, и виртуальную машину из паскаля и получили Java. На джаве сразу стало можно писать почти как на C++, только проще, но всё равно преемственность сохранилась.
Золотым стандартом же в ООП был Smalltalk, который один реализовывал все возможности парадигмы правильно. Но Smalltalk обладал очень необычным синтаксисом, концепцией image, спёртой из ранее упомянутого языка со скобками, и требовал заметной перестройки мозгов — а C++ позволял плавный переход. Поэтому на смоллтоке писали и пишут лишь редкие энтузиасты, хотя то, что получилось в C++ и Java, можно назвать ООП лишь с большого похмелья.
Теперь у нас новый парадигматический сдвиг — народ начинает вкушать прелести функционального программирования, которое максимум лет через пять окончательно уже войдёт в мейнстрим. И тут как раз появился язык, который позволяет писать как раньше, практически на джаве, но надстраивает поверх этого неплохие средства функционального программирования. Ну, вы понимаете, о чём это я. Язык стремительно набирает популярность, а имеющиеся отдельно более чистые функциональные альтернативы вроде Standard ML и Haskell остаются на обочине истории. Впрочем, под JVM удачно портировали и этот язык со скобочками, который существует в параллельной вселенной и в мой анализ не входит.
Теперь вывод. Если моё понимание исторической перспективы правильно, то именно Scala будет флагманом нового мейнстрима. Это хорошо. Плохо то, что опять получается C++.
|
</> |