In che modo i linguaggi di programmazione traggono vantaggio dall'essere basati sull'inglese? [chiuso]


14

Penso che il mondo ora programmi in linguaggi di programmazione basati sull'inglese non solo a causa di circostanze storiche / economiche, ma perché la morfologia inglese in particolare ha alcune proprietà che si adattano meglio al pensiero algoritmico. Tuttavia, sarebbe interessante ascoltare le tue opinioni al riguardo, soprattutto se sei multilingue.

Ho visto alcune menzioni delle lingue tedesche (vedi Plankalkul per esempio, in effetti il ​​primo linguaggio di programmazione in assoluto che conosciamo molto poco, grazie alla seconda guerra mondiale), anche un sapore russo dell'Algol che esisteva negli anni '80 a almeno sulla carta, non sono sicuro che sia mai esistito in binario o meno. Entrambi sembravano un po 'lenti perché c'erano più parole abbreviate e strane abbreviazioni rispetto alle parole piene come nelle lingue basate su EN. Quindi, se conosci altri PL nazionali basati sulla lingua, anche oggi completamente arcaici e irrilevanti, puramente teorici o quant'altro, sarebbe interessante dar loro un'occhiata.

E torniamo alla domanda principale: quindi cosa rende il linguaggio di Shakespeare così buono per la programmazione?

(In realtà esiste un elenco di linguaggi di programmazione non basati su inglese su Wikipedia (ovviamente, dove altro?), Ma sarebbe interessante ascoltare le opinioni dei madrelingua di quelle lingue su come si sente davvero un determinato linguaggio di programmazione "nazionale" piace.)


3
@Michael: Ha detto "Penso". Sta esprimendo la sua opinione. Potresti chiedere come è arrivato a quell'opinione, ma non penso che debba citare una fonte. Possiamo prenderlo per parola che se dice che è la sua opinione, è la sua opinione. Inoltre, non ha detto che non c'erano circostanze storiche o economiche, solo che credeva che questi non fossero gli unici fattori, ed è più interessato a discutere degli altri.
HedgeMage,

