Programiści zapominają o składni


17

Czy dobrzy programiści muszą mieć składnię na końcu języka podczas pisania kodu? Co robisz z nich, jeśli szukają prostych rzeczy w Internecie? Czy są dobre czy złe (może wiedzą, gdzie szukać)? Czy programiści powinni mieć dobrą pamięć? Czy to cecha dobrego programisty?


1
W zależności od tego, jak „prosty”. Przydałyby się niektóre przykłady / tła. Może to być również problem niespójności z językiem / środowiskiem, które programują.
rwong,

1
Sądzę, że byłoby to częścią definicji dobrego programisty, ponieważ podlega on szybkiemu \ wydajnemu działaniu. Jeśli nie możesz napisać wiersza kodu z referencją konsultacyjną, nic nie zrobisz na czas. Z drugiej strony nie jest to wezwanie do zapamiętywania rzeczy.
stonemetal

W C ++ zwykle muszę sprawdzać składnię wskaźnika na funkcje (element lub nie), ponieważ nie używam go tak często ... może że czasami składnia jest po prostu dziwna ?
Matthieu M.,

Odpowiedzi:


25

Moja filozofia programowania polega na tym, że jest to „stan umysłu”, a reszta to „tylko składnia”. (tj. nie (jak) ważne)

To powiedziawszy, nie należy szukać prostych rzeczy. Przynajmniej nie dla języków, z którymi regularnie pracujesz. Nie ma nic złego w konieczności odświeżania, a umiejętność znajdowania informacji to z pewnością dobra umiejętność. Jednak podstawowa składnia powinna być zdecydowanie dobrze znana. W przeciwnym razie spędzasz zbyt dużo czasu na wyszukiwaniu i zbyt mało czasu na programowanie.


8
Dokładnie jak język mówiony: musisz umieć to mówić, ale słowniki są wielką pomocą. Często wiesz, co chcesz wyrazić, zanim zdobędziesz słownictwo!
Kevin Cantu,

@Kevin - Dokładnie - ale możesz też ocenić czyjąś biegłość na podstawie częstotliwości, z jaką odwołują się do takich odniesień. Większość z nas korzysta z nich od czasu do czasu, ale pytasz kogoś, kto powiedział, że umie mówić w języku, ale odczuwał potrzebę ciągłego odwoływania się do słownika.
Jon Hopkins,

@jon Dokładnie. Kontynuując metaforę języka mówionego / pisanego, z pewnym wysiłkiem możemy zwiększyć naszą ekspozycję na język i ulepszyć nasze słownictwo. Stąd mój żarłoczny apetyt na czytanie i ciągłe poszukiwanie dobrej aplikacji na karty flash iPhone. Podobnie w przypadku języków programowania, gdy mam problem z konkretnym idiomem, tworzę fragment kodu, który to demonstruje, i trzymam go pod ręką dla łatwego odniesienia. Oczywiście staram się od czasu do czasu wracać do tych problematycznych obszarów. Zajęło to trochę czasu, ale w końcu nauczyłem się w ten sposób nieznośnego polecenia przełącznika.
George Marian,

Myślę, że również bardziej „zaawansowany” programista prawdopodobnie będzie miał wiele języków na swoim koncie, a czasem ich pomyli. Od czasu do czasu wciąż mylę deklarację tablicy wielowymiarowej między C # i C ++ (czy to „arr [] [] czy arr [,]”) i muszę to sprawdzić.
Steven Evers,

28

To zależy od tego, co masz na myśli, ale krótka odpowiedź brzmi „tak”.

Czy programiści zapomną tu i tam o średniku lub ortezie? Pewnie. Czy zamierzają sprawdzić składnię instrukcji switch, ponieważ prawdopodobnie rzadko go używają? Cóż, ja tak. Czy będę pracować z ActionScript, ale zamiast tego będę pisać jak Java? Zdecydowanie. Przyzwyczajenie się do pisania w innym języku może trochę potrwać, zwłaszcza jeśli pracujesz z innym językiem od lat.

