W jaki sposób języki programowania korzystają z języka angielskiego? [Zamknięte]


14

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ć.)


3
@Michael: Powiedział „Myślę, że”. Wyraża swoją opinię. Możesz zapytać, jak doszedł do tej opinii, ale nie sądzę, żeby musiał cytować źródło. Możemy mu wierzyć na słowo, że jeśli mówi, że to jego opinia, to jego opinia. Ponadto nie powiedział, że nie ma ŻADNYCH okoliczności historycznych ani ekonomicznych, tylko że wierzył, że nie były to jedyne czynniki, i jest bardziej zainteresowany rozmową o innych.
HedgeMage,

1
@Michael: mówisz „Komputery zostały wynalezione i założone głównie w krajach anglojęzycznych”, teraz są to okoliczności historyczne / ekonomiczne. Na przykład możemy przywołać rewolucję przemysłową w XIX wieku w Wielkiej Brytanii (a właściwie całe imperium) lub „drenaż mózgów” podczas / po drugiej wojnie światowej do Stanów Zjednoczonych lub że USA prawdopodobnie poniosły najmniejsze straty podczas drugiej wojny światowej wśród kraje uprzemysłowione itp.
mojuba,

3
Niezależnie od tego, jaki to język, gramatycznie powinien być neutralny pod względem płci.
JeffO

1
@Jeff O: absolutnie i nie tylko płeć. Zasadniczo wszystkie twoje czasowniki powinny być neutralne, ponieważ w przeciwnym razie skończysz na myśleniu, w jakiej dokładnie formie (czas, płeć itp.) Powinno być „robić” w swoim „czasie… robić…”. Morfologia czasowników w języku angielskim jest tak swobodna w porównaniu z wieloma innymi językami europejskimi, że myślę, że dzięki temu angielski jest tak dobry do programowania.
mojuba,

2
Możemy również zapytać, dlaczego włoski dostarcza słowa kluczowe do muzyki, podczas gdy my jesteśmy przy tym. Mogą tam być pewne spostrzeżenia.
David Thornley,

Odpowiedzi:


17

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ątkiem goto, 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 .)


2
Rodzaj klasy oznacza, co to znaczy w języku angielskim. „Klasa” definiuje typ, który jest „klasą obiektów”. Można powiedzieć, że wszystkie wartości Int lub wszystkie rekordy Osoby należą do klasy, ponieważ mają pewne cechy. Jednak większość programistów podobnych do C nie myśli kategorycznie, więc „klasa” oznacza dla nich „plan obiektu”.
CodexArcanum

7
Twój angielski jest doskonały btw
Allen

Jako kolega z Niemiec muszę powiedzieć, że całkowicie się z tobą zgadzam. Myślę, th powodem Emain jest, jak już wspomniano, że angielski jest językiem na świecie IT. Ludzie z całego świata codziennie mówią, dyskutują i programują w języku angielskim - dlatego prawie każdy odpowiedni artykuł jest publikowany po angielsku. To samo dotyczy książek. Poza tym większość książek przetłumaczonych na niemiecki jest w pewnym sensie błędna. Niektóre frazy i słowa kluczowe są przetłumaczone. To całkowicie zabija przepływ .
mhr

Całkowicie się zgadzam, że próba wprowadzenia gramatyki angielskiej do języków programowania jest całkowitym błędem. Nie zgadzam się z „to znaczenie jest bardzo żargonowe, specjalistyczne”. Jako rodzimy użytkownik języka angielskiego opisywanie pojęć jako odpowiedników wcześniejszych terminów jest typowe dla codziennej komunikacji. Angielski jako język jest po prostu luźno interpretowany i ogólnie bardzo kontekstowy. Jeśli chodzi o niemieckie odpowiedniki, nie jest to duża niespodzianka. Angielski zapożycza znaczną część swojej struktury z języka niemieckiego, a wiele słownictwa z innych języków. To jest jak „tajemnicze mięso” języków naturalnych.
Evan Plaice

@EvanPlaice Tak, dyskusyjne jest to, jak nienaturalne są naprawdę. Jest dla nich pewna zasługa, inaczej dawno by zostały zniesione. Nie mogę ocenić, czy generalnie pomagają rodzimym użytkownikom języka angielskiego, po prostu wiem, że odpowiednik (wybór najbliższego tłumaczenia, a następnie konstruowanie równoważnych analogii z tym tłumaczeniem) ma tendencję do budowania niewłaściwych skojarzeń w mózgach uczniów. Ponowne tłumaczenia: Tak, nic dziwnego, że istnieją podobne słowa; Dążyłem do „pytania było więcej skróconych słów i dziwnych skrótów niż pełnych słów”.

8

Angielski jest językiem programowania lingua franca .

Z tego samego artykułu:

