Zastanawiam się, czy warto czytać specyfikacje językowe / standardowe dokumenty (np . Specyfikację języka Java ), jeśli nie zamierzasz pisać kompilatora / tłumacza dla tego języka lub czegoś podobnego? Rozumiem, że czytanie takiej książki nie powinno być pierwszym kontaktem z językiem, ale może być świetnym sposobem na poznanie drobniejszych szczegółów.
Czy kiedykolwiek się martwiłeś, a inni powinni?
Odpowiedzi:
Zasadniczo sprowadza się do jednego dość prostego pytania: czy chcesz mieć autorytatywną, szczegółową znajomość języka, czy też jesteś szczęśliwy wiedząc, że jest wystarczająco dobry, aby go używać, zdając sobie sprawę, że prawdopodobnie są części, których nie znasz dobrze, a być może inne części, których w ogóle nie znasz?
Zasadniczo są ludzie, którzy wydają się prawie urodzeni jako „prawnicy językowi” - nie będą (nie mogli) odpoczywać, dopóki istnieje kilka zakamarków w języku, którego nie znają i / lub rozumiem. Wiele z nich skłania się ku względnie prostym językom po prostu dlatego, że nauka bardziej złożonych języków na tym poziomie szczegółowości jest często prawie niemożliwa dla jednej osoby.
Dla większości programistów byłoby to całkowitą stratą czasu - są dość szczęśliwi i produktywni, znając wystarczająco dużo języka, aby móc go (rozsądnie) dobrze używać. Poza tym po prostu ich to nie obchodzi. Język jest narzędziem i tak długo, jak potrafią używać go wystarczająco dobrze do swoich celów, fakt, że istnieją inne rzeczy, o których nie wiedzą, jest w dużej mierze nieistotny.
źródło
Nigdy
Nigdy nie należy czytać specyfikacji języka.
To całkowita strata czasu.
Wielcy programiści są w stanie pisać losowy kod, zadawać pytania na temat przepełnienia stosu i używać IDE, aby w końcu napisać kod, który często nie ulega awarii.
Nie trać czasu na zrozumienie języka. Po prostu znajdź świetne IDE z dobrym autouzupełnianiem. Zadawaj dużo pytań SO. To wszystko, czego potrzebuje każdy.
źródło
W języku Java specyfikacja języka ma na celu dać jednoznaczną odpowiedź na każde pytanie dotyczące znaczenia danej konstrukcji źródłowej. Czytanie tego jako ucznia nie jest zalecane - zamiast tego dobry nauczyciel pokazuje wszystkie pułapki i ich znaczenie.
Dla doświadczonego programisty Java Puzzlers jest naprawdę dobry, aby nauczyć się rozumieć przypadki ciemnego rogu.
źródło
Ogólna odpowiedź brzmi: tak, warto.
Jeśli chcesz napisać kod przenośny, jest to obowiązkowe.
W przypadku niektórych języków jest to po prostu nieuniknione, np. Ada lub Perl.
Ponadto, jeśli nie tylko piszesz kod, ale także odczytujesz kod od innych, w końcu będziesz musiał odwołać się do specyfikacji.
źródło
Być może to tylko ja, ale to pytanie nie ma sensu. Zrozumienie używanych narzędzi jest znakiem rozpoznawczym profesjonalisty. Im głębsze zrozumienie, tym lepsza umiejętność korzystania z narzędzia. Dla mnie to wybór między byciem dyletantem lub profesjonalistą.
Ilekroć uczę się nowego języka, pierwszą rzeczą, której szukam, jest specyfikacja.
Przeczytałem specyfikacje dla ANSI C, C ++, Java, Scheme, Python i JavaScript. Zapomniałem większości szczegółów C, C ++ i Java tylko dlatego, że często nie używam tych języków. Po przeczytaniu specyfikacji byłem lepszym programistą, ponieważ wiedziałem, jak lepiej używać języka.
źródło
Zasadniczo przydatne może być zrozumienie pewnych trudnych chwil, które napotykasz od czasu do czasu.
Ale na poważnie, jeśli opanowanie języka wymaga zapoznania się ze szczegółową specyfikacją, być może język jest niefortunny. Podobnie jak w powszechnym powiedzeniu, jeśli potrzebujesz dokumentacji aplikacji, jest ona źle zaprojektowana.
źródło
Przydaje mi się, gdy natrafisz na chwilę, ale trudno mi ją zachować jako zwykłą lekturę. Jednak kiedy użyłem po tym, jak czegoś nie zrozumiałem, zawsze bardzo poszerzyłem swoją wiedzę.
źródło
Jeśli jesteś twardym programistą w tym języku i musisz być w stanie wycisnąć z niego każdy subtelny niuans, tak. Istnieją wyraźne zyski z inwestycji czasu w tej sprawie .
W przeciwnym razie nie. Jeśli nie wykorzystasz tej wiedzy, to na pewno nie będzie się z tobą trzymać. Specyfikacje językowe dotyczą najgłupszych rzeczy, jakie można sobie wyobrazić.
źródło
Zwykle nie umieszczam zbyt wiele akcji w standardzie. Prostym faktem jest to, że Standard nie mówi ci, abyś nie używał wyjątków jako kontroli. Nie powie Ci, abyś nie korzystał z Singletonów. Nie powie ci, jak zaprojektować interfejs klasy, który można utrzymać. Nie powie ci, dlaczego aplikacja ulega awarii, jeśli nie wiesz dlaczego. Możesz mieć najlepiej zdefiniowany program na świecie, a on nadal będzie przerażający.
Moim zdaniem prosty fakt polega na tym, że zdecydowana większość wyzwań programistycznych nie polega na zmuszaniu języka do robienia tego, co chcesz, ale wiedzeniu, co jest właściwe. Tak długo, jak znasz podstawowe funkcje języka, liczy się sposób ich używania.
źródło
Zdecydowanie warto to przeczytać. Niektóre języki, takie jak C ++, Java i Python, są na tyle złożone, że czytając specyfikację językową nauczysz się dużo o tych językach i wszystkich ich fantazyjnych sztuczkach składniowych / semantycznych.
Czytałem specyfikację języka Scheme R5RS podczas jazdy autobusem na studia, ponieważ była krótka i zwarta, i nauczyłem się całej składni i wszystkich dostępnych podstawowych funkcji.
źródło
Część doc.python.org oznaczona jako „odniesienie językowe” jest niezwykle przydatna. Szczególnie w rozdziale dotyczącym modelu danych.
źródło
Myślę, że jeśli programowanie w tym języku jest Twoim zajęciem i chcesz poważnie potraktować swoją pracę, powinieneś przeczytać specyfikację języka, zwłaszcza gdy jest on stosunkowo łatwy i szybki do odczytania oraz zrozumieć jak specyfikacja języka Java, mimo że ma
recently
straciła dużo to prostota z lekami generycznymi.Ale także, jeśli planujesz uczyć się i ostatecznie opanować nowy język, którego jeszcze nie znasz, może być bardzo wnikliwe, aby przeczytać specyfikację tego języka, zanim zmarnujesz z nim swój czas. Jestem pewien, że gdyby więcej programistów C ++ przeczytało i próbowało zrozumieć C ++ Annotated Reference Manual, zanim zaczną go używać, wielu uciekłoby od niego.
źródło