Maksym Prokopov
Personal blog powered by a passion for technology.

Два древних языка, которые нужно изучить программисту

08.01.2019
Reading time: 2 min.

Почему нужно проинвестировать время в изучение двух древних языков 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.