Was bedeutet Dijkstra, wenn er eine außergewöhnlich gute Beherrschung der Muttersprache empfiehlt? [geschlossen]


28

Dijkstra schreibt hier :

Neben einer mathematischen Neigung ist eine außergewöhnlich gute Beherrschung der Muttersprache das wichtigste Kapital eines kompetenten Programmierers.

Ich verstehe den letzten Teil dieses Zitats nicht. Können Sie das bitte erklären oder erläutern?

PS Ich bin in Indien aufgewachsen. Ich spreche zu Hause Bengalisch . Ich spreche Marathi in der Gemeinde, in der ich lebe. Hindi ist die Landessprache und wird sehr häufig gesprochen, daher weiß ich das. In der Schule und am College wurde mir Englisch als Muttersprache beigebracht. Natürlich denke ich jetzt in einer Vielzahl von Sprachen und ich muss zugeben, dass ich keine beherrsche . Beeinträchtigt das wirklich meine Programmierfähigkeit? Wenn ja wie? und gibt es irgendwelche lösungen ?


20
Interessant ... Ich habe einen guten Freund, der Inder (Tamil) ist, und ich habe ihm einmal zugesehen, wie er völlig erfroren ist, als ihn jemand gefragt hat, wie man einen Satz "in seiner Sprache" sagt. Als ich später mit ihm darüber sprach, erfuhr ich, dass er keine Sprache hat. Er und seine Frau sind mit völlig unterschiedlichen Sprachen aufgewachsen, er kann nicht mit seinen Schwiegereltern sprechen. Beide sprechen so ziemlich die Sprache der Stadt, in der sie sich kennengelernt haben, und Englisch. Es ist faszinierend. Ich hatte keine Ahnung, dass Indien so sprachlich fragmentiert ist.
Dan Ray

4
Es ist kein Zufall, dass sehr gute Programmierer auch sehr gute Schriftsteller sind. Zu wissen, wie man seine Gedanken klar ausdrückt, ist eine Notwendigkeit für beide Handwerke.
Jon Purdy

1
Ich kann nicht anders, als mich zu fragen, ob es weniger Interpretationen von Dijkstras Worten geben würde, wenn sie in seiner Muttersprache (Niederländisch) abgefasst wären, in der er (ich nehme an) hervorragende Meisterschaften hatte.
Brendan

Antworten:


29

Ich stimme zwar dem zu, was alex und quick_now gesagt haben, aber ich glaube, dass es einen anderen Dreh geben kann. Dies ist meine eigene Theorie und ich behaupte nicht, dass Dijkstra dasselbe meinte.

Was ist "Beherrschung einer Sprache": Es ist die Fähigkeit, die Grundbausteine ​​einer Sprache zu nehmen und sie in konstruktive, nützliche Phrasen und Sätze zu fassen. Alphabete und Zeichen sind an sich bedeutungslos. Sie müssen sie zusammenfügen und eine Bedeutung daraus ziehen. Worte sind für sich genommen bedeutungslos; Nur wenn Sie sie in eine richtige Reihenfolge bringen, die auf Syntax und Grammatik basiert, drücken sie konkrete Ideen aus.

Ist es nicht genau das gleiche in der Computerprogrammierung? Wir haben ein paar Schlüsselwörter und Symbole zusammengestellt und daraus konkrete, praktikable Dinge gemacht. Eine Programmiersprache hat Symbole und Grammatik wie eine natürliche Sprache. Die Beherrschung einer Programmiersprache setzt die Fähigkeit voraus, diese (individuell bedeutungslosen) Symbole und Regeln zusammenzusetzen, um etwas Sinnvolles und Nützliches zu schaffen.

