Języki całkiem naturalne

2008-03-13 10:48

Języki programowania są tworami sztucznymi, ale wykazują pewne podobieństwo do języków naturalnych – czyli tych, którymi posługują się ludzie. Mają na przykład swoje gramatyki, składnie i semantyki, chociaż pojęcia te rozumiemy oczywiście nieco inaczej. W obu typach języków można też wyrazić bardzo wiele różnych myśli i relacji, z tym że domena języków naturalnych jest rzecz jasna znacznie szersza.

Ponieważ jednak wszystkimi językami posługują się głównie ludzie, niektóre języki programowania dorobiły się pewnej “otoczki” podobnej do tej, jaka towarzyszy części języków naturalnych. Myślę nawet, że bazując na tym, można wyróżnić odpowiedniki między obiema grupami. Może nie zawsze będą one wystarczająco sugestywne, ale przecież nie zaszkodzi spróbować ;-)
Jak dotąd w przypływie niewytłumaczalnej kreatywności wymyśliłem takie oto pary:

  • Książka “Hello World”C++ ma to do siebie, że jako tako znają go prawie wszyscy, lecz poziom tej znajomości pozostawia zwykle sporo do życzenia. Tak więc mimo tego, iż należy on do najpopularniejszych języków programowania, osób posługujących się nim zupełnie poprawnie nie ma znowu aż tak dużo. Zaś ekspertów znających na wyrywki każdy z jego niezliczonych kruczków znaleźć jeszcze trudniej.
    Który spośród języków naturalnych posiada podobne cechy? Ano angielski, oczywiście. Mówi się nawet, że większość świata mówi jego uproszczoną wersją, czyli “McEnglish”; możliwe, że na podobnej zasadzie istnieje “McC++” ;-] (Prawdę mówiąc, patrząc na niektóre posty na forum Warsztatu, jestem tego pewien ;P).
  • Java to z kolei kolejny bardzo popularny język programowania, który jest wykorzystywany do wielu różnych celów. W każdym zastosowaniu wygląda jednak nieco inaczej: wiadomo na przykład, że inaczej tworzy się aplikacje na J2ME (telefony komórkowe, itp.), a inaczej na J2EE (zastosowania serwerowe). Java ma więc sporo lokalnych ‘dialektów’, a w połączeniu z tym, że jest stosunkowo łatwa do nauki i codziennego posługiwania się, daje się porównać do języka hiszpańskiego.
  • Pascal również do trudnych języków nie należy. Charakteryzuje się ponadto dość rozwlekłą i sztywną składnią, która wymaga używania całkiem sporej ilości słów kluczowych. Słowa te zresztą też do krótkich nie należą, podobnie jak nazwy wbudowanych typów i funkcji.
    Z bardziej znanych języków naturalnych podobnie długie wyrazy i długie zdania oraz w miarę ścisła składnia występują chociażby w niemieckim.
  • W przypadku PHP mamy do czynienia z językiem, który niełatwo przyjmuje “nowinki techniczne” z zewnątrz. Obiektowość na przykład zaczęła być na poważnie wspierana dopiero w piątej jego wersji. Jednocześnie mamy tutaj kilka oryginalnych rozwiązań, które trudno uświadczyć gdzie indziej, jak choćby wstawianie HTML w środku bloku kodu PHP, konstrukcje typu DoSomething() || die(); albo funkcja list. Aha, i wypada też wspomnieć o najpopularniejszym znaku w tym języku, czyli $ ;)
    Podobną awersję do zapożyczeń oraz niespotykane gdzie indziej rozwiązania (np. liczebniki oparte na dwudziestkach, a nie dziesiątkach) w połączeniu z intensywnym użyciem znaczku apostrofa charakteryzują rzecz jasna język francuski.
  • Natomiast Basic miał w założeniu być językiem przede wszystkim dla początkujących. Jego założeniem była łatwość nauki i używania, co miało zapewnić mu popularność. W praktyce wyszło nieco gorzej i jego warianty nie mają w sumie zbyt wielu zwolenników, a cała ta historia przypomina trochę dzieje języka esperanto. Różnica jest taka, że Basic na pewno Nobla nie dostanie :)
  • I wreszcie mamy też C. Kiedyś było to narzędzie bardzo popularne, ale wraz z rozwojem nowszych języków pole jego zastosowań zawęziło się do specyficznych nisz. Z niego jednak wywodzi się cała gałąź języków, które przypominają go co najmniej składniowo: nawiasy klamrowe, sposób deklaracji zmiennych, itd. Rola przodka, który nie jest już szeroko stosowany, w połączeniu ze sporym stopniem skomplikowania sprawia, że C możemy przyrównywać do łaciny.

