Як вивчення smalltalk може поліпшити ваші навички програміста

Як вивчення smalltalk може поліпшити ваші навички програміста

Smalltalk зазвичай сприймається як старий, вмираючий мову - антикваріат з минулої епохи. Немає нічого більш далекого від істини.

Smalltalk як і раніше дуже актуальне. Це відмінний мову для навчання програмуванню людей, які не мають технічної освіти. Це чудовий мову прототипирования для стартапів. Це потужний промисловий мова, яка використовується як великими, так і малими компаніями по всьому світу. Є вагомі причини розглянути використання сучасного Smalltalk сьогодні, оскільки багато що було зроблено за останній час, щоб поліпшити його можливості.

Ви не зобов'язані використовувати Smalltalk в промисловому програмуванні, але спробуйте щось написати на ньому і прислухайтеся до своїх відчуттів. Вони повинні бути знайомі, тому що реалізація об'єктно-орієнтованої парадигми в Smalltalk настільки чудова, що вплинула на ціле покоління ГО мов, таких як Objective-C, Python, Ruby, CLOS, PHP 5, Perl 6. Erlang, Groovy, Scala, Dart , Swift та багатьох інших.

Вивчаючи Smalltalk, ви зрозумієте, як всі ці корисні функції в сучасних мовах стали реальністю. Вивчення Smalltalk може також дати вам перевагу серед ваших колег, і ще він може бути відмінним інструментом для навчання програмуванню.

Що нам дав Smalltalk?

Внесок Smalltalk в індустрію програмного забезпечення величезний. Просто погляньте на цей список функцій і технологій, які він представив:

Але як вивчення Smalltalk зробить мене найкращим розробником?

Smalltalk має цілий ряд функцій, набагато випередили свій час:

  • Засноване на образі збереження
  • Об'єкти: все є об'єктом, а об'єкти обмінюються тільки повідомленнями (найбільш «чиста» реалізація ООП і одна з найбільш ранніх)
  • «Живе» програмування
  • Розширені методи налагодження, такі як зміна коду на льоту
  • Простий, незагромождённий інтерфейс IDE
  • Предметно-орієнтовані мови (DSL): єдиний спосіб роботи Smalltalk, тому програмістам необхідно зосередитися на проблемі. використовуючи мову і нотацію, що є природною для цієї проблеми

І є ще кілька фич. які роблять Smalltalk особливим.

По суті, ключовим перевагою Smalltalk як продуктивного мови та інструменту навчання є те, що він знімає велику частину, якщо не весь, когнітивний стрес в промислових OO мовах, таких як Java. Smalltalk не містить синтаксичного сміття або збивають з пантелику функцій. Він чемно поступається вам дорогу, так що ви можете зосередити всю свою увагу на проблемі або додатку. Справа не в тому, що Java - поганий мову, тому що він більш складний (і має 30-символьні імена класів); я говорю про те, що вивчення необтяжених зайвими функціями OO мови насправді може зробити вас кращим Java-програмістом, як тільки ви зрозумієте концепції OOП під іншим кутом зору.

Усунення когнітивного стресу є метою багатьох мов - наприклад, Python, Ruby, Elixir, Elm і Go. Навіть якщо ви його не відчуваєте. стрес є. Часто кажуть, що програмування в Smalltalk або Python схоже на Дзен; ваша свідомість просто тече легко і невимушено разом з розв'язуваної завданням. Це краса і цінність мовної простоти, і Smalltalk володіє нею в повній мірі.

У Smalltalk концепція ООП очищена до базових понять класів і методів, метаклассом і рефлексії, і, найголовніше, передачі повідомлень. Smalltalk, в силу своєї об'єктної чистоти і узгодженості, дасть вам глибоке розуміння об'єктно-орієнтованого програмування і того, як використовувати його з максимальною ефективністю.

Простота Smalltalk також робить його ідеальним навчальним мовою для навчання програмуванню, особливо якщо у вас немає технічної підготовки. Простота мови і інструментів дозволяє зосередити ваші зусилля на вивченні методів програмування. а не мовних конструкцій і формалізму.

«Живий» відладчик значно скорочує цикл редагування - тестування - налагодження.

Як працює Smalltalk? Заснований на образі підхід до програмування

Головна причина успіху Smalltalk - підхід до створення програмного забезпечення, заснований на образі. Образ являє собою моментальний знімок пам'яті, який містить всі об'єкти у вашому запущеному додатку. Він інкапсулює все стан виконання вашої програми. Образ можна зберегти на диск і пізніше відновити точно з того місця, де ви зупинилися!

