Чи були дослідження лінгвістики програмування?


18

Мови програмування - це формальні мови , але, на відміну від багатьох формалізмів, вони також мають певне притаманне значення, визначене їх оперативною семантикою , або, у випадку мов розмітки, семантикою презентації . І мови програмування, хоча й справді формальні, дуже схожі на природні мови, за рівнем спілкування, який вони дозволяють.

Хоча розвиток мов програмування є штучним, природничі процеси еволюції, запозичення, змішування та мутації мають досить чіткі штучні аналоги. Тож мені цікаво: чи коли-небудь проводилися масштабні, поглиблені дослідження еволюції та поведінки мов програмування з точки зору лінгвіста  ?


6
Перл був зроблений лінгвістом, і він м'ясніший за саму англійську мову.
Робота

1
@Job: І це вже понад 23 роки, встановлено за замовчуванням на незліченних платформах, схожих на Unix, і досі регулярно використовується для всього, починаючи від автоматизації (для якої набагато чистіше, ніж сценарії оболонок), до веб-розробки (для чого це так чистіше, ніж PHP) до своєї первісної мети обробки тексту регулярними виразами (для яких він встановив фактичний галузевий стандарт). Звичайно, це безладно, але таким чином, який добре працює для людей, і саме тут, в розвитку Перла, лінгвістичний фон Ларрі був благом.
Джон Перді

@Job ефект називається "гірше краще" en.wikipedia.org/wiki/Worse_is_better .
Апалала

@Aplala: Це не пов'язано. У всякому разі, Perl контрприклад, тому що це наворочений і складними і популярною.
Джон Перді,

Відповіді:


6

Пам’ятайте, що формальні граматики, без яких не могло б бути сучасне програмування, є продуктом дослідження лінгвіста Ноа Хомського .

Автокатастрофа не дозволила мені закінчити дипломну роботу з теми, про яку ви питаєте, тому я не можу дати вам жодних посилань, лише думка.

Розмовні мови розвиваються з будь-якою швидкістю залежно від контексту, і вони роблять це непередбачувано, як непередбачуваний людський контекст. Результати Другої світової війни мали величезний вплив на японську мову. Британці, австралійці, південноафриканці та північноамериканці не дуже розмовляють однією мовою. Використання деклонацій дієслів серед колишніх іспанських колоній стало зовсім іншим після двохсот років незалежності (колишні колонії вважають, що іспанська Іспанія є архаїчною ).

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

Природні мови з їх варіаціями, нюансами та еволюцією не підходять до детермінізму, якого ми вимагаємо від комп'ютерів. (Джи! Враховуючи спільність помилок та другої інтерпретації, схоже, вони не підходять навіть для найпростіших взаємодій між людьми [утримуючись від цитування жартів про те, що говорить дівчина / хлопець-друг і що це насправді означає])


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

4
Що стосується давньогрецької та латинської мов - частина питання тут полягає в тому, що збережені тексти мають, як правило, формальний характер - нариси, договори, юридичні рішення тощо. Якщо ви думаєте про повідомлення, які ми щодня надсилаємо - "Привіт, дорогий, будь ласка молоко по дорозі додому "та" Джим - пам’ятай доповідь Кейсі за 9 годин "- більшість цих перехідних повідомлень у Стародавньому Римі були втрачені назавжди.
HorusKol

2
Це не зовсім вірно. Моя мати періодично розповідає про свої середні класи латинських шкіл, і згадувала одну частину, яку вони переклали, пам’ятку від римського патриція до його водія колісниці. Суть була: "Будь ласка, під час години пік, НЕ потрапляйте за колісницю. Я не знаю, чим він годує своїх коней, але сморід страшний".
Джон Р. Стром

4

Я перечитував це запитання, і думаю, що моя оригінальна відповідь не відповіла на нього. Ось ще одна спроба.

Ні, не було жодного серйозного дослідження мови лінгвістики мови програмування. Існували мовні лінії для двох основних гілок та підгалузі:

  • Процедурний. Фон Нейман . Дійкстра . Фортран, Паскаль, С.
    • Об'єктно-орієнтована. Симуляція. Невеличка розмова.
  • Функціональний. МакАрті . LISP.

Для тих, хто з десятиліттями в цій галузі, очевидно, що мови програмування переплелися, і, таким чином, можна знайти більшість аспектів будь-якої чистої парадигми в більшості сучасних мов програмування, що називаються тепер багатопарадигменними мовами програмування : C #, Python, Java, .. .. Навіть раніше чисті функціональні мови, такі як OCaml і Haskell, містять достатню кількість процедурних (через монади ) та OO функцій, щоб ви могли робити що-небудь.

Думаю, що сталося, це те, що стало очевидним, що дорого (коли не дурно) потрібно було перемикати мови програмування просто для того, щоб можна було застосувати правильну парадигму до заданої підпрограми.

Залишається винятком тенденція в області високо паралельних і асинхронних систем. Там кращі мови строго функціональні, як Ерланг , ймовірно, тому що про такі складні системи легше функціонально думати.

Непарадигматична частина еволюції була в синтаксисі. Мови, які заохочували або навіть дозволяли криптовалютні програми, все менше використовуються ( APL , AWK і навіть Perl та LISP). Сьогодні домінуючі синтаксиси - це більш читабельні (на відміну від легкозаписуваних) мов, таких як C (C ++, C #, Java, Objective-C, Scala, Go, IML, CSS, JavaScript, а також Python), Pascal (Fortran 90+ x), Smalltalk (Ruby), ML / Miranda (OCaml, Haskell, Erlang) та SGML (HTML, XML).

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

еволюція мови програмування


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

@Jon Ну, інша очевидна тенденція полягає в тому, що англійська мова була і є домінуючою природною мовою, що лежить в основі всіх мов програмування, як синтаксично, так і граматично. Мови програмування - зліва направо, дієслова - перші. Наприклад, японська дуже відрізняється, але я не знаю жодних зусиль для розробки мови програмування в японському стилі. en.wikipedia.org/wiki/Japans_language#Sentence_structure
Апалала

@Aplala: Порядок SOV є загальним для мов, орієнтованих на стеки, оператори інфікування вважаються SVO, а функції (патологічним прикладом Lisp) є VSO. Англійська мова, безумовно, має сильний вплив, але я думаю, що в роботі є й інші фактори ... Можливо, мені доведеться робити це дослідження самостійно. : P
Джон Перді

@Jon Так, я забув про Forth і Postcript, які є на основі стека і SOV. Будь ласка, повідомте мене, якщо ви розпочнете дослідження. Я спеціалізувався на теорії мови в університеті, а мови програмування - все ще моє хобі. У мене з багатьох рук є спогади про багато з них (Simula, Prolog, LISP).
Апалала

@Jon Вам може бути цікаво, що багато іспаномовних програмістів вважають за краще використовувати ідентифікатори іспанською мовою, навіть якщо вони погано відповідають мовам програмування, бібліотекам, рамкам, стандартам та інструментам, якими вони користуються. Їх програми закінчуються в "Шпангліш". Я бачив подобається програмістам з рідними мовами іншими мовами з римською / латинською спадщиною, як у східноєвропейців. Я не маю уявлення про те, що люблять робити далекосхідні (китайські, японські, корейські), російські чи арабські програмісти.
Апалала

1

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

Що я хотів би додати, це те, що коли хтось використовує мову, вони обов'язково розширюють її, додаючи терміни, перетворюючи її в мову, більш орієнтовану на домен. Іноді це досить прямо, іноді ні. Ось приклад, який був не таким простий.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.