Perché non ci sono più linguaggi di programmazione in più linguaggi naturali?


9

Esistono linguaggi di programmazione disponibili ed estendibili in più di un linguaggio naturale?

Ad esempio, una versione inglese con un do..whileloop, una versione spagnola con un hacer..mientasloop, una versione francese con a faire..pendante una versione olandese con a doe..terwijl.

L'unico "linguaggio di programmazione" che mi viene in mente di questo tipo di strumenti è Microsoft VBA.

Domanda bonus: perché ci sono così pochi linguaggi di programmazione disponibili in più lingue?


12
L'inglese è la lingua francese della maggior parte dei linguaggi di programmazione, nel bene e nel male.
Robert Harvey,

13
That's a reason why the languages are in English, not why there are no other languages, for example no "Java Indonesian" or "C++ Swahili"- Perché il tuo programma indonesiano Java sarebbe gestibile solo da programmatori indonesiani.
Robert Harvey,

5
@DavidArno questo argomento è stato picchiato a morte in Le persone dei paesi non di lingua inglese codificano in inglese? e più domande ad esso collegate
moscerino l'

8
@MartijnBurger tradurre le parole chiave è il "problema minore", rispetto alla traduzione della libreria standard , che è il "compito enorme". E questo è anche ciò che causerebbe problemi di interoperabilità. Java non dipende dall'ortografia delle parole chiave una volta compilate; ma dipende dall'ortografia dei nomi di pacchetto, classe e metodo.
Dan Getz,

3
@DanGetz c'è ancora il problema in Java (e probabilmente in altre lingue) che le parole chiave sono riservate. Non riesco a definire un campo come String for;in Java in quanto sarebbe un simbolo esportato nella classe. E questo sarebbe che non potrei nominare un campo doeneanche perché è nella versione olandese e public class Deer { String buck; String doe; }non avere il doecampo accessibile. Tutte le parole chiave sono parole riservate in Java. Cose brutte accaderebbero ai campi che sono in conflitto con le parole chiave in altri lang.

Risposte:


21

I nomi delle funzioni nelle formule di Excel sono localizzati, dove è possibile utilizzare la formulazione inglese o l'equivalente locale.

Ciò ha portato a innumerevoli occorrenze di fogli di calcolo rotti durante lo spostamento tra le regioni e le lingue degli utenti. Rende anche difficile la ricerca di informazioni sulla funzionalità, poiché la documentazione locale è localizzata e non menziona i nomi inglesi delle cose e, al contrario, chiedere su SO con i nomi locali è essenzialmente insignificante per la maggior parte dei lettori.

Le parole chiave dovrebbero essere viste come moniker opachi, che in qualche modo coincidono con il significato delle parole inglesi usate per compitarle. Esistono molti programmatori che non parlano inglese che non sanno cosa significa metà delle loro parole chiave.


5
È sorprendente che questa risposta sia l'unico posto in cui appare la parola "Excel", considerato l'epico fallimento delle formule tradotte. Entrambi gli argomenti sono validi e molto validi: i fogli di calcolo si rompono e le versioni localizzate frammentano le comunità. Ciò non include lo sforzo del fornitore di tradurre i documenti e i programmi (compilatori) stessi.

1
Perché è così difficile tradurre le parole chiave in uno script? Sicuramente dovrebbero essere relativamente facili da analizzare poiché sono già trattati in modo speciale.
SuperBiasedMan,

Inoltre, Excel non è in realtà un sistema di programmazione in linguaggio naturale , poiché non traduce le strutture di frasi inglesi in programmi eseguibili.
Anderson Green,

16

Nel secolo precedente, in particolare negli anni '60 e '70, erano stati utilizzati linguaggi di programmazione non inglesi. In Francia, avevamo PAF e LSE con parole chiave dall'aspetto francese. La Seconda Guerra Mondiale in Germania aveva Plankalküll di K.Zuze. In Unione Sovietica, A.Ershov ha progettato alcune lingue (ad esempio Rapira ) con parole chiave russe. IIRC PAF (progettato e realizzato dal mio defunto padre quando ero un bambino - primi anni '60) poteva anche essere venduto con parole chiave dall'aspetto inglese (o dall'aspetto russo o dall'aspetto tedesco). E alcune lingue, ad esempio APL , non avevano parole chiave. Altre lingue ( PL / I ) non hanno prenotatoparole chiave. E potresti ridefinire le parole chiave con tecniche di preprocessore (ad esempio oggi, in C, #define si ife #define sinon elseper studenti francesi ....; simili trucchi basati su macro sono possibili in PL / I o anche in Common Lisp).

