2008-10-17 7 views
9

Wielu programistów twierdzi, że przejście z jednego języka programowania na inny jest stosunkowo proste, zwłaszcza jeśli języki oparte są na podobnych paradygmatach. Jednak w praktyce wysiłek ten nie wynika z nauki składni języka, ale z głębokiego zrozumienia niuansów językowych i, co ważniejsze, z wiedzy oferowanej w bibliotekach tego języka. Na przykład przejście z Java na .Net nie jest trudne z punktu widzenia syntaktycznego, ale efektywność programowania wymaga dobrej znajomości dostępnych bibliotek. Przejście z PHP na .Net może stanowić jeszcze większą przeszkodę ze względu na różnice językowe.Jakie są prawdziwe wyzwania dla programisty migrującego między językami programowania?

Jakie są rzeczywiste koszty ogólne dla dewelopera, aby przejść do innego języka w tym samym paradygmatu? Co, jeśli paradygmaty są różne?

Odpowiedz

1

Dla mnie znalezienie dobrych blogerów i przydatnych stron w tym języku. Po pewnym czasie dowiesz się, gdzie są najlepsi ludzie. Ci ludzie i strony są dobrym źródłem informacji do nauki subtelności.

1

opuszczając strefę komfortu. Myślę, że jest to jeden z największych powodów, dla których niektórzy programiści nie uczą się nowych języków.

Ale dla innych to je napędza.

10

Największym wyzwaniem (dla mnie) jest zwykle API, a nie sam język (.NET niezależnie od). Na przykład używam C++ i C# Microsoftu przez wiele lat (wcześniej Delphi). Ale mam duże trudności z rozpoczynaniem pracy z Javą; nawet trywialne projekty mogą mi zająć trochę czasu. Nie dlatego, że język jest trudny (nie jest), ale dlatego, że interfejsy API są różne i ułożone inaczej.

To trwa miesiące, aby dostać się do prędkości na API do punktu można go wykorzystać płynnie i lat, by stać się „dobrym” i poznać wszystkie tajniki języka. Jest to trudne dla wielu programistów, ponieważ musisz poświęcić znaczną część (jeśli nie wszystkie) swojego czasu i wysiłku na pracę w nowym języku, aby stać się ekspertem w tym zakresie. Wiele razy nie ma motywacji do wyprowadzki z obecnego obszaru specjalizacji.

+1

Spot na. Zawsze jestem zaskoczony programistami, którzy twierdzą, że mogą "nauczyć się" nowego języka w ciągu 3 dni. Oczywiście, można nauczyć się składni, ale umiejętność posługiwania się językiem jest zupełnie inna. –

+0

Absolutnie. Zajęło by miesiące, aby przyspieszyć działanie API, tak aby można go było płynnie używać, a lata stawały się "dobre" i uczyć się wszystkich tajników tego języka. Myślę, że właściwie to dodam w mojej odpowiedzi. – TheSmurf

+0

Uważam, że biblioteki Java są szczególnie słabe, ale jest to problem z każdą nową platformą. Co gorsza, trudno jest dowiedzieć się, czego szukać, trzeba po prostu przeczytać duże fragmenty dokumentacji. –

2

samo paradygmat jest znacznie łatwiejsze, ponieważ jest to naprawdę tylko kwestia uchwycenia różnych bibliotek i lokalizowanie ich szybko, jak wspomniano.

Jeśli paradygmat różnią się, ten przełącznik jest trudniejszy. Przejście od języka statycznego do dynamicznego lub języka proceduralnego do OOP będzie wymagało innego zestawu umysłu. To zajmie więcej czasu, ale jest to możliwe i nadal bardzo dobre ćwiczenie.

Może być podobny do nauki języków obcych. Jeśli mówisz po angielsku, to przeniesienie się do innego języka łacińskiego jest znacznie łatwiejsze niż przejście do czegoś takiego jak grecki.

1

