Quale linguaggio naturale ha il vantaggio quando si tratta di programmazione? [chiuso]


21

La relatività linguistica è l'idea che la lingua modella il modo in cui pensiamo. La mia domanda è: quanto e in che misura si applica alla programmazione?

  • Alcuni linguaggi nativi e naturali sono più adatti per pensare alla programmazione di altri? Ad esempio, si può affermare in modo più conciso quanto segue in una lingua non inglese? Select a pivot. Move all the items less than the pivot to one side of the list, and all the items greater than the pivot to the other side.
  • Un programmatore di lingua cinese vede la programmazione in una lente radicalmente diversa da un programmatore di lingua inglese o le differenze svaniscono quando entrambi sono immersi nell'argomento?
  • Alcuni linguaggi di programmazione e domini sono più facili da pensare in una lingua o in un'altra. Ad esempio, è più facile ingannare Ruby se sei giapponese perché il creatore di Ruby è giapponese?

Si noti che questa domanda non è focalizzata sul "come i linguaggi di programmazione influenzano il modo in cui le persone pensano della programmazione", ma piuttosto "come i linguaggi naturali influenzano il modo in cui le persone pensano della programmazione".

Per toglierlo di mezzo, una lingua che ha chiaramente un vantaggio pragmatico è l' inglese . Penso che il vantaggio ha poco a che fare con i linguaggi di programmazione scelta delle parole chiave inglese come if, for, while, e do, proprio come i musicisti che non parlano italiano non sono scattato da parole come forte . Ha più a che fare con la comunicazione di idee con altri programmatori, poiché l'inglese è la lingua franca in questi giorni, almeno nel mondo della programmazione. Ad esempio, per porre una domanda in StackOverflow, devi davvero conoscere l'inglese e conoscerlo abbastanza bene se vuoi delle risposte valide. Anche se questo sembra un atteggiamento imperialista, in realtà è vero nella pratica.

A parte questo, in che modo le proprietà intrinseche dei linguaggi influenzano il modo in cui i programmatori che li parlano pensano a strutture di dati, algoritmi, ecc.? Ci sono lingue particolarmente concise quando si parla di logica e programmazione, permettendo ai madrelingua di quelle lingue di pensare più velocemente?


2
Puoi dirlo molto semplicemente a qualsiasi programmatore competente. Implement quick sort.
Josh K,

Risposte:


3

Ah, l'ipotesi Sapir-Whorf contro l'ipotesi di Chomsky Deep Structure guerre ...

La programmazione è matematica. La matematica è filosofia applicata. La domanda allora diventa: quale linguaggio naturale può descrivere esattamente concetti matematici senza grattarsi la testa in modo significativo. Detto in altro modo, quali lingue possono affrontare facilmente la metafisica aristotelica?

Il proverbiale linguaggio "selvaggio" potrebbe avere difficoltà iniziali a esprimere le astrazioni del primo ordine richieste. Comunque- comunque! - gli umani possono imparare nuove parole e nuovi concetti. Il greco antico non iniziò con termini filosofici; dovevano essere inventati e poi portati su altri linguaggi.

Considerando che la matematica è universale, postulo che la forte ipotesi di Sapir-Whorf sia falsa.


"La matematica è filosofia applicata" Spiegare?
Frank Shearar,

1
@Frank: storicamente, era così. Quando dai un'occhiata superficiale alle "basi della matematica", diventa abbastanza evidente che è filosoficamente fondato. Ad esempio, l'intero argomento intuizionista.
Paul Nathan,

Non sosterrò che alcune domande matematiche sono filosofiche, come dici tu. Mi sembra molto lontano da questo affermare che "La matematica è filosofia applicata".
Frank Shearar,

@Frank: beh, se le basi della matematica sono filosofiche, sembrerebbe che anche ciò che deriva dalle basi sia filosofico. No? Sì?
Paul Nathan,

1
@Frank: Terribile, eh? Scommetto che qualche maggiore delle arti liberali sta ridacchiando dal suo latte. :)
Paul Nathan,

13

Non so che un particolare linguaggio naturale si presti a una migliore programmazione (tranne forse il latino?). So che conoscere più di una lingua è piuttosto potente.

Dijkstra ha dichiarato in una delle sue ultime interviste (come ristampato in CACM Vol. 53 n. 8, p. 44):

C'è un'enorme differenza tra chi è monolingue e qualcuno che almeno conosce bene una seconda lingua, perché ti rende molto più consapevole della struttura linguistica in generale. Scoprirai che certe costruzioni in una lingua non riesci proprio a tradurre.


6

Il turco è una lingua molto interessante in quanto ha regole rigorose senza eccezioni (di cui sono a conoscenza), è quasi perfettamente esente da ridondanti, non ha genere grammaticale e sulla parola può esprimere tanto quanto una frase in inglese.

