Przejście z Javy ->C# .NET

Odpowiedz Nowy wątek
2019-01-03 14:54
0

Podczas mojej kariery dane mi było parę miesięcy klepać testy w C# jako SQA.( na początku, jak brałem co się da, byle załapać robotę). Teraz mam 3 lata doświadczenia w Javie enterprajzowej. Spring, Hibernate, typowo pod webówkę.

Co mnie boli w Javie? Co bym chciał? A co mam wrażenie że w C# jest lepsze:

Część rzeczy i rozwiązań, przynajmniej z wierzchu, podobała mi się bardziej w C# - jedno IDE, jedno rozwiązanie do danego problemu, brak pierdyliarda bibliotek do trywialnych rzeczy. Po prostu lubię jak jest Ordnung. Mniejsze ryzyko że Junior albo Hindus coś zepsują bo nie wiedzieli o jakimś pitfallu. Łatwiej też czyta się kod, którego zasady są spójniejsze/uniewersalne. Brak pokusy ze strony pracodawcy "o, od jutra przechodzimy na jakiś inny język JVM".

"write once, run everywhere", niespecjalnie mnie raduje. Dla mnie osobiście koniec dnia liczy się to ile mi ktoś zapłaci, jaki będzie komfort pracy, i czy jestem elastyczny pod względem zmiany pracy/zamieszkania.

Czy jest sens przechodzić z jednego języka na drugi? A dokładniej: Jak teraz rokuje C#? Czy moje wyobrażenia o porządku w projektach .NET są przesadzone?


EH PANOWIE CORAZ WIĘCEJ AMATORÓW SIĘ PCHA DO ZABAWY HEHE MAM NADZIEJĘ, ŻE PRZEJDZIE TA NOWELIZACJA USTAWY I PO BUŁKI BĘDZIE MOŻNA CHODZIĆ TYLKO Z LICENCJĄ BO SERIO NIEKTÓRZY NIE MAJĄ ANI DOŚWIADCZENIA ANI WYOBRAŹNI I NA PRZYKŁAD UPUSZCZĄ BUŁKĘ NA PODŁOGĘ

hehe pamiętacie obwarzan75 rogalking jak byliśmy w ’99 na zlocie pieczywa tostowego w Siedlcach? XD Co tam się działo to głowa mała!!! Całe życie z wariatami XDDD KTO MA WIEDZIEĆ TEN WIE XD
edytowany 1x, ostatnio: BluzaWczolg, 2019-01-03 14:56

Pozostało 580 znaków

2019-01-03 15:03
1

To teraz masz dwa IDE, a nawet trzy jak się uprzesz(VSC) :-) hindusów coraz więcej, zmiana języka to chyba największy atut JVM :-) Projekt ma taki porządek o jaki zadbają ludzie którzy go tworzą oraz nadzorują tworzenie :-) Taka prawda. Poza tym nie wiadomo co tam się w przyszłości wydarzy jak M$ zmieni kierunek rozwoju platformy bo mimo tego że jest open source to zdecydowana większość kontrybucji idzie od jego pracowników :-) Oczywiście możesz spróbować :-)

Pozostało 580 znaków

2019-01-03 15:06
3

Część rzeczy i rozwiązań, przynajmniej z wierzchu, podobała mi się bardziej w C# - jedno IDE

Do Javy jest jedno porządne IDE - IntelliJ IDEA. Reszta to plankton, podobnie jak Visual Studio Code (w którym można też klepać w Javie) czy inne wynalazki.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
niestety miałem tą nieprzyjemność robienia w Eclipse - BluzaWczolg 2019-01-03 16:00

Pozostało 580 znaków

2019-01-03 15:11
0
Aryman1983 napisał(a):

To teraz masz dwa IDE, a nawet trzy jak się uprzesz(VSC) :-) hindusów coraz więcej, zmiana języka to chyba największy atut JVM :-) Projekt ma taki porządek o jaki zadbają ludzie którzy go tworzą oraz nadzorują tworzenie :-) Taka prawda. Poza tym nie wiadomo co tam się w przyszłości wydarzy jak M$ zmieni kierunek rozwoju platformy bo mimo tego że jest open source to zdecydowana większość kontrybucji idzie od jego pracowników :-) Oczywiście możesz spróbować :-)