«Образ Smalltalk» може звучати трохи незвично, але насправді він дуже схожий на щось, широко використовується сьогодні в ІТ: системні образи в віртуалізації ОС, такі як в VMware і VirtualBox. Не забувайте, що Smalltalk спочатку був автономної операційною системою, створеною в Xerox PARC в 1970-х роках.

Образ Smalltalk схожий на DOM (Document Object Model) в веб-додатку. Зверніть увагу, що веб-додаток являє собою по суті операційну систему, ізольовану в веб-браузері і позбавлену прямого доступу до файлової системи хоста і інших ресурсів. Коли веб-браузер закривається, стан динамічного веб-сайту може бути збережене або кешуватися, і наступного разу, коли браузер відновить роботу, веб-сайт може бути відновлений в браузері (з деякими обмеженнями).

Навіть електронна таблиця дуже близька до концепції образу. Вона інкапсулює всю потрібну інформацію. Вона не може отримати доступ до системних ресурсів. Її можна зберегти і відновити. І ви повинні знати, що електронні таблиці як і раніше використовуються для розробки складних моделей і додатків з власною мовою.

Все в Smalltalk є об'єктом

Без винятків: все є об'єкт. Немає примітивних типів даних. Немає таких керуючих структур, як вибір і ітерація! Все в Smalltalk робиться шляхом посилки сообщенійоб'ектам. Саме це робить Smalltalk настільки простим, елегантним і легким в освоєнні. Саме це робить мову настільки чистим синтаксично.

Наприклад, наступний фрагмент коду розширює клас Number для підтримки нерекурсивною операції факторіала:

Тут ifTrue: це ключове повідомлення посилається Булевой об'єкту, повернений виразом (self <2). Аргументом для сообщения является блок кода (обозначенный квадратными скобками). На самом деле ifTrue: это первая часть сообщения с двумя аргументами, вторая часть ifFalse :.

Унарне повідомлення new відправляється класу OrderedCollection для створення нової колекції. Повідомлення printNl відправляється в результат (який є об'єктом) відправки повідомлення my_factorial числу 7. Все це дуже схоже на природну мову!

Рефлексія в Smalltalk

Рефлексія в Smalltalk особливо цінна як механізм перевірки власної структури і обчислень під час виконання. Це дуже потужний механізм, що дозволяє програмам розширювати себе новими класами і методами або задавати питання «хто послав це повідомлення мені?»

Рефлексія використовується для реалізації потужного способу обробки помилок. Коли об'єкт отримує повідомлення, яке він не реалізує, йому надсилається повідомлення doesNotUnderstand: і код вихідного повідомлення. Є багато речей, які програма може робити з повідомленням doesNotUnderstand :. включаючи розширення своєї функціональності!

Концепція образу і рефлексія також дозволяють Smalltalk усунути межу між додатком і IDE. Все, що потрібно для розробки, налагодження і запуску додатка, знаходиться в образі. Немає необхідності будь-коли залишати середу вашого застосування. Це абсолютно цілісний підхід до розробки програмного забезпечення, який робить все більш дзен-подібним і продуктивним.

Відродження Smalltalk

Останні 15 років розвитку в світі Smalltalk зробили мову більш привабливим.

У минулому році улюблений багатьма Dolphin Smalltalk став відкритим проектом, запропонувавши ще один прекрасний варіант для шанувальників Smalltalk. Dolphin Smalltalk часто хвалять за те, що він має одну з кращих реалізацій IDE.

Спадщина Smalltalk: програмуй із задоволенням

Коли ви використовуєте сучасні засоби розробки програмного забезпечення, такі як JVM, Eclipse IDE, замикання, «живе програмування», MVC, TDD, VMware і навіть просте веб-додаток, згадайте про їх походження в Smalltalk і випробуйте повагу до того, що ви робите . Будьте вдячні йому за мови, які ви використовуєте, будь то Objective-C, Python, Ruby, Groovy, Scala, Dart або Swift.

Робота з мовою, з якого походять всі ці чудові функції і технології, надає унікальну можливість значно поліпшити ваші знання, гостроту розуму і продуктивність в якості розробника програмного забезпечення. Слово «задоволення» не завжди використовується в розмовах про програмної інженерії, але я думаю, що Smalltalk і його ГО побратими забезпечують більш низький когнітивний бар'єр і простоту програмування, які можуть перетворити розробку програм в задоволення.