MMXXII, или 2022 год, был 50-летием языка программирования Smalltalk. Для этого сообщество Smalltalk в течение года провело несколько праздничных мероприятий…

В феврале мы провели JRMPC 2022, The 50th Anniversary Edition.

В июне мы провели Camp Smalltalk Supreme в Торонто, Канада.

В сентябре мы провели мероприятие Создание Smalltalk в Музее компьютерной истории в Маунтин-Вью, Калифорния. (Прокрутите вверх страницы.)

В ноябре мы провели Smalltalks 2022 в Буэнос-Айресе, Аргентина, организованную FAST.

В следующих видеороликах кратко излагаются события:

Это были сказочные торжества. Какой еще язык программирования получил такое признание за свою долговечность и вклад в ИТ-индустрию?

Почему Смолток?

Есть три основные причины долговечности Smalltalk:

  1. Необычайная и уникальная простота и элегантность синтаксиса. В Smalltalk есть все шесть зарезервированных слов. Его полный синтаксис можно кратко изложить на открытке. Можно полностью выучить язык Smalltalk за 15 минут, чего нельзя сделать с другими столь же популярными языками, такими как Python и Go.
  2. Чистота, непротиворечивость и масштабируемость объектно-ориентированной модели Smalltalk. Благодаря этим замечательным качествам Smalltalk вдохновил на создание многих других объектно-ориентированных языков, таких как Objective-C, Ruby, Python, CLOS ( Common Lisp Object System) и Java.
  3. Огромная производительность благодаря возможности «живого программирования» в Smalltalk. Живое программирование в очень упрощенной графической среде, поощряющей игривость, — вот причина, по которой Smalltalkеры пишут приложения за долю времени, которое потребовалось бы в большинстве современных популярные языки (Python, Java, C++, C#, JavaScript).

Этот последний пункт чрезвычайно важен, потому что одной из основных проблем, с которыми сталкивается сегодняшняя ИТ-индустрия, являются затраты времени и денег на производство программного обеспечения. Время и деньги в виде затрат на рабочую силу и время в виде «время выхода на рынок» (вывод продукта на рынок как можно быстрее).

Как часто предприятия пытаются уложиться в критические сроки? Какая часть финансирования стартапов уходит на оплату труда? Я столкнулся с обеими проблемами, работая в ATI Technologies (теперь AMD), а также в различных стартапах в районе Торонто.

Capers Jones в 2017 году опубликовали исследование, в котором сравнивалась продуктивность различных языков программирования. Вот рисунок, на котором показаны некоторые языки:

Smalltalk значительно производительнее любого из самых популярных языков.

Объектно-ориентированная модель Smalltalk — это еще одна вещь, на которую я хочу обратить ваше внимание. Это очень чисто и просто, и оно основано на понятии объектов как «программных серверов», которые взаимодействуют друг с другом, передавая «сообщения» через «программный Интернет». Именно по этой причине Smalltalk так легко масштабируется. Вот как об этом думал Алан Кей:

«Интернет был сделан настолько хорошо, что большинство людей думают о нем как о природном ресурсе, таком как Тихий океан, а не о чем-то, что было создано руками человека. Когда в последний раз технология с такой шкалой была настолько безошибочной?»
Алан Кей во время интервью с Аланом Бинстоком из Dr. Dobb’s Journal

Объектно-ориентированное программирование в Smalltalk отличается от того, что вы делаете в C++ или Java, которые рассматривают объекты как абстракции статических данных. Программирование на языке Smalltalk является чистым и свободным от посторонних концепций, таких как дружественные функции, модификаторы доступа, интерфейсы, перегрузка и т. д. Живое программирование также добавляет совершенно новое измерение.

Живое программирование означает, что объекты бесконечно отражаемы (все их свойства во время выполнения могут быть запрошены), код и данные могут быть изменены на лету, а цикл редактирования-компиляции-тестирования-отладки практически исключен, что повышает вашу производительность. Объекты по сути являются живыми, дышащими существами.

Вотум доверия

Когда Stack Overflow предложил Smalltalk в качестве выбора в своем опросе 2017 года, он был признан вторым самым любимым языком программирования после Rust.

По непонятной причине Stack Overflow впоследствии больше не предлагал Smalltalk в качестве выбора, любопытное упущение.

Универсальность домена

Smalltalk так же универсален, как и любой из основных языков программирования. Его можно использовать для веб-разработки, науки о данных, машинного обучения, робототехники, Интернета вещей, мобильной разработки, корпоративных вычислений, промышленного контроля, виртуальной реальности и т. д. Его экосистема предоставляет все виды инструментов, таких как веб-фреймворк Seaside, вычислительная библиотека PolyMath, привязки TensorFlow, платформа PharoThings и платформа виртуальной реальности Open Croquet (коммерческая версия которой является основой для 3DICC).

Французский оборонный подрядчик Thales широко использовал Pharo (Smalltalk с открытым исходным кодом) для разработки виртуальной реальности:

Коммерческий против открытого исходного кода

Smalltalk доступен как в коммерческой версии, так и в версии с открытым исходным кодом. Если вам нужна надежная коммерческая поддержка, есть три основных коммерческих Smalltalk: VAST от Instantiations, GemStone/S от GemTalk Systems и VisualWorks от Cincom. Если вы предпочитаете открытый исходный код, Pharo — лучший выбор, но вы также можете воспользоваться другими, более специализированными Smalltalk, такими как Amber Smalltalk (для веб-браузера), Squeak (в основном для обучения), Cuis Smalltalk (для поклонников Smalltalk-80), Dolphin. Smalltalk (специально для Windows) и GNU Smalltalk (для любителей командной строки).

Мои личные рекомендации: Инстантиации VAST и Pharo. На мой взгляд, это самые активно внедряемые Smalltalks.

У Pharo также есть специальная версия для веб-браузера под названием PharoJS, и я считаю, что это лучший вариант для фронтенд-разработки, включая мобильную разработку с использованием фреймворка Apache Cordova.

Общие рекомендации

Единственный способ оценить мощь программирования на языке Smalltalk — это использовать язык Smalltalk. Никакое количество литературы и видео не заменит практический опыт. Поэтому я настоятельно рекомендую провести пилотный проект с использованием Smalltalk. Попробуйте и сравните результаты с другими подобными проектами, выполненными на Python или Java.

Ради интереса я поиграл с Smalltalk на Raspberry Pi, чтобы создать приложение IoT. Я также создал несколько веб-серверов для своих друзей, используя веб-фреймворки Seaside и Teapot. Я полагаю, что, по крайней мере, вы можете использовать Smalltalk для одного-двух хобби-проектов. Кто знает, может быть, это откроет вам глаза на целый новый мир возможностей.

Важно иметь в виду, что двадцать лет назад Python был относительно незначительным языком. Но где-то в начале 2010-х люди начали экспериментировать с языком для целей науки о данных и оценили его удобство для пользователя. По мере того, как все больше людей пробовали его, экосистема росла, и оттуда популярность Python росла как снежный ком.

Попробуйте Smalltalk. Молния может ударить дважды! Вы будете вознаграждены простотой использования, низкой когнитивной нагрузкой и огромной продуктивностью программирования.