Ich glaube, dies bedeutet, dass es eine direkte Korrelation zwischen der Fähigkeit einer Person, eine menschliche Sprache zu lernen, und einer Computersprache gibt. Beide benötigen die gleichen menschlichen Fähigkeiten und Denkfähigkeiten. Werfen Sie einen Blick auf Ihre Kollegen, und Sie werden feststellen, dass diejenigen mit schlechten Programmierkenntnissen auch nicht so klar sprechen oder schreiben können wie andere. Diejenigen, die sich gut mit menschlichen Sprachen auskennen, verfügen über die erforderlichen Fähigkeiten, um auch gute Programmierer zu werden.


3
+1, dies war meine erste Interpretation der Aussage von Dijkstra, als ich sie las.
Rob

1
@quickly_now: "Sehr viele Programmierer, die sehr guten Code schreiben können, aber nicht in der Lage sind, gut zu sprechen oder zu schreiben", würde ich bestreiten. Ich würde das von sehr gut in akzeptabel ändern . Nach 30 Jahren als Auftragnehmer habe ich viele Programmierer getroffen. Die unartikulierten können - irgendwann - Arbeitscode produzieren. Aber die guten Programmierer können tatsächlich in einer Vielzahl von natürlichen und künstlichen Sprachen schreiben.
S.Lott

4
Das Wesen eines guten Programmierers ist es, ein guter Kommunikator zu sein. So habe ich es interpretiert.
Neil

8
@quickly_now, Neil, Onesimus; Ich denke, es ist ein bisschen tiefer als mündliche oder schriftliche Kommunikation. Ich glaube, er spricht über die Beziehung zwischen Sprache und Erkenntnis, z. web.mit.edu/newsoffice/2008/language-0624.html . Ich denke, es bedeutet Beherrschung einer Tonart (normalerweise der eigenen Muttersprache, da es selten ist, eine zweite oder dritte Sprache besser zu beherrschen), was auf starke mentale Sprachkonstrukte hinweist , die direkt mit der Programmierfähigkeit korrespondieren.
Rob

1
@OnesimusUnbound, ich denke, dass Dijkstra die Muttersprache erwähnt hat, weil es logisch ist, zu erwarten, dass die Leute gut in ihrer Muttersprache sind (was in vielen Fällen, aber nicht in allen, auch ihre Unterrichtssprache ist), aber nicht unbedingt in ihrer zweiten / dritten Sprache . In der modernen Welt kann es jedoch anders sein, zum Beispiel kann ich viel besser Englisch als meine Muttersprache. Aber das ist, weil ich es in der Schule nie gelernt habe
DPD

23

Dijkstra sagt, dass Sie in der Lage sein müssen, klar, präzise und kraftvoll in der Umgebungssprache Ihres Arbeitsplatzes zu schreiben und zu sprechen. Er hat vollkommen recht: Wenn Sie nicht auf eine Weise über technische (und nichttechnische) Probleme sprechen und schreiben können, die andere sofort verstehen, sind Sie als Softwareentwickler behindert und ineffektiv.

Die Idee ist, dass das Schreiben über Code genauso wichtig ist wie das Schreiben des Codes selbst.

SO ist das perfekte Beispiel: Wie oft haben wir gute, einschneidende, wertvolle Fragen gesehen, die weggeblasen oder geschlossen wurden, weil sich das Poster nicht gut auf Englisch ausdrücken konnte? Antwort: zu viele.


7

Das Zitat besagt, dass Sie Ihre Muttersprache kennen müssen (zB Marathi in Ihrem Fall). Dies ist ein wichtiges Kapital.

Psychologen sind im Allgemeinen der Meinung , dass es Ihnen hilft, Ihre Gedanken besser auszudrücken, wenn Sie eine Sprache gut kennen. Einige sagen, dass alles, was wir denken, auf unsere Primärsprache beschränkt ist. Je reicher die Sprache (und das Wissen darüber) ist, desto besser kann die Person die Ideen kommunizieren und strukturieren.

Wenn Sie mehrere Sprachen kennen, können Sie auch verschiedene Denkmodelle verstehen.


