W pierwszym rozdziale „Pragmatycznego programisty” pierwszym celem nauki jest:
Naucz się co najmniej jednego nowego języka każdego roku. Różne języki rozwiązują te same problemy na różne sposoby. Poprzez uczenie się kilka różnych podejść, można pomóc poszerzyć swoje myślenie i uniknąć getter uderzył w rutynę. [...]
Aby osiągnąć ten cel w ciągu kariery zawodowej, lista języków prawdopodobnie będzie dość długa (szczególnie jeśli nie chcesz „robić postępów” w zarządzaniu). Najwyraźniej edukacja programisty (lub jakiejkolwiek innej formy) pozwoli Ci zacząć od podstaw języków przydatnych w handlu (zwykła lista z ofert pracy: C, C ++, Ruby, Python, JavaScript, C #, Java, VB, .. .). Ponadto formalny lub nieformalny program uczenia się prawdopodobnie obejmuje podejścia funkcjonalne (za pomocą czegoś takiego jak Haskell, LISP lub język pochodny ML)
Ale kiedy poznamy rozsądny podzbiór tej listy - co dalej i dlaczego ?
źródło
Odpowiedzi:
Spraw, aby było to interesujące i spędzaj co roku na pisaniu interpretera lub kompilatora dla własnego języka programowania, który wypełnia niszę, w której nigdy nie korzystałeś z języka programowania. Każdego roku napisz następny kompilator / tłumacz przy użyciu języka, który napisałeś w poprzednim roku.
źródło
Powinieneś zmaksymalizować „marginalne znaczenie”, tj. Zawsze zapuszczać się w nowe obszary, w których jeszcze nie jesteś silny. Różnią się oba języki programowania oraz koncepcje . Jeśli nie znasz żadnego języka zorientowanego obiektowo, wypróbuj Javę i niektóre środowiska o wysokiej abstrakcji, takie jak Hibernacja. Następnie należy napisać kilka rzeczy administrowania systemów w języku skryptowym, takich jak Python lub Perl. Następnie podnieś trochę umiejętności na niskim poziomie w C lub C ++, pisząc wysokowydajny wielowątkowy kod serwera. Jeśli nie znasz programowania funkcjonalnego, wypróbuj Haskell z niektórymi problemami teorii grafów, takimi jak rozwiązywanie Peg Solitaire itp. Jest to bardzo możliwe, aby wszystko, czego się uczysz, miało natychmiastową wartość rynkową, dopóki nie trafisz na erudytę lub rzeczy specjalnego przeznaczenia, takie jak jako zabezpieczenie obiektowo zdolności ,Prolog lub VHDL .
Dobrym ćwiczeniem na drodze! To nauczy Cię myśleć w bok i przewidywać problemy w kategoriach niezależnych od języka, zamiast polegać na zbyt małej liczbie technik specyficznych dla platformy. Na przykład, gdy opanujesz podobieństwa i różnice w wirtualnej wysyłce metod między C ++ i Pythonem, prawie natychmiast „dostaniesz” to dla dowolnego innego języka.
źródło
Język, który nie wpływa na sposób myślenia o programowaniu, nie jest warte poznania. - Alan Perlis
W związku z niektórymi innymi odpowiedziami, dlaczego uczysz się jednego nowego języka rocznie, dlaczego? jest rozszerzenie twoich możliwości jako programisty. Jak polega na uczeniu się języków z odrębnymi paradygmatami od języków, które już znasz, a podsumowanie paradygmatów, które już znasz, określa, którego języka uczyć się w następnej kolejności.
Jakie są te paradygmaty? Zaawansowana książka Koncepcje, techniki i modele programowania komputerowego zapewnia doskonały przegląd z mapą graficzną .
Tak więc, jeśli znasz tylko imperatywne języki podobne do C, to nauka Scheme / Lisp jest niezwykle przydatna. Jeśli znasz już imperatywne i funkcjonalne języki, przydatna będzie nauka Prologu itp.
Ostatnia książka, która próbuje uczyć wielu języków i paradygmatów, to Siedem języków w siedmiu tygodniach . Oczywiście nie będziesz biegły w każdym języku po tygodniu nauki, ale wydaje się, że zapewnia przystępną, zorientowaną na praktykę perspektywę wielu paradygmatów.
Kiedy grokujesz innym paradygmatem, to naprawdę jest moment Zen; przejście od programowania imperatywnego do programowania funkcjonalnego sprawiło, że zobaczyłem świat komputerów w zupełnie nowym świetle. Miłej nauki!
źródło
C - jako niezbędny „program leżący u podstaw wszystkiego”, język programowania systemów
Lisp (schemat) - dziwny, ale niesamowicie potężny język ur, który zdaniem wielkich hakerów określa fajnie
Smalltalk - bo taki miał być OO
Erlang (lub inny język aktora), aby zrozumieć aktorów
Haskell - aby zrozumieć Monady
JavaScript - ponieważ jest wszędzie i jest niezbędny do skryptowania przeglądarki
Jeden z Python / Ruby / Perl (ale to naprawdę nie ma znaczenia, które) - więc wiesz, jak wygląda popularny, nowoczesny język skryptowy wysokiego poziomu z dobrą obsługą bibliotek
SQL - dzięki czemu możesz rozmawiać z relacyjnymi bazami danych
Prolog - ponieważ wciąż musisz oszalać
źródło
źródło
1) Prolog: Jest zupełnie inny niż wszystkie imperatywne języki, których do tej pory używasz, i zmieni sposób myślenia o problemach
2) Lisp: bez niego równie dobrze możesz używać Vi
3) Erlang: Znowu jest zupełnie inaczej, wydaje się też całkiem modny.
4) Coś z Turinga Tarpita (np. Brainfuck) i prawdopodobnie napisz do niego kompilator lub tłumacza: nie mogę wymyślić powodu, aby to zrobić, ale wydaje mi się, że to dobry pomysł.
źródło
Oprócz tych, które wymieniłeś,
Haskell, F #, Clojure, OCaml, Lua, Go, D, Erlang, Objective C.
źródło
Chociaż zgadzam się, że dobrze jest uczyć się nowych języków (a nawet koniecznością przez długą karierę), myślę, że jeden rok za dużo minął przez pierwsze pięć dziesięciu lat. Wolałbym zobaczyć kogoś z takim doświadczeniem, który uczy się nowych rzeczy na temat języków, które już zna. W pewnym momencie potrzebujesz zarówno głębi, jak i wiedzy. Więc możesz napisać konstrukcję If w 12 językach, wielkie whoop. Wolałbym zobaczyć kogoś, kto naprawdę się w to zagłębi i stanie się ekspertem w przynajmniej jednej rzeczy. A potem następne kilka lat stanie się ekspertem w czymś innym. W ciągu ponad 30-letniej kariery chcę, aby ktoś miał głęboką wiedzę, a nie tylko podstawy wielu rzeczy.
źródło