Prawdziwą troską powinno być to, czy programista nie potrafi odgadnąć składni, nawet przy pomocy IDE. Jeśli dana osoba nie wie, do czego służy średnik lub jakie są te fantazyjne nawiasy klamrowe, oznacza to, że ma więcej do zrobienia.


8
Heh, dokładna składnia instrukcji switch zwykle również wywołuje u mnie smutek.
George Marian,

To ten sam powód, dla którego trzymam się skryptów Python, nawet jeśli wolę Ruby. Muszę kodować w Pythonie w pracy, a tam iz powrotem byłoby zbyt zagmatwane.
LennyProgrammers,

+1 za składnię instrukcji switch - z jakiegoś powodu jest po prostu nieuchwytna
billy.bob

5
Nie wspominając o niezliczonej liczbie znanych języków, a czasami składnia może się ze sobą łączyć.
Josaph,

@dave Myślę, że problemem jest mieszanka symboli. Zwykle switchnastępuje coś w nawiasach, następnie nawias otwierający, następnie caseetykieta, której nie ma w nawiasach, następnie dwukropek, a następnie stwierdzenia zwykle terminowane średnikami. I nie zapominajmy o breakstwierdzeniach. To dzięki wysiłkowi i sile woli w końcu go zapamiętałem i wciąż muszę od czasu do czasu sprawdzać; tylko dla pewności.
George Marian,

10

Z pewnością byłbym zaskoczony, gdyby w przeciwnym razie dobry programista rutynowo szukał składni języka, w którym biegle posługiwał się. Oczywiście mogą istnieć przypadki narożne, które w rzeczywistości nie są tak często używane w praktyce, że byłoby to całkowicie do przyjęcia aby dobry programista ich nie znał, ale z reguły biegły programista nie musi wyszukiwać składni. Musi wyszukiwać funkcje i klasy z bibliotek :)


+1. Ja uważam się biegle w języku C ++ i patrzę się nazwy funkcji i argumentów codziennie . Na przykład nigdy nie zamierzam zapamiętać każdego członka std::string.
Michael Kristofik,

8

Jeśli jesteś w sytuacji, w której regularnie zmieniasz języki lub pracujesz w 3 lub 4 językach jednocześnie, niewiele możesz na to poradzić. Przez pewien czas pracowałem nad projektami, które wymagały ciągłego przełączania i zacząłem nazywać siebie „programistą referencyjnym”, który musiał szukać czegoś więcej, niż bym wolał.


4
+1 Całkowicie się zgadzam. Kodery, które przeskakują między językami w tempie węzłów (mogę mieć 10 języków lub więcej w ruchu w ciągu dnia obejmujących wiele projektów), w końcu mają problemy z zapamiętywaniem niejasnych różnic między podobnymi językami, szczególnie w standardowych funkcjach biblioteki. Zauważyłem, że z wiekiem jest coraz gorzej.
Orbling

To jest mój problem, przechodzimy przez tak wiele rzeczy w pracy, że czasami nie pamiętam nawet podstaw. Zwłaszcza, że ​​zwykle mogę po prostu użyć kontekstu, ktoś napisał pętlę for lub funkcję w pobliżu, po prostu kopiuję tę składnię. Ostatnio jednak zmuszam się do nauki składni, liczenie na ćwiczenie, które zmusi mnie do zapamiętania, nie wystarczy. Wybrałem jeden język (Javascript), aby zmielić składnię w moim mózgu. To bardzo pomaga, zwłaszcza w praktyce podczas wywiadów na tablicy.
Jemmeh,

5