Niestety kolego, ale bardzo się mylisz. 87% kontrybutorow nie pracuje w Microsoft.
https://dotnetfoundation.org/[...]et-foundation-open-membership

edytowany 1x, ostatnio: error91, 2019-01-03 15:11
No ktoś tam wrzucił jeszcze za dwa commity :-) ale żeby się nie upierać przy swoim to może @krwq coś będzie na ten temat wiedział :-) - Aryman1983 2019-01-03 15:13
@Aryman1983: generalnie Microsoft ma swoje cele biznesowe i jeśli chodzi o te cele biznesowe to zdecydowana większość commitów pochodzi od pracowników ze względu na to że często z celami biznesowymi wiążą się deadliny. Ogólnie bez żadnych metryk i tylko patrząc moją subiektywną opinią to ludzie nie pracujący dla MS robią sporo kontrybucji ale większość z nich to bug fixy albo refaktoring. Jeśli chodzi o nowe featury to raczej przewaga pracowników. W większości przypadków na refaktoring ludzie krzywo patrzą bo nikomu nie chce się sprawdzać, ale czasami są sensowne - krwq 2019-01-04 23:29
moja opinia głównie o dotnet/corefx w reszcie repów aż tak dużo się nie bawiłem - krwq 2019-01-04 23:31
@krwq: dzięki serdeczne za wyjaśnienie :-) - Aryman1983 2019-01-04 23:33

Pozostało 580 znaków

2019-01-03 15:25
0

Dla mnie pomysł bez sensu. Lepiej zglebiac jave, może czas na Scale? Wciaz rynek javovy jest wiekszy i wiecej w nim pieniedzy.

Pozostało 580 znaków

2019-01-03 15:32
1
error91 napisał(a):
Aryman1983 napisał(a):

To teraz masz dwa IDE, a nawet trzy jak się uprzesz(VSC) :-) hindusów coraz więcej, zmiana języka to chyba największy atut JVM :-) Projekt ma taki porządek o jaki zadbają ludzie którzy go tworzą oraz nadzorują tworzenie :-) Taka prawda. Poza tym nie wiadomo co tam się w przyszłości wydarzy jak M$ zmieni kierunek rozwoju platformy bo mimo tego że jest open source to zdecydowana większość kontrybucji idzie od jego pracowników :-) Oczywiście możesz spróbować :-)

Niestety kolego, ale bardzo się mylisz. 87% kontrybutorow nie pracuje w Microsoft.
https://dotnetfoundation.org/[...]et-foundation-open-membership

Ciekawe, ciekawe. Przejrzałem kilka projektów z https://github.com/dotnet i ludzi, którzy tam pchają kod. Znalazłem całego jednego, który w profilu nie ma wpisane Microsoft[email protected] https://github.com/brthor
https://github.com/orgs/dotnet/people - tutaj sprawa ma się nieco inaczej. Jest kilka sztuk ale ich aktywność jest mocno znikoma. Więc gdzie te 87%?


"Trolling is a art"
Pokaż pozostałe 6 komentarzy
Nie piję wcale. Ale nic innego oprócz wódki nie przyszło mi do głowy :/ Rasowy Polak :-) - Hispano-Suiza 2019-01-03 19:46
@error91: to zapamiętaj kto na forum jest cool :-) - Aryman1983 2019-01-03 19:47
Ciekawe jak oni to obliczyli :D Kłamio, wszędzie kłamio :/ - error91 2019-01-03 19:54
@Aryman1983: goscie z suslem w avatarze :-) @error91 MS zawsze klamal wiec jakos mnie to nie dziwi :P - Hispano-Suiza 2019-01-03 20:15
zsumowali ze sobą wszystkich contribów na repo potem zsumowali wszystkie projekty w voila! mamy magiczne tysiące :-) - Aryman1983 2019-01-03 20:24

Pozostało 580 znaków

