Znajomość kilku języków programowania

0

Wielu, mówi, że warto znać kilka języków programowania, z czym mogę się zgodzić, ale...

Znajomość kilku języków programowania w stopniu zaawansowanym, co wiąże się ze stałym poszerzaniem swojej wiedzy w zakresie każdego ze znanych języków no i konieczność systematycznego pracowania w nim powoduje, że nie z każdego języka można korzystać przez co efektywność spada, zgodzicie się?

Przykładowo ktoś zna: C++, Java, C#, PHP, Python, RoR, dostaje kontrakt na powiedzmy okres 8 miesięcy na programowanie w C++ (9:00 - 17:00) przez co nie ma czasu na programowanie w pozostałych językach, chyba, że okazjonalnie i z małym nakładem czasu, w przypadku osób, które są już ustabilizowane życiowo (rodzina, dzieci) praca po pracy raczej nie wchodzi w grę.

Nie lepiej poznać załóżmy C++ (desktop) i PHP (web) w stopniu eksperckim i w tym się rozwijać systematycznie?

Oczywiście nie zakładając, że osoba X pozna te języki na poziomie średnim / dobrym, a na zaawansowanym. Spotykam się często z CV, w których kandydaci przedstawiają Y liczbę znanych języków programowania, a nie raz miałem okazję dotrzeć do różnych, ich wypowiedzi na forach, w których pytają się o dość średnio (zaawansowane) rzeczy, które powinni wiedzieć, a przynajmniej mogli to osiągnąć ucząc się danego języka programowania. Zauważyłem u wielu tendencję, że dany język programowania poznają na poziomie średnim / dobrym, trochę w nim pracują, a następnie przechodzą do nauki następnego języka, gdzie przykładowo w C++ droga od nowicjusza do dobrego programisty jest bardzo daleka i nie jest to przerobienie jednej, czy dwóch książek jak w przypadku PHP, a co najmniej kilkunastu i ciągła praktyka, klepanie kodu.

1

Nie da się dogłębnie poznać tak wielu (z postu wynika, że sześciu) języków programowania, szczególnie, że wiele języków jest stale rozwijanych i są wprowadzane większe lub mniejsze zmiany. Można opanować podstawy wielu, ale nie da się być ekspertem we wszystkim. Pamięć ludzka jest zawodna i jeżeli sobie czegoś stale nie odświeżamy, to tracimy w tym biegłość. Specjalizować można się w jednej, dwóch, może trzech technologiach w zależności od stopnia ich złożoności. Z resztą w programowaniu nie jest takie istotne to czy znasz wszystkie kruczki i sztuczki języka, ale czy dobrze rozumiesz i potrafisz wykorzystać ogólne pojęcia takie jak: algorytmy i struktury danych, programowania obiektowe, wzorce projektowe (design patterns), programowanie sieciowe (synchroniczność, współbieżność), debugowanie, testowanie i profilowanie kodu. Język w tym przypadku staje się tylko narzędziem.

3

Lepiej znać killka paradygmatów niż x języków w tym samym paradygmacie

2

Warto poznać kilka pardygmatów, zaznajomić się z kilkoma językami i rzucać okiem na ciekawe technologie. I używać tego, co jest potrzebne.

dostaje kontrakt na powiedzmy okres 8 miesięcy na programowanie w C++

  • projekt używa 3rd party libek w [C]
  • do projektu potrzeba wewnętrznych narzędzi zaklepanych w czymkolwiek ([python / ruby / r / cokolwiek])
  • projekt używa jakiegoś języka skryptowego (pluginy czy cokolwiek) ([python, lua, cokolwiek])
  • projekt udostępnia gotowe api dla innych języków ([java, C#, cokolwiek])

Wymyśl cośtam jeszcze, ile projektów tyle opcji.

4

Poznanie kilku języków w stopniu eksperckim faktycznie jest ciężkie i raczej mało kto tego próbuje. Ale samo twierdzenie, że warto znać kilka języków jest moim zdaniem jak najbardziej prawdziwe.
Myślę, że osoby mówiące, że warto poznać coś więcej niż język, w którym klepiemy zawodowo mają bardziej na myśli, że warto innych języków nauczyć się chociażby pobieżnie niż żeby być wymiataczem, który od razu może wskoczyć na pozycję seniora.
Ma to swoje zalety. Po pierwsze w razie nagłego braku ofert w danej technologii w okolicy łatwiej jest podjąć decyzję o szukaniu pracy w innym języku kiedy już się w nim cokolwiek zrobiło.
Po drugie kolejny język to nie musi być nasze główne narzędzie, ale za to możemy go wykorzystać do optymalizacji pracy, przykładowo dopisanie dla siebie prostych konsolowych toolsów w pythonie nie wymaga bycia wieloletnim programistą tego języka, a potrafi przyspieszyć i ułatwić pracę, w końcu czas to pieniądz.
Pewnie znajdzie się jeszcze kilka argumentów za tym, że warto jednak nauczyć się kolejnych języków. Ale faktycznie próba dążenia w każdym z nich do poziomu eksperta jest raczej skazana na porażkę, chociaż jak wszędzie na pewno znajdą się wyjątki.

Pozdrawiam,
M.

1

Sam sobie te pytanie zadawałem w grudniu zeszłego roku podejmując decyzję o ścieżce rozwoju w programowaniu i zdecydowałem się na C++. Początkowo stwierdziłem nauczę się porządnie kilku języków programowania i w nich w przyszłości będę pracował. Gdy zacząłem naukę C++ szybko stwierdziłem, że nie będzie to najlepsza droga jako, że w pewnym stopniu jestem perfekcjonistą i moją ambicją jest poznanie C++ na poziomie zaawansowanym, a na to potrzeba czasu, rozpoczęcia pracy jako junior i ciągłego dokształcania co ciężko byłoby pogodzić z nauką innych języków na podobnym poziomie, tym bardziej jak ktoś już zauważył .NET czy JAVA cały czas się rozwija i rozwijać będzie, więc nadążanie za nowinkami też wymaga czasu i praktyki.

Sam zdecydowałem się na C++ mimo, że technologia ta wypierana jest przez .NET czy JAVĘ ale wciąż ma duże zastosowanie i mieć będzie, tym bardziej, że Morgan Stanley płaci teraz Bjarne'owi za rozwój języka gdzie warto zaznaczyć, że .NET czy JAVA rozwijane są przez (bogate) korporacje.

Będziesz ekspertem JAVA czy .NET zarobisz świetnie. Będąc ekspertem C++ zarobisz jeszcze lepiej, bo praktycznie większość idzie w stronę JAVY/.NET, a dobrych programistów C++ jest mało.

1 użytkowników online, w tym zalogowanych: 0, gości: 1