Cosa significa Dijkstra quando raccomanda una padronanza eccezionalmente buona della propria lingua madre? [chiuso]


28

Dijkstra scrive qui :

Oltre a un'inclinazione matematica, una padronanza eccezionalmente buona della propria lingua madre è il bene più vitale di un programmatore competente.

Non capisco l'ultima parte di questa citazione. Puoi per favore spiegare o elaborare?

PS Sono cresciuto in India. Parlo bengalese a casa; Parlo Marathi nella comunità in cui vivo; L'hindi è la lingua nazionale e molto parlata, quindi lo so, e a scuola e all'università mi è stato insegnato l'inglese come prima lingua. Certo, ora penso in una moltitudine di lingue e devo ammettere di non avere padronanza di nessuna . Questo sta davvero influenzando la mia attitudine alla programmazione? Se si come? e ci sono soluzioni ?


20
Interessante ... Ho un buon amico che è indiano (tamil) e una volta l'ho visto congelare completamente quando qualcuno gli ha chiesto come dire una frase "nella sua lingua". Ne ho parlato con lui in seguito, ho scoperto che non ha una lingua. Lui e sua moglie sono cresciuti parlando lingue completamente diverse, non può parlare con i suoi suoceri. Entrambi parlano praticamente la lingua della città in cui si sono incontrati e l'inglese. È affascinante. Non avevo idea che l'India fosse così frammentata linguisticamente.
Dan Ray,

4
Non è una coincidenza che programmatori molto bravi tendano anche ad essere scrittori molto bravi; saper esprimere chiaramente i tuoi pensieri è una necessità per entrambi i mestieri.
Jon Purdy,

1
Non posso fare a meno di chiedermi se ci sarebbero meno interpretazioni delle parole di Dijkstra se fossero state scritte nella sua lingua madre (olandese), dove (presumo) avesse un'eccellente padronanza.
Brendan,

Risposte:


29

Mentre sono d'accordo con quello che Alex e rapidamente_ ora hanno detto, credo che potrebbe esserci un altro giro. Questa è la mia teoria e non sto suggerendo che Dijkstra intendesse la stessa cosa.

Che cos'è la "padronanza di una lingua": è la capacità di prendere le basi elementari di una lingua e metterle in frasi e frasi costruttive e utili. Alfabeti e personaggi sono insignificanti in se stessi. Devi metterli insieme e ricavarne un significato. Le parole sono insignificanti da sole; è solo quando li metti in una sequenza corretta basata sulla sintassi e sulla grammatica che esprimono idee concrete.

Non è esattamente lo stesso nella programmazione per computer? Mettiamo insieme alcune parole chiave e simboli e ne ricaviamo elementi concreti realizzabili. Un linguaggio di programmazione ha simboli e grammatica proprio come un linguaggio naturale. La padronanza di un linguaggio di programmazione richiede la capacità di mettere insieme questi simboli e regole (insignificanti individualmente) per rendere qualcosa di significativo e utile.

Credo che ciò significhi che esiste una corellazione diretta tra la capacità di una persona di apprendere un linguaggio umano e un linguaggio informatico. Entrambi hanno bisogno dello stesso insieme di capacità umane e capacità di pensiero. Dai un'occhiata ai tuoi colleghi e scoprirai che quelli con scarse capacità di programmazione sono anche quelli che non possono parlare o scrivere in modo chiaro come gli altri. Coloro che sono bravi a scegliere le lingue umane hanno le competenze necessarie per diventare anche buoni programmatori.


3
+1, questa è stata la mia interpretazione iniziale dell'affermazione di Dijkstra quando l'ho letta.
Rob,

1
@quickly_now: "un gran numero di programmatori che sanno scrivere un ottimo codice ma che non hanno la capacità di comunicare bene in uno dei modi di parlare o scrivere" lo contesterei. Lo cambierei da molto buono a accettabile . Dopo 30 anni come appaltatore, ho incontrato molti programmatori. Quelli inarticolati possono - eventualmente - produrre codice funzionante. Ma i bravi programmatori possono effettivamente scrivere in una varietà di lingue, sia naturali che artificiali.
S.Lott

4
L'essenza di essere un buon programmatore è essere un buon comunicatore. È così che l'ho interpretato.
Neil,

