Історія мов програмування: від Objective C до Swift



Щоб відмовитися від мови програмування, на якому ведеться комерційна розробка, і почати вчити новий, програмістам потрібні серйозні підстави. Але історія ІТ-індустрії знає багато випадків, коли вибір за них робило час, і перехід відбувався як би сам по собі.

Що змусило багато розробників перейти на Objective C? Що зараз змушує відмовитися від нього і вибрати Swift?

Objective C є розширенням мови Сі, в який були додані нові можливості для об'єктно-орієнтованого підходу до програмування. Мова використовує об'єктну модель Smalltalk. Повністю сумісний з мовою програмування Сі. Компанія Apple довгий час використовувала Objective C, як основна мова програмування для розробки своїх продуктів.

Творцями Objective C є Бред Кокс і Тому Лав. Вони почали працювати над ним в начале1980-х років, коли ще були співробітниками телекомунікаційної компанії ITT Corporation. Приблизно в той же час Кокс і Лав познайомилися з мовою програмування Smalltalk. Коксу тоді займали проблеми повторного використання програмного коду.
Внаслідок збільшення обсягу коду в проектах і труднощів його підтримки, з 1960х починає утворюватися нова, об'єктно-орієнтована парадигма програмування, розбила програми на ще більш дрібні складові – типи даних.


Кожен об'єкт є змінною певного програмістом типу даних (так званого класу). Визначення такого спеціального типу даних (класу) полягає в двох речах: визначення набору даних (інваріанти, членів) і набору підпрограм (методів), які будуть їх обслуговувати.

Основною перевагою об'єктно-орієнтованого підходу стала можливість створювати нові класи на основі вже написаних (додавати інваріанти і методи, перевизначати методи, використовувати визначені в базовому класі методи як свої), назване спадкуванням.

Набір методів являє собою інтерфейс для взаємодії з инвариантами.
OOPC
Бред Кокос швидко зрозумів, що Smalltalk не підійде для вирішення завдань в ІТТ Corporation: сумісність з мовою С для них була критична. Однак Кокс вирішив модифікувати препроцесор для С в бік Smalltalk.
ця Модифікація полягала в додаванні нових синтаксичних конструкцій та спеціальному препроцессоре для них (який, проходячи по коду перетворював їх у звичайні виклики функцій), а також новій бібліотеці часу виконання (ці виклики обробної). Таким чином, спочатку Objective C сприймався як надбудова над C. У якомусь сенсі це так і досі: можна написати програму на чистому С, а потім додати до неї трохи конструкцій з Objective C (при необхідності), або ж навпаки, вільно користуватися в програмах на Objective C. Крім того, все це стосується і програм на С++.
Те, що вийшло, Кокс назвав «OOPC» – Object-Oriented Pre-Compiler. У 1982 році Лав влаштувався в Schlumberger Research і отримав можливість придбати комерційну версію Smalltalk-80. Це допомогло їм у подальшій роботі над Objective C. у результаті В Objective C була реалізована можливість створювати об'єкти і працювати з ними.



