Co oznacza Dijkstra, gdy zaleca wyjątkowo dobre opanowanie języka ojczystego? [Zamknięte]

28

Dijkstra pisze tutaj :

Oprócz matematycznej skłonności, wyjątkowo dobra znajomość języka ojczystego jest najważniejszym atutem kompetentnego programisty.

Nie rozumiem drugiej części tego cytatu. Czy możesz wyjaśnić lub rozwinąć?

PS Dorastałem w Indiach. Mówię po bengalsku w domu; Mówię marathi w społeczności, w której mieszkam; Hindi jest językiem narodowym i jest bardzo powszechnie używany, więc wiem o tym, aw szkole i na studiach uczyłem się angielskiego jako pierwszego języka. Oczywiście teraz myślę w wielu językach i muszę przyznać, że nie mam nad nimi żadnej biegłości . Czy to naprawdę wpływa na moje umiejętności programistyczne? Jeśli tak jak? i czy są jakieś rozwiązania ?

Chani
źródło
20
Ciekawe ... Mam dobrego przyjaciela, który jest Hindusem (tamilski), i kiedyś patrzyłem, jak zamarza całkowicie, gdy ktoś zapytał go, jak powiedzieć jakąś frazę „w jego języku”. Mówiąc o tym później, przyszedłem, aby dowiedzieć się, że on NIE MA języka. On i jego żona dorastali w różnych językach, nie może rozmawiać z teściami. Oboje mówią w języku miasta, w którym się spotkali, i angielskim. To jest fascynujące. Nie miałem pojęcia, że ​​Indie są tak rozdrobnione językowo.
Dan Ray
4
To nie przypadek, że bardzo dobrzy programiści są również bardzo dobrymi pisarzami; umiejętność wyraźnego wyrażania myśli jest koniecznością dla obu rzemiosł.
Jon Purdy
1
Nie mogę się zastanawiać, czy byłoby mniej interpretacji słów Dijkstry, gdyby były one napisane w jego ojczystym języku (holenderskim), gdzie (zakładam) miał doskonałą biegłość.
Brendan

Odpowiedzi:

29

Chociaż zgadzam się z tym, co powiedział Alex i szybko_now, wierzę, że może być inny obrót. To moja własna teoria i nie sugeruję, że Dijkstra oznaczała to samo.

Co to jest „opanowanie języka”: jest to umiejętność przyjmowania podstawowych elementów składowych języka i umieszczania ich w konstruktywnych, przydatnych zwrotach i zdaniach. Alfabety i znaki same w sobie nie mają znaczenia. Musisz je zebrać i wydobyć z tego sens. Słowa same w sobie nie mają znaczenia; tylko wtedy, gdy umieścisz je we właściwej kolejności opartej na składni i gramatyce, wyrażają konkretne idee.

Czy nie jest dokładnie tak samo w programowaniu komputerowym? Zebraliśmy kilka słów kluczowych i symboli i stworzyliśmy z nich konkretne praktyczne elementy. Język programowania ma symbole i gramatykę podobnie jak język naturalny. Opanowanie języka programowania wymaga umiejętności łączenia tych (indywidualnie bez znaczenia) symboli i reguł, aby stworzyć coś znaczącego i użytecznego.

Uważam, że oznacza to, że istnieje bezpośrednia zależność między umiejętnością uczenia się języka ludzkiego a językiem komputerowym. Oba potrzebują tego samego zestawu ludzkich umiejętności i zdolności myślenia. Spójrz wśród swoich współpracowników, a przekonasz się, że osoby o słabych umiejętnościach programistycznych to także ci, którzy nie potrafią mówić ani pisać tak wyraźnie jak inni. Ci, którzy są dobrzy w posługiwaniu się ludzkimi językami, mają umiejętności niezbędne, aby zostać dobrymi programistami.

DPD
źródło
3
+1, to była moja początkowa interpretacja wypowiedzi Dijkstry, gdy ją czytałem.
Rob
1
@quickly_now: „bardzo wielu programistów, którzy potrafią pisać bardzo dobry kod, ale brakuje im zdolności do dobrej komunikacji w mowie lub piśmie” Sprzeciwiłbym się temu. Zmieniłbym to z bardzo dobrego na akceptowalny . Po 30 latach pracy jako wykonawca poznałem wielu programistów. Te nieartykulowane mogą - ostatecznie - wytworzyć działający kod. Ale dobrzy programiści potrafią pisać w różnych językach, zarówno naturalnych, jak i sztucznych.
S.Lott,
4
Istotą bycia dobrym programistą jest bycie dobrym komunikatorem. Tak to interpretowałem.
Neil
8
@quickly_now, Neil, Onesimus; Myślę, że jest to nieco głębsze niż komunikacja ustna lub pisemna. Wierzę, że mówi o związku między językiem a poznaniem, np. web.mit.edu/newsoffice/2008/language-0624.html . Myślę, że oznacza to opanowanie pewnej toniki (zwykle własnej nuty, ponieważ rzadsze jest doskonalenie się w drugim lub trzecim języku) wskazuje na silne konstrukcje lingwistyczne mentalne, które bezpośrednio odpowiadają umiejętności programowania.
Rob
1
@OnesimusUnbound, myślę, że Dijkstra wspomniał o języku ojczystym, ponieważ logiczne jest oczekiwanie, że ludzie będą dobrze posługiwali się swoim językiem ojczystym (który w wielu przypadkach, ale nie wszystkim, jest także ich językiem pouczającym), ale niekoniecznie w drugim / trzecim języku . Jednak we współczesnym świecie może być inaczej, na przykład jestem znacznie lepszy w języku angielskim niż w moim ojczystym języku. Ale to dlatego, że nigdy nie nauczyłem się tego w szkole
DPD
23