8
@quickly_now, Neil, Onesimus; Penso che sia un po 'più profondo della comunicazione verbale o scritta. Credo che stia parlando della relazione tra linguaggio e cognizione, ad es. web.mit.edu/newsoffice/2008/language-0624.html . Penso che significhi padronanza di un po 'di tonque (di solito il proprio tonque nativo, poiché è raro diventare più abili in una seconda o terza lingua) indica forti costrutti della linguistica mentale che corrispondono direttamente alla capacità di programmazione.
Rob,

1
@OnesimusUnbound, penso che Dijkstra abbia menzionato la lingua madre perché è logico aspettarsi che le persone siano brave nella loro lingua madre (che in molti casi, ma non in tutte, è anche la loro lingua di istruzione) ma non necessariamente nella loro seconda / terza lingua . Tuttavia nel mondo moderno può essere diverso, ad esempio sono molto meglio in inglese che nella mia lingua madre. Ma questo è perché non l'ho mai imparato a scuola
DPD

23

Dijkstra sta dicendo che devi essere in grado di scrivere e parlare in modo chiaro, conciso e con forza nella lingua ambientale del tuo posto di lavoro. Ha perfettamente ragione: a meno che tu non possa parlare e scrivere di problemi tecnici (e non tecnici) in un modo che gli altri possano capire immediatamente, sei ostacolato e in qualche modo inefficace come ingegnere del software.

L'idea è che scrivere sul codice sia importante quanto scrivere il codice stesso.

Quindi l'esempio perfetto: quante volte abbiamo visto domande belle, incisive, preziose saltate o chiuse perché il poster non poteva esprimersi bene in inglese? Risposta: troppi.


7

La citazione dice che devi conoscere la tua lingua madre (ad esempio Marathi nel tuo caso). Questa è una risorsa importante.

Gli psicologi generalmente pensano che conoscere bene una lingua ti aiuti a esprimere meglio i tuoi pensieri. Alcuni sostengono che tutto il pensiero che facciamo è limitato alla nostra lingua principale. Più ricca è la lingua (e la sua conoscenza), migliore è la persona in grado di comunicare e strutturare le idee.

Conoscere più lingue aiuta anche a capire diversi modelli di pensiero.


7
Se "Alcuni dicono che tutto il pensiero che facciamo è limitato alla nostra lingua principale" è vero, allora la mia lingua madre non è (non più) la mia lingua principale? Com'on. La mia lingua madre e madre è l'olandese, ma la mia lingua di pensiero durante la programmazione è l'inglese ... E non solo perché la maggior parte della terminologia e quasi tutti gli articoli che mi aiutano a pensare alle sfide della programmazione sono in inglese. In effetti, trovo difficile lavorare con un computer che parli olandese con me, non riesca a trovare nulla e faccia affidamento sulla posizione dei menu. (Un altro motivo per cui i menu personalizzati fanno schifo).
Marjan Venema,

7

Guardando il pezzo nella sua interezza, è un elenco interessante ma risale al 1975. È giusto dire che, in una certa misura, i tempi sono cambiati nel periodo intermedio, rendendo alcune parti di tale elenco di principi un po 'obsolete.

Un'abilità chiave che credo che i programmatori dovrebbero avere è la capacità di comunicare in modo efficace. Questo non significa solo una spiegazione; significa comprensione. Indipendentemente da quale sia la tua lingua di lavoro, l'inglese nel tuo caso, anche se non la tua lingua madre, coloro che hanno difficoltà a comunicare efficacemente nella loro lingua madre non lo troveranno più facile altrove.

Come nota generale, è corretto affermare che, indipendentemente dalla posizione nella vita, se hai difficoltà nella tua lingua madre, sarai svantaggiato nella vita di tutti i giorni.

Non sarei tagliato fuori da ciò che intende per padronanza - in base al tuo contributo sopra, sospetto che tu abbia una padronanza più che adeguata dell'inglese e da ciò, estrapolo che tu comunichi efficacemente nelle tue altre lingue.


Vero. Penso che Dijkstra abbia ragione, ma la parola "programmatori" dovrebbe essere sostituita da "informatici". Naturalmente uno scienziato deve essere in grado di discutere e scrivere in un linguaggio chiaro. Lo stesso vale per i programmatori: non mi induci a pensare di discutere con i tuoi colleghi (anche di madrelingua) in un'altra lingua. Qui in Olanda tutti gli ambienti di sviluppo sono in inglese, ma quando discuto con i miei colleghi su un pezzo di codice lo facciamo in olandese.
vstrien,