Метою Коксу було створення мови, що підтримує концепцію software IC, що передбачає можливість збирати програми з готових компонентів (об'єктів), подібно до того як складні електронні пристрої можуть бути зібрані з набору готових інтегральних мікросхем. При цьому мова має бути простим і заснованим на мові С, щоб полегшити перехід розробників на нього.

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

Прив'язка повідомлення до відповідної функції відбувається на етапі виконання.

Мова Objective C підтримує роботу з метаінформацією — так, на етапі виконання можна дізнатися клас об'єкта, список його методів (з типами переданих аргументів) і instance-змінних, перевірити, чи є клас нащадком заданого і підтримує він заданий протокол і так далі.

NeXT
У 1986 році Кокс опублікував книгу Object-Oriented Programming, An Evolutionary Approach, в якій розмістив опис своєї мови програмування, розібрав проблему повторного використання коду і вказав переваги Objective C при її вирішенні. Лав і Кокс також створили компанію Productivity Products International (PPI), який повинен був допомогти монетизувати компілятор Objective C з бібліотеками класів. Далі фонд був перейменований в StepStone.

У 1988 році компанія NeXT Software ліцензувала мова Objective C, удосконалила його бібліотеки і додала нові – AppKit і Foundation Kit. На їх основі пізніше була створена середовище розробки NEXTSTEP.



У 1992 до вдосконалення мови і компілятора підключилися розробники проекту GNU в рамках проекту OpenStep. З тих пір GCC підтримує Objective C.

Не домігшись успіху на ринку як виробник комп'ютерів, компанія NeXT перемкнуло свою увагу на створення й продаж засобів розробки ПЗ.

20 грудня 1996 року компанія Apple купила NeXT Software, а середовище розробки NEXTSTEP стала основним середовищем розробки для майбутньої основної версії операційної системи Apple — OS X.

Після покупки NeXT, Apple взяла їх SDK (компілятор, бібліотеки, IDE) за основу для своїх подальших розробок. IDE для розробки коду отримала назву Xcode, а для GUI – Interface Builder. Фреймворк Cocoa для GUI розробок (і не тільки) на сьогодні є найбільш значущою середовищем розробки програм на Objective C.

В 2007 році компанія Apple презентувала оновлену версію мови і назвала його Objective C 2.0, дана версія мови є актуальною в даний час. Використовується в розробці Apple OS X, iOS.

Swift
У 2014 році компанія Apple представила нову мову програмування – Swift. Він став самим швидкозростаючим мовою програмування в історії.

«З відкриттям вихідного коду Swift розробники всього світу можуть вносити свій внесок у цю мову програмування і робити його доступним на нових платформах, — сказав тоді Крейг Федериги, старший віце-президент Apple по програмному забезпеченню. — Ефективність і простота Swift дадуть молодим програмістам стимули до навчання, до того ж тепер вони зможуть поширювати свої ідеї всюди: від мобільних пристроїв до хмарних систем».



Творець мови Swift – Кріс Латтнер. Він прийшов в Apple в 2005 році. Там він займався розробкою LLVM. Apple використовувала LLVM для того, щоб змінити спосіб використання Objective C при створенні додатків.
LLVM (Low Level Virtual Machine) — це універсальна система аналізу, трансформації та оптимізації програм або, як її називають розробники, «compiler infrastucture».
Кріс Латтнер курирує всі інструменти розробників Apple: все, за допомогою чого створюються програми для телефонів, планшетів і комп'ютерів Apple, як сторонніми розробниками, так і інженерами компанії. Будучи аспірантом університету штату Іллінойс, він створив свого роду засоби для розробника під назвою LLVM, які сьогодні лежать в основі Xcode.
Латтнер також використовував LLVM в якості основи для Swift. Ці два продукти спеціально були створені для роботи в тандемі.

Над Swift він почав працювати влітку 2010 року. Латтнер тримав це в секреті півтора року. Він створював Swift у вільний від основної роботи час.

Через півтора року він розповів про проект топ-менеджерів Apple. Високо оцінивши роботу Латтнера, вони направили йому на допомогу кількох розробників. Однак проект був все ще оповитий ореолом таємничості. Навіть люди, побічно брали участь у створенні мови і допомагали Крісу, були сильно здивовані, над чим саме він працював. Ще через півтора року проект Латтнера потрапив у список головних напрямків компанії, а команда розробників істотно розширилася.

На думку Apple, мова Swift має всі шанси змінити ІТ-індустрію.

2 червня 2014 року компанія випустила тестову версію для сторонніх розробників і програмістів. Apple позиціонує це мову як більш швидкий і ефективний спосіб створення програм для iPhone, iPad і Mac.



Розширення аудиторії
Мови програмування необхідно кілька років, щоб стати популярним хоча б у вузьких колах ентузіастів. Досить показова ситуація з мовою Go, який компанія Google представила ще в 2009 році. Над Go працювали кращі уми (Кен Томпсон і Роб Пайк), однак і донині докладаються чималі зусилля для його популяризації. Однак Apple робить все, щоб Swift став винятком і послідував прикладу мов Java і C# в 1990-х і початку 2000-х відповідно.

Swift створений для середньостатистичного програміста. Мовою можна писати навіть найпростіші програми, а наділений досить розумними інструментами, мову пропонує ефективний спосіб вчитися написання самостійно. Але головна причина майбутньої популярності мови криється в іншому. Сотні тисяч розробників сьогодні створюють програми для пристроїв Apple, використовуючи Objective C. Пристрої Apple користуються великою популярністю, а значить ці розробники продовжать створювати для них додатки, але вже на Swift. На думку Apple, він значно краще і ефективніше, ніж Objective C.

3 грудня 2015 року компанія відкрила вихідний код Swift. Світове співтовариство розробників — від творців додатків до компаній та навчальних закладів — може розвивати Swift і оптимізувати мову, щоб зробити його доступним на нових обчислювальних платформах.

«Не було ніякого реального стимулу використовувати Google Go» — говорить Пол Янсен, який відстежував прогрес різних мов програмування протягом близько п'ятнадцяти років. «Swift відрізняється наявністю стимулу».

У рейтингу TIOBE Swift займає 14-ту позицію. За рік він піднявся на 3 позиції. Мова Go перемістився з 95 позиції на 20, що дуже вражає. А Objective C опустився з 6 місця на 15. Таким чином, можна сказати, що Swift технічно обійшов свого попередника.



Сьогодні на GitHub, популярному сховище розробок з відкритим вихідним кодом, понад 2500 проектів використовують Swift.

Swift – це не просто мова, це мова, який тісно пов'язаний з усім, що потрібно розробнику для роботи. Сюди входить не тільки інтегрована середовище розробки, але і багато інших інструментів (наприклад, відладчик), які вже знайомі кожному розробнику Apple.

Swift швидкий (швидкість реалізації деяких алгоритмів в 3,9 рази більше, ніж на Python) і лаконічний (розробники позбулися многословности Objective C). Ще одне важливе нововведення — це можливість писати код і бачити результати в режимі реального часу.

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

p.s. Apple не перша компанія, яка випустила нову мову програмування в недавньому минулому. Це вже зробили Facebook, Google і Mozilla. До чого це призведе — покаже час.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.