Często słyszysz, że programiści powinni uczyć się wielu różnych języków, aby się doskonalić. Nadal chodzę do szkoły i nie mam dużego doświadczenia programistycznego (nieco ponad rok). Ale to, co było szlachetnym zamiarem poprawy umiejętności programowania, zmieniło się w pewnego rodzaju OCD: czuję, że nie uspokoję się, dopóki nie nauczę się wszystkich stosunkowo znanych języków programowania.
A oto samo pytanie: czy bycie poliglotą języków programowania faktycznie ci pomoże (I nie mam na myśli zwykłego „programisty powinien znać przynajmniej wszystkie paradygmaty”, mam na myśli naprawdę wszystkie języki, o których zwykle słyszysz)? Czy ktoś ma podobne doświadczenie? Czy to pomaga w pracy / umiejętnościach / karierze? Jak często potrafisz stosować te umiejętności?
źródło
Odpowiedzi:
To pomaga
To nie pomaga. Chociaż gdy poznasz już wszystkie paradygmaty, możesz nauczyć się języka tygodniowo.
Po prostu lepiej jest spędzić tydzień na nauce tego języka, kiedy go potrzebujesz .
Dygresja:
Nauka popularnych / popularnych języków nie jest tak pomocna jak nauka „wszystkich paradygmatów”. Pierwszy nie obejmuje drugiego. Na przykład nauka Self jest niezwykle przydatna do zrozumienia prototypowego OO. Nie jest to powszechny ani popularny język, ale jest o wiele bardziej przydatny niż nauka języka Python, gdy już znasz ruby.
Projekt językowy:
Znajomość większości języków jest przydatna, jeśli piszesz / projektujesz nowy język. Jest więc solidny przypadek użycia, ale jest dość niszowy.
Co zalecam zamiast tego:
Przeczytaj kod Ukończ 2 co najmniej 3 razy
Języki przychodzą i wychodzą w lewo i prawo w zależności od „tego, co popularne”. Technologia staje się przestarzała po miesiącach lub latach, w zależności od tego, jak wygląda krzywa technologii. (Sieć przestaje stosować technologię co 6 miesięcy).
Technika programowania i teoria informatyki zawsze pozostają takie same.
źródło
Nie chodzi o to, jak umieć pisać w wielu językach, chodzi o, jak mówisz, o paradygmaty. Im więcej opcji znasz, tym lepiej. Znajomość wielu języków z pewnością pomaga, ale jeśli nadal uczysz się tego samego rodzaju języków, szybko wpadniesz w ślepy zaułek.
Kluczem jest wiedza, w jakim języku / systemie najlepiej wdrożyć część twojego projektu. Nawet jeśli zdecydowałeś się na jeden główny język (jak większość projektów), nadal będziesz mieć różnego rodzaju narzędzia, skrypty, automatyzację i wsparcie kompilacji, które trzeba napisać. Zwykle wiele innych języków lub narzędzi jest w tym lepszych niż główny język.
Dla wyjaśnienia uważam, że głupio jest uczyć się wszystkich języków, o których faktycznie słyszysz: są ich setki i często są to tylko niewielkie różnice w innych językach.
źródło
IMHO nie. Po pierwsze dlatego, że nie możesz nauczyć się języka w mniej niż rok. Napisanie w nim kodu zajmuje 2 dni, ale napisanie płynnego i dobrze sformułowanego kodu dla danego języka wymaga dużego doświadczenia. Dlaczego GC działa tak, jak działa, gdzie przydzielać pamięć, które konstrukcje są szybsze, jak poprawnie łączyć łańcuchy, jakie są niebezpieczne kąty języka itp.
Piszę okropny kod Java / .NET jako programista C ++, ponieważ wielu programistów Java pisze okropny kod C ++.
Najlepszą częścią nauki innych języków jest to, że uczysz się nowych paradygmatów i być może masz lepsze narzędzie do rozwiązywania konkretnych problemów. Powiedz - potrzebujesz bardzo szybkiej, niepublicznej aplikacji GUI, .NET jest tam niezastąpiony.
Ale nauka języka, aby nie używać struktur w .NET lub nie wycierać każdego obiektu w C ++, zajmuje dużo czasu. Myślę, że lepiej jest wydać go na naukę zasad projektowania, platform i wybranego języka.
Ale to tylko moja opinia.
źródło
Poznanie ich nie jest praktyczne , ale wiedza o nich może być bardzo przydatna . Rozumiem przez to, że kiedy pojawia się nowy problem, możesz powiedzieć: „Niejasno pamiętam, że [inny język] miał lepszy sposób na rozwiązywanie takich problemów. Powinienem to sprawdzić”.
źródło
Pomógłbyś bardziej w karierze, budując wiedzę o domenach, a następnie ucząc się wielu języków programowania. Nie wspominając o tym, że będziesz musiał nauczyć się dodatkowych narzędzi, takich jak korzystanie z profilera w swoim języku, to samo do debugowania, najlepszego frameworku GUI i jak szybko się z nim programować, jakie wspólne biblioteki stron trzecich istnieją z kompromisami i idiomy specyficzne dla języka.
Mądrzej jest również nauczyć się robić więcej rzeczy niż wiele sposobów robienia tego samego.
źródło
Pracowałem na kilku systemach, w których komponenty zostały napisane w wielu językach (najgorszy sprawca wymagał ode mnie dostarczenia kodu napisanego w Ada 83, C, Fortran 77, SQL i DCL, podczas gdy moje ostatnie zadanie wymagało ode mnie dostarczenia kodu C ++ i Java ). Tak, istnieją przypadki, w których trzeba znać wiele języków na tyle dobrze, aby być w nich wydajnym (produktywnym! = Biegły; nie będziesz głębokim ekspertem w C ++ i Javie i ... chyba że dziwak).
Poza tym czas poświęcony na naukę wielu języków polega na pomocy w oddzieleniu koncepcji od implementacji . Dla mnie OOP nie miało sensu, dopóki nie pracowałem z wieloma OOPL. Ponadto w pewnym momencie swojej kariery będziesz musiał szybko zmienić biegi i zacząć pracować nad czymś zupełnie nowym i nieznanym; poświęcenie trochę czasu, aby wykroczyć poza to, co musisz wiedzieć, ułatwi to przejście, kiedy to nastąpi.
źródło
Myślę, że lepiej byłoby uczyć się kilku różnych języków, a następnie przynajmniej jednego dogłębnego, zanim zaczniesz potrzebę nauki każdego możliwego języka. Gdy masz minimalną szerokość, głębokość staje się naprawdę ważna dla twoich postępów jako programisty. Widziałbym kogoś z głębią w jednym lub dwóch językach i odrobiną kilku innych niż ktoś z odrobiną wszystkiego. Zdobycie głębi jest jak nauczenie się innego paradygmatu, zmieni sposób myślenia o programowaniu i otworzy drzwi do naprawdę skomplikowanych ekscytujących projektów.
źródło
To jest jak nauka mówienia w wielu językach. Nauczenie się ich wszystkich do tego stopnia, że są przydatne, jest prawie niemożliwe. Trzymaj się tych, których prawdopodobnie będziesz używać, a będziesz lepiej. Możesz nauczyć się C ++, C # i Java całkiem dobrze, ale próba wyciśnięcia Perla, Pythona, VB (nie VB.NET), Ruby i JavaScript na profesjonalny poziom jest jednocześnie głupia. Nie ma wystarczającej liczby godzin w ciągu dnia, aby utrzymać wszystkie swoje umiejętności na raz.
źródło