Ruby and Its Neighbors: Smalltalk
Smalltalk оказал значительное влияние на Ruby, хотя его синтаксис практически не перешёл в Ruby. Основное влияние проявилось в объектно-ориентированных принципах, особенно в идее, что все данные являются частью объектной системы. В отличие от Perl, автор статьи работал с Smalltalk несколько лет и считает его одним из любимых языков, хотя вряд ли будет использовать его снова.
Smalltalk возник в Xerox PARC, той же команде, что создала графический интерфейс, Ethernet и лазерный принтер. В 80-90-х годах Smalltalk был коммерческим продуктом (ObjectWorks/VisualWorks), широко использовался в авиационной промышленности и для проектов, лёгших в основу экстремального программирования. В 1995 году бывшие сотрудники Xerox PARC в Apple выпустили Squeak — открытую реализацию Smalltalk, написанную в основном на самом себе, что обеспечило её лёгкую переносимость. В отличие от большинства современных языков, Smalltalk развивался независимо от Unix/C, представляя собой собственную операционную систему с уникальным синтаксисом и интегрированной средой разработки.
Комментарии (124)
- Smalltalk-80 и его наследие: образ системы (image) как способ распространения состояния, но его нет в современных системах, что делает Smalltalk-80 уникальным.
- Проблема в том, что Smalltalk-80 не имеет синтаксиса, который бы соответствовал современным ожиданиям, и это делает его непривлекательным для новых разработчиков.
- Ruby унаследовал объектную модель Smalltalk, но не его среду разработки, что делает Smalltalk-80 уникальным в своем роде.
- Сообщество Smalltalk активно разрабатывает Pharo и другие современные реализации, но они не могут конкурировать с уже устоявшимися языками, потому что не имеют большой экосистемы.
- Проект, который начинал как Smalltalk-80, теперь может быть выжившимся только как встроенный язык в некоторых проприетарных системах.
SmallJS: Smalltalk-80 that compiles to JavaScript
SmallJS — свободная реализация Smalltalk-80, компилирующаяся в JavaScript для браузеров и Node.js.
- v1.7 уже доступна (GitHub).
- Работа ведётся в файлах, а не образах; отлично сочетается с VS Code (подсветка, отладка).
- Используются привычные JS-имена классов и методов; в комплекте обёртки для DOM, Express, БД, потоков.
Быстрый старт — примеры проектов и Todo-приложение.
Хотите помочь? Пишите на info@small-js.org.
Комментарии (34)
- SmallJS вызвал всплеск интереса; автор @Smalltalker-80 откликается на вопросы.
- Проект файл-ориентирован, без образа; VSCode вместо браузерной IDE.
- flavio81 и wild_egg сожалеют о потере «живого» Smalltalk-опыта и сложностях синхронизации образов в Lisp.
- Playground SmallJS компилирует выражения прямо в браузере, но полноценной live-среды нет.
- Упомянуты Amber (застой), Pharo (монолитная VM) и Chrome Workspace для хот-релоада.