Rozpoczniemy nowy projekt, który obejmie szkolenie wszystkich programistów .net w Javie (frameworki / system ECO itp.). Mamy dużo kodu napisanego w języku C # i wydaje się, że wszystko to zostanie zmarnowane, ponieważ musimy ponownie napisać to wszystko w Javie. Problem, jaki widzę, polega na tym, że w pierwszym roku (prawdopodobnie 2 lata) nie będziemy mieli nic do dostarczenia, ponieważ spędzimy większość czasu na odtwarzaniu tego, co mieliśmy wcześniej, ale teraz w Javie.
Ponieważ nasz zespół jest rozproszony w różnych biurach na całym świecie i mamy dużą liczbę programistów Java (od 20 do 30) oraz 10 programistów korzystających z .net, chcemy, aby wszyscy programiści korzystali z tego samego języka / platformy, abyśmy mogli zacząć ponownie użyć komponentów / modułów. Więc mogę zrozumieć punkt widzenia kierownictwa.
Wczoraj natknąłem się na Scalę i zastanawiałem się, czy lepiej byłoby użyć tego z obecnym produktem (który jest napisany w C #), a wtedy przynajmniej będziemy mieć działający produkt za rok. Również za rok mamy moduły, których można używać w świecie Java, podczas gdy migrujemy inne części produktu.
Czy Scala byłaby lepszym wyborem niż Java, biorąc pod uwagę to, co próbujemy osiągnąć?
Odpowiedzi:
Kilka punktów do rozważenia:
Biorąc to wszystko pod uwagę, możesz chcieć zabezpieczyć swoje zakłady i wybrać mieszaną strategię Java / Scala - tj. Migrować na platformę JVM i początkowo skupić się na Javie, ale pozostaw opcję korzystania ze Scala, gdy Twoi programiści są komfortowi i / lub pasuje do aktualnego problemu.
Z punktu widzenia zarządzania ma to wiele zalet:
Minusem jest to, że nadal masz dwa podstawowe języki do obsługi. Ale prawdopodobnie masz już wiele więcej niż tylko dwa (skrypty powłoki? Formaty XML specyficzne dla domeny? Pliki konfiguracyjne? Mechanizmy reguł? HTML? JavaScript?), Więc możesz argumentować, że tak naprawdę to nie jest wielka sprawa.
źródło
Dodam trzecią opcję. Czy ktoś w twojej organizacji patrzył na interop między twoim C # i modułami Java? Jak udostępniasz funkcjonalność C #? Czy usługi sieciowe SOAP lub RESTFul są opcją?
Dwuletnie ponowne pisanie może być zabójstwem dla organizacji (wystarczy zapytać Netscape). Jednak stopniowa migracja, podczas gdy istniejący kod ładnie ze sobą współgra, ma potencjalnie mniejszy wpływ na biznes.
źródło
Przepisanie C # na Scalę będzie tak samo trudne jak przepisanie na Javę. Co do tego, który język jest „lepszy”, ten punkt jest dyskusyjny, każdy język ma swoje własne plusy i minusy.
Nie wiem, jak duża jest twoja baza kodu, ale 2 lata dla 30 programistów wydają się ogromne dla zwykłego przepisania. Pobieranie Java, gdy wiesz, że C # jest łatwe. Zajęło mi dzień lub dwa, żeby się z tym pogodzić.
Moją radą byłoby pozwolić, aby zarządzanie zaczęło działać i cieszyć się faktem, że zarabiasz na rozwijaniu swojego zestawu umiejętności.
źródło
Myślę, że łatwiejszą opcją byłoby skłonienie programistów Java do nauki języka C #. Oba języki są bardzo podobne pod wieloma względami i nie zajmuje dużo czasu programistom Java do pobrania C #. Pracowałem z wieloma programistami Java, którzy nauczyli się języka C # i zwykle jest to płynne przejście. Jedynym obszarem, w którym mogą utknąć na chwilę, jest model programowania WebForms. Programiści Java lepiej dostosowują się do paradygmatu MVC. W ten sposób nie musisz czekać przez rok, zanim zaczniesz opracowywać nowe funkcje. Jeśli chodzi o Scalę, obawiam się, że wprowadzi to zupełnie nowy problem ze wszystkimi 30 programistami próbującymi nauczyć się nowego języka.
źródło