@vstrien, quindi dimmi amico cosa farai se ciascuno dei tuoi colleghi parlasse una lingua madre diversa? questa è la situazione qui. ogni corpo proviene da un diverso "stato" indiano e hanno un linguaggio diverso (non intendo il dialetto .. intendo la lingua) spero che tu possa capovolgerlo: P e questo è esattamente ciò che la mia domanda era .. non lo so davvero pensare in una lingua particolare (non posso permettermelo, dato che devo parlare quasi 3 lingue con 6 diff ppl in un arco di un'ora) Quello che volevo chiedere era se questa sarà una cattiva pratica
Chani,

RYUZAKI, questa è una situazione che le persone colpiscono in molti diversi ambiti della vita. Lavoravo in un'organizzazione con 3 lingue di lavoro. In un'azienda come la tua, se hai una lingua di lavoro, stai andando bene. Quello che troverai è che ci sono alcune parti della tua vita che funzioneranno in determinate lingue.
temptar

@RYUZAKI: scusa, non ti stavo dirigendo verso di te quando ho detto che non litighi con i tuoi colleghi in una lingua non nativa :). Ma penso che in quel caso sia importante trovare il modo di comunicare chiaramente - e la cosa più semplice a cui riesco a pensare è usare una lingua per spiegarci l'un l'altro. Ancora una volta, non penso che ciò influisca sulle tue capacità di programmazione, ma sicuramente fa male alla produttività se non riesci a comunicare tramite il codice.
vstrien,

1
@temptar: "un numero significativo e crescente di programmatori in tutto il mondo senza esperienza in matematica applicata" non invalida affatto l'affermazione. La tua osservazione equivale a "le persone senza una formazione formale in matematica possono ancora riuscire ad apprendere alcune delle matematiche applicate alla base della programmazione". Sono d'accordo con la tua osservazione. Ma questo non invalida affatto (o è obsoleto) l'affermazione di Dijkstra. Anzi, sembra complementare.
S.Lott

5

Ho il sospetto che si stia riferendo ad avere una buona comprensione di ciò che le persone vogliono da te - in altre parole, una buona capacità di comunicazione verbale.

(Per dirla in modo personale: una parte di questo significa, nel contesto della programmazione, che a volte è necessario capire cosa la gente NON DICE, o cosa dicono ma non in modo molto chiaro.)


1
Darei anche la possibilità di trasmettere chiaramente le tue idee agli altri. Uno è importante quanto l'altro imo :)
Demian Brecht,

1
Sono d'accordo con quello che dici, ma non credo sia quello di cui parla Dijkstra.
Rob,

1
Tutto ciò mi ricorda le lezioni di letteratura inglese al liceo. Puoi discutere per ore su cosa intendesse l'autore. Mi chiedevo sempre perché non ci limitassimo a chiedere loro. Oh ... Letteratura inglese. Alcuni di loro sono morti ora. (Ho sempre pensato che non dovresti cercare di interpretare troppo F Scott Fitzgerald - la sua visione del mondo si è formata osservandola attraverso una bottiglia di whisky. Neanche a me è piaciuto che lo dicessi io.)
quick_now

Puoi discutere inutilmente per ore o puoi sostenere i tuoi argomenti con i fatti. Ad esempio, guarda le altre citazioni di Dijkstra sulla stessa pagina, ad es. "È praticamente impossibile insegnare una buona programmazione agli studenti che hanno avuto una precedente esposizione a BASIC: come potenziali programmatori sono mentalmente mutilati oltre la speranza di rigenerazione". - ancora una volta parlando sul tema del linguaggio e della cognizione.
Rob,

E tale affermazione è solo infiammatoria. Crikey, ho iniziato a programmare in BASIC circa 30 anni fa perché era tutto ciò che c'era. Non mi considero un superuomo, ma non sono nemmeno "mentalmente mutilato oltre la speranza di rigenerazione". Trovo che un'affermazione del genere sia abbastanza offensiva, e significa che tratto qualsiasi altra cosa che dice abbia una credibilità limitata.
quick_now

2

Penso che essere bravo in (qualsiasi) lingua serva questo -

Se il tuo punto non è chiaro, puoi pensare, rivedere, riformulare in modo migliore. Fino a quando quello che dici è esattamente quello che vuoi che la prossima persona (o macchina) capisca.

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.