7
Wenn "Einige sagen, dass unser gesamtes Denken auf unsere Primärsprache beschränkt ist", ist meine Muttersprache dann nicht (mehr) meine Primärsprache? Komm schon. Meine Muttersprache und Primärsprache ist Niederländisch, aber meine Denksprache beim Programmieren ist Englisch ... Und nicht nur, weil der Großteil der Terminologie und fast alle Artikel, die mir beim Nachdenken über Programmierprobleme helfen, auf Englisch sind. Tatsächlich fällt es mir schwer, an einem Computer zu arbeiten, der mit mir Niederländisch spricht, nichts findet und sich sehr auf die Menüposition der Dinge verlässt. (Ein weiterer Grund, warum personalisierte Menü saugen).
Marjan Venema

7

Betrachtet man das Stück in seiner Gesamtheit, so handelt es sich um eine interessante Liste, die jedoch aus dem Jahr 1975 stammt. Man kann durchaus sagen, dass sich die Zeiten in der Zwischenzeit in gewissem Maße geändert haben und Teile dieser Liste von Grundsätzen etwas veraltet sind.

Eine Schlüsselkompetenz, die Programmierer meiner Meinung nach haben sollten, ist die Fähigkeit, effektiv zu kommunizieren. Dies bedeutet nicht nur eine Erklärung; es bedeutet Verständnis. Unabhängig davon, was Ihre Arbeitssprache ist, Englisch in Ihrem Fall, obwohl nicht Ihre Muttersprache, werden diejenigen, die Schwierigkeiten haben, effektiv in ihrer Muttersprache zu kommunizieren, es anderswo nicht einfacher finden.

Generell kann man sagen, dass Sie unabhängig von Ihrer Position im Leben im Alltag benachteiligt sind, wenn Sie Schwierigkeiten in Ihrer Muttersprache haben.

Ich würde mich nicht darüber aufregen lassen, was er mit Meisterschaft meint - basierend auf Ihrem Beitrag oben, ich vermute, dass Sie mehr als ausreichende Englischkenntnisse haben und ich extrapoliere, dass Sie effektiv in Ihren anderen Sprachen kommunizieren.


Wahr. Ich denke, Dijkstra hat einen Punkt, aber das Wort "Programmierer" sollte durch "Informatiker" ersetzt werden. Natürlich muss ein Wissenschaftler in der Lage sein, in klarer Sprache zu argumentieren und zu schreiben. Gleiches gilt für Programmierer: Sie verleiten mich nicht zu dem Gedanken, dass Sie mit Ihren (auch muttersprachlichen) Kollegen in einer anderen Sprache streiten. Hier in Holland sind alle Entwicklungsumgebungen auf Englisch, aber wenn ich mich mit meinen Kollegen über ein Stück Code streite, machen wir das auf Niederländisch.
vstrien

@vstrien Also sag mir Freund, was wirst du tun, wenn jeder deiner Kollegen eine andere Muttersprache spricht? Das ist die Situation hier. Jeder Körper kommt aus einem anderen indischen "Staat" und sie haben eine andere Sprache (ich meine nicht Dialekt .. ich meine Sprache). Ich hoffe, Sie können Ihren Kopf darum legen: P und das ist genau das, was meine Frage war .. ich nicht wirklich denke in einer bestimmten Sprache (ich kann es mir nicht leisten, da ich fast 3 langs mit 6 diff ppl in einer Zeitspanne von einer Stunde sprechen muss) Was ich fragen wollte, war, ob dies eine schlechte Praxis sein wird
Chani

RYUZAKI, dies ist eine Situation, die Menschen in vielen verschiedenen Lebensbereichen treffen. Ich habe in einer Organisation mit 3 Arbeitssprachen gearbeitet. Wenn Sie in einem Unternehmen wie Ihrem über eine Arbeitssprache verfügen, können Sie sich sehen lassen. Sie werden feststellen, dass bestimmte Teile Ihres Lebens in bestimmten Sprachen funktionieren.
Versuch

