MMXXII, или 2022 год, был 50-летием языка программирования Smalltalk. Для этого сообщество Smalltalk в течение года провело несколько праздничных мероприятий…
В феврале мы провели JRMPC 2022, The 50th Anniversary Edition.
В июне мы провели Camp Smalltalk Supreme в Торонто, Канада.
В сентябре мы провели мероприятие Создание Smalltalk в Музее компьютерной истории в Маунтин-Вью, Калифорния. (Прокрутите вверх страницы.)
В ноябре мы провели Smalltalks 2022 в Буэнос-Айресе, Аргентина, организованную FAST.
В следующих видеороликах кратко излагаются события:
- Церемония награждения JRMPC 2022
- Возрождение Smalltalk — 50 лет Smalltalk
- Создание малых разговоров
- Smalltalks 2022 — Выступление Дэна Ингалла, Выступление Гилада Брачи
Это были сказочные торжества. Какой еще язык программирования получил такое признание за свою долговечность и вклад в ИТ-индустрию?
Почему Смолток?
Есть три основные причины долговечности Smalltalk:
- Необычайная и уникальная простота и элегантность синтаксиса. В Smalltalk есть все шесть зарезервированных слов. Его полный синтаксис можно кратко изложить на открытке. Можно полностью выучить язык Smalltalk за 15 минут, чего нельзя сделать с другими столь же популярными языками, такими как Python и Go.
- Чистота, непротиворечивость и масштабируемость объектно-ориентированной модели Smalltalk. Благодаря этим замечательным качествам Smalltalk вдохновил на создание многих других объектно-ориентированных языков, таких как Objective-C, Ruby, Python, CLOS ( Common Lisp Object System) и Java.
- Огромная производительность благодаря возможности «живого программирования» в 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. Молния может ударить дважды! Вы будете вознаграждены простотой использования, низкой когнитивной нагрузкой и огромной продуктивностью программирования.