Czy były badania nad językoznawstwem programowania?

18

Języki programowania są językami formalnymi , ale w przeciwieństwie do wielu formalizmów, mają one również pewne nieodłączne znaczenie określone przez ich semantykę operacyjną lub, w przypadku języków znaczników, semantykę prezentacji . A języki programowania, choć formalne, są bardzo podobne do języków naturalnych pod względem komunikacji, na jaką pozwalają.

Podczas gdy rozwój języków programowania jest sztuczny, procesy ewolucji, pożyczania, mieszania i mutacji w języku naturalnym mają dość wyraźne sztuczne odpowiedniki. Zastanawiam się więc: czy kiedykolwiek przeprowadzano szeroko zakrojone, pogłębione badania nad ewolucją i zachowaniem języków programowania z perspektywy lingwisty  ?

Jon Purdy
źródło
6
Perl został napisany przez językoznawcę i jest bardziej bałaganiarski niż sam język angielski.
Job
1
@Job: I jest już od ponad 23 lat, jest domyślnie instalowany na niezliczonych platformach uniksowych i nadal jest regularnie używany do wszystkiego, od automatyzacji (dla której jest znacznie czystszy niż skryptowanie powłok) do tworzenia stron internetowych (dla których jest to sposób czystsze niż PHP) do pierwotnego celu przetwarzania tekstu za pomocą wyrażeń regularnych (dla których ustanowił de facto standard branżowy). Jasne, że jest niechlujny, ale w sposób, który działa dobrze dla ludzi, i właśnie w tym rozwoju Perla lingwistyka Larry była dobrodziejstwem.
Jon Purdy
@Job efekt nazywa się „Worse is Better” en.wikipedia.org/wiki/Worse_is_better .
Apalala,
@Aplala: To nie ma związku. Jeśli już, Perl jest kontrprzykład, bo to bogate i skomplikowane i popularne.
Jon Purdy

Odpowiedzi:

6

Pamiętaj, że gramatyki formalne, bez których nie byłoby współczesnego programowania, są wynikiem badań lingwisty Noama Chomsky'ego .

Wypadek samochodowy powstrzymał mnie przed ukończeniem pracy dyplomowej na zadany temat, więc nie mogę podać żadnych referencji, tylko opinię.

Języki mówione ewoluują w dowolnym tempie, zależnie od kontekstu, i robią to w sposób nieprzewidywalny jako nieprzewidywalny ludzki kontekst. Wynik drugiej wojny światowej miał ogromny wpływ na język japoński. Brytyjczycy, Australijczycy, Południowoafrykańczycy i Amerykanie nie mówią tym samym językiem. Wykorzystanie deklinacji czasowników wśród dawnych kolonii hiszpańskich zmieniło się zupełnie po dwóchset latach niepodległości (eks-kolonie uważają, że hiszpańskie kolonie hiszpańskie są archaiczne ).

Siła skuteczności nad fonetyką sprawia, że ​​różne słowa używane z różnymi częstotliwościami w różnych regionach są wymawiane w różny sposób: bardzo popularne słowa są odtłuszczone lub błędnie napisane, a mniej popularne słowa są podane tak dokładnie, jak to możliwe.

Języki naturalne, z ich odmianami, niuansami i ewolucją, nie nadają się do determinizmu, którego wymagamy od komputerów. (Ojej! Biorąc pod uwagę powszechność błędnych interpretacji i drugiej interpretacji, wydaje się, że nie nadają się one nawet do najprostszych interakcji między ludźmi [powstrzymując się od cytowania żartów na temat tego, co mówi dziewczyna / przyjaciel-przyjaciel i co to tak naprawdę znaczy])

Apalala
źródło
W naszych badaniach (miałem korepetytora) przyjrzeliśmy się greckiemu i łacinie, ponieważ mieli dobrze zdefiniowane gramatyki, które dobrze obejmowały każdą rolę, jaką słowo mogło odgrywać w zdaniu przez ich deklinację. To nie było wystarczająco dobre, a zapisy tego, jak ludzie rzeczywiście mówili w tych językach, mówią, że bardzo różniło się od tego, co wskazywały ich gramatyki, jak to się dzieje w przypadku języków współczesnych.
Apalala,
4
Jeśli chodzi o starożytną grekę i łacinę - część problemu polega na tym, że ocalałe teksty mają zazwyczaj charakter formalny - eseje, umowy, orzeczenia prawne itp. Jeśli myślisz o wiadomościach, które wysyłamy z dnia na dzień - „Cześć kochanie, proszę mleko w drodze do domu ”i„ Jim - pamiętaj raport Caseya z godziny 9 ”- większość z tych przemijających wiadomości w starożytnym Rzymie zostanie na zawsze utracona.
HorusKol,
2
To nie do końca prawda. Moja matka od czasu do czasu mówi o swoich licealnych klasach łacińskich i wspomniała o jednym przetłumaczonym przez siebie fragmencie, notce od rzymskiego patrycjusza do kierowcy rydwanu. Istotą było: „Proszę, w godzinach szczytu NIE daj się złapać za takim a takim rydwanem. Nie wiem, co on karmi swoje konie, ale smród jest Okropny”.
John R. Strohm,
4