Trochę to naciągane? :) Zapewne. Między językami programowania a naturalnymi istnieje przecież jedna zasadnicza różnica: tych pierwszych można się nauczyć zdecydowanie łatwiej i szybciej niż tych drugich. Ale w obu przypadkach sprawdza się stwierdzenie, że ‘znać’ to nie znaczy ‘umieć zastosować’. Więc może szukanie analogii podobnych do powyższych nie jest takie zupełnie bez sensu :]

Be Sociable, Share!
Be Sociable, Share!
Tags:
Author: Xion, posted under Culture, Thoughts »


8 comments for post “Języki całkiem naturalne”.
  1. gamer.cpp:
    March 13th, 2008 o 20:31

    Tez masz pomysly :D Najpierw jakies nowe sposoby liczenia czasu teraz porownanie C z łaciną… :P

  2. Cranegger:
    March 13th, 2008 o 20:50

    Z tą łaciną to się zgadzam w 100%, ale uważam, że choć porównanie C++ z angielskim nie jest złe, to mi on bardziej pasuje na polski, bo dużo udziwnień ma ;)

  3. Xion:
    March 14th, 2008 o 20:14

    Zapewniam cię, że angielski ma przynajmniej tyle samo :) W każdym razie liczba kruczków w angielskim i C++ może być całkiem porównywalna. Do moich ulubionych w tym pierwszym należą np. warunki mieszane (mixed conditionals), różnica między definiującymi a niedefiniującymi zdaniami dopełnieniowymi, strona bierna od wyrażenia “make sb do sth” i słówko ‘hardly’ w zdaniu “He hardly works.”, znaczące coś dokładnie odwrotnego niż to, co wydaje się na pierwszy rzut oka :>

  4. Reg:
    March 16th, 2008 o 11:55

    Wg mnie C++ jest jak język chiński. Jest bardzo trudny i mówi w nim duża część świata, ale tylko pewna specyficzna grupa (m.in. programiści gier), dla pozostałych jest egzotyczny (programiści aplikacji biznesowych i web developerzy).

  5. PerlMan:
    March 21st, 2008 o 15:24

    Chciałbym przypomnieć o istnieniu $ w Perl’u! ;P

  6. coldpeer:
    March 26th, 2008 o 4:29

    “jak choćby wstawianie HTML w środku bloku kodu PHP”

    oj to nie do końca jest dokładnie tak jak mówisz ;) Gwoli ścisłości, wbrew przekonaniom niektórych osób: PHP nie generuje kodu HTML.

  7. Xion:
    March 26th, 2008 o 11:49

    Eee… a co robi? Tańczy i stepuje? ;-) Przecież nawet skrót PHP rozwija się (obecnie, bo wcześniej było nieco inaczej) do ‘preprocesora hipertekstu’.

    A wstawianie kodu HTML to przecież w gruncie rzeczy skrót od wywołania echo.

  8. Frizi:
    March 1st, 2009 o 23:49

    PHP nie tyle generuje HTML, co “jakiś” tekst. Sam program nie wie, co to jest, jednak po wysłaniu wyniku działania algorytmu przeglądarka dostaje (najczęściej) kod html. Równie dobrze można użyć php do generowania źródeł c++, o ile ktoś wymyśli na tyle “inteligentny” program :] echo zwraca tylko tekst na wyjście.
    Do generowania kodu HTML może służyć również aplikacja napisana w c++ po odpowiednim doklejeniu do apache (a czym innym jest php? :P).

Comments are disabled.
 


© 2020 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.