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 ?
programming-languages
spoken-languages
Jon Purdy
źródło
źródło
Odpowiedzi:
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])
źródło
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:
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.
źródło
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.
źródło