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 ?
Odpowiedzi:
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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.)
źródło
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).
źródło