2019-01-03 16:03
0

Nie miałbym z tym raczej problemu, jeżeli C# rozwija głównie Microsoft. Zmiany języka VM na np. Scalę też nie widzę jako atut, wolę jednak jeden język. W razie czego, można wtedy zamienić pracę na inną z tego ekosystemu łatwiej.


EH PANOWIE CORAZ WIĘCEJ AMATORÓW SIĘ PCHA DO ZABAWY HEHE MAM NADZIEJĘ, ŻE PRZEJDZIE TA NOWELIZACJA USTAWY I PO BUŁKI BĘDZIE MOŻNA CHODZIĆ TYLKO Z LICENCJĄ BO SERIO NIEKTÓRZY NIE MAJĄ ANI DOŚWIADCZENIA ANI WYOBRAŹNI I NA PRZYKŁAD UPUSZCZĄ BUŁKĘ NA PODŁOGĘ

hehe pamiętacie obwarzan75 rogalking jak byliśmy w ’99 na zlocie pieczywa tostowego w Siedlcach? XD Co tam się działo to głowa mała!!! Całe życie z wariatami XDDD KTO MA WIEDZIEĆ TEN WIE XD
edytowany 1x, ostatnio: BluzaWczolg, 2019-01-03 16:05
I to jest największy plus tego :-) Lepiej niech jeden trzyma łapę i płaci kasę oddelegowanym pracownikom niż ma się to skończyć repo z trzema gośćmi robiącymi open source w ramach wolontariatu :-) - Aryman1983 2019-01-03 16:08
@Aryman1983: No wiesz. Może MS nie ubije swojego C# (mało opłacalne) ale świat zna projekty, które z dnia na dzień trzymane w łapach jednego korpo zostały gaszone jak niedopalona fajka :-) - Hispano-Suiza 2019-01-03 16:14
Hmm no nie mówię o wszystkich :-) Jak będzie problem to podkupia kogo trzeba :-) - Aryman1983 2019-01-03 16:30

Pozostało 580 znaków

2019-01-03 16:05
0

Przejście z Javy ->C# .NET

Lepiej późno niż wcale.

Dlaczego? Jakie są Twoje doświadczenia w tym zakresie? - BluzaWczolg 2019-01-03 16:09
Też kiedyś zhańbiłem moje programistyczne życie programując w Javie (na studiach mi kazali), ale ostatecznie wybrałem właściwą drogę ;) A tak poważnie to wszystko kwestia gustu. Oba języki mają wady i zalety, oba maja podobne zastosowania, oba mają spoko perspektywy na przyszłość i w obu znajdziesz zarówno fajne jak i zrypane projekty. - Progress 2019-01-03 16:23

Pozostało 580 znaków

2019-01-03 18:58
11
BluzaWczolg napisał(a):

Część rzeczy i rozwiązań, przynajmniej z wierzchu, podobała mi się bardziej w C# - jedno IDE, jedno rozwiązanie do danego problemu, brak pierdyliarda bibliotek do trywialnych rzeczy.

Za to jest druga skrajność - wielu tzw. programistów a także korporacji jest bardzo przywiązana do rozwiązań dostarczanych przez Microsoft i często nie chce używać lepszych narzędzi rozwijanych przez społeczność.

Mniejsze ryzyko że Junior albo Hindus coś zepsują bo nie wiedzieli o jakimś pitfallu.

Hindusów jest niestety pod dostatkiem.
Ale zaletą dla Ciebie może być, że większość z nich w C# pisze właściwie w Javie. (Equals zamiast ==, String, Object, klamerki bez entera, nadmiarowe nawiasy przy konstruktorach mimo użycia inicjalizatora obiektu... niby to wszystko się kompiluje, ale wygląda obrzydliwie.)

Łatwiej też czyta się kod, którego zasady są spójniejsze/uniewersalne.

To spójrz na to:

class Test
{
    private int _number;

    public int Number
    {
        get { return _number; }
    }

    public Test(int number)
    {
        _number = number;
    }

    public int SquareMethod()
    {
        return _number * _number;
    }

