Myślę, że świat programuje teraz w angielskich językach programowania nie tylko ze względu na okoliczności historyczne / ekonomiczne, ale także dlatego, że angielska morfologia ma pewne właściwości, które najlepiej pasują do myślenia algorytmicznego. Ale i tak byłoby interesujące usłyszeć twoje opinie na ten temat, zwłaszcza jeśli sam jesteś wielojęzyczny.
Widziałem wzmianki o językach opartych na Niemczech (patrz na przykład Plankalkul, tak naprawdę pierwszy w historii język programowania, o którym wiemy bardzo niewiele, dzięki II wojnie światowej), a także rosyjski smak Algolu, który istniał w latach 80-tych przynajmniej na papierze, nie jestem pewien, czy kiedykolwiek istniał w wersji binarnej, czy nie. Oba wyglądały nieco powolnie, ponieważ było więcej skróconych słów i dziwnych skrótów niż pełnych słów, jak w językach opartych na EN. Więc jeśli znasz jakieś inne PL oparte na języku narodowym, nawet całkowicie archaiczne i nieistotne dzisiaj, czysto teoretyczne lub cokolwiek innego, byłoby interesujące, aby na nie spojrzeć.
I wracając do głównego pytania: co, jeśli w ogóle, sprawia, że język Szekspira jest tak dobry do programowania?
(W rzeczywistości na Wikipedii znajduje się lista nieanglojęzycznych języków programowania (oczywiście gdzie indziej?), Ale byłoby interesujące usłyszeć opinie rodzimych użytkowników tych języków na temat tego, jak naprawdę czują się dane „narodowe” języki programowania lubić.)
źródło
Odpowiedzi:
Oświadczenie: Moim językiem ojczystym jest niemiecki.
Nie sądzę, żeby istniał jakiś powód, dla którego angielski jako język, z którego należy brać słowa kluczowe, byłby lepszy niż jakikolwiek inny język naturalny. Wydaje mi się, że jest to jeden z najważniejszych języków w IT, ale nie ze względu na właściwości językowe, ale ponieważ większość ludzi mówi w pewnym stopniu, jest to język ojczysty wielu ważnych ludzi w tej dziedzinie, większość terminów związanych z technologią są już po angielsku itp.
Ale ponieważ mówimy o językach programowania, a nie o dokumentacji / API / nazwach itp., Muszę sprzeciwić się: Języki programowania nie są oparte na języku angielskim - ani na żadnym innym języku naturalnym. Języki programowania to języki formalne. Używają w różnym stopniu garści słów z (zwykle) angielskiego. Niektórzy nawet próbują naśladować gramatykę, ale zupełnie nie potrafią czytać jak po angielsku. Aby dodać obrazę obrażeniom, kojarzą tylko jedno pojedyncze (w rzadkich przypadkach garstkę) znaczenia z każdym pożyczonym słowem. Często to znaczenie jest bardzo żargonowe, specjalistyczne lub oparte na wątpliwej analogii. Dlatego znajomość niezliczonych znaczeń w języku naturalnym słowa zapożyczonego przez język programowania tak naprawdę nie pomaga w zrozumieniu koncepcji programowania tego słowa kluczowego. Przykłady z góry na głowie:
array
,type
,goto
,class
,void
. (Zabawa fakt, że powstały na myśl jak ja ponownie przeczytać pytanie: tych wszystkich, z wyjątkiemgoto
, posiadają niemieckie tłumaczenia, które mają co najwyżej jeden znak dłużej:Feld
,Typ
,Klasse
,Leere
. Wszyscy dźwięk dziwne dla mnie, ale to chyba kwestia przyzwyczajenia .)źródło
Angielski jest językiem programowania lingua franca .
Z tego samego artykułu:
źródło
Język angielski jest korzystny, ponieważ:
Łatwość typu. Możesz użyć standardowej klawiatury. Wiem, że to brzmi jak „lama dung”, ale czy próbowałeś pisać po chińsku? Istnieje tysiące znaków, a ponieważ chiński nie ma odpowiedniej techniki budowania „znaków” pasującej do koncepcji klawiatury, nauka globalnej publiczności nie byłaby łatwa do nauczenia.
Skrócone angielskie słowa są rozpoznawalnymi symbolami. Nie trzeba uczyć się całego języka angielskiego, aby kodować, dzięki czemu osoby spoza niego mogą uczyć się szybko.
Zgromadzenie używało małych słów, które nie miały struktury zdań. Potem pojawiły się języki, takie jak COBOL i FORTRAN, które starały się jak najlepiej dostosować do angielskiej struktury zdań. Nowsze języki wprowadziły większą zależność od uniwersalnych symboli algebraicznych, ponieważ miały lepszą przewidywalność. (W COBOL Dodaj X do Y, Odejmij Y od X, Oblicz Y = X + A; Compute sprawia, że poprzednie instrukcje nie są konieczne i zmniejsza złożoność analizy językowej). Nie potrzebowałbym dużo więcej, aby uznać języki takie jak C ++ za bardziej symboliczne niż oparte na języku. Jest trochę powrotu do programowania opartego na słowach w C #, ale to głównie w celu wsparcia popularnych wzorców programowania.
Wniosek:
Ostatecznie urządzenia peryferyjne ograniczają się do języka opartego na znakach (jak angielski). Również języki zachodnie mają lepszą obsługę pojęć matematycznych (np. Koncepcja 0, między innymi; Chiny pożyczają cyfry zamiast własnego przedstawienia wartości liczbowych, aby lepiej przekazywać liczby, ponieważ jest krótszy (średnio)). Poza wartościami liczbowymi uważam, że języki oparte na symbolach (chińskie) lepiej nadają się do morfologii języka programowania niż angielski, ponieważ większość współczesnych języków już używa symboli, a nauka byłaby ogólnie równoważna. Musielibyśmy jednak narzucić strukturę podobną do C ++, ponieważ bloki symboli nie byłyby łatwe do odczytania dla większości ludzi na świecie.
źródło
Jedynym powodem, dla którego angielski jest szeroko stosowany w informatyce, jest to, że obecnie jest on szeroko rozpowszechnionym językiem.
Gdyby komputery zostały wynalezione 2000 lat temu, używaliby greckiego. Gdyby zostały wynalezione 200 lat temu, użyliby francuskiego. Gdyby wymyślono je za 200 lat, prawdopodobnie użyliby chińskiego ...
źródło
Oto niektóre zalety hipotetycznego języka programowania, który przyjąłby jedynie alfabet łaciński i angielski.
Wszystkie te rzeczy są problemami, które wciąż nie zostały poprawnie rozwiązane na wszystkich urządzeniach. Na przykład tytuły utworów ze znakami diakrytycznymi nie wyświetlają się poprawnie w wielu odtwarzaczach muzycznych
źródło
étudiant
. W Unicode pierwszą literę można wyrazić jakoU+00E9 LATIN SMALL LETTER E WITH ACUTE
lube
po niejU+0301 COMBINING ACUTE ACCENT
. Gdybyś był pisarzem kompilatorów dla jednego z tych języków, czy chciałbyś obsługiwać takie nazewnictwo zmiennych? Jak dokładnie potraktowałbyś dwie zmienne w tym samym zakresie o nazwach\u00e9tudiant
ie\u0301tudiant
?Nie jestem pewien, czy same języki programowania korzystają z angielskiego. W wyjaśnieniu:
Tak więc, jeśli angielski jest korzystny dla języków programowania, pomógłby zachęcić więcej osób do używania języka programowania. W związku z tym oto kilka myśli:
Podsumowując te myśli, nie sądzę, aby angielski naprawdę pomagał programować języki w jakikolwiek znaczący sposób, jaki może zaoferować większość innych języków - poza tym, że wiele osób mówi w tym języku.
źródło
Moim zdaniem angielski ma po prostu bogatsze słownictwo techniczne i matematyczne niż wiele (ale nie wszystkie) innych języków. Języki, w których brakuje takiego słownictwa, używają angielskich słów pożyczki, aby wykonać zadanie. Już sam ten fakt jest ważnym powodem, aby zorientować języki programowania na angielski.
Jeśli chodzi o języki, które mają wystarczająco bogate słownictwo, aby opisać wszystko, co musimy opisać bez ciągłego korzystania z angielskich słów pożyczkowych, tradycja angielskiego jako lingua franca (wspólny język) dla nauk jest sama w sobie przekonująca, ale nasz alfabet daje nam kolejna noga w górę:
źródło
Dla przyjemnej lektury na temat kontekstu językowego i tego, w jaki sposób skończyło się na praniu rzeczy:
Rzeczy myśli Stevena Pinkera
Pamiętaj, że mówimy o konstrukcji języka, a nie o tym, jak komunikujemy informacje (nie jeden w tym samym), pracowałem z kodem, w którym głównym językiem zmiennych był cały niemiecki (kod był nie mniej łatwy do zrozumienia ). Angielski nie ma z natury rzeczy, które lepiej pasują do programowania, jeśli odejdziemy od struktury naszego języka, prawdopodobnie nie będzie gorzej , a może z wielu powodów:
Pytanie, dlaczego języki programowania używają „angielskiego”, jest jak pytanie, dlaczego układ okresowy nadal ma literę „W” identyfikującą wolfram, większość ludzi nie może powiedzieć dlaczego, chyba że zna historię. A jeśli chcesz historii języków programowania, powróćmy do dziurkowania kart, instrukcji bajtowych i montażu.
Asembler nie ma większych „angielskich” konstrukcji, ale jest tak blisko, jak to tylko możliwe, aby dostać się do kodu maszynowego bez nienawidzenia siebie. Co więcej, wszystkie elementy strukturalne języków wyższego poziomu mogą i są regularnie wdrażane przez tych z nas, którzy są na tyle szaleni, aby z tego korzystać. LD, MV, ST, BRA i reszta zestawu instrukcji nie przypominają angielskiego, ale potrafię go doskonale odczytać i uzyskać pełne znaczenie.
Przypisujemy to samo znaczenie LD lub MV w asemblerze konstrukcjom wyższego poziomu, nie muszę wiedzieć, co oznacza zmienna, aw wielu przypadkach nie zrobię tego, jeśli jest to po angielsku z powodu nr 2 na mojej liście. Zbiór identyfikatorów, takich jak int, str, enum i takie są sposobem na powiedzenie, z czym pracujesz, nie więcej. Gdyby zamiast int identyfikatorem była mewa , wszyscy wiedzielibyśmy, co oznacza mewa w kontekście kodowania, nie dlatego, że jest to angielski, ale to właśnie obejmuje identyfikator.
TL; DR: Języki programowania, jak każdy inny język, wymagają szkolenia, aby zrozumieć. Powód, dla którego ich polecenia są w języku angielskim zamiast hiszpańskim, niemieckim lub rosyjskim, jest bardziej niż ezoteryczny i historyczny niż pewna niezbędna konstrukcja języka angielskiego bardziej lub mniej odpowiednia dla identyfikatorów w konstrukcji języka formalnego.
źródło