To nic innego jak wspaniali hakerzy, którzy wspólnie zdają sobie sprawę, że trzymanie się angielskiego w celu dyskusji technicznej ułatwia załatwienie sprawy.


9
lingua franca - fraza łacińska, która (dziś) oznacza francuski. A jednak używamy go w znaczeniu angielskim.

6
@Graham Lee: Jakkolwiek ironiczne jest to zdanie, oznacza ono (jako pożyczony angielski termin) „wspólny język używany przez ludzi z różnych środowisk do komunikowania się ze sobą”.
greyfade

Dlaczego włoski jest językiem notacji muzycznej, a łacina muzyką nauki? W przypadku technologii jest to język angielski. Przy międzynarodowej akceptacji jako „lingua franca” nieuniknione jest, że angielski będzie miał najobszerniejsze słownictwo specyficzne dla technologii. Bogate słownictwo jest niezbędne do skutecznej (i uniwersalnej) komunikacji, więc ludzie chętnie przyjmują ten język.
Evan Plaice

5

Język angielski jest korzystny, ponieważ:

  1. Lepiej pasuje do ograniczeń obecnych urządzeń peryferyjnych.

Ł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.

  1. Można przekształcić w nie-słowa, które są jednakowo rozpoznawalne. Angielski preferuje skróty ze względu na brak symboli akcentujących.

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.

  1. Weź pod uwagę, że popularne języki programowania zawierają więcej symboli matematycznych i mniej słów.

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.


4
Nie trzeba uczyć się całego języka angielskiego, aby kodować, więc ludzie spoza niego mogą uczyć się szybko - nie brzmi to jak dobry argument: w naukach medycznych jest wiele łacińskich słów, a ty nie musisz znać łacinę, aby studiować nauki medyczne.
mojuba,

2
To, co powiedziałeś o chińskim, jest fałszywe. Chiński można wprowadzić za pomocą standardowej klawiatury.
grokus

2
@mojuba Nie to miałem na myśli. Miałem na myśli to, że angielski jest dobry w skracaniu słów, MOV, cpystr itp. Nie można odciąć połowy chińskiego symbolu lub połowy japońskiego słowa (które jest zwykle kombinacją słów) i znaczy to samo. Podczas gdy masz dużo miejsca na skrócenie angielskich słów i przekazanie tego samego znaczenia. Nie chcę powiedzieć, że inne zawody nie zawierają słów z innych języków, chcę powiedzieć, że słowa, które składnia programu zawiera, można łatwo uprościć w tokenach.
Lee Louviere,

@grokus O ile nie masz na myśli PinYin, nie możesz bezpośrednio pisać po chińsku. Musisz użyć klawiszy lub PinYin i wybrać najbliższy pasujący symbol. Tak czy inaczej, musisz włączyć proces selekcji, ponieważ standardowa klawiatura nie obsługuje czterech chińskich dźwięków. O ile nie zmodyfikujesz standardowej klawiatury, naruszając w ten sposób wymagania.
Lee Louviere,

-1, 0 nie było koncepcją zachodnią (najpierw na Środkowym Wschodzie), asembler w ogóle nie używa słów (zwykle opartych na nazwach linii / rejestru i 3–5 komend znakowych, a 0x86 to LDA), struktura angielska zabija programowanie, ponieważ angielski ma jeden z najgorszych zestawów struktur w językach „zachodnich”. Nie-słowa, które są „rozpoznawalne”, są ideą specyficzną dla danego miejsca i tematyki i mogą być tak złe, jak „nieanglojęzyczny” zestaw słów do zrozumienia. Wszystkie języki są symboliczne, jest to część tego, jak uczynisz je językiem formalnym: int reprezentuje liczby całkowite, Double reprezentuje zmiennoprzecinkowe precyzji podwójnej ...
Jeff Langemeier

5

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 ...


3

Oto niektóre zalety hipotetycznego języka programowania, który przyjąłby jedynie alfabet łaciński i angielski.

  1. To mały zestaw znaków (w przeciwieństwie do Kanji)
  2. Zwykle nie używa znaków diakrytycznych (w przeciwieństwie do francuskiego, hiszpańskiego, niemieckiego itp.)
  3. Każda wielka litera ma małą literę (w przeciwieństwie do niemieckiego Eszett)
  4. Zestawienie jest proste

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


5
Zastanawiam się, czy komputery zostały wynalezione w Chinach, zastanawialibyśmy się, jak ktokolwiek mógłby napisać kod, który nie jest w języku chińskim, ponieważ wszystkie znaki pozwalają na krótsze nazwy.
CodexArcanum

3
Nie zgadzam się. Na przykład alfabet grecki jest tak mały; Znaki diakrytyczne można było wyeliminować specjalnie dla programowania, tak samo dla niemieckiego ß; sortowanie jest obecnie znormalizowane, tzn. wprowadzone do „prostej” formy obliczeniowej / baz danych itp. w praktycznie wszystkich istniejących językach. Podobnie jak angielskie artykuły „a” i „a” w zasadzie nie są używane ani omijane w komputerach, każdy inny język mógłby przejść pewną optymalizację.
mojuba,