1
@Michael: tu dici "I computer sono stati inventati e stabiliti principalmente nei paesi di lingua inglese", ora che sono circostanze storiche / economiche. Ad esempio, possiamo portare la rivoluzione industriale nel 19 ° secolo nel Regno Unito (e l'intero impero in realtà), o la "fuga dei cervelli" durante / dopo la Seconda Guerra Mondiale negli Stati Uniti, o che gli Stati Uniti probabilmente hanno avuto le perdite minori durante la Seconda Guerra Mondiale tra i paesi industriali, ecc.
Mojuba,

3
Qualunque lingua sia, dovrebbe essere grammaticamente neutrale rispetto al genere.
JeffO,

1
@Jeff O: assolutamente, e non solo genere. Fondamentalmente tutti i tuoi verbi dovrebbero essere neutrali, perché altrimenti finirai per pensare in quale forma esatta (tempo, genere, ecc.) Il "fare" nel tuo "mentre ... fai ..." dovrebbe essere. La morfologia dei verbi in inglese è così rilassata rispetto a molte altre lingue europee che penso che sia, tra le altre cose, ciò che rende l'inglese così buono per la programmazione.
Mojuba,

2
Potremmo anche chiederci perché l'italiano fornisce le parole chiave per la musica, mentre ci siamo. Ci potrebbero essere alcune intuizioni lì.
David Thornley,

Risposte:


17

Disclaimer: la mia lingua madre è il tedesco.

Non credo che ci sia alcun motivo per cui l'inglese come lingua da cui prendere le parole chiave sia migliore di qualsiasi altro linguaggio naturale. Penso che sia l'unica lingua fondamentale nell'IT, ma non a causa delle proprietà linguistiche, ma poiché la maggior parte delle persone tecnologiche lo parlano in una certa misura, è il motto nativo di parecchie persone importanti nel campo, i termini più legati alla tecnologia sono già inglesi, ecc.

Ma dal momento che parliamo di linguaggi di programmazione, non di documentazione / API / nomi / ecc., Devo obiettare: i linguaggi di programmazione non sono basati sull'inglese - o su qualsiasi altro linguaggio naturale, del resto. I linguaggi di programmazione sono linguaggi formali. Usano, in varia misura, una manciata di parole dall'inglese (di solito). Alcuni addirittura provano a imitare la sua grammatica, ma non riescono assolutamente a leggere come l'inglese a prescindere. Per aggiungere la beffa al danno, associano un solo significato (in rari casi una manciata di) a ciascuna parola che prendono in prestito. Spesso questo significato è molto gergale, specializzato o basato su un'analogia discutibile. Pertanto, conoscere la miriade di significati in linguaggio naturale di una parola presa in prestito dal linguaggio di programmazione non aiuta davvero a comprendere il concetto di programmazione alla base della parola chiave. Esempi al largo della parte superiore della mia testa: array,type, goto, class, void. (Una curiosità che balzato alla mente come ho riletto la domanda: Tutti questi, tranne che goto, hanno traduzioni in tedesco, che sono al massimo un carattere più a lungo: Feld, Typ, Klasse, Leere. Tutti suono strano per me, ma questo è probabilmente una questione di abitudine .)


2
Class-kind significa cosa significa in inglese. Una "classe" definisce un Tipo, che è una "classe di oggetti". Puoi dire che tutti i valori Int o tutti i record Person appartengono a una classe perché condividono determinate funzionalità. Tuttavia, la maggior parte dei programmatori di tipo C non pensa in termini categorici, quindi "classe" significa semplicemente "progetto dell'oggetto" per loro.
CodexArcanum,

7
Il tuo inglese è eccellente a proposito
Allen

Come collega tedesco, devo dire che sono totalmente d'accordo con te. Penso che la ragione principale sia, come hai detto, che l'inglese è la lingua nel mondo IT. Persone da tutto il mondo parlano, discutono e programmano in inglese ogni giorno - e quindi quasi ogni articolo rilevante viene pubblicato per la prima volta in inglese. Lo stesso vale per i libri. Inoltre, la maggior parte dei libri che vengono tradotti in tedesco sono sbagliati. Alcune frasi e parole chiave sono tradotte. Questo uccide totalmente il flusso .
mhr

Sono completamente d'accordo sul fatto che provare a scrivere la grammatica inglese nei linguaggi di programmazione sia un errore completo. Non sono d'accordo con "questo significato è molto gergale, specializzato". Come madrelingua inglese, descrivere concetti come analoghi a termini preesistenti è tipico della comunicazione quotidiana. L'inglese come lingua è interpretato in modo approssimativo e molto specifico per il contesto in generale. Per quanto riguarda gli equivalenti tedeschi, non è una grande sorpresa. L'inglese prende in prestito gran parte della sua struttura dal tedesco e molto del suo vocabolario da altre lingue. È come la "carne misteriosa" delle lingue naturali.
Evan Plaice,

@EvanPlaice Sì, è discutibile quanto siano innaturali. C'è chiaramente qualche merito per loro, altrimenti sarebbero stati aboliti molto tempo fa. Non posso giudicare se in genere aiutano madrelingua inglese, so solo che l'equivalente (scegliendo la traduzione più vicina, quindi costruendo analogie equivalenti con quella traduzione) tende a costruire associazioni sbagliate nel cervello degli studenti. Rel traduzioni: Sì, non è una sorpresa che ci siano parole simili; Stavo mirando alla "domanda più abbreviata e strane abbreviazioni rispetto alle parole piene".

8

L'inglese è la lingua franca della programmazione.

Dallo stesso articolo:

Non è altro che grandi hacker che comprendono collettivamente che attenersi all'inglese per discussioni tecniche rende più facile portare a termine le cose.


9
lingua franca - una frase latina che (oggi) significa francese. Eppure lo usiamo per indicare l'inglese.

6
@Graham Lee: Per quanto ironico, la frase ha finito per significare (come un termine inglese preso in prestito) "un linguaggio comune usato da persone di diversa estrazione per comunicare tra loro".
Greyfade,

Perché l'italiano è la lingua della notazione musicale o il latino la musica della scienza? Per la tecnologia è inglese. Con l'accettazione internazionale come "lingua franca" è inevitabile che l'inglese abbia il vocabolario più specifico per la tecnologia. Un ricco vocabolario è essenziale per una comunicazione efficace (e universale), quindi le persone sono disposte ad adottare la lingua.
Evan Plaice,

5

La lingua inglese è favorevole perché:

  1. Si adatta meglio alle restrizioni delle attuali periferiche.

Facilità di tipo. Puoi usare una tastiera standard. So che suona come "llama dung", ma hai provato a scrivere in cinese? Ci sono migliaia di personaggi e poiché il cinese non ha un'adeguata tecnica di costruzione del "personaggio" per adattarsi al concetto di tastiera, non sarebbe facile da imparare per un pubblico globale.

  1. Può essere trasformato in non parole ugualmente riconoscibili. L'inglese favorisce le abbreviazioni a causa della mancanza di simboli di accento.

Le parole inglesi abbreviate sono simboli riconoscibili. Non è necessario imparare l'intera lingua inglese per codificare, quindi le persone esterne alla lingua possono imparare velocemente.

  1. E considera che i linguaggi di programmazione comuni presentano più simboli matematici e meno parole.

Assembly ha usato piccole parole che non avevano una struttura di frasi. Poi sono arrivate le lingue, come COBOL e FORTRAN, che hanno cercato di adattarsi il più possibile alla struttura delle frasi in inglese. Le lingue più recenti implementavano una maggiore dipendenza dai simboli algebrici universali, perché avevano una migliore prevedibilità. (In COBOL Aggiungi X a Y, Sottrai Y da X, Calcola Y = X + A; Il calcolo rende superflue le dichiarazioni precedenti e riduce la complessità dell'analisi del linguaggio). Non ci vorrebbe molto di più per considerare linguaggi come il C ++ più simbolici del linguaggio. C'è un po 'di ritorno alla programmazione basata su parole con C #, ma ciò è dovuto principalmente al supporto di schemi di programmazione popolari.

Conclusione:

In definitiva, le periferiche si limitano a una lingua basata sui caratteri (come l'inglese). Inoltre, le lingue occidentali hanno un miglior supporto per i concetti matematici (come il concetto di 0, tra gli altri; la Cina prende in prestito i numeri al posto della propria rappresentazione di valori numerici, per trasmettere meglio i numeri, perché è più breve da scrivere (in media)). A parte i valori numerici, vedrei le lingue basate sui simboli (cinese) come più adatte alla programmazione della morfologia del linguaggio rispetto all'inglese, poiché la maggior parte delle lingue moderne utilizza già i simboli e sarebbe universalmente equivalente da imparare. Tuttavia, dovremmo imporre una struttura simile al C ++, avere blocchi di simboli non sarebbe facile da leggere per la maggior parte delle persone nel mondo.


4
Non è necessario imparare l'intera lingua inglese per codificare, quindi le persone esterne alla lingua possono imparare velocemente - non suona come una buona argomentazione: nella scienza medica ci sono molte parole latine e tu no ho bisogno di conoscere il latino per studiare scienze mediche.
Mojuba,

2
Quello che hai detto sul cinese è falso. Il cinese può essere inserito con una tastiera standard.
grokus,

2
@mojuba Non intendevo. Quello che volevo dire è che l'inglese è bravo ad abbreviare parole, MOV, cpystr, ecc. Non puoi tagliare metà simbolo cinese o metà parola giapponese (che di solito è una combinazione di parole) e significare la stessa cosa. Considerando che hai un sacco di spazio per abbreviare le parole inglesi e trasmettere lo stesso significato. Non intendo dire che altre professioni non incorporano parole di altre lingue, intendo dire che le parole che la sintassi del programma incorporano possono essere facilmente semplificate in token.
Lee Louviere,

@grokus A meno che tu non intenda PinYin, non puoi digitare direttamente il cinese. Devi usare i tasti, o usare PinYin e selezionare il simbolo di corrispondenza più vicino. In entrambi i casi, è necessario incorporare un processo di selezione perché la tastiera standard non supporta i quattro toni cinesi. A MENO CHE non modifichi la tastiera standard, violando così i requisiti.
Lee Louviere,

-1, 0 non era un concetto occidentale (prima il Medio Oriente), Assembly non usa affatto parole (di solito basate su nomi di linee / registri e comandi a 3-5 caratteri per prendere posto di 0x86 essendo LDA), struttura inglese uccide la programmazione perché l'inglese ha una delle peggiori serie di strutture nelle lingue "occidentali". Le non parole "riconoscibili" sono un'idea specifica di località e materia e possono essere cattive come un insieme di parole "non inglesi" da comprendere. Tutte le lingue sono simboliche, fa parte del modo in cui le trasformi in un linguaggio formale: int rappresenta Integer, Double rappresenta i float a doppia precisione ...
Jeff Langemeier

5

L'unica ragione per cui l'inglese è ampiamente utilizzato nell'informatica è che in questo momento è una lingua molto diffusa.

Se i computer fossero stati inventati 2000 anni fa, avrebbero usato il greco. Se fossero stati inventati 200 anni fa avrebbero usato il francese. Se fossero stati inventati in 200 anni probabilmente avrebbero usato il cinese ...


3

Ecco alcuni vantaggi che un ipotetico linguaggio di programmazione avrebbe se assumesse semplicemente l'alfabeto inglese - latino.

  1. È un piccolo set di caratteri (a differenza di Kanji)
  2. Di solito non usa segni diacritici (a differenza di francese, spagnolo, tedesco, ecc.)
  3. Ogni maiuscola ha una minuscola (a differenza del tedesco Eszett)
  4. La sua collazione è semplice

Tutte queste cose sono problemi che non sono ancora stati risolti correttamente su tutti i dispositivi. Ad esempio, i titoli dei brani con segni diacritici non vengono visualizzati correttamente su un numero di lettori musicali


5
Mi chiedo se i computer fossero stati inventati in Cina, avremmo discusso su come chiunque potesse scrivere codice che non era in cinese perché tutti i caratteri consentono nomi più brevi.
CodexArcanum,

3
Non sono d'accordo. L'alfabeto greco, per esempio, è piccolo; i segni diacritici avrebbero potuto essere eliminati appositamente per la programmazione, lo stesso per il tedesco ß; oggigiorno le regole di confronto sono normalizzate, cioè portate in una forma "semplice" per il calcolo / database ecc. praticamente in tutte le lingue esistenti. Proprio come gli articoli in inglese "the" e "a" non vengono sostanzialmente utilizzati o evitati nel campo dell'informatica, qualsiasi altra lingua avrebbe potuto essere ottimizzata.
Mojuba,

3
Non vedo che maiuscole e minuscole abbiano molto a che fare con il linguaggio di programmazione.
David Thornley,

1
@David Thornley ah ma per un compilatore il programma sono i dati.
Conrad Frix,

1
@Ingo Non sono sicuro di cosa intendi. Ad esempio, supponiamo che io abbia usato una variabile chiamata étudiant. Con unicode la prima lettera può essere espressa come U+00E9 LATIN SMALL LETTER E WITH ACUTEo potrebbe essere eseguita da U+0301 COMBINING ACUTE ACCENT. Se tu fossi lo scrittore del compilatore per una di queste lingue, vorresti supportare la denominazione variabile in questo modo? Come tratteresti esattamente due variabili nello stesso ambito chiamato \u00e9tudiante e\u0301tudiant?
Conrad Frix,

2

Non sono così sicuro che i linguaggi di programmazione stessi traggano vantaggio dall'essere basati sull'inglese. In spiegazione:

  • Il nome di metodi, variabili, oggetti, ecc. Non ha importanza per il computer
  • Il contenuto di un commento non ha importanza per un computer
  • La logica della programmazione è esprimibile nella maggior parte (e presumo TUTTO) le lingue parlate.

Quindi, se l'inglese è di beneficio per i linguaggi di programmazione, sarebbe utile aiutare più persone a usare il linguaggio di programmazione. A tal proposito, ecco alcuni pensieri:

  • Molte persone in paesi stranieri imparano l'inglese se vogliono o meno programmare
  • Le persone che progettano un linguaggio informatico e desiderano che molte persone lo utilizzino sceglieranno generalmente la lingua parlata più conosciuta per descriverlo.

Riassumendo questi pensieri, non penso che l'inglese aiuti davvero a programmare i linguaggi in un modo significativo che la maggior parte delle altre lingue potrebbe offrire, a parte il fatto che molte persone lo parlano.


Interessante che tu menzioni commenti; Ho lavorato per un'azienda giapponese, dove tutti i file C sono stati archiviati in Unicode perché i commenti erano in giapponese.
Mark Avenius,

1

A mio avviso, l'inglese ha semplicemente un vocabolario tecnico e matematico più ricco di molte altre lingue (ma non tutte). Le lingue che mancano di tale vocabolario usano parole di prestito inglese per fare il lavoro. Questo da solo è un motivo convincente per orientare i linguaggi di programmazione verso l'inglese.

Per quanto riguarda le lingue che hanno un vocabolario sufficientemente ricco per descrivere tutto ciò che dobbiamo descrivere senza ricorrere costantemente alle parole di prestito in inglese, la tradizione dell'inglese come lingua franca (lingua comune) per le scienze è di per sé avvincente, ma il nostro alfabeto ci dà un altro piccolo vantaggio:

  • L'inglese può essere rappresentato in un set di caratteri più piccolo rispetto, ad esempio, alle lingue cinese, giapponese, cirillico o persino romanze che usano caratteri latini accentati.
  • L'alfabeto inglese, in gran parte dovuto alla sua completa mancanza di caratteri accentati, è visivamente molto chiaro. Abbiamo abbastanza bug a causa di parentesi non corrispondenti o punti e virgola mancanti, sarebbe sciocco aggiungere problemi di discernimento tra 'ē', 'ĕ' e 'ě'.

3
Il vocabolario tecnico inglese è ricco perché l'informatica è stata sviluppata principalmente nei paesi di lingua EN e non viceversa. Una specie di problema con l'uovo di gallina;) Per quanto riguarda i personaggi accentati, punto interessante davvero.
Mojuba,

@mojuba Non sono d'accordo. Il vocabolario tecnico inglese è ricco perché le tecnologie che precedono da tempo i computer sono state sviluppate principalmente in inglese. Tali tecnologie erano sviluppate in inglese per ragioni principalmente economiche, ma quando arrivarono i computer, la lingua inglese era già pronta e pronta.
HedgeMage,

2
Pulchra est lingua Latina! ("La lingua latina è bellissima!") In realtà parlo latino classico e mi sono divertito molto ad usarlo nel mio codice. Sfortunatamente, si blocca costantemente al limite dell'essere un linguaggio morto, quindi non è pratico basare un linguaggio di programmazione. (Tuttavia, ora sono tentato di progettarne uno solo per divertimento.) Molte buone tecnologie provenivano da madrelingua non inglese, ma non abbastanza da nessuna lingua per abbinare il ricco vocabolario offerto dall'inglese in qualsiasi lingua che incontra anche l'altro fattore che ho citato: un piccolo alfabeto chiaro.
HedgeMage

1
@mojuba + HedgeMage, non importa dove siano sviluppate le tecnologie, l'inglese è un tale miscuglio di parole e vocaboli presi in prestito, che qualsiasi terminologia che non è stata sviluppata in inglese viene rapidamente assorbita dalla lingua. Il principale vantaggio degli inglesi è che offre un sacco di tempo complicato che può descrivere bene i concetti astratti, il che è molto utile.
whatsisname

5
La lingua inglese è ricca a causa della sua abitudine di imbrogliare altre lingue in vicoli bui e rubare tutte le loro parole utili. Non è tanto una fonte di parole in prestito quanto un bazar di parole.
David Thornley,

1

Per una lettura divertente sul contesto del linguaggio e su come finiamo di fare le cose:

Stuff of Thought di Steven Pinker

Ricorda, stiamo parlando del costrutto del linguaggio, non di come comunichiamo le informazioni (non una nello stesso), ho lavorato con il codice in cui la lingua principale per le variabili era tutta in tedesco (il codice non era meno facile da capire ). L'inglese non ha intrinsecamente nulla che si adatti meglio alla programmazione, se stiamo andando direttamente fuori da come è strutturata la nostra lingua, probabilmente è peggio non meglio, e questo potrebbe essere onestamente per molte ragioni:

  1. Mancanza di struttura (possiamo mettere soggetto / predicato / sostantivi / aggettivi dove preferiamo),
  2. Mutabilità delle nostre parole (sentiamo di poter abbreviare QUALCOSA)
  3. GRANDE UNO: Qualcuno che conosce fluentemente l'inglese non avrà una migliore comprensione di una sezione di codice rispetto a qualcuno che non ha comprensione della lingua inglese.

Chiedere perché i linguaggi di programmazione usano "l'inglese" è come chiedere perché la tavola periodica abbia ancora la lettera "W" che identifica il tungsteno, la maggior parte delle persone non può dirti perché se non conoscono la storia. E se vuoi la cronologia dei linguaggi di programmazione, dovremmo tornare a schede perforate, istruzioni byte e assembly.

Assembly non ha costrutti "inglesi" importanti ma è il più vicino possibile al codice macchina senza odiare te stesso. Inoltre, tutti gli elementi strutturali delle lingue di livello superiore possono e sono regolarmente implementati da quelli di noi abbastanza pazzi da apprezzarlo. LD, MV, ST, BRA e il resto del set di istruzioni non assomigliano affatto all'inglese, ma posso leggerlo perfettamente e ottenere il significato completo.

Assegniamo lo stesso significato di LD o MV in assembly a costrutti di livello superiore, non ho bisogno di sapere cosa significhi una variabile, e in molti casi non lo farò se è comunque in inglese a causa di # 2 nella mia lista. L'insieme di identificatori come int, str, enum e simili sono un modo per dire con cosa stai lavorando, non di più. Se invece di int l'identificatore fosse gabbiano , sapremmo tutti cosa significa gabbiano in un contesto di codifica, non perché è inglese, ma è quello che copre l'identificatore.

TL; DR: i linguaggi di programmazione, come qualsiasi lingua, hanno bisogno di formazione per capire. Il motivo per cui i loro comandi sono in inglese anziché spagnolo o tedesco o russo è più che probabilmente esoterico e storico che per qualche costrutto necessario della lingua inglese essendo più o meno adatto per gli identificatori nel costrutto del linguaggio formale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.