Ponownie przeczytałem pytanie i myślę, że moja pierwotna odpowiedź nie rozwiązała go. Oto kolejna próba.

Nie, nie było żadnych poważnych badań dotyczących językoznawstwa języków programowania, o których wiem. Wyśledzono linie językowe dwóch głównych gałęzi i podgałęzi:

  • Proceduralne. Von Neuman . Dijkstra . Fortran, Pascal, C.
    • Obiektowy. Simula. Pogawędka.
  • Funkcjonalny. McArthy . SEPLENIENIE.

Dla tych z nas, którzy mają dziesięciolecia w tej dziedzinie, oczywiste jest, że języki programowania są ze sobą powiązane, i że w ten sposób można znaleźć większość aspektów każdego czystego paradygmatu w większości współczesnych języków programowania, zwanych obecnie językami programowania multiparadigm : C #, Python, Java, .. .. Nawet wcześniej czyste języki funkcjonalne, takie jak OCaml i Haskell, zawierają wystarczającą liczbę procedur (przez monady ) i funkcje OO, abyś mógł zrobić wszystko.

Wydaje mi się, że stało się, że stało się oczywiste, że zmiana języków programowania była kosztowna (jeśli nie głupia), aby móc zastosować odpowiedni paradygmat do danego podproblemu.

Pozostaje wyjątek od trendu w obszarze wysoce równoległych i asynchronicznych systemów. Tam preferowane języki są ściśle funkcjonalne, jak Erlang , prawdopodobnie dlatego, że łatwiej jest myśleć o tak złożonych systemach funkcjonalnie.

Nieparadygmatyczną częścią ewolucji była składnia. Języki, które zachęcały, a nawet dopuszczały programy tajemnicze, są coraz rzadziej używane ( APL , AWK , a nawet Perl i LISP). Obecnie dominują składnie bardziej czytelnych (w przeciwieństwie do łatwych do zapisu) języków, takich jak C (C ++, C #, Java, Objective-C, Scala, Go, IML, CSS, JavaScript, a także Python), Pascal (Fortran 90+ x), Smalltalk (Ruby), ML / Miranda (OCaml, Haskell, Erlang) i SGML (HTML, XML).

Ten schemat nie jest do końca dokładny i nie jest aktualny, ale daje dobre wyobrażenie o tym, ile języków programowania zbiegło się od epoki języka w latach siedemdziesiątych.

ewolucja języka programowania

Apalala
źródło
1
To bardziej przypomina to, czego szukałem. Wydaje mi się, że szukam także bezpośredniej korelacji z morfologią i fonologią, oprócz oczywistego związku ze składnią wynikającą z pracy z gramatykami formalnymi.
Jon Purdy
@Jon Cóż, innym oczywistym trendem jest to, że angielski był i jest dominującym językiem naturalnym leżącym u podstaw wszystkich języków programowania, zarówno pod względem składniowym, jak i gramatycznym. Języki programowania są od lewej do prawej, czasownik na początku. Na przykład japoński jest zupełnie inny, ale nie znam wysiłków na rzecz opracowania języka programowania w stylu japońskim. en.wikipedia.org/wiki/Japoński_język#Sentence_structure
Apalala
@Aplala: kolejność SOV jest powszechna w językach zorientowanych na stos, operatory infix liczą się jako SVO, a funkcje (Lisp jest patologicznym przykładem) to VSO. Angielski zdecydowanie ma duży wpływ, ale myślę, że istnieją inne czynniki w pracy ... Być może będę musiał przeprowadzić te badania samodzielnie. : P
Jon Purdy
@Jon Tak, zapomniałem o Forth i Postcript, które są oparte na stosie i SOV. Daj mi znać, jeśli rozpoczniesz badania. Specjalizowałem się w teorii języków na uniwersytecie, a języki programowania są nadal moim hobby. Mam wspomnienia z pierwszej ręki wielu z nich (Simula, Prolog, LISP).
Apalala
@Jon Może się okazać, że interesujące jest to, że wielu hiszpańskojęzycznych programistów woli używać identyfikatorów w języku hiszpańskim, mimo że źle pasują do języków programowania, bibliotek, ram, standardów i używanych narzędzi. Ich programy kończą się na „Spanglish”. Widziałem polubienia u programistów z językami ojczystymi w innych językach z dziedzictwem rzymskim / łacińskim, takich jak Europa Wschodnia. Nie mam pojęcia, co lubią robić programiści z Dalekiego Wschodu (chińscy, japońscy, koreańscy), rosyjscy lub arabscy.
Apalala,
1

Lubię odpowiedzi @ Apalala, które wydają się wykazywać zbieżność z kilkoma głównymi językami ogólnego przeznaczenia. Ma to tylko sens, ponieważ dobry pomysł może zostać wcześniej lub później odebrany przez innych.

Dodałbym, że ilekroć używa się języka, koniecznie go poszerza, dodając terminy, przekształcając go w język bardziej zorientowany na daną domenę. Czasami jest to dość proste, czasem nie. Oto przykład, który nie był tak prosty.

Cenną właściwością w języku ogólnego przeznaczenia jest zakres, w jakim pomaga on w definiowaniu nowych języków specyficznych dla domeny.

Mike Dunlavey
źródło