Ma ITè stato sviluppato principalmente in un paese di lingua inglese (gli Stati Uniti). Quindi i linguaggi di programmazione e le loro implementazioni avevano specifiche e documentazione inglesi e parole chiave inglesi. Pertanto, ogni sviluppatore deve essere in grado di leggere l'inglese tecnico e non vi è alcun valore aggiunto per "localizzare" il linguaggio di programmazione (e anche farlo rende più difficile l'utilizzo di altri software, come spiegato altrove). L'attuale dominio tecnico ed economico dei paesi di lingua inglese richiede che tutti gli ingegneri leggano l'inglese oggi (sono sicuro che anche gli ingegneri del software nordcoreano, cinese o iraniano sono in grado di leggere la documentazione in inglese e di leggere il codice con parole chiave e identificatori inglesi) . Quindi non c'è più abbastanza valore aggiunto per "localizzare" un linguaggio di programmazione (tranne forse per insegnare la programmazione elementare ai bambini delle scuole superiori).

Inoltre, l'inglese ha molte parole chiave brevi (confronta sinonin francese elsein inglese o mettrein francese putin inglese), quindi c'è un piccolo vantaggio nell'uso di parole chiave in inglese ....

Forse tra un secolo, la Cina potrebbe diventare il paese IT dominante e alcuni linguaggi di programmazione basati su cinese potrebbero prosperare. Non sappiamo cosa succederebbe allora ...

PS. Il dominio dell'inglese non è specifico dell'IT. Anche se il Regno Unito lascia l'Unione Europea - lo scenario Brexit - , la lingua ufficiale di fatto della CE rimarrebbe l'inglese (che quindi non sarà la lingua di nessun paese membro dell'UE) e i progetti ICT di H2020 saranno scritti in inglese.


Non dimenticare Plankalküll !
Erik Eidt,

Grazie. Da non confondere con l'omofonico piano
Basile Starynkevitch,

Non lo so, ma l'ho votato, quindi ora (purtroppo) è neutrale. Ho trovato una buona risposta.
Mawg dice di reintegrare Monica il

5
L'inglese è una delle due lingue ufficiali della Repubblica d'Irlanda, che è membro dell'UE.
Matthew Flynn,

9

Vi sono ottime ragioni per cui i linguaggi di programmazione professionale non vengono tradotti.

1) Sforzo: sarebbe un compito enorme tradurre una lingua moderna. Prendi Java: sarebbe una piccola attività tradurre circa 50 parole chiave, ma dovrai anche tradurre la libreria standard completa che comprende migliaia di classi e metodi e la relativa documentazione.

2) Compatibilità: anche se la lingua di base e la libreria standard sono state tradotte, non è ancora possibile utilizzare librerie e codice di terze parti che non sono stati tradotti. Le librerie e il codice di terze parti sono una parte importante di ciò che rende un linguaggio attraente e utile. Con le versioni tradotte, ogni lingua dovrebbe avviare da zero l'ecosistema per ogni traduzione. Tutti starebbero peggio.

3) I programmatori devono comunque conoscere l'inglese. Molti standard come HTTP, CSS, HTML utilizzano comunque la lingua inglese per gli identificatori. Questi non possono essere tradotti poiché le parole sono inserite nello standard.

Dato che i programmatori devono comunque conoscere l'inglese, ci sarebbero solo degli svantaggi e nessun vantaggio nel creare versioni tradotte dei linguaggi di programmazione.

Ciò detto, per le lingue destinate ai programmatori occasionali rispetto ai programmatori professionisti, potrebbe avere senso creare versioni tradotte. Questo è il caso di VBA e credo che AppleScript esistesse anche nelle versioni tradotte.


5

Non conosco altre lingue tranne forse una versione esoterica davvero vecchia di BASIC, che tendeva a venire con molti strani favori, quindi mi atterrò alla domanda bonus: perché ci sono così pochi linguaggi di programmazione tradotti:

Credo che sia semplicemente un'ulteriore complessità di cui gli implementatori di compilatori e librerie non vedono un grande bisogno. Ecco alcuni motivi che contribuiscono secondo me.

  • Limiterete il pubblico del codice se non utilizzate una lingua "universale". Certo, non tutti conoscono l'inglese, ma lo stesso vale per ogni lingua.
  • Le parole chiave a parola singola non sono necessariamente parole singole in tutte le lingue, il che complica l'analisi. Non ho mai verificato, ma posso immaginare che ci sia una buona quantità di involucri speciali per gestire il singolo tipo di parola multipla di c ++ "long long".
  • Se inizi a tradurre parole chiave, prenderai in considerazione anche le lingue e come vengono formattati i numeri? Virgola contro punto come un separatore decimale per esempio. O richiedono che i nomi tedeschi siano maiuscoli?
  • La stragrande maggioranza del testo in un determinato programma sono variabili, metodi e nomi di classe, per non parlare dei commenti. Mentre ci sono certamente librerie scritte in altre lingue, dover mantenere le traduzioni del codice sorgente di tutte le librerie per servire tutti gli utenti sarebbe un grande onere per la maggior parte degli sviluppatori, per non parlare dell'ulteriore complessità nelle discussioni su tale codice.
  • I compilatori dovrebbero comprendere tutte le lingue implementate. Forse anche più lingue nello stesso file. Una piccola impresa per un computer sicuramente, ma comunque lavoro extra. Forse finirai per avere a che fare con la stessa parola chiave che significa cose diverse in lingue diverse, o termini semplicemente troppo ambigui per leggere bene.
  • (ok, supponente) Sicuramente la maggior parte delle persone che hanno avuto a che fare con documenti MS Office programmati e formattati in diverse lingue respingeranno l'idea perché non vale la pena.

