Dla mnie jestem osobą C # i Java. Uważam, że te 2 języki są dość podobne, więc łatwiej mi się krzyżować. Nie jestem pewien, czy dobrym pomysłem jest wybranie innych języków. jakieś pomysły?
Dla mnie jestem osobą C # i Java. Uważam, że te 2 języki są dość podobne, więc łatwiej mi się krzyżować. Nie jestem pewien, czy dobrym pomysłem jest wybranie innych języków. jakieś pomysły?
Odpowiedzi:
Mogę wymyślić co najmniej pięć powodów, dla których warto nauczyć się języka, i wydaje się, że ostatecznie powinieneś nauczyć się jednego z nich.
Nie chodzi o to, ile języków się uczysz. Chodzi o naukę nowych koncepcji. Niektóre języki mogą nauczyć Cię wielu pojęć, podczas gdy inne mogą nauczyć tylko jednego.
Jeśli znasz język C #, prawdopodobnie nie nauczyłbyś się niczego nowego, ucząc się języka Java. Ale zrobiłbyś to, gdybyś nauczył się Haskell.
Kiedy więc wybierasz nowy język do nauki, wybierz coś, co nauczy Cię pojęć, których jeszcze nie znasz.
Powiedziałbym, że najważniejszą rzeczą jest umiejętność szybkiego uczenia się. To powiedziawszy, ważne jest, aby znać różne języki używane do różnych celów. Na przykład wiem:
1) Python i Perl dla kategorii języków skryptowych
2) C ++ jako język „framework”
3) Java dla aplikacji mobilnej
4) C dla ogromnej ilości starszego kodu
5) Niektóre przestarzałe języki, które znałem, gdy byłem młody (Basic, Pascal, Clipper itp.)
Powiedziałbym, że potrzebujesz przynajmniej głównego języka i skryptu. Znając C # powiedziałbym, że musisz nauczyć się języka Python, Perl lub Ruby. (Wybrałbym Python, ale to tylko kwestia preferencji).
Dobrze jest uczyć się jednego nowego języka programowania każdego roku. Ale zamiast uczyć się czegoś podobnego do tego, co już wiesz, radzę ci nauczyć się czegoś zupełnie innego, jak Scala lub F #. Pokażą ci nowe sposoby robienia rzeczy i ostatecznie wzbogacą twoje umiejętności programistyczne.
Powinieneś skoncentrować się na językach, których potrzebujesz i których używasz do tego, co robisz . Naprawdę nauka języka pochodzi z praktyki, więc możesz czerpać z niego korzyści, kiedy go ćwiczysz. Jeśli masz zamiar nauczyć się nowego języka w wolnym czasie, zrób to, wdrażając go w zadaniach o coraz większej złożoności, aby naprawdę go opanować.
skoncentruj się na żadnym. skoncentruj się na nauce i pisaniu czystego kodu; jasne, wyraziste, proste i, co najważniejsze, nie powielane.
zapoznaj się z zasadami tego rodzaju programowania, podstawami (na przykład enkapsulacją dla OOP; co to znaczy i co to oznacza) i naucz się kilku zasad
te rzeczy ułatwią ci pracę. ułatwi to nawet osobom pracującym z tobą lub po tobie.
tak, musisz też całkiem dobrze znać składnię. ale to nie jest coś, co zajmuje twoją uwagę przez długi czas
i musisz całkiem dobrze zrozumieć, jakich technologii używasz. ale można nadać im priorytety zgodnie z poziomem złożoności wymaganym przez firmę.
dwa ostatnie nie są w centrum uwagi, ale w pewnym stopniu
Programista musi skoncentrować się na programowaniu, a nie na specjalnym języku / językach.
Tyle, ile potrzeba do wykonania pracy.
Ale C # i Java są tak podobne jak angielski w Wielkiej Brytanii i angielski w USA. Możesz nauczyć się czegoś nowego , wybierając fiński lub Navajo.
Nie sądzę, żebyś mógł opanować język bez wystarczającej znajomości innych języków, aby widzieć ten język „z zewnątrz”. Każdy inny język przedstawia coś innego, a wprowadzane przez nich pojęcia to rzeczy, które możesz przywrócić do głównych języków, z którymi pracujesz.
Czas spędzony na nauce używania innych języków nigdy się nie marnuje, nawet jeśli nie planujesz ich używać w celach komercyjnych.
Stare powiedzenie mówi, że każdego roku uczy się języka i z pewnością powiedziałbym, że przez pierwsze dziesięć lat trzeba to robić. Może poza tym możesz wybierać między bardziej dogłębnym poznaniem tych, które już znasz (być może aktualizowaniem wiedzy o tych, których nauczyłeś się kilka lat temu) lub pracą z konkretnymi bibliotekami, zamiast gromadzić nowe języki bez końca, ale pilnować zapoznanie się z praktyką programowania poprzez pracę z różnymi językami z pewnością pomoże ci w rozwoju jako programista.
Popularne języki programowania, takie jak C # i Java, zapewnią ci zarobkowe zatrudnienie w większości miejsc, ale żadne z nich nie różni się wystarczająco od siebie, aby nauczyć się nowych sposobów rozwiązywania problemów. Sądzę, że istnieje kilka języków, w których jesz (tych, których używasz do wykonywania swojej pracy) i innych, z którymi się bawisz. Oba mają swoje cele.
Odkryłem, że ucząc się nowych języków programowania, nauczyłem się także nowych i bardziej eleganckich sposobów rozwiązywania problemów. Nie chodzi o liczbę języków ani o to, jak często je odbierasz. Każdy język programowania, którego warto się nauczyć, ma unikalny punkt widzenia, który zmusza cię do podejścia do swoich problemów z nowym nastawieniem. Wiele razy wartość pochodzi z uczenia się tego sposobu myślenia.
Grałem z Smalltalk i bardzo mi się podobało. Język był przyjemnością do rozwijania. Gdy już przyzwyczaisz się do idiomów, pomogły ci one bardziej wyrazić swój kod. W ogóle nie brakowało mi pisania statycznego w Javie / C ++ / C #. Ogólne, z którymi żyjemy w naszych językach o typie statycznym, są naprawdę konstrukcjami, które omijają ograniczenia, które narzuca statyczne typowanie.
Używam Ruby i Ruby na szynach regularnie, choć nie teraz do płacenia za pracę. Zasadą projektowania Ruby było „zwiększenie szczęścia programisty”. Musisz pokochać ten sentyment i w większości myślę, że to przynosi.
W końcu Java pójdzie drogą seplenienia i Smalltalk, a C # pójdzie w ich ślady. To, co będzie tam, aby zająć ich miejsce, dopiero się okaże. Na koniec dnia, jeśli umiesz rozwiązywać problemy i masz wiele sposobów, aby pokroić problem i pokroić go w kostkę, będziesz w stanie znaleźć pracę i wybrać język, którego potrzebujesz.
Jeśli chodzi o aktualizowanie umiejętności i elastyczność, myślę, że powinieneś próbować nauczyć się co najmniej jednego całkowicie nowego języka programowania co około 6 miesięcy. Mam na myśli język, który jest bardzo, bardzo inny.
Tak więc podczas uczenia się więcej o frameworku .net podczas korzystania z języka C # lub frameworku Java pomaga utrzymać równowagę, nauka Haskell, Smalltalk, Scala, Clojure lub Ruby poszerzy Twoją technikę i pomoże Ci myśleć na różne sposoby, z których niektóre możesz wykorzystać wróć do swojego głównego języka, a niektóre z nich mogą pomóc ci przejść dalej, jeśli Java przestanie być królem wzgórza.
Jeśli nigdy nie nauczyłeś się C, to mimo że jego składnia została przeniesiona do Javy, sposób myślenia może być zupełnie inny. Warto go dogłębnie, a jeszcze lepiej zrozumieć, w jaki sposób kod OO można napisać w tym języku, który wydaje się jedynie proceduralny.
Polecam przeczytać książkę Bruce'a Tate'a „Beyond Java”, która zbyt dobrze podkreśla niebezpieczeństwa bycia tylko w jednym języku, zwracając uwagę na wzrost i upadek C ++. Chociaż C ++ jest jeszcze daleki od śmierci i pozostało dziesięciolecia, staje się coraz bardziej ograniczony do używania tylko w sytuacjach, w których nie można skorzystać ze wzrostu wydajności w innych językach. Dla kontrastu, platforma Rubat, Sinatra, pozwala zbudować prostą usługę internetową w około 6/7 liniach kodu, ekwiwalent C ++ może być o rząd wielkości większy niż ten.
Jeśli nie jesteś rodzimym językiem angielskim, musisz przynajmniej skoncentrować się na doskonaleniu języka angielskiego . Mówię to na podstawie mojego doświadczenia. Zrozumienie tego języka bardzo mi pomogło.
Wszystkie dobre materiały (książki, artykuły, kod itp.) Do nauki języków programowania, technologii i nowych koncepcji są napisane w języku angielskim.
Języki to narzędzia do wykonywania pracy. Niektóre języki są odpowiednie dla niektórych rodzajów problemów, inne są na ogół dobre we wszelkiego rodzaju rozwiązywaniu problemów. Polecam naukę nowych języków, gdy tylko się pojawią. Nie miej obsesji na punkcie tego, co jest modne w tym miesiącu, ale dowiedz się, co potrafią, w czym są dobrzy. Moja rada to 1 nowy język rocznie. Pojawiają się szybciej, ale chcesz umieścić nowe narzędzia w swoim zestawie narzędzi, a nie być modnym nowym dzieckiem na bloku.
Jednym z esejów mówiących o różnicach językowych jest „Beating the Averages” Paula Grahama. Polecam ją przeczytać, ale jest tu jedna ważna część (używa „Blub” jako języka hipotetycznego, abyś nie kłócił się o to, co może zrobić Twój ulubiony język):
A może Perl 4? Pomiędzy Perl 4 a Perl 5 do języka dodano dodawanie leksykalne. Większość hakerów Perla zgodzi się, że Perl 5 jest potężniejszy niż Perl 4. Ale kiedy to przyznasz, przyznajesz, że jeden język wysokiego poziomu może być potężniejszy od drugiego. Wynika z tego nieubłaganie, że, z wyjątkiem szczególnych przypadków, powinieneś użyć możliwie największej mocy.
Jednak ten pomysł rzadko jest realizowany. Po pewnym wieku programiści rzadko zmieniają języki dobrowolnie. Bez względu na to, jakim językiem ludzie się przyzwyczaili, zwykle uważają je za wystarczająco dobre.
{fantastyczna okazja}
Tak długo, jak nasz hipotetyczny programista Blub patrzy w dół na kontinuum mocy, wie, że patrzy w dół. Języki słabsze niż Blub są oczywiście słabsze, ponieważ brakuje im niektórych funkcji, do których był przyzwyczajony. Ale kiedy nasz hipotetyczny programista Blub patrzy w drugą stronę, w górę kontinuum mocy, nie zdaje sobie sprawy, że patrzy w górę. To, co widzi, to tylko dziwne języki. Prawdopodobnie uważa ich za równoważnych mocy Blubowi, ale z tymi wszystkimi innymi włochatymi rzeczami. Blub jest dla niego wystarczająco dobry, ponieważ myśli w Blubie.
Kiedy jednak przejdziemy do punktu widzenia programisty używającego dowolnego z języków wyższych w kontinuum mocy, okazuje się, że on z kolei patrzy na Bluba. Jak możesz coś zrobić w Blub? To nawet nie ma.
Dzięki indukcji jedynymi programistami, którzy mogą zobaczyć wszystkie różnice w mocy między różnymi językami, są ci, którzy rozumieją ten najsilniejszy. (Prawdopodobnie to właśnie miał na myśli Eric Raymond o tym, że Lisp uczynił cię lepszym programistą.) Nie możesz ufać opiniom innych, z powodu paradoksu Blub: są zadowoleni z dowolnego języka, którego używają, ponieważ to dyktuje sposób, w jaki myślą o programach.
http://www.paulgraham.com/avg.html
Większość aplikacji, które wysyłamy, jest napisanych w języku C # lub VB. Kiedy potrzebowaliśmy dodać skrypt do aplikacji, wybraliśmy Python (Lua była drugim wyborem). Uczymy się języka F #, ponieważ może to zrobić kilka nowych, owłosionych rzeczy, które trudno wytłumaczyć i zrozumieć, jeśli wszystko, co wiemy, to C # / Java / VB.
Cóż, przede wszystkim istnieje wiele języków, których bardzo trudno jest uniknąć dla większości programistów: javascript, sql, c itp., więc równie dobrze możesz się z nimi zapoznać, nie znikną.
dobrym pomysłem jest także znajomość języka skryptowego typu kaczka ... np. perl, python, ruby, lua itp. są one niezwykle przydatne w przypadku wielu problemów, w tym automatyzacji wielu codziennych kryminałów
na lepsze lub gorsze, w pewnym momencie prawdopodobnie również natkniesz się na c # i / lub java, są one dość wszechobecne.
w każdym razie nie ograniczaj się sztucznie. ci znani koderzy, którzy wyraźnie unikają wybierania interesujących narzędzi, wydają się mieć skryte światopoglądy i mieć ograniczony wpływ.
W pewnym sensie może to stać się kolejną debatą między specjalistami a generalistami. Niektórzy ludzie mogą spędzać dużo czasu, znając jeden język na głębokich głębokościach, co jest dla nich dobre. Inni ludzie mogą chcieć dowiedzieć się trochę o wielu różnych językach, które działają dobrze dla nich. Większość ludzi jest pomiędzy tymi dwoma skrajnościami.
Jeśli chcesz poznać propozycje języków, oto kilka pomysłów:
Programowanie funkcjonalne - przykładem mogą tu być Haskell lub Lisp, a zmiana paradygmatu może być do pewnego stopnia oszałamiająca.
Specyficzne dla bazy danych - PL / SQL lub T-SQL przychodzą na myśl jako coś, co może być przydatne, jeśli chcesz wykonać więcej zadań zaplecza z systemami, które wymagają bazy danych dla niektórych jej funkcji.
Języki sieciowe interfejsu użytkownika - ActionScript lub Javascript byłyby tutaj przykładami języków używanych w bogatych aplikacjach internetowych, chociaż AIR może powodować, że niektóre aplikacje komputerowe używają wywołań internetowych w niektórych przypadkach, takich jak Twhirl, używając interfejsu API Twittera.
Są to tylko pomysły i w zależności od tego, gdzie chcesz się znaleźć, mogą być dla Ciebie przydatne lub bezużyteczne. Powodzenia w podejmowaniu jakichkolwiek wyborów.
Programista musi znać trzy języki: C, angielski i coś innego.
C jest bardzo podstawowym językiem, jest blisko komputera i ma reguły składniowe, które są wspólne dla kilku języków wysokiego poziomu. C zmusza Cię do myślenia o strukturach danych w zupełnie inny sposób niż Java. Ponadto vms w języku Python i Ruby są wbudowane w C, a C można wstawić do obu języków, gdy chcesz zwiększyć swoją szybkość.
Angielski jest wspólnym językiem programowania. Większość książek, raportów technicznych, technicznych stron internetowych i artykułów w czasopismach pojawia się najpierw w języku angielskim, a czasem wyłącznie w języku angielskim. Ponadto, jeśli angielski nie jest twoim pierwszym językiem, nauka angielskiego rozszerzy zestaw narzędzi do manipulowania pojęciami (dotyczy to również osób mówiących po angielsku, które uczą się również innego języka).
Coś innego powinno być językiem, który nie jest proceduralny, nie jest wpisany statycznie lub jest silnie zorientowany obiektowo, lub w jakiś sposób zasadniczo różni się od C. Haskell, Scala, Python, Ruby, jakiś dialekt Lisp, cokolwiek .
Następnie możesz dowiedzieć się, czego wymaga konkretna sytuacja, na przykład C # lub Java.