Czy mądrze jest poruszać się między dwoma językami programowania? [Zamknięte]

28

Piszę sporo PHP od prawie dwóch lat. Teraz zajmuję się programowaniem .NET (głównie c #). Czasami jednak wracam i robię php.

Moje główne pytanie brzmi: czy mądrze jest nadal to robić, czy powinienem kontynuować rozwój w C #? Czy zaszkodziłoby mi to na dłuższą metę (pamiętajcie, że moim głównym celem nie jest bycie walorem we wszystkich transakcjach), czy też jest to dobra praktyka?

superM
źródło
30
lepiej być waletem wszystkich transakcji niż kucyk z jedną sztuczką
scrwtp
27
Z pewnością zaszkodzi ci, jeśli ograniczysz się do dwóch języków. Uzyskaj więcej różnych narzędzi do swojego zestawu narzędzi.
SK-logic
4
Zadajesz to pytanie, jakbyś miał całkowitą swobodę wyboru między C # i PHP - czy tak naprawdę jest?
Doc Brown
10
Znajomość wszystkich brudnych szczegółów jednego języka jest bez wątpienia bardzo przydatna. Ale kiedy pracujesz z wieloma językami, w pewnym momencie będziesz musiał zaprojektować części programu w określony sposób, bez względu na język, w którym obecnie pracujesz. Jest to rodzaj nirwany programistycznej, w której język staje się drugorzędne, a aplikacja ma znaczenie. To świetne miejsce, ponieważ oznacza to, że masz potencjał jako programista nawet w przyszłości, gdy ludzie pracują w nowym, wymyślnym języku Z ++.
2
Tylko dwa? Wielu programistów regularnie pracuje w wielu językach. Znajomość kilku daje większy zestaw narzędzi do rysowania.
Caleb

Odpowiedzi:

75

Używanie dwóch języków jednocześnie jest niczym. Programiści często używają kilku różnych języków każdego dnia. Różne zadania i różne technologie wymagają różnych języków.

Właśnie dzisiaj używałem już czterech lub pięciu różnych języków i jest to interesujące, ponieważ do tej pory nie programowałem. Wszystko, co zrobiłem, to praca nad prezentacją.

Jako dobry programista zasadniczo potrzebujesz znajomości kilku języków, a jedynym sposobem na osiągnięcie (a następnie zachowanie) rozsądnej płynności jest użycie tych języków.

Konrad Rudolph
źródło
4
Nie jestem pewien, jak ktokolwiek może być w ogóle skutecznym programistą bez regularnego używania co najmniej 3 języków.
Brian Knoblauch,
1
@Brian - te trzy języki są Twoim głównym językiem mówionym / pisanym, głównym językiem programowania oraz SQL i / lub HTML?
KeithS,
2
@KeithS Tylko jeśli tworzysz super gładkie strony po stronie klienta i nigdy nie dotykasz rekordów XML po stronie serwera. CSS i JavaScript są liczone jako własne języki, podobnie jak XPath, XSLT i XQuery.
Tacroy
2
Wszystko, co zawiera „Większość ludzi” lub „większość programistów”, powinno zawierać cytat. W przeciwnym razie jest to subiektywne. Niemal każdy programista, którego poznałem (wraz ze mną), uważa SQL za język programowania, a kompletność Turinga nie jest koniecznym czynnikiem dla języka programowania (pomyśl DSL, które zwykle są zaprojektowane tak, aby NIE były kompletne.) HTML i XML są oczywiście nie programuje języków (chociaż możesz mieć języki specyficzne dla domeny oparte na XML). Regeksy nie są językami programowania, ale są programowalnymi / konfigurowalnymi automatami.
luis.espinal
2
To nie jest źródło. To jest link do dyskusji (dyskusje same w sobie nie są źródłami) i koncentrują się wyłącznie na CSS i HTML. Nie dotyczy testu „ukończenia Turinga” (sugeruję przeczytanie pracy Martina Fowlera na temat DSL), ani tego, czy SQL jest językiem programowania (którym jest, tutaj jest prawdziwe źródło: en.wikipedia.org/ wiki / SQL lub ten amazon.com/SQL-Programming-Language-Kirk-Scott/dp/0763766747 ). Albo nie czytasz w pełni mojego postu, albo uważasz, że link do
stackexchange
37

czy to dobra praktyka?

To doskonała praktyka. Ponadto polecam regularne poszerzanie listy języków, wypróbowując nowy.

Języki i technologie stają się bardzo popularne w ciągu kilku lat. Na przykład Cel C wystartował z niesamowitą siłą po tym, jak był prawie martwy przez dwie i pół dekady - wieczność według standardów tej branży!

Nie ma większego znaczenia, że ​​planujesz „nie być waletem we wszystkich transakcjach”: jeśli planujesz pozostać w branży wystarczająco długo, bardzo bezpiecznie jest założyć, że będziesz musiał zmienić stos technologii przynajmniej raz przez całą karierę. Używanie wielu języków zapewnia teraz gotowość do włączenia w rozsądnym terminie.

dasblinkenlight
źródło
14

Czy zaszkodziłoby mi to na dłuższą metę (pamiętajcie, że moim głównym celem nie jest bycie walorem we wszystkich transakcjach), czy też jest to dobra praktyka?

Znajomość dwóch lub więcej języków nigdy cię nie skrzywdzi. Znajomość twojego języka bardzo płytka (bez zrozumienia wewnętrznego działania) może ci zaszkodzić.

Moją osobistą preferencją było zawsze opanowanie najpierw jednego obiektowego języka programowania . Zapewni to dogłębną naukę wszystkich koncepcji programowania i ułatwi naukę następnego, gdy zajdzie taka potrzeba.

czy to dobra praktyka?

Zdecydowanie tak!

Sugeruję zdecydowanie nauczyć się więcej niż jednego i ćwiczyć je, budując niektóre aplikacje. W międzyczasie możesz również nauczyć się języków skryptowych (jQuery, KnockoutJs itp.) I bibliotek, jeśli zajmujesz się tworzeniem stron internetowych lub planujesz.

ElYusubov
źródło
1
Nie sądzę, aby nauka OOP nauczyła cię wielu pojęć z programowania funkcjonalnego, na przykład reguły określania zakresu JavaScript są bardzo różne od innych popularnych języków OOP, takich jak C # itp. Istnieje wiele innych pojęć.
phant0m
Zdecydowanie się zgadzam. Jednak jQuery i KnockoutJs NIE MA języków skryptowych. I nie poleciłbym „uczenia się jQuery” bez podstawowej znajomości JavaScript.
Bruno Schäpper,
nie możesz nauczyć się jQuery bez nauki JavaScript w tym procesie, ponieważ jQuery nie jest językiem, to biblioteka napisana w języku.
ILikeTacos,
5

Na dłuższą metę nie powinno ci to zaszkodzić, ponieważ biegła znajomość wielu języków sprawia, że ​​jesteś dobrze rozwiniętym programistą. Używanie „odpowiedniego narzędzia do wykonania właściwej pracy” jest ostatecznym celem, a znajomość różnych języków pomaga to osiągnąć, ponieważ wiesz, co jeszcze jest dostępne i możesz podjąć świadomą decyzję o tym, jakiej platformy / struktury / języka użyć do coś zrobić.

Deco
źródło
Dzięki za odpowiedź, ale zastanawiałem się, czy częste zmiany nie zaszkodzą mojemu procesowi uczenia się, czy przedłużą go, czy to zależy tylko od umiejętności danej osoby?
Lamin Sanneh
@LaminSanneh Nauka innego języka nie pogorszy go na pierwszym. To nie jest RPG i nie masz ustalonej liczby punktów „umiejętności programowania”, które możesz przypisać do każdego języka. W najgorszym przypadku zabiera czas poświęcony na inny język. Ale języki to tylko sposób na wyrażenie swoich pomysłów, a nauka nowych języków daje nowe, świeże perspektywy i pomysły, które możesz zastosować do tych, które już znasz. Jasne, nie poznasz składni każdego języka pod ręką, ale kogo to obchodzi? Szybkie wyszukiwanie w Google
Jay
5

W trakcie swojej kariery będziesz musiał nauczyć się nowych języków i nowych technologii; przemysł po prostu tego wymaga. Podczas mojego pierwszego profesjonalnego zadania musiałem dostarczyć kod napisany w Adzie, C i Fortranie, wraz z niektórymi skryptami SQL i powłoki. W ciągu ostatnich kilku lat musiałem przejść z C ++ na Javę. Pisałem skrypty powłoki w csh, bash i perl.

Poświęcenie czasu na naukę różnych języków, zwłaszcza jeśli są one w różnych domenach (OO, funkcjonalne, logiczne itp.), Pomogą ci na kilka sposobów. Utrzyma twój mózg ostry. Pomoże Ci oddzielić koncepcje od implementacji (np. Skróty i mapy to nie tylko typy danych w danym języku). To da ci lepsze pojęcie o tym, jakie narzędzia są odpowiednie dla danego problemu (na przykład nie zbudowałbym strony internetowej w C, ani nie napisałbym sterownika urządzenia w Haskell). Może ci to ułatwić znalezienie pracy („Hej, on już zna Intercal 1 , nie musimy go szkolić!”). Dzięki niemu dowiesz się, jakie wyzwania stoją przed projektantami języków. Może zainspirować Cię do stworzenia własnego języka programowania.

Przynajmniej nie pozwoli ci się nudzić.


1. Żart. Nie próbuj uczyć się Intercala.

John Bode
źródło
4

Osoby odchodzące na emeryturę w tym roku rozpoczęły swoją karierę jeszcze przed utworzeniem C. Można śmiało powiedzieć, że możesz zmienić język programowania raz lub dwa razy w swojej karierze. Nie chcesz pracować dla pracodawców, którzy tego nie rozumieją.

Kiedy jesteś nowy, przełączanie kontekstu między dwoma językami jest o wiele trudniejsze, więc będziesz bardziej produktywny, jeśli będziesz pracował co najmniej 4-8 godzin w jednym języku przed przełączeniem. Później będziesz mógł natychmiast przełączać się bez utraty wydajności. Innymi słowy, używanie dwóch języków stanie się w końcu siłą zamiast spowalniać cię.

Karl Bielefeldt
źródło
2

Ma to swoje plusy i minusy.

Oto plus ...

Jak wspomniano inni, umiejętność uczenia się nowego i pracy z wieloma językami i narzędziami programistycznymi jest prawie niezbędna do długiej kariery programistycznej. Z biegiem lat wszystko się zmienia, narzędzia i języki przychodzą i odchodzą. Pewnie, są ludzie, którzy są zadowoleni z programowania w tym samym języku COBOL na komputerze mainframe, którego używali w latach 80., ale jest to stosunkowo rzadka sytuacja. Większość programistów kilkakrotnie zmienia narzędzia / języki w trakcie swojej kariery. Czasami możesz zostać zatrudniony, ponieważ znasz starszą technologię lub znasz wszystkie języki, z którymi współpracuje firma.

Minusem jest ...

Niektórzy pracodawcy uznają cię za „waluta wszystkich zawodów, mistrza braku” i odrzucają twoje zgłoszenie, nie dając ci szansy. Szukają wąskiego eksperta w konkretnej dziedzinie, a nie po prostu dobrego, dobrze zaokrąglonego programisty. Czasami możesz zostać odcięty przez HR, ponieważ nie masz „5 lat ciągłego doświadczenia w [X]”. Możesz tego uniknąć, dostosowując swoje CV do pracy, ale może to nie pomóc w rozmowie technicznej.

Dla mnie ta korzyść jest znacznie lepsza, ale trzeba pamiętać, że mniejszość organizacji postrzega to jako negatywne.

jfrankcarr
źródło
+1, ponadto jestem przekonany, że istnieje korelacja między tą mniejszością organizacji a złym programowaniem i nieefektywnością.
K.Steff,
2
Ten negatyw jest jednak anulowany przez pracodawców, którzy myślą dokładnie odwrotnie. Mam wpływ na decyzje dotyczące zatrudniania w miejscu, w którym pracuję, i bardzo trudno mi było przekonać się do przyjęcia kogoś, kto miał tylko jeden język programowania. Może na młodsze stanowisko, ale na pewno nie na starszego programistę.
Jon Hanna
@JonHanna - Główny problem polega na tym, że zespół programistów może nawet nie przeprowadzić wywiadu z potencjalnym deweloperem, ponieważ są oni badani przez dział HR, czasami przez zautomatyzowany program. Jest to oczywiście częstszy problem w większych organizacjach. Ważne jest, aby upewnić się, że pracownicy działu HR nie wyszukują najlepszych kandydatów na podstawie arbitralnych kryteriów.
jfrankcarr
+1 za wskazanie wad . Tam, skąd pochodzę, liczba firm utrzymujących pogląd „jack of all trade, master of none” nie jest tak mała.
lsoliveira
Tak, ale możemy to zmienić na dobrą jakość; w HR zawsze może być idiota, który uważa, że ​​jest to zła jakość. Ostatecznie jednak, jeśli HR w organizacji są idiotami, będą źle zatrudniać, a podczas gdy ich zatrudnienie może być lepsze niż linia bezrobocia, od razu będziesz szukać nowej pracy i znaleźć pracę gdzie indziej .
Jon Hanna,
2

Czy podczas pisania PHP pisałeś javascript lub SQL? W rozwoju C # nadal możesz używać obu z nich. Nie jest tak wytrawny i suchy jak przy użyciu jednego języka programowania.

Jeśli lubisz to robić, nie przejmuj się tym. Jeśli nie chcesz robić obu (lub jednego z nich), masz problem.

Znak
źródło
2

Nauka nowego języka programowania nauczy Cię różnych rzeczy na temat programowania, które możesz zastosować do języków, które już znasz. Zdecydowanie powinieneś rozważyć przynajmniej grę z innymi językami, nawet jeśli nie używasz ich profesjonalnie, a nie tylko z tak niewielką liczbą.

Idealnie taki, który różni się podejściem do tych, które już znasz.

Jon Hanna
źródło
2

Nie, nie ma nic złego w uczeniu się wielu języków i używaniu ich dość często. W mojej codziennej pracy mogę spotkać Ruby, PHP, JavaScript, CoffeeScript, Python i sporadycznie C. Znam wszystkie te języki dość dobrze i przechodzenie od jednego do drugiego po prostu przełącza mój mózg. Jasne, że tęsknię za niektórymi językami, kiedy przechodzę do innego, ale dasz sobie radę.

Staram się zawsze mieć język, którego się uczę dogłębnie, a potem inny jako „rozwijający się”. W ten sposób zawsze masz jasny cel edukacyjny, a następnie coś na horyzoncie. Obecnie Ruby jest moim głównym językiem i eksperymentuję z Go. Prawdopodobnie nigdy nie dostanę pracy jako programista Go, ale nauka nowego języka stała się lepszym programistą.

Kiedy przeprowadzam wywiad z deweloperem, zawsze lubię widzieć kilka różnych języków w ich życiorysie. Jeśli programista ma w swoim CV „C / C ++” lub „PHP i JavaScript”, wygląda o wiele mniej interesująco niż ktoś, kto dobrze zna 4 lub 5 języków. Upewnij się, że czujesz się komfortowo w dowolnym języku, który wymieniasz, wszystko w twoim CV jest uczciwą grą w wywiadzie!

Krótko mówiąc: regularne używanie wielu języków jest oznaką dobrego programisty, który dba o swoje umiejętności. Koduj dalej!

binarycleric
źródło
Powiedziałbym, że jeśli deweloper powie „C / C ++” w CV, chciałbym, aby był to jedyny język (y). Ale w przypadku innych, głupich języków, im więcej, tym lepiej.
Koder
2

Podczas przeglądania CV zwykle szukamy kogoś, kto zna wiele języków. Ponadto wraz ze wzrostem doświadczenia danej osoby powinna również wzrosnąć liczba używanych przez nią języków.

W naszym środowisku często musimy zmierzyć się z nowymi i interesującymi problemami i szukamy osób, które chętnie wskoczą i rozwiązują te problemy, niezależnie od tego, czy muszą nauczyć się nowego języka, czy nie. Problem może dotyczyć kodu działającego na pulpicie Windows, serwerze Windows, serwerze Linux lub w przeglądarce.

Znajomość wielu języków jest oznaką dobrej postawy wobec ich rzemiosła. Chcą zawsze uczyć się nowych rzeczy. Brak znajomości wielu języków jest dla mnie znakiem, że dana osoba robi absolutne minimum i nie jest zainteresowana nauką.

Sarel Botha
źródło
2

Ludzie zawsze programowali w więcej niż jednym języku. Kiedy ludzie używali asemblera, musieli wprowadzać nowy język asemblera za każdym razem, gdy zmieniali architekturę.

Kiedy ludzie robili COBOL lub Fortran, zwykle robili też RPG i / lub JCL.

W Uniksie ludzie pracowaliby z C, sed, awk, skryptem powłoki i prawie wszystkim w zlewozmywaku kuchennym Unix (prawie każde narzędzie wiersza poleceń w Unixie ma własną, bardzo specjalną DSL).

W DOS ludzie będą programować w Turbo Pascal lub C oprócz skryptów wsadowych. Później, kiedy pojawił się system Windows, był to VB lub coś w rodzaju PowerBuilder w połączeniu z SQL i ewentualnie skryptami instalacyjnymi.

W chwili obecnej de facto ludzie „pracują” w więcej niż dwóch językach każdego dnia (a przez „pracę” mam na myśli faktyczne codzienne kodowanie lub praktyczną wiedzę). Java, C # lub VB zmieszane przynajmniej z JavaScript i SQL. Następnie w grę wchodzą inne języki dla skryptów wsadowych / zadań itp. Następnie, dla każdego języka, masz strukturę, która sama implementuje wewnętrzną DSL, mini-język sam w sobie.

Praca z więcej niż jednym językiem jest nie tylko korzystna, ale jest konieczna. Nie ma sposobu na zbudowanie nowoczesnego, złożonego systemu w jednym języku (a przez „kompilację” nie mam na myśli tylko kodowania bzdur, które się kompilują, ale zbudowanie czegoś o przyzwoitym projekcie).

Cholera, wyjdę z kończyny i powiem, że spodziewałbym się, że dzieci w college'u będą biegle posługiwać się co najmniej dwoma językami, jeśli poważnie podchodzą do tego zawodu.

Jeśli chodzi o twoje pytanie:

Moje główne pytanie brzmi: czy mądrze jest nadal to robić, czy powinienem kontynuować rozwój w C #? Czy zaszkodziłoby mi to na dłuższą metę (pamiętajcie, że moim głównym celem nie jest bycie walorem we wszystkich transakcjach), czy też jest to dobra praktyka?

Tak więc krótka odpowiedź, nie, używanie lub przełączanie między językami nie da ci kłopotów. Znajomość więcej niż jednego języka nie sprawi, że staniesz się ekspertem od wszystkich transakcji, a programista nie może zostać ekspertem, ponieważ nie będzie w stanie używać więcej niż jednego języka.

luis.espinal
źródło
1

Im więcej musisz porównać w odniesieniu do swojego podstawowego języka (języków), tym lepiej zrozumiesz kompromisy projektowe, które przyczyniły się do uczynienia go szczególnie silnym lub słabym w niektórych rzeczach i wykorzystujesz / kompensujesz te rzeczy. Opanuj co najmniej jednego, ale nie martw się, że będziesz waletem wielu innych. To tylko dobrze wygląda.

Lepiej zapytać, jak wznowić działanie tylko z jednym językiem wymienionym od „starszych” programistów. Odpowiedź na to pytanie brzmi: „Niezbyt zainteresowany tym, co zarabiają na życie”.

Erik Reppen
źródło
0

Dwa języki mogą ci pomóc lub nie - to zależy. To na pewno cię nie skrzywdzi. Wielu deweloperów uważa, że ​​używanie czegoś innego niż „główny język” to czysta strata czasu, ale zdecydowanie się nie zgadzam. Nauka innego języka (i używanie go) to czysta korzyść: daje inne spojrzenie na rozwiązywanie problemów. Może się zdarzyć, że zaczniesz używać jednego z języków do określonych zadań przez cały czas (tak jak mi się stało, kiedy miałem okazję nauczyć się i używać Pythona).

MaciekTalaska
źródło
0

W tej sytuacji nie pytasz o przejście z JAVA na C # i powrót przez cały czas, zamiast tego korzystasz z C # i PHP, co tak naprawdę nie jest wielkim problemem.

Załóżmy, że chcesz zrobić kilka rzeczy opartych na sieci, w których używasz stosu WAMP (Windows / Apache / MySQL / PHP) i C #. Używasz C # do pisania niektórych usług opartych na SOAP, a następnie używasz PHP do ich wykorzystania.

Wydaje mi się to całkowicie do przyjęcia.

W każdym razie znajomość więcej niż jednego języka jest dobra. Im więcej wiesz, tym lepiej. Biblioteki PHP / C # / Java / Python / javascript [na przykład JQuery]. Przydaj się jak największej liczbie osób.

PSU_Kardi
źródło