3
Nie widzę, aby wielkie i małe litery miały wiele wspólnego z językiem programowania.
David Thornley,

1
@David Thornley ah, ale dla kompilatora program to dane.
Conrad Frix,

1
@ Ingo Nie jestem pewien, co masz na myśli. Załóżmy na przykład, że użyłem zmiennej o nazwie étudiant. W Unicode pierwszą literę można wyrazić jako U+00E9 LATIN SMALL LETTER E WITH ACUTElub epo niej U+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 \u00e9tudianti e\u0301tudiant?
Conrad Frix

2

Nie jestem pewien, czy same języki programowania korzystają z angielskiego. W wyjaśnieniu:

  • Nazwy metod, zmiennych, obiektów itp. Nie mają znaczenia dla komputera
  • Treść komentarza nie ma znaczenia dla komputera
  • Logikę programowania można wyrazić w większości (i zakładam WSZYSTKIE) mówionych językach.

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:

  • Wiele osób w obcych krajach uczy się angielskiego bez względu na to, czy chce programować
  • Ludzie, którzy projektują język komputerowy i chcą, aby wiele osób go używało, zazwyczaj wybierają najbardziej znany język mówiony, aby go opisać.

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.


Ciekawe, że wspominasz o komentarzach; Pracowałem dla japońskiej firmy, w której wszystkie pliki C były przechowywane w Unicode, ponieważ komentarze były w języku japońskim.
Mark Avenius

1

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ę:

  • Angielski może być reprezentowany przez mniejszy zestaw znaków niż, na przykład, chiński, japoński, cyrylica, a nawet języki romańskie, które używają akcentowanych znaków łacińskich.
  • Alfabet angielski, głównie ze względu na całkowity brak znaków akcentowanych, jest bardzo wyraźny wizualnie. Mamy wystarczająco dużo błędów z powodu niedopasowanych nawiasów kwadratowych lub brakujących średników, głupotą byłoby dodawanie problemów rozróżniających między „ē”, „ĕ” i „ě”.

3
Angielskie słownictwo techniczne jest bogate, ponieważ informatyka została opracowana głównie w krajach anglojęzycznych, a nie na odwrót. Naprawdę rodzaj problemu z jajkiem kurze;) Jeśli chodzi o akcentowane postacie, naprawdę interesujący punkt.
mojuba,

@mojuba Nie zgadzam się. Angielskie słownictwo techniczne jest bogate, ponieważ technologie, które długo wyprzedzały komputery, zostały opracowane głównie w języku angielskim. Technologie te zostały opracowane w języku angielskim głównie z powodów ekonomicznych, ale zanim pojawiły się komputery, język angielski był już przygotowany i gotowy.
HedgeMage,

2
Pulchra est lingua Latina! („Język łaciński jest piękny!”) Właściwie mówię klasyczną łaciną i świetnie się bawiłem, używając jej w kodzie. Niestety, ciągle wisi na krawędzi bycia martwym językiem, więc oparcie języka programowania jest niepraktyczne. (Chociaż teraz kusi mnie zaprojektowanie jednego dla zabawy). Wiele dobrych technologii pochodzi od osób nieanglojęzycznych, ale niewystarczająca z jednego języka, aby dopasować bogate słownictwo oferowane przez angielski w każdym języku, który również spełnia drugi czynnik, o którym wspomniałem: mały, wyraźny alfabet.
HedgeMage

1
@mojuba + HedgeMage, naprawdę nie ma znaczenia, gdzie opracowuje się technologie, angielski jest tak wielkim zbiorem zapożyczonych słów i słownictwa, że ​​każda terminologia, która nie została opracowana w języku angielskim, jest szybko przyswajana w języku. Główną zaletą języka angielskiego jest to, że oferuje wiele skomplikowanych czasów, które potrafią dobrze opisać abstrakcyjne pojęcia, co jest bardzo przydatne.
whatsisname

5
Język angielski jest bogaty ze względu na swój zwyczaj plądrowania innych języków w ciemnych zaułkach i kradzieży wszystkich użytecznych słów. To nie tyle źródło słów pożyczek, ile bazar słów.
David Thornley,

1

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:

  1. Brak struktury (możemy umieścić temat / predykat / rzeczowniki / przymiotniki, gdziekolwiek chcemy),
  2. Zmienność naszych słów (czujemy, że możemy skrócić WSZYSTKO)
  3. WIELKI JEDEN: Ktoś, kto biegle zna angielski, nie będzie lepiej rozumiał fragmentu kodu niż ktoś, kto nie rozumie języka angielskiego.

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.