Piszę C ++ od ponad 15 lat, ale wciąż nie znam na pamięć niektórych jego tajemniczych składni.
Jak ponownie utworzyć instancję szablonu funkcji? Jaka jest składnia częściowej specjalizacji szablonu zawierającego argument szablon-szablon? I nie zaczynaj mnie od deklarowania funkcji, która zwraca wskaźnik do tablicy wskaźników do funkcji, które pobierają tablice wskaźników do ...

Podejrzewam, że na tym świecie jest co najwyżej jeden lub dwa tuziny ludzi (jeśli w ogóle są), którzy naprawdę znają całą składnię C ++ na pamięć. I prawdopodobnie wszyscy zarabiają na tym pisząc nakładki na kompilatory C ++.


4

Ciekawi mnie tutaj „składnia” Googlinga.

Podejrzewam (i obawiam się), że nie mówimy o tym, jakie parametry przyjmuje połączenie (ponieważ większość IDE poprosi cię tam, żebyś ich nie przeglądał), ale faktyczne „jak to zrobić”.

IDE sprawiło, że niepotrzebne staje się zapamiętywanie dokładnych nazw i list parametrów w taki sposób, jaki był wymagany, i to sprawia, że ​​wielu ludzi jest nieco leniwych, ale to w porządku.

Ale potrzebujesz czegoś do Google? Dla mnie to zwykle nie jest składnia, to po prostu coś, czego tak naprawdę nie znasz, albo znasz tylko z ukrycia.

Oczywiście nie oznacza to, że nie jest źle mieć Google. Języki mogą być dość szerokie i niewiele osób wie wszystko, ale powiedziałbym, że jeśli twierdzisz, że jesteś biegły w języku, Google powinien być wyjątkiem, a nie regułą. .

Dla mnie, chyba że robisz coś stosunkowo nietypowego, lub może jesteś zardzewiały z językiem po okresie robienia czegoś innego, jeśli twierdzisz, że „znasz” język, nie powinieneś być googlingiem w więcej niż 10% rzeczy co najwyżej, a to powinny być naprawdę bardzo konkretne rzeczy.

W odniesieniu do pomysłu, że chodzi tu o dobrą pamięć, tak naprawdę nie jest. Chodzi o rodzaj instynktownego odczucia, które daje ci coś, co naprawdę (raczej niż powierzchownie) znasz. Nie uważam, że wiem, jak ugotować Melanzane Parmigiana bez przepisu, że mam dobrą pamięć, to znak, że rozumiem, jak gotować to danie - to subtelnie różne rzeczy.

Poza tym, zadaj sobie to pytanie, czy spodziewałbyś się pójść do kuchni restauracji i znaleźć szefa kuchni, który ciągle patrzy na książkę kucharską? Lub zobaczyć, jak mechanik pracuje nad twoim samochodem, przeglądając instrukcję Hayesa dla tego modelu? Gdybym zobaczył którąś z tych rzeczy, byłbym bardzo niespokojny, jak dobra była ta osoba.


Komentarz do głosowania w dół? Jestem naprawdę zainteresowany tym, czym jest nieporozumienie.
Jon Hopkins,

+1 - Dobre połączeniesyntax != api
Jeremy Heiler,

3

Moim zdaniem nie. Nie jest to składnia, która jest ważna, ale twoja logika w kierunku rozwiązania problemu lub osiągnięcia celu. Jeśli podejrzewasz, że pracujesz w wielu językach, to naturalne, że czasami nie pamiętasz dokładnej składni.


0

Składnia to tylko widok na podstawową semantykę języka, ponieważ programowanie polega na użyciu podstawowych cegieł semantycznych do zbudowania czegoś. Jeśli nie rozumiesz podstawowych pojęć używanych przez język, nie ma znaczenia, jak dobrze zapamiętujesz składnię, Twój kod będzie strasznym bałaganem. Jak ktoś kiedyś powiedział: „Dobrzy programiści mają w głowie tłumacza i kompilator”. Zauważ, że nie ma wzmianki o składni, ponieważ tam nie dzieje się prawdziwa praca.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.