    public int SquareProperty
    {
        get { return _number * _number; }
    }

    public override string ToString()
    {
        return _number.ToString();
    }

    public int DoSomethingComplex(int x)
    {
         int z = n + n;
         return z + x;
    }
}

oraz na to:

class Test
{
    public int Number { get; }
    public Test2(int number) => Number = number;
    public int SquareProperty => Number * Number;
    public int SquareMethod() => Number * Number;
    public override string ToString() => Number.ToString();

    public int DoSomethingComplex(int x)
    {
         int z = n + n;
         return z + x;
    }    
}

Te klasy są sobie równoważne, a zapis jest raczej niespójny. DoSomethingComplex w drugiej klasie pasuje jak pięść do oka. No, ale nie da się inaczej jeśli metoda ma więcej niż jedną linijkę. Tak to jest, jak tworzy się język bazujący na klamerkach, a potem próbuje je usuwać. W drugiej klasie można się nieźle pomylić zapominając dodać nawiasy za nazwą SquareMethod - a to jedyne, co w tym podejściu odróżnia metodę od właściwości.

Jeszcze gorzej, gdy w projekcie trafi się szajbus, który zamiast po ludzku:

var numQuery = numbers.Where(num => num % 2 == 0).OrderBy(n => n);

pisze po "nowoczesnemu":

var numQuery =
    from num in numbers
    where num % 2 == 0
    orderby num
    select num;

Wydaje mi się, że z uwagi na (niekoniecznie sensowne) bogactwo składni, w C# trzeba bardziej pilnować spójności i więcej jest konwencji do ustalenia niż w Javie.

Główną zaletą C# jest to, że kompilator w nim działa, i jest co do zasady statycznie typowany, ale jeśli bardzo się chce użyć dynamicznego typowania, to trzeba jawnie deklarować zmienne jako dynamic. Nie ma takich cudów jak w Javie, żeby osiągnąć runtime error niekompatybilności mimo deklarowania rzekomo statycznych typów.

Brak pokusy ze strony pracodawcy "o, od jutra przechodzimy na jakiś inny język JVM".

Jakoś nie wierzę, żeby ktoś gdzieś nagle wpadał na pomysł zmiany języka w trakcie trwania projektu.

Czy jest sens przechodzić z jednego języka na drugi? A dokładniej: Jak teraz rokuje C#?

Rynek jest mniejszy niż w Javie, ale jest też mniej chętnych. Dzięki Core rynek się może się tylko zwiększać.

Czy moje wyobrażenia o porządku w projektach .NET są przesadzone?

Przez jakieś 10 lat w tej branży wybitnie porządnego projektu jeszcze nie widziałem, chociaż jeden był całkiem niezły. Ale nie sądzę, żeby to się drastycznie różniło od innych technologii.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
Pokaż pozostałe 4 komentarze
Nie można rozmawiać o różnicach między językami i wciągać w to narzędzia, chyba że dyskusja dotyczy tego który język ma lepsze właśnie narzędzia. - Aventus 2019-01-03 19:59
@Aventus: Tak, napisanie niespójnego kodu nadal jest możliwe, lecz jestem skłonny się założyć, że w większości przypadków ludzie jednak decydują się kliknąć ten "refactor" i IDE im poprawi. - WeiXiao 2019-01-03 19:59
@Aventus: Język to nie tylko składnia, a całe środowisko czyli Frameworki .NET / .NET Core, narzędzia (VS/RIDER/Profilery/ORMY) oraz Community. W tych czasach wybierając język decydujesz się na o wiele więcej niż syntax. A porównywanie suchego języka ma jakiś sens? według mnie niewielki. - WeiXiao 2019-01-03 20:03
Język to język, nie środowisko. I w tym kontekście somekind dawał przykład. Czy takie porównywanie ma sens? Tak, jeśli porównujemy SPÓJNOŚĆ SKŁADNI JĘZYKA, czego wyraźnie dyskusja dotyczyła. Sensu nie ma mieszanie w to narzędzi, szczególnie narzędzi nieoficjalnych chyba że dyskusja tego wyraźnie dotyczy. Naprawdę tak ciężko to zrozumieć? - Aventus 2019-01-03 21:07
@WeiXiao: Mieszanie EBM z normalnymi właściwościami i metodami nie zacznie nagle wyglądac ładnie, bo użyliśmy ReSharpera. - somekind 2019-01-04 10:49