Przeprowadzka w ramach tego samego paradygmatu jest stosunkowo łatwa. Uważam, że przełączanie między Javą i .NET jest bezbolesne, ponieważ obie platformy oferują podobną funkcjonalność i podobne biblioteki. Ale zmiany paradygmatów mogą być prawdziwym wyzwaniem.

Moi studenci zazwyczaj trudno będzie językach funkcjonalnych i logicznych po nauki Java chociaż programowania funkcjonalnego i logicznego są łatwiejsze.

Kolejnym problemem jest przełączanie między typami aplikacji. Na przykład, jeśli jesteś przyzwyczajony do budowania aplikacji komputerowych w Javie, to nagle próbujesz tworzyć aplikacje internetowe w .NET, przełączanie jest trudne, ponieważ nie tylko uczysz się nowych języków, ale także nowych dziedzin programowania.

Kolejnym wyzwaniem jest zestawy narzędzi, które są dostępne dla danego języka. Java i .NET mają podobne narzędzia, ale z pewnymi różnicami. Jeśli nauczysz się programować przy użyciu Visual Studio, możliwe, że funkcje Visual Studio zostaną pomylone z językiem. Widzę, że uczniowie mają ten problem przez cały czas. Po przełączeniu na język Java i nie ma odpowiednika opcji menu kreatora w nowym IDE może to spowodować problemy.

Opowiadam do osób uczących się programowania, aby dowiedzieć się podstawowych pojęć paradygmatu zamiast specyficznego języka, ponieważ to sprawia, że ​​bardziej mobilny w przyszłości. Osoba wygodna w Object Oriented Concepts będzie miała łatwiejsze przełączanie między Javą i .NET lub Python niż osoba, która nauczyła się programowania w języku C#.

+0

Zrozumienie podstawowych pojęć jest niezbędne, ale kierownictwo często popełnia błąd zakładając, że posiadanie podstawowego zrozumienia oznacza, że ​​twoja wiedza biblioteczna w jednym języku migruje łatwo do innego języka. Uważam, że trwa to dłużej i jest droższe niż się spodziewano. –

0

Podobnie jak nauka nowego języka ludzkiego, dla mnie największy problem polega na typowych konstrukcji, które trzeba zrobić, aby rozwiązać problem.

Wiem, że być może uczenie się pętli "podczas" lub "na" w kilku językach nie jest takie trudne - ale kiedy twój problem wzrośnie o jeden poziom abstrakcji (iteracja poprzez tę tablicę), sam się wykorzystasz "[ "zamiast" ("i vice versa."

Krzywa uczenia się może być jeszcze bardziej stroma, jeśli oprócz uczenia się nowego języka, musisz nauczyć się nowej architektury, kiedy przeszedłem od typowej ASP.Net do MVC (używając NVelocity) Czułem się całkowicie zagubiony - cała moja wiedza na temat rozwiązywania typowych problemów z kontrolą asp.net musiała zostać zapomniana

Wreszcie, największym wyzwaniem jest, gdy zmieniasz język na inny parad igms - ponieważ nie można już myśleć w taki sam sposób, jak rozwiązać problem. Podobnie jak przy przechodzeniu z C# do Prologu, zamiast myślenia o funkcjach, argumentach, hierarchii klas itp. ... Musiałem myśleć tylko w stanach, wydarzeniach powiązanych ze zmianami danych i łańcuchach zdarzeń poprzez rekursję - to było szaleństwo, ale mogłem dokończyć moja praca domowa na uniwersytecie.

0

Już od ponad 15 lat C++ tle po prostu musiałem przenieść się do Java dla nowego projektu pracuję nad, a to jest dość bolesny krok. Są prawie wszystkie narzędzia i ramy, ale krzywa uczenia się jest ogromna! Nowa składnia nie ma się czym martwić, API jest trudniejsze, ale najtrudniejszym obszarem jest znalezienie drogi przez wszystkie frameworki.

także konieczności użycia Eclipse jako IDE krok do tyłu pod względem trwałości i niezawodności w porównaniu z Emacsa. Funkcje Eclipse są naprawdę fascynujące, ale błędy w IDE powodują ciągłe kłopoty.