Почему Pharo может стать будущим разработки программного обеспечения
За последние несколько десятилетий мы стали свидетелями появления множества языков программирования, обещающих нам новое великолепное будущее в разработке программного обеспечения. Такие языки, как Ada, Eiffel, Ruby, Java, Scala, а с недавних пор - Clojure, Go, Rust, Kotlin и Swift. Все они не достигли идеала. Им не удалось добиться того огромного повышения продуктивности программистов, к которому мы так стремились. Они делают разработку более утомительной и отнимающей много времени, чем она должна быть.
Эти языки также не способствуют демократизации программирования. Для слишком многих новичков, особенно «нетехнических» типов, они создают серьезные препятствия. Даже хваленый Python не лишен своих причуд и странностей; тем не менее, это продвигается в колледжах и университетах.
В ловушке нашего прошлого
Текущее состояние программирования застойно, граничит с архаичностью. Разработчики используют византийские языки, такие как C ++, Scala, Swift и Rust. Или они используют загадочные, трудные для изучения языки, такие как Haskell, Perl и JavaScript. Они используют гигантские IDE, такие как Visual Studio, Eclipse и Xcode, для управления сложными процессами сборки. Они попали в ловушку традиционного цикла редактирования-компиляции-тестирования-отладки, который тратит огромное количество времени. Они застряли в работе с огромными коллекциями файлов и папок - их исходный код разбросан по всему Creation.
Результатом является упущенная возможность значительно повысить продуктивность разработки и более приятное программирование для менее технически подкованных.
В последнее десятилетие разработчики языков искали Святой Грааль языков программирования. Их конечная цель? Создайте язык, который был бы относительно простым и легким для изучения, обладал низким когнитивным сопротивлением и повышал продуктивность программиста.
Входит Фаро. Он пополняет ряды Elixir, Go, Nim и других, предлагая простые в использовании инструменты программирования.
Назад в будущее
Все слышали о Smalltalk. Этот почтенный язык программирования имеет долгую и славную историю. Это был первый язык программирования, который популяризировал объектно-ориентированное программирование (или ООП). Помните знаменитую кавер-версию BYTE за август 1981 года? Его ДНК можно найти почти во всех основных языках, используемых сегодня: Java, Python, JavaScript, C #, PHP, Ruby, Perl, Objective-C, Groovy, Scala, Delphi, Erlang, Dart, CLOS и т. Д. C и C ++ - это заметные исключения.
Smalltalk также дал нам самую первую графическую IDE (интегрированную среду разработки). По сей день он остается намного проще и проще в использовании, чем Visual Studio, IntelliJ IDEA и Eclipse. Не только это, но и графическая среда IDE Smalltalk была первой, кто очень просто и элегантно поддерживал живое кодирование и отладку. Ни одна из популярных сегодня IDE не может этого сделать, если вообще может.
Живое кодирование и отладка практически исключают традиционный цикл редактирования-компиляции-тестирования-отладки.
Smallalk основан на изображениях. Изображение - это снимок памяти, содержащий все объекты в системе в данный момент времени. Этот образ можно сохранить на диск, и при этом вы сохраните или сохраните полное состояние выполнения программы, что позволит вам возобновить выполнение позже именно с того места, где вы остановились! Это очень удобно и значительно экономит время для разработчика.
Образ Smalltalk можно сравнить с образом системы в VMware или VirtualBox. Образ VirtualBox может содержать Windows, Linux или другую операционную систему, и, как и в Smalltalk, он может быть сохранен на диск и возобновлен позже. Таким образом, Smalltalk не такой чуждый, как многие думают.
Smalltalk известен своей исключительной простотой: все это основано на передаче сообщений между объектами. Весь синтаксис языка поместится на открытке!
Это делает Smalltalk чрезвычайно простым в изучении, а язык исключительно красивым. Он читается почти как естественный язык, но без излишнего многословия, скажем, кобола. Это благодаря использованию keyword messages: ключевые слова предоставляют важные лингвистические подсказки, которые помогают описать то, что вы делаете. Унарные сообщения выполняют аналогичную функцию, например, собственный размер и имя каждого класса.
Smalltalk полностью рефлексивен. Это придает языку невероятную гибкость и расширяемость, такую мощь, которая обычно ассоциируется с Lisp, но присутствует также и в Smalltalk.
Преимущество убийцы
Согласно Namcook Analytics (таблица 16), Smalltalk является одним из самых продуктивных языков программирования в мире (измеряется экономической продуктивностью с точки зрения количества рабочих часов для выполнения 1000 функциональных баллов):
- C — 26,273
- Фортран - 22 394
- JavaScript - 15 929
- Четвертый - 14 636
- Haxe - 14 636 единиц
- Лисп - 14 636
- C++ — 12,697
- Go — 12,697
- Ява - 12 697
- PHP - 12 697 филиппинских песо
- Питон - 12 697
- C# — 12,309
- Дротик - 11 620 единиц
- F# — 11,312
- Рубин - 11312
- Эрланг - 10 758
- Эликсир - 9845
- Хаскелл - 9845
- Юлия - 9 465
- Perl - 9 465
- Дельфы - 8 289
- Objective-C - 7,848
- Visual Basic - 7 848
- Эйфелева - 7156
- Smalltalk - 6 879
Как видите, Smalltalk легко превосходит JavaScript, Java, Python, C # и Ruby. В этом исследовании интересно то, что оно выходит за рамки простого кодирования и программирования; при этом учитывается весь программный проект, а это то, что больше всего волнует руководителей бизнеса. Они хотят знать полную стоимость приложений и их полные графики от требований до доставки. Они также хотят знать затраты на многолетнее обслуживание и усовершенствование, а также общую стоимость владения (TCO).
Прямо перед нашими лицами мы уже почти полвека смотрим в будущее разработки программного обеспечения.
Современный Smalltalk
Лучший и самый современный пример Smalltalk - Pharo. Этому языку всего 9 лет, что делает его таким же современным, как Clojure, Elixir, Haskell, Julia, Kotlin, Nim и Rust.
Вот как выглядит Pharo IDE:
Как видите, Pharo IDE намного проще и чище, чем Visual Studio и Eclipse. Им без труда могут пользоваться даже дети! Он почти игрушечный, но в то же время невероятно мощный.
Pharo отлично подходит для веб-разработки благодаря PharoJS, Seaside и Teapot.
Pharo хорошо подходит для численных вычислений, обработки данных и машинного обучения благодаря PolyMath, Roassal и Numerical Methods with Pharo. Люди работают над интеграцией TensorFlow.
Pharo отлично подходит для Интернета вещей и встроенных приложений. Вот учебное пособие по программированию на основе Интернета вещей: Научитесь программировать.
Pharo используется для борьбы с лихорадкой Эбола!
Pharo можно использовать даже для реализации операционной системы, например, PharoNOS.
Есть что-нибудь, что Фаро не может сделать?
Куда мы отправимся отсюда?
Pharo модернизировал Smalltalk для XXI века. Теперь у него есть режим командной строки, так что вы можете использовать инструменты на основе текстовых файлов, такие как контроль исходного кода и статические анализаторы кода. У него даже есть инструмент под названием Iceberg для интеграции с GitHub. И Pharo только начинается!
Так что вы можете получить лучшее из обоих миров. Вы можете съесть свой торт и съесть его:
- доступ к обычным файловым инструментам
- мощная, простая в использовании среда живого кодирования на основе изображений, которая может повысить производительность программиста в пять раз!
С Pharo разработка программного обеспечения может быть намного приятнее и продуктивнее, чем с использованием традиционных инструментов, таких как Java, Python, JavaScript, C ++ и т. Д. Это должно указывать нам на будущее.
(Первоначально опубликовано в Когорте.)