@RYUZAKI: Entschuldigung, ich habe mich nicht an Sie gewandt, als ich sagte, dass Sie nicht mit Ihren Kollegen in einer Fremdsprache streiten :). Aber ich denke in diesem Fall ist es wichtig, Wege zu finden, um klar zu kommunizieren - und das Einfachste, was ich mir vorstellen kann, ist, eine Sprache zu verwenden, um sich gegenseitig zu erklären. Noch einmal, ich glaube nicht , dass Sie in Ihre Programmierkenntnisse betrifft, aber sicher , es schadet der Produktivität , wenn Sie nicht über Code kommunizieren kann ..
vstrien

1
@temptar: "Eine bedeutende und wachsende Anzahl von Programmierern auf der ganzen Welt ohne Hintergrundwissen in angewandter Mathematik" macht die Aussage überhaupt nicht ungültig. Ihre Beobachtung beläuft sich auf "Menschen ohne formale Mathematikausbildung können immer noch etwas von der angewandten Mathematik lernen, die hinter dem Programmieren steckt." Ich stimme Ihrer Beobachtung zu. Dies macht jedoch die Aussage von Dijkstra nicht ungültig (oder obsolet). In der Tat scheint es komplementär.
S.Lott

5

Ich vermute, er bezieht sich auf ein gutes Verständnis dessen, was die Leute von Ihnen wollen - mit anderen Worten, gute verbale Kommunikationsfähigkeit.

(Um es selbst zu sagen: Ein Teil davon bedeutet im Zusammenhang mit der Programmierung, dass man manchmal verstehen muss, was Leute NICHT sagen oder was sie sagen, aber nicht sehr klar.)


1
Ich würde dort auch die Fähigkeit einbringen, Ihre Ideen klar an andere weiterzugeben. Einer ist genauso wichtig wie der andere imo :)
Demian Brecht

1
Ich stimme dem zu, was Sie sagen, aber ich glaube nicht, dass Dijkstra darüber spricht.
Rob

1
Das alles erinnert mich an den Englischunterricht in der High School. Über die Bedeutung des Autors kann man sich stundenlang streiten. Ich habe mich immer gefragt, warum wir sie nicht einfach fragen. Oh ... englische Literatur. Einige von ihnen sind jetzt tot. (Ich habe immer Figur aber , dass Sie sollten nicht versuchen , und F. Scott Fitzgerald zu viel interpretieren -.. Seine Sicht auf die Welt , indem man es durch eine Whiskyflasche gebildet wurde Mein Englischlehrer hat nicht wie ich das zu sagen, entweder)
quick_now

Sie können stundenlang sinnlos streiten oder Ihre Argumente mit Fakten untermauern. Schauen Sie sich zum Beispiel die anderen Zitate von Dijkstra auf derselben Seite an, z. "Es ist praktisch unmöglich, Schülern, die zuvor mit BASIC vertraut waren, gutes Programmieren beizubringen: Als potenzielle Programmierer sind sie mental verstümmelt, ohne auf eine Regeneration zu hoffen." - wieder über das Thema Sprache und Erkenntnis sprechen.
Rob

Und eine solche Aussage ist nur entzündlich. Crikey, ich habe vor ungefähr 30 Jahren mit dem Programmieren in BASIC begonnen, weil es alles gab, was es gab. Ich betrachte mich nicht als Übermensch, aber ich bin auch nicht "geistig verstümmelt, jenseits der Hoffnung auf Regeneration". Ich finde eine solche Aussage ziemlich anstößig, und das bedeutet, dass ich alles andere, was er sagt, als wenig glaubwürdig betrachte.
quick_now

2

Ich denke, in (jeder) Sprache gut zu sein, dient dazu -

Wenn Ihr Standpunkt nicht klar ist, können Sie besser denken, überarbeiten und neu formulieren. Bis Sie genau das sagen, was die nächste Person (oder Maschine) verstehen soll.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.