In passato "Çekoslovakyalılaştıramadıklarımızdan mısınız?" il che significa "Sei una di quelle persone a cui non potremmo assomigliare alla Cecoslovacchia?" era molto popolare e accettata come la parola più lunga in turco. Tuttavia, i suffissi della domanda (mısınız in questo caso) sono scritti separatamente, quindi sebbene sia una parola, sembrano due parole quando la parola è scritta. Inoltre, versioni più lunghe di questa parola potrebbero essere rese facilmente, come "Çekoslovakyalılaştırabildiklerimizden miydiniz?". Per questi motivi, la parola ha perso la sua popolarità, ma è ancora un popolare scioglilingua in Turchia.

parlare in turco mi fa pensare a cosa voglio ottenere, a quali informazioni voglio trasmettere e meno a quali parole usare.

modifica
Naturalmente il turco ha parole per rappresentare il genere biologico. Ma non ha separazione in lui / lei - in turco "o".

O in spagnolo diresti "profesor / profesora" e in tedesco "Lehrer / Lehrerin". In turco devi usare parole extra per indicare il genere - simile all'inglese.
In insegnante turco è öğretmen. Per indicare un'insegnante, diresti "kadın öğretmen" - insegnante di donne. Ma nonostante il tedesco, dove - se non femalizzato aggiungendo un "-in" - il default è maschio, öğretmen non ha genere, come non lo è.

Un'altra cosa che non è disponibile in turco sono articoli come "el / la", "the", "der / die / das" - poiché di solito sono solo le informazioni che sono già disponibili nel contesto.
Ma ci sono parole per esprimere "questo", "este / esta", "diese / dieses / diese", ad esempio "bu".
Questa è un'informazione aggiuntiva, poiché punta su un determinato oggetto.


1
Senza il sesso grammaticale, da dove verranno i piccoli turchi? (A proposito, quando ho visto la domanda ma prima di guardare qui, ho pensato al turco. Mentre non lo parlo, ho sentito di quanto sia regolare.)
Randall Schulz,

Apparentemente la sintassi di Smalltalk è ancora più vicina al turco che all'inglese: smalltalk.gnu.org/blog/zuluuuuuu/smalltalk-and-turkish
Frank Shearar,

@Frank Shearer: è tempo di imparare smalltalk!
VikingoS dice di reintegrare Monica il

@Randall Schulz: U got me;) Mescolo sempre il termine sesso e genere ...
VikingoS dice Reinstate Monica,

Ho sentito che il sanscrito è pensato per essere il più simile a un linguaggio informatico secondo alcuni studi, puoi cercarlo su Google. Non sono sicuro di quanto possa essere vero, ma dal momento che il sanscrito non è mai decollato come lingua parlata tradizionale e anche dal momento che è stato usato tra le università per gli studi tecnici dell'epoca è probabile che sia diverso dalle lingue parlate naturali di oggi. Il turco suona molto dolcemente alle mie orecchie (solo in senso uditivo) ma se tutto questo e il sanscrito parlano come un ragazzo di linguaggi di programmazione, sarebbe molto noioso. L'ultima cosa che voglio sentire quando viene chiesto: "è un ragazzo o una ragazza?" è sì".
nawfal,

2

Penso che sia più probabile che il linguaggio di programmazione che stai usando modellerà il modo in cui stai pensando al problema, i nomi delle variabili e delle classi, ecc., Sono solo personaggi che rappresentano qualcosa. Anche se è molto probabile che i programmatori di culture diverse pensino alla programmazione in modo diverso a causa della loro lingua parlata e del modo in cui hanno imparato.


1

Secondo me, il linguaggio naturale non ha importanza (o almeno non dovrebbe importare) quando si parla dei metodi o delle idee che si sta tentando di realizzare con il proprio codice.

Come hai detto tu stesso, quando lavori con il codice stesso e scrivi documentazioni sul codice inglese è il più appropriato. Ma poiché il codice stesso è solo un prodotto artigianale , la vera forza di un programmatore / scienziato informatico è superiore a quella con idee, algoritmi e cose simili - e quindi, il linguaggio in cui sono descritte le cose è completamente irrilevante per il contenuto reale.


0

Questo era un argomento che mi interessava molto da un po 'di tempo, quindi il mio dolore ancora più grande (ora), che non riuscivo a trovare i segnalibri che avevo allora.

Ho salvato un link in cui mi sono imbattuto l'altro giorno, fare lingue diverse uguali realtà diverse? che in qualche modo si tangente (leggi anche i commenti). Alcuni sono interessanti

Comunque ...


-1

L'inglese è in realtà piuttosto efficiente e conciso. La traduzione nella maggior parte delle lingue renderà l'idea più lunga da esprimere .

È anche generalmente accettato che non ci siano linguaggi naturali primitivi . Tutti i linguaggi naturali in uso attivo hanno un pari livello di espressività. Ciò non significa che le idee non siano formate dal linguaggio, ma non credo che il linguaggio naturale abbia una grande influenza.


Trovo che il cinese sia probabilmente la lingua più concisa che abbia mai incontrato, sia quando scritto che parlato. La lunghezza della traduzione è di solito poco più della metà dell'inglese.
Jon Purdy,

4
Ma la complessità del simbolo non è appena superiore?
Joeri Sebrechts,

Il cinese è APL di lingue parlate intendi? :)
nawfal, l'
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.