Dijkstra mówi, że musisz umieć pisać i mówić jasno, zwięźle i zdecydowanie w języku otoczenia w miejscu pracy. Ma całkowitą rację: jeśli nie możesz rozmawiać i pisać o kwestiach technicznych (i nietechnicznych) w sposób, który inni mogą natychmiast zrozumieć, jesteś utrudniony i nieco nieskuteczny jako inżynier oprogramowania.

Chodzi o to, że pisanie o kodzie jest tak samo ważne jak pisanie samego kodu.

SO jest zatem doskonałym przykładem: ile razy widzieliśmy dobre, wnikliwe, cenne pytania rozwiewane lub zamykane, ponieważ plakat nie potrafił dobrze wyrazić się po angielsku? Odpowiedź: za dużo.

Pete Wilson
źródło
7

Cytat mówi, że musisz znać swój język ojczysty (np. Marathi w twoim przypadku). To ważny atut.

Psychologowie ogólnie uważają, że dobra znajomość języka pomaga lepiej wyrazić swoje myśli. Niektórzy twierdzą, że całe nasze myślenie ogranicza się do naszego podstawowego języka. Im bogatszy język (i jego znajomość), tym lepiej osoba może komunikować się i układać pomysły.

Znajomość wielu języków pomaga również zrozumieć różne modele myślenia.

alexwriteshere
źródło
7
Jeśli „niektórzy twierdzą, że całe nasze myślenie ogranicza się do naszego podstawowego języka”, to prawda, to że mój język ojczysty nie jest już (moim) językiem podstawowym? Com'on. Moim ojczystym i podstawowym językiem jest holenderski, ale moim językiem myślenia podczas programowania jest angielski ... I to nie tylko dlatego, że większość terminologii i prawie wszystkie artykuły, które pomagają mi myśleć o wyzwaniach programistycznych, są w języku angielskim. W rzeczywistości trudno mi jest pracować na komputerze, który mówi po holendersku w / do mnie, nic nie może znaleźć i polegać w dużej mierze na lokalizacji menu w rzeczach. (Kolejny powód, dla którego spersonalizowane menu jest do bani).
Marjan Venema
7

Patrząc na całość, jest to ciekawa lista, ale pochodzi z 1975 roku. Można śmiało powiedzieć, że do pewnego stopnia czasy się zmieniły w międzyczasie, przez co niektóre elementy tej listy były nieco przestarzałe.

Kluczową umiejętnością, którą moim zdaniem powinni posiadać programiści, jest umiejętność efektywnej komunikacji. To nie oznacza tylko wyjaśnienia; oznacza zrozumienie. Niezależnie od tego, jak kończy się Twój język roboczy, angielski w twoim przypadku, choć nie w twoim ojczystym, ci, którzy mają trudności z efektywną komunikacją w swoim ojczystym języku, nie znajdą go łatwiej w innym miejscu.

Ogólnie rzecz biorąc, można śmiało powiedzieć, że bez względu na to, jaka jest twoja pozycja życiowa, jeśli masz trudności w języku ojczystym, będziesz w niekorzystnej sytuacji w życiu codziennym.

Nie chciałbym dać się zwieść temu, co rozumie przez mistrzostwo - na podstawie twojego wkładu powyżej, podejrzewam, że masz więcej niż wystarczającą znajomość języka angielskiego i na tej podstawie ekstrapoluję, że skutecznie komunikujesz się w innych językach.

