Względność językowa to idea, że język kształtuje nasz sposób myślenia. Moje pytanie brzmi: w jakim stopniu i do jakiego stopnia dotyczy to programowania?
- Czy niektóre rodzime języki naturalne lepiej nadają się do myślenia o programowaniu niż inne? Na przykład, czy w języku innym niż angielski można przedstawić bardziej zwięźle?
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.
- Czy chińskojęzyczny programista widzi programowanie w radykalnie innym obiektywie niż anglojęzyczny programista, czy też różnice znikają, gdy oba są zanurzone w obiekcie?
- Czy niektóre języki programowania i domeny są łatwiejsze do myślenia w tym czy innym języku? Na przykład, czy łatwiej jest Grokować Ruby, jeśli jesteś Japończykiem, ponieważ twórca Ruby jest Japończykiem?
Zauważ, że to pytanie nie koncentruje się na „jak języki programowania wpływają na sposób, w jaki ludzie myślą o programowaniu”, ale raczej „jak języki naturalne wpływają na sposób, w jaki ludzie myślą o programowaniu”.
Aby to usunąć, jednym z języków, który ma wyraźną przewagę pragmatyczną, jest angielski . Myślę, że zaletą ma niewiele wspólnego z języków programowania wyborze angielskich słów kluczowych jak if
, for
, while
, i do
, podobnie jak muzycy, którzy nie mówią włoski nie potknął się o takich słów jak forte . Ma to więcej wspólnego z komunikacją pomysłów z innymi programistami, ponieważ angielski jest obecnie lingua franca, przynajmniej w świecie programowania. Na przykład, aby zadać pytanie w StackOverflow, naprawdę musisz znać angielski i znać go całkiem dobrze, jeśli chcesz dobrych odpowiedzi. Chociaż brzmi to jak postawa imperialistyczna, w rzeczywistości jest to prawda.
Poza tym, w jaki sposób nieodłączne właściwości języków wpływają na to, jak programiści, którzy je mówią, myślą o strukturach danych, algorytmach itp.? Czy jakiekolwiek języki są szczególnie zwięzłe, jeśli chodzi o mówienie o logice i programowaniu, pozwalając rodzimym użytkownikom tych języków myśleć szybciej?
źródło
Implement quick sort
.Odpowiedzi:
Ach, hipoteza Sapira-Whorfa a wojna hipotez Chomsky'ego o głębokiej strukturze ...
Programowanie to matematyka. Matematyka jest filozofią stosowaną. Nasuwa się zatem pytanie, który język naturalny może dokładnie opisywać pojęcia matematyczne bez znaczącego zarysowania głowy. Innymi słowy, jakie języki łatwo poradzić sobie w arystotelesowskiej metafizyce?
Przysłowiowy „dziki” język może mieć początkowe trudności z wyrażeniem wymaganych abstrakcji pierwszego rzędu. Jednak- jednak! - ludzie mogą uczyć się nowych słów i nowych pojęć. Starożytna greka nie zaczynała się od terminów filozoficznych; musiały zostać wynalezione, a następnie przeniesione do innych języków.
Biorąc pod uwagę, że matematyka jest uniwersalna, postuluję, że silna hipoteza Sapira-Whorfa jest fałszywa.
źródło
Nie wiem, czy jakiś konkretny język naturalny nadaje się do lepszego programowania (może poza łaciną?). Wiem, że znajomość więcej niż jednego języka jest dość potężna.
Dijkstra powiedział w jednym z ostatnich wywiadów (przedrukowanym w CACM Vol. 53 nr 8, s. 44):
źródło
Turecki jest bardzo interesującym językiem, ponieważ ma ścisłe reguły bez wyjątków (o których jestem świadomy), jest prawie całkowicie wolny od zbędnych, nie ma gramatyki płci, a na słowie może wyrazić tyle co zdanie po angielsku.
mówienie po turecku sprawia, że myślę o tym, co chcę osiągnąć, o tym, jakie informacje chcę przekazać, a mniej o tym, jakich słów użyć.
edytuj
Oczywiście Turcy mają słowa reprezentujące płeć biologiczną. Ale nie ma podziału na on / ona / ono - po turecku „o”.
Lub po hiszpańsku powiedziałbyś „profesor / profesora”, a po niemiecku „Lehrer / Lehrerin”. W języku tureckim musisz użyć dodatkowych słów, aby wskazać płeć - podobnie jak angielski.
W języku tureckim nauczycielem jest öğretmen. Aby wskazać nauczycielkę, należy powiedzieć „kadın öğretmen” - nauczycielka. Ale pomimo niemieckiego, gdzie - jeśli nie kobiecość przez dodanie „-in” - domyślnie jest to mężczyzna, öğretmen nie ma płci, bo tak nie jest.
Inną rzeczą, która nie jest dostępna w języku tureckim, są artykuły takie jak „el / la”, „the”, „der / die / das” - ponieważ zwykle są to tylko informacje, które są już dostępne w kontekście.
Ale są słowa, które wyrażają „to”, „este / esta”, „diese / dieses / diese”, na przykład „bu”.
To jest dodatkowa informacja, ponieważ wskazuje na określony obiekt.
źródło
Myślę, że bardziej prawdopodobne jest, że używany język programowania będzie kształtował sposób myślenia o problemie, nazwy zmiennych i klas itp. To tylko znaki reprezentujące coś. Chociaż jest bardzo prawdopodobne, że programiści z różnych kultur myślą o programowaniu inaczej ze względu na swój język mówiony i sposób, w jaki się nauczyli.
źródło
Moim zdaniem, język naturalny nie ma znaczenia (a przynajmniej nie powinien mieć znaczenia), kiedy mówimy o metodach lub pomysłach, które próbujesz zrealizować za pomocą swojego kodu.
Jak sam powiedziałeś, najbardziej odpowiednia jest praca z samym kodem i pisanie dokumentacji na temat kodu . Ale ponieważ sam kod jest tylko rzemiosłem , prawdziwa siła programisty / informatyka leży ponad tym, że ma pomysły, algorytmy i takie rzeczy - a wtedy język, w którym te rzeczy są opisane, jest zupełnie nieistotny dla rzeczywistej treści.
źródło
To był temat, który mnie kiedyś bardzo interesował, dlatego jeszcze bardziej (teraz) żałuję, że nie mogę znaleźć zakładek, które miałem wtedy.
Zapisałem link, na który natknąłem się pewnego dnia, Czy różne języki mają takie same realia? to styka się nieco z nim (przeczytaj również komentarze). Niektóre są interesujące.
W każdym razie ...
źródło
Angielski jest dość wydajny i zwięzły. Tłumaczenie na większość języków sprawi, że pomysł będzie dłuższy .
Powszechnie przyjmuje się również, że nie ma prymitywnych języków naturalnych . Wszystkie aktywne języki naturalne mają taki sam poziom ekspresji. Nie oznacza to, że pomysły nie są tworzone przez język, ale nie sądzę, że język naturalny ma duży wpływ.
źródło