Pozostało 580 znaków

2019-01-03 19:10
2

Główną zaletą C# jest to, że kompilator w nim działa, i jest co do zasady statycznie typowany, ale jeśli bardzo się chce użyć dynamicznego typowania, to trzeba jawnie deklarować zmienne jako dynamic. Nie ma takich cudów jak w Javie, żeby osiągnąć runtime error niekompatybilności mimo deklarowania rzekomo statycznych typów.

Podaj przykłady na te niekompatybilności.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2019-01-03 19:57
2

Jak teraz rokuje C#?

Po chyba prawie 20 latach przepisali ASP.NET na ASP.NET Core i .NET na .NET Core i całość dostała drugie życie.

Po prostu przepisali, posprzątali, udostępnili możliwość odpalania na Linuxach / Macach, co pozwala na większy wybór niż np. IIS oraz wydaje się to wydajniej działać, a dalej dodali takie rzeczy jak Span<T> pozwalające wydajniej zarządzać pamięcią.

Dodatkowo dużo różnych nowych inicjatyw typu .NET IoT, ML.NET wsparcie od Amazonu jeżeli chodzi o AWS Lambda (nie widzę, aby zwykły .NET był dostępny)

Myślę, że jest to dobry moment na zmianę, bo wszystko jest w miarę nowe i szybko rozwijające się, a na horyzoncie .NET Core 3.0 / C# 8

edytowany 8x, ostatnio: WeiXiao, 2019-01-03 20:41
Pokaż pozostałe 39 komentarzy
@tomasz-k: To nie byla kwestia braku funkcjonalnosci tylko roznicy w funkcjonalnosciach przecież nic o tym nie wspominałem? - some_ONE 2019-01-06 23:33
@tomasz-k: Tak, to jest dziwne. Bo jeżeli ktoś przechodzi na Cora, to i tak musi trochę zmian w projekcie zrobić, więc niech już przejdą na EFC i będzie spokój + jednorodność. Chociaż z drugiej strony może EFC jeżeli był bardzo upośledzony te 2 lata temu (nie wiem) i może z tego wynikła ta decyzja. - WeiXiao 2019-01-06 23:35
@some_ONE: bo nie wspomniałeś, teraz w core będą dwie wersje EF :-D To nie tak, że EFcore był podzbiorem EF6 tylko dwie troche rozniace sie biblioteki dla wspolnej idei. https://msdnshared.blob.core.[...]2018/05/netcore3-1024x983.png Taki mamy klimat :-D - tomasz-k 2019-01-06 23:41
@WeiXiao: nawet jak byl uposledzony, to sie podciagnal i w core 3 mogli zrobic najlepsza wersje. No ale to nie pierwsza upośledzona decyzja Microsoft w sensie traktowania klientow i inzynierskim, bo finansowo maja sie dobrze. Nie podoba mi sie tez, ze przy prostych apkach w bin jest morze dll-ek, moze kiedys dojrzeja, by generowal sie jeden plik binarny jak to sie dzieje w kompulatorach C czy C++ w scenariuszu bez wspoldzielenia dll. - tomasz-k 2019-01-06 23:46
No ale piszesz oczywistosci. Ja nie twierdziłem że EF Core był podzbiorem EF6, ani nie pisałem że ma być jedna wersja. Ja pisałem tylko że potrafię ich zrozumieć bo po 1 EF6 już dawno był w ponad 90% zgodny z .net standard a z corem to chyba nawet w 95% więc dużo zmieniać nie trzeba było, a po 2 ludzie od dawna chcieli używać EF6 w .Net core żeby np. hostowac apke na linuxie a nie mogli bo podmiana nagle całej warstwy dostępu do danych nie zawsze jest trywialna :) - some_ONE 2019-01-07 03:38

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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