kuszenie
źródło
Prawdziwe. Myślę, że Dijkstra ma rację, ale słowo „programiści” należy zastąpić słowem „informatycy”. Oczywiście naukowiec musi umieć kłócić się i pisać jasnym językiem. To samo dotyczy programistów: nie zachęcasz mnie do myślenia, że ​​kłócisz się z kolegami (również mówiącymi w języku ojczystym) w innym języku. Tutaj w Holandii wszystkie środowiska programistyczne są w języku angielskim, ale kiedy kłócę się z kolegami o kawałek kodu, robimy to w języku niderlandzkim.
vstrien
@vstrien, więc powiedz mi przyjacielu, co zrobisz, jeśli każdy z twoich kolegów mówił innym językiem ojczystym? taka jest sytuacja tutaj. każde ciało pochodzi z innego indyjskiego „stanu” i mają one inny język (nie mam na myśli dialektu… mam na myśli język), mam nadzieję, że uda ci się otoczyć: P i to jest dokładnie to, co było moim pytaniem… nie bardzo myśl w konkretnym języku (nie mogę sobie na to pozwolić, ponieważ muszę mówić prawie 3 języki z 6 różnicami ppl w ciągu godziny) Chciałem zapytać, czy to będzie zła praktyka
Chani
RYUZAKI, jest to sytuacja, w którą ludzie uderzają w wielu różnych dziedzinach życia. Pracowałem w organizacji, która miała 3 języki robocze. W firmie takiej jak Twoja, jeśli masz jeden język roboczy, radzisz sobie dobrze. Przekonasz się, że pewne części twojego życia będą działać w określonych językach.
temptar
@RYUZAKI: przepraszam, nie kierowałem do ciebie, kiedy powiedziałem, że nie kłócisz się z kolegami w języku innym niż ojczysty :). Myślę jednak, że w takim przypadku ważne jest, aby znaleźć sposób na komunikację - a najłatwiejszą rzeczą, jaką mogę wymyślić, jest użycie jednego języka do wyjaśnienia się nawzajem. Ponownie, nie sądzę, żeby miało to wpływ na twoje umiejętności programistyczne, ale na pewno
obniży
1
@temptar: „znaczna i stale rosnąca liczba programistów na całym świecie, bez znajomości matematyki stosowanej” wcale nie unieważnia tego stwierdzenia. Twoja obserwacja sprowadza się do: „osoby bez formalnego szkolenia w zakresie matematyki mogą nadal nauczyć się niektórych metod matematyki stosowanej w programowaniu”. Zgadzam się z twoją obserwacją. Ale to wcale nie unieważnia (ani nieaktualizuje) oświadczenia Dijkstry. Rzeczywiście wydaje się to komplementarne.
S.Lott,
5

Podejrzewam, że ma na myśli dobre zrozumienie tego, czego ludzie od ciebie chcą - innymi słowy, dobrą komunikację werbalną.

(Mówiąc inaczej: po części oznacza to, w kontekście programowania, że ​​czasami trzeba zrozumieć, co ludzie NIE mówią lub co mówią, ale niezbyt jasno.)

szybko
źródło
1
Wrzuciłbym tam również umiejętność jasnego przekazywania twoich pomysłów innym. Jedna jest równie ważna jak druga imo :)
Demian Brecht
1
Zgadzam się z tym, co mówisz, ale nie sądzę, żeby w ogóle o tym mówiła Dijkstra.
Rob
1
To wszystko przypomina mi zajęcia z literatury angielskiej w szkole średniej. Możesz godzinami kłócić się o to, co autor miał na myśli. Zawsze zastanawiałem się, dlaczego po prostu ich nie pytamy. Och ... literatura angielska. Niektóre z nich są teraz martwe. (Zawsze uważałem jednak, że nie powinieneś zbytnio interpretować F Scotta Fitzgeralda - jego pogląd na świat ukształtował się, patrząc na niego przez butelkę whisky. Mój nauczyciel języka angielskiego też mi się nie podobał.)
fast_now
Możesz dyskutować bezsensownie godzinami lub poprzeć swoje argumenty faktami. Na przykład spójrz na inne cytaty Dijkstry na tej samej stronie, np. „Praktycznie niemożliwe jest nauczanie dobrego programowania uczniów, którzy wcześniej mieli styczność z BASIC: jako potencjalni programiści są okaleczeni psychicznie ponad wszelką nadzieję na regenerację”. - ponownie mówiąc na temat języka i poznania.
Rob
I takie stwierdzenie jest po prostu zapalne. Crikey, zacząłem programować w BASIC około 30 lat temu, ponieważ to wszystko, co było. Nie uważam się za nadczłowieka, ale też nie jestem „okaleczony psychicznie ponad nadzieję na regenerację”. Uważam, że takie oświadczenie jest dość obraźliwe i oznacza, że ​​traktuję wszystko, co mówi, jako mające ograniczoną wiarygodność.
szybko_nie
2

Myślę, że dobra znajomość (dowolnego) języka służy temu -

Jeśli twój punkt nie jest jasny, możesz myśleć, korygować, przekształcać w lepszy sposób. Aż to, co powiesz, jest dokładnie tym, co chcesz zrozumieć następna osoba (lub maszyna).

essbeev
źródło