Personalmente mi piacerebbe se fossimo in grado di lavorare con il codice in un modo più strutturato, in un editor che effettivamente comprendeva il codice come quello che è, le istruzioni, le istruzioni, ecc. Che ci avrebbero permesso di fare molte cose interessanti , forse supporta anche la traduzione automatica. Per chiunque si stia chiedendo di cosa sto chiacchierando, controlla l'immagine di Smalltalk e il browser di refactoring e immagina cosa potrebbe diventare se avesse ottenuto più trazione.


3

Se si dispone di un linguaggio definito in termini di "tag simbolici" su un livello e "designatori di tag di superficie" sull'altro, con mappature ben definite tra loro, sarebbe certamente possibile.

Immaginate una lingua in cui avete il vostro if, while... do, switche tutte le altre parole chiave definiti (in qualche modo) nello standard, si potrebbe spedire le librerie di sistema in "formato token", con il codice locale scritto in forma non-token. Quindi il compilatore effettivo funziona sul livello tokenizzato e può essere buono.

Tuttavia, questa non è l'intera storia. Saresti comunque finito in situazioni in cui hai ottenuto librerie da qualche parte che non è "la libreria standard", interfacciate dai nomi delle funzioni. E quelli non avrebbero una mappatura canonica tra le lingue e richiederebbero la traduzione in una lingua locale per essere ben utilizzabili, o finirai con un miscuglio di lingue nel tuo codice sorgente.


2

Tutte le risposte fornite sono ottime risposte, ma darò comunque i miei due centesimi.

All'inizio dell'informatica il dominio tecnico, culturale ed economico degli Stati Uniti e del Regno Unito ha reso logico ciò che le lingue di maggior successo sono state create usando le parole inglesi.

Successivamente, poiché il software è diventato un settore , è diventato anche uno sforzo globale. Non è un segreto che ci siano meno programmatori del necessario, quindi le società di software, e specialmente quelle che definiscono il settore come IBM, hanno iniziato ad assumere programmatori da tutte le parti del mondo: Russia, Pakistan, India, Francia, Germania, Israele, ecc. principalmente per programmare in lingue di successo a livello globale già esistenti che erano già basate in inglese e anche creare nuove lingue, e per quella fonte disparata di programmatori la lingua comune già esistente era una scelta migliore rispetto a qualsiasi altra lingua.

Più recentemente il movimento del software libero e open source ha reso la creazione di software uno sforzo ancora più globale di prima. Alcuni progetti software aperti, tra cui alcune piattaforme di programmazione, linguaggi e framework, sono progetti enormi che coinvolgono centinaia di collaboratori.

Quale lingua userebbe una persona israeliana per collaborare con una persona dello Sri Lanka? Molto probabilmente non parlano né si leggono nemmeno l'un l'altro la lingua madre. Quindi l'inglese viene in soccorso.

Piaccia o no, l' inglese è la lingua degli sforzi globali . E non perché l'America lo stia spingendo ma perché il mondo lo sta tirando.

Parafrasando Jay Walker :

La tua lingua madre è quella che usi di più ogni giorno e sarà sempre al centro del tuo cuore e del tuo cervello, ma con l'inglese fai parte di una conversazione più ampia.

Guarda il video "Mania inglese" .

Linea di fondo:

I linguaggi di programmazione che usano linguaggi diversi continueranno a esistere e continueranno ad essere inventati (come Scratch basato su token grafici), ma almeno nel prossimo futuro saranno relativamente pochi.


-2

L'inglese è anche una lingua "senza accento", inoltre non hai caratteri strani che necessitano di una codifica diversa da ASCII. Sono italiano e talvolta incontro errori di codifica se utilizzo un layout di tastiera italiana o caratteri accentati come àèéìòù. Inoltre "else" è tradotto in "altrimenti", "in" è "dentro" ... sarebbe frustrante.


9
Questo è un ragionamento circolare - ASCII è diventato il set di caratteri standard perché l'inglese è la lingua franca dell'informatica.
Jacques,
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.