Почему нужно проинвестировать время в изучение двух древних языков Lisp и SmallTalk?
Я уверен, что это сделает вас на шаг ближе к стадиям развития специалист и эксперт.
Nikita Prokopov сделал отличный talk о стадиях компетентности программиста. Идея в том, что каждый программист на своем пути развития проходит пять стадий развития:
Никита ближе к концу доклада на примере собственного опыта сравнивает два языка: Java и Clojure и выдвигает предположение о том, что Java хорош для новичков, а Clojure это глоток свежего воздуха для уставших опытных программистов.
Интересно отзывается о Java создатель SmallTalk, легендарный Alan Kay, – «Java монополизировала термин Объектно-Ориентированный и совершенно зря«.
Идеи заложенные SmallTalk сильно опередили свое время, а своевременность это решаюший фактор для успеха. Вы только подумайте, в конце 70х SmallTalk изобрел концепции:
Концепция виртуальной машины, и это до JVM. Платформонезависимый код. Программа на SmallTalk распространяется как Image со всеми объектами и сохраненным состоянием, аналог Docker имаджей. Объектно-Ориентированный подход в его чистом виде, классы, объекты, методы. IDE как часть runtime среды. Такой IDE нет до сих пор ни у одного из известных мне языков программирования. Refactoring через IDE. Test Driven Development, подход которое впоследствии сделает более популярным DHH, создатель Ruby on Rails. Реализации TDD удобнее, чем SmallTalk я не встречал. Transcript – REPL, то есть интерактивную консоль, песочницу, аналог irb из ruby. Анонимные функции — блоки. Идеи SmallTalk были адаптированы в последствии в Java, Ruby, Objective C и массе других более коммерчески успешных языков программирования, но все они отличаются.
Трагедия SmallTalk – это маркетинговый провал, целая индустрия могла пойти другим направлением и быть лучше, чем сейчас.
Я уверен, что по-настоящему выдающиеся языки содержат правильные фундаментальные концепции, минимум синтаксиса и максимум гибкости и эффективности. Такими языками несомненно являются Lisp и SmallTalk.