Моя відповідь - це лише розробка твору Жиля, яку я не читав, перш ніж писав свою. Можливо, це все-таки корисно.
Дозвольте розпочати спробу відповісти на ваше запитання з розрізнення двох вимірів роботи мов програмування, які зовсім по-різному стосуються теорії мови програмування взагалі та конкретного обчислення процесу.
Останнє, як правило, відбувається в промисловості з метою забезпечення мов програмування як продукту. Команди, що розробляють Java в Oracle і C # в Microsoft, є прикладами. Навпаки, чисті дослідження не прив’язані до продуктів. Його мета полягає в тому, щоб зрозуміти мови програмування як об'єкти, що представляють інтерес, і дослідити математичні структури, що лежать в основі всіх мов програмування.
Через різні цілі, різні аспекти теорії мови програмування є актуальними як для чистих досліджень, так і для науково-дослідної роботи, орієнтованої на продукт. На малюнку нижче може бути вказано, що важливо, де.
У цей момент можна запитати, чому два виміри настільки різняться і як вони все-таки співвідносяться.
Ключове розуміння полягає в тому, що дослідження та розробки мови програмування мають багато аспектів: технічний, соціальний та економічний. Майже за визначенням галузь зацікавлена в економічній виплаті мов програмування. Microsoft та інші не розробляють мови з доброго серця, а тому, що вони вважають, що мови програмування дають їм економічну перевагу. І вони глибоко дослідили, чому деякі мови програмування досягають успіху, а інші, здавалося б, подібні або з більш вдосконаленими функціями, цього не роблять. І вони виявили, що немає єдиної причини. Мови програмування та їх оточення є складними, і тому є причинами прийняття чи ігнорування будь-якої конкретної мови. Але найбільшим фактором успіху мови програмування є переважна прихильність програмістів до мов, які вже широко використовуються: чим більше людей використовують мову, тим більше бібліотек, інструментів, навчального матеріалу доступно, і тим продуктивнішим програміст можна використовувати цю мову. Це також називається мережевим ефектом. Ще одна причина - висока вартість перемикання мов для окремих людей та організації: оволодіння мовою, особливо не дуже досвідченим програмістом, і коли семантична відстань до знайомих мов велике, - це серйозне, що забирає багато часу. Враховуючи ці факти, можна запитати, чому нові мови взагалі отримують тягу? Чому компанії взагалі розробляють нові мови? Чому ми просто не залишимося з Java або Cobol? Я думаю, що існує декілька ключових причин того, що мова має успіх,
Відкривається новий домен програмування, який не має змін для переміщення. Основний приклад - Інтернет з супутнім зростанням Javascript.
Мовна клейкість. Під цим я маю на увазі високу ціну на зміну мови. Але іноді програмісти переходять на різні поля, беручи з собою мову програмування та досягаючи успіху зі старою мовою в новому полі.
Мова підштовхує велика компанія з серйозною фінансовою вогневою силою. Ця підтримка зменшує ризик усиновлення, оскільки ранні усиновлювачі можуть бути впевнені, що мова все ще буде підтримуватися через кілька років. Хороший приклад цього - C #.
Мова може поставитись із переконливими інструментами та екосистемою. Тут також можна назвати екосистему C # та її. Net та Visual Studio.
Старі мови підбирають нові функції. На думку спадає Java, яка в кожній ітерації вибирає більше хороших ідей з традиційної програми програмування.
Нарешті, нова мова може мати сутнісні технічні переваги, наприклад, бути більш виразною, мати симпатичніший синтаксис, вводити системи, які сприймають більше помилок тощо.
Враховуючи це, не слід дивуватись тому, що між чистим вивченням мови програмування і комерційною мовою програмування існує певний розрив. Хоча обидві мають на меті підвищити ефективність побудови та еволюції програмного забезпечення, особливо для широкомасштабного програмного забезпечення, робота з промисловими мовами програмування повинна бути більш зацікавлена у сприянні швидкому прийняттю до досягнення критичної маси та отримання мережевого ефекту. Це призводить до фокусування дослідження на речах, які хвилюють працюючих програмістів. І це, як правило, такі, як наявність бібліотеки, швидкість компілятора, якість скомпільованого коду, портативність тощо. Обчислення процесів, як ми його практикуємо сьогодні, мало користі програмістам, які працюють над основними проектами (хоча я вважаю, що це зміниться в майбутньому).
Чисті дослідження мови програмування зовсім інші. Він працює зі спрощеними моделями мов програмування: -calculus - це масове спрощення функціонального програмування. Таким же чином -calculus - це масове спрощення одночасного програмування. Ці масові спрощення є запорукою успішного дослідження. Вони дають нам змогу зосередитись на основних обчислювальних механізмах (наприклад,π βλπβ-відведення для функціонального програмування, роздільна здатність / уніфікація для логічного програмування, передача імен для одночасних обчислень). Щоб зрозуміти, чи може така мова, як Scala, мати життєздатний повний висновок про тип, нам не потрібно турбуватися про JVM. Дійсно, що думка про JVM призведе до погіршення кращого розуміння типу виводу. Ось чому абстрагування обчислень на крихітні основні обчислення є життєво важливим і потужним.
Таким чином, ви можете вважати дослідження мови програмування як масивну пісочницю, де люди граються з іграшками, і якщо вони виявляють щось цікаве, граючи з певною іграшкою, і ретельно досліджували іграшку, то ця цікава іграшка починає свій довгий похід до основного промислового прийняття . Я кажу, що триває марш, оскільки мовні особливості, вперше винайдені дослідником мови програмування, як правило, потребують десятиліть, перш ніж набути широкого поширення. Наприклад, збирання сміття було задумано у 1950-х роках і стало широко доступним для Java у 90-х. Зіставлення візерунків починається з 1970 року і широко використовується лише з часів Scala.
Обчислення процесів - особливо цікава іграшка. Але це занадто нове, щоб його ретельно досліджувати. Це займе ще десятиліття чистих досліджень. Зараз у дослідженні теорії процесів - це взяти найбільшу історію успіху дослідження мови програмування, теорію (послідовних) типів та розробити теорію типів для одночасності передачі повідомлень. Системи друку середньої експресивності для послідовного програмування, кажуть Хіндлі-Мілнер, зараз добре зрозумілі, всюдисущі та прийняті робочими програмістами. Ми хотіли б мати помірно виразні типи для одночасного програмування. Дослідження з цього питання розпочалися у 1980-х роках такими піонерами, як Мілнер, Санггіоргі, Тернер, Кобаяші, Хонда та інші, часто засновані явно або неявно, на ідеї лінійності, що походить від лінійної логіки. Останні кілька років спостерігається значне зростання активності, і я очікую, що ця траєкторія вгору продовжиться в осяжному майбутньому. Я також очікую, що ця робота може почати просочуватися до науково-дослідних досліджень, орієнтованих на продукт, частинами з прагматичної причини, що молоді дослідники, які пройшли навчання в обчисленні процесів, будуть їздити і працювати в промислові науково-дослідні лабораторії, а також через еволюцію процесора та комп'ютерної архітектури від послідовних форм обчислення.
Підсумовуючи, я б не хвилювався, що ви не знайдете передової теорії мови програмування, такої як обчислення процесу, корисною для вашої власної роботи з побудови мов. Це просто тому, що передова теорія не стосується проблем сучасних мов програмування. Йдеться про майбутні мови. Мине певний час, щоб "реальний світ" наздогнав. Знання, які ви використовуєте для побудови мов на сьогодні, - це теорія мови програмування минулого. Я закликаю вас дізнатися більше про обчислення процесів, оскільки це одна з найбільш важливих областей усіх теоретичних інформатик.