Zmiana języka programowania

Zmiana języka programowania
Bjorn Nożycoręki
  • Rejestracja:około 4 lata
  • Ostatnio:7 dni
  • Lokalizacja:Rzeszów
  • Postów:13
0

hej, pracuje ponad 2 lata z java i moze nie jestem jeszcze midem (na pewno sie tak nie czuje) ale takim poziomie mocnego juniora mysle, że jestem. Wkurza mnie troche pisanie w javie pomimo, że na początku mi podchodziła, tak teraz czuje lekkie obrzydzenie tym językiem.

Postanowiłem uczyć się na własną rekę C#, mam fajne tutki do nauki i myślę klepnąć sobie jakiś projekt żeby ogarnąć co i jak i może w przyszłosci zmienic firmę już na stanowisko c# deva, tylko tutaj pojawia się problem, otóż bardzo dużo firm ma w wymaganiach KOMERCYJNE DOŚWIADCZENIE Z C# min. 2 lata (na przykład), ja tego doświadczenia w cszarpie nie mam, a niechciałbym zaczynać od stanowiska juniora z pensją nwm 5k..

Moglibyście doradzić jak z Waszego doświadczenia wyglądał proces przebranżowienia się na inny język?

stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 12 godzin
6

Java, C#?

screenshot-20240802201004.png


Lepiej Kotlina sobie obadaj albo Scale


λλλ
Zobacz pozostałe 3 komentarze
obscurity
delikatnie to średnio powiedziane, bo na widok javy mam taką reakcję https://www.youtube.com/watch?v=YQ7173XCElc a robię głównie w c# ;)
stivens
Jak juz wrzucasz film z samochodem. Oczywiscie, ze stary Golf sie rozni od S-Klasy, ale jak sie spojrzy na caly przekroj srodkow transportu - od lyzew, rowera, poprzez samochody, tramwaje, ciagniki siodlowe, pociagi i lodzie az po samoloty i statki kosmiczne, to wtedy "samochod osobowy to samochod osobowy". I samochod z automatem to wciaz samochod. I jak masz prawko kat B, to ogarniesz. A zastanow sie czy nie chcialbys sobie polatac helikopterem albo malym samolotem, gdybys tylko mial umiejetnosci i srodki. Albo czy czasem nie jest fajnie sie przejechac rowerem po lesie.
stivens
Swoja droga, to troche smieszne, ze wrzucasz filmik, ktory obsmiewa automatyczna skrzynie biegow, a sam programujesz w jezyku z garbagem collectorem. Nie dostrzegasz pewnych analogii? :p EDIT: No dobra - nie jest jeszcze powiedziane, ze podzielasz te poglady
obscurity
akurat automat też wygrywa. Można lubić się pobawić w zmiany biegów ale jednak automat jest znacznie wygodniejszy i można się skupić na jeździe i bardziej wyluzować. W sumie całkiem niezła analogia do programowania
ĄO
  • Rejestracja:około 12 lat
  • Ostatnio:dzień
  • Postów:236
2

Najlepiej w firmie, która używa jednego i drugiego przenieść się z Javy do C#. Jeśli w Twojej obecnej nie używają C#, to pójść gdzieś na javę i po jakimś czasie powiedzieć/zaproponować przesuwanie się w stronę C#. Ale w sumie to w taki sposób to dużo czasu zajmie

KE
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 13 godzin
  • Postów:663
1

They are the same picture

Tak, ale tylko jeśli chodzi o język. Bo cała reszta to dwa zupełnie odmienne światy, cały tooling naokoło, IDE, frameworki, libki itp. Podstawy języka to pewnie pół dnia czytania tutoriali, ale wejść w ten ekosystem to będzie potężna praca.

Zobacz pozostałe 3 komentarze
SS
@zchpit: no niestety. Ja się mocno sfrajerowalem wchodząc 14 lat temu w C#, bo niby taki miał byc nowoczesny język programowania z przyszłością. Chciałem się przesiąść na Java i w nowej firmie miałem dwa projekty w Java, a potem wrzucili mnie w C# LEGACY, bo nie ma innych projektów w java i tak siedze jako senior C#. Na mid Java byłoby mi trudno się dostać, bo siedzę w C#, a nie w Java.
somekind
@still.still: no dobrze, ale to, że Ciebie wrzucili 14 lat temu w jakieś legacy nie zmienia faktu, że C# się cały czas rozwija i ma przyszłość.
SS
@somekind: źle mnie zrozumiałeś. Legacy robię 4 lata. Wcześniej robiłem też różne projekty desktop i web w C# oraz jeden projekt desktop i jeden projekt web w Java. C# się cały czas rozwija i ma przyszłość - tak, ale sądząc po ofertach pracy jakie dostaje na C# vs Java, na C# jest mniej ofert i częściej (niż w Java) mniej ciekawe (bo nie ma cloud). Znajomy z bylej pracy kilka lat temu tez mi mowil, ze mial sie rozwijac i przegonic, a ciagle jest tak samo. Trudno bylo mu nie przyznac racji.
stivens
Co jest ciekawego w adminowaniu cloudem? A tymbardziej co jest ciekawego w cloudzie, ktory jest, a ktorego nie adminujesz?
somekind
@still.still: ja od ponad ośmiu lat pracuję w chmurze, oferty bez chmury nie widziałem od dawna. Poczytaj może, co o rozwoju piszą forumowi Javowcy, którzy utknęli w jakichś kobyłach konfigurowanych xmlem. :D
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Wrocław
1
kelog napisał(a):

Tak, ale tylko jeśli chodzi o język.

Nawet niekoniecznie - o ile składnia może i jest podobna, to jest kilka dość fundamentalnych różnic głównie jeśli chodzi o hierarchię typów, polimorfizm, czy generyki, a które to mocno rzutują na sposób pisania kodu. Widać to bardzo, gdy Javowiec próbuje pisać w C#.

Bjorn Nożycoręki napisał(a):

Postanowiłem uczyć się na własną rekę C#, mam fajne tutki do nauki i myślę klepnąć sobie jakiś projekt żeby ogarnąć co i jak i może w przyszłosci zmienic firmę już na stanowisko c# deva, tylko tutaj pojawia się problem, otóż bardzo dużo firm ma w wymaganiach KOMERCYJNE DOŚWIADCZENIE Z C# min. 2 lata (na przykład), ja tego doświadczenia w cszarpie nie mam, a niechciałbym zaczynać od stanowiska juniora z pensją nwm 5k..

Teraz pracy dla ludzi bez doświadczenia chyba nie ma nigdzie, więc na Twoim miejscu siedziałbym już w tej Javie, przynajmniej dopóki sytuacja się nie poprawi. (Oczywiście w międzyczasie możesz się uczyć nowych rzeczy, ale już chyba lepiej jakiejś chmury czy kubernetesa niż innego języka.)

edytowany 1x, ostatnio: somekind
Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:około 2 godziny
  • Postów:6633
1
stivens napisał(a):

Java, C#?

screenshot-20240802201004.png

hqdefault.jpg


🕹️⌨️🖥️🖱️🎮
Zobacz pozostałe 28 komentarzy
stivens
Zreszta tutaj wymysliliscie sobie opozycje OOP vs FP a ja bardziej mialem na mysli nie OOP a programowanie imperatywne, a sam jestem programista Scali - czyli jezyka, ktory laczy OOP i FP
stivens
@WeiXiao: czy to co mowie, ma sens?
WeiXiao
@stivens: Albo jesli w jezyku FP w przypadku bledu to mozesz zarowno rzucic wyjatkiem, ale mozesz tez zwrocic wartosc Either/Result/Try, czyli zrobic cos wiecej, to jak to jest skokiem w tyl? Oczywiscie w Javie tez mozna zwrocic Eithera, ale po pierwsze jest to wlasnie cos zaczerpnietego z FP, a po drugie i tak "idiomatycznie" to bedzie rzucic wyjatkiem czy gdyby wyjątek nie miał tego specjalnego zachowania - skoku, to czy konceptualnie nie byłby podobny do Resultów? no bo wiesz, niby mamy tutaj "nic lub error"
stivens
@WeiXiao: z wartosciami mozna zrobic troche wiecej (tudziez ladniej, latwiej, czytelniej) niz z wyjatkami, patrz: Są tu jeszcze jacyś miłośnicy checked exceptions? Używacie?
ZI
C# ostatnio ostro dodaje elemenety FP, np. ostatnio pojawiła się propozycja type unions (coś jak discriminated unions) po tylu latach próśb. F# to to nie będzie ale fajnie mieć taką alternatywę.
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 12 godzin
7

8z5ycg.jpg

// humorystyczne


λλλ
edytowany 1x, ostatnio: stivens
KE
Hehe, no przyznam śmiechłem :P
somekind
Raczej tragiczne, nie ładnie się śmiać z ludzkich tragedii.
wiciu
  • Rejestracja:ponad 11 lat
  • Ostatnio:dzień
  • Postów:1205
1

Jeden wuj te wszystkie języki. Chcesz się uczyć, bo Cię interesuje albo jest Ci to w pracy potrzebne, to się ucz, a nie filozofuj na forum.
Raz w robocie miałem napisać projekt biblioteki/frameworka w Swift na iOS nie mając pojęcia o tych technologiach, to się ich w miesiąc nauczyłem i napisałem projekt od zera. Równie dobrze można taki proces przeprowadzić z każdym innym językiem.

edytowany 1x, ostatnio: wiciu
Zobacz pozostałe 3 komentarze
KE
@wiciu: tylko twoja sytuacja jest zupełnie inna. Ty już byłeś zatrudniony w firmie, nikt tam nie znał technologii X, więc dano ci czas nauczyć się X i pyknąłeś projekt, bo twój czas nauki (w czasie pracy... right?) został oszacowany jako tańszy niż szukanie, zatrudnienie i wdrożenie kogoś z doświadczeniem. Natomiast OP mówi o zatrudnieniu w firmie, gdzie od początku jest wymaganie znajomości C# i nikt nie będzie nikogo uczył.
wiciu
@stivens: Był już drugi analogiczny projekt w innej technologii, którą znałem dobrze i który też pisałem od zera, więc tutaj musiałem napisać to samo, tylko w innym języku i się tego języka wcześniej nauczyć ;). @kelog Tak, mogłem się uczyć nowego języka na koszt pracodawcy i każdy w firmie o tym wiedział. To w takim razie OP musi zrobić to samo, tylko poza godzinami roboczymi - tzn. poświęcić własny czas na naukę jakiegoś języka, napisać jakiś swój projekt i wtedy startować w rekrutacji.
stivens
@wiciu: to nie ma znaczenia. Wyobraz sobie, ze programista C pisze libke, framework w Javie, dokladnie tak samo jak by to napisal w C. No troche slabo, nie? ;)
wiciu
Dla dobrego programisty język programowania to tylko narzędzie. Wiadomo, że jak ktoś ma więcej doświadczenia, to jest duża szansa, że napisze to lepiej lub szybciej, ale uważam, że mając ogólne doświadczenie i znając dobre praktyki, można napisać projekt porządnie z dokumentacją, testami, itd. Chyba, że języki bardzo się od siebie różnią. Ja mam doświadczenie głównie w Javie i nie pisałem w Swifcie tak jakbym pisał w Javie, tylko starałem się pisać po swiftowemu. Może jedynie dodałem dużo testów jak w Javie, bo w Swifcie testy jednostkowe są mało popularne xD.
stivens
@wiciu: to jest narzedzie, kiedy jestes userem. Kiedy piszesz framework to nie Ty jestes userem, tylko Ty masz userow. Subtelna roznica. Ale nie chodzi o to, zeby Ci zasugerowac ze zrobiles slaby framework. Po prostu na meta poziomie to komentuje
PP
  • Rejestracja:12 miesięcy
  • Ostatnio:7 miesięcy
  • Postów:140
2
wiciu napisał(a):

Raz w robocie miałem napisać projekt biblioteki/frameworka w Swift na iOS nie mając pojęcia o tych technologiach, to się ich w miesiąc nauczyłem i napisałem projekt od zera. Równie dobrze można taki proces przeprowadzić z każdym innym językiem.

Uczyłeś się po godzinach za darmo czy w ramach godzin pracy?

edytowany 1x, ostatnio: PawelP6
wiciu
Uczyłem się w ramach godzin pracy, a nauka tego języka była częścią mojego zadania i obowiązków w pracy. W firmie nie było wtedy żadnej osoby, która znała ten język, żeby mogła zacząć w nim pracę od razu, a procesy rekrutacyjne się ciągnęły i nie dało się nikogo znaleźć.
KE
@wiciu: ekstra, no to jest idealna sytuacja.
wiciu
Tak, dla osób, które lubią się uczyć nowych rzeczy jak najbardziej, więc mi to odpowiadało :).
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 7 godzin
3

podam przykład z nieco innego poletka:
moim zdaniem 99% (albo, bardziej ostrożnie, 90%+) kodu w pythonie jest pisanych przez ludzi, który nie znają pythona i mało komu to robi różnicę. da się? da się, bo python i tak (w mniemaniu większości programistów) służy do pisania śmieciowego kodu (i np. mało kto się rozwodzi n.t. architektury czy testowania takiego kodu). problem w tym, że ten śmieciowy kod potem niestety trzeba utrzymywać :/ . stosuje się więc metodę kopiego-pejsta wzbogaconą o modyfikację kopii, a potem (po wielu latach) usuwaniem staroci. nawet devopsi w moim zespole nie znają dobrze pythona (np. jeden nowy nie rozróżniał metod statycznych od instancyjnych w pythonie), a przecież oni zarządzają całą infrastrukturą, włączając skrypty w bashu i pythonie.

ogólnie:
jeśli będziesz klepał zrozumiały kod z dobrą architekturą i dobrym pokryciem testami automatycznymi, to już jest w miarę ok, a ulepszenia typu bardziej idiomatyczny, czytelny i zwięzły kod przyjdą później. zarówno java jak i c# to imperatywny oop z małymi dodatkami funkcyjnymi, więc koncepcyjnie podobne.

somekind napisał(a):
kelog napisał(a):

Tak, ale tylko jeśli chodzi o język.

Nawet niekoniecznie - o ile składnia może i jest podobna, to jest kilka dość fundamentalnych różnic głównie jeśli chodzi o hierarchię typów, polimorfizm, czy generyki, a które to mocno rzutują na sposób pisania kodu. Widać to bardzo, gdy Javowiec próbuje pisać w C#.

.net to chyba jedyna szeroko używana platforma, która ma reified generics, więc jeśli ktoś z tego w znaczący sposób korzysta (czyli pomijając różnice typu ArrayList<Integer> vs ArrayList<int> bo to tylko kwestia wydajności w mikrobenchmarkach i bardzo specyficznych problemach, a skupiając się raczej na dynamicznym / run-time'owym sprawdzaniu generycznych typów), to jego kod w c# (czy tam innym sitku / płotku) odbiega od całej reszty szeroko używanych języków.


"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.
edytowany 3x, ostatnio: Wibowit
Zobacz pozostałe 7 komentarzy
Wibowit
no zdecydowanie mniej magii i sztuczek, bo dzieją się w compile-time, a nie run-time (tzn. chodzi o sprawdzanie zgodności typów i raportowanie błędów do programisty), no i (w typowym, idiomatycznym użyciu?) dalej zostają konstruktory, więc nie ma zespawania z tym mechanizmem (zlayery do obsługi własnego kodu są opcjonalne, nawet jeśli i tak wszędzie używamy zio).
somekind
reified generics ułatwiają tworzenie magicznych frameworków opartych o głeboką refleksję - gorzej, gdy masz język, który żyje w oparciu o magiczne farmeworki bazujące na głębokiej refleksji i do tego ma generyki, którego tego nie ułatwiają. :)
Wibowit
@somekind gorzej, gdy masz język, który żyje w oparciu o magiczne farmeworki bazujące na głębokiej refleksji i do tego ma generyki, którego tego nie ułatwiają. 😀 - to nie wina języka, tylko programistów, którzy lubią przekombinowane rozwiązania. nie tylko javowcy to lubią, ale też np. frontendowcy, bo np. angular ma magiczny framework do wstrzykiwania, też oparty o refleksje i też w języku z wymazywaniem typów (typescript). co kto lubi, ale jak dla mnie rozwiązaniem jest ucieczka od refleksji do języków czy rozwiązań, gdzie nie ma dużej potrzeby pakowania się w refleksję
somekind
Refleksja jest jak przemoc, jeśli nie rozwiązuje Twoich problemów, to znaczy, że za mało jej używasz. ;) Jeśli refleksja ma pełne informacje o typie, to jest łatwiejsza i pewniejsza w napisaniu i użyciu niż taka, która ma gorsze informacje. Ale fakt, ostatnio od refleksji się odchodzi na rzecz generatorów kodu.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
3

Podzielam zdanie @stivens - zmieniasz jeden beznadziejny język programowania, na drugi - w zasadzie taki sam, momentami tylko trochę lepszy, momentami nawet gorszy (przypominamy, ze java nie ma goto i parametrów out ) - ale zasadniczo tożsamy.... i spodziewasz się, że coś to zmieni?

Mam doświadczenie ze zmieniania języka programowania, ale to faktycznie była jakaś zmiana:
java -> kotlin -> scala

Nie, kotlin i C# nie są podobne. I nie dlatego, że C# brakuje ficzerów. Siła kotlina i scali polega na tym, że zasadniczo mają dużo mniej ficzerów niż C# i Java. Tylko mają akurat przeważnie te sensowne.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 2x, ostatnio: jarekr000000
obscurity
to java ma jakieś ficzery?
ZI
Nie wiem jak to w scali/kotlinie wygląda, ale bloat w dotnecie osiąga już powoli poziom, gdzie rozpoczynając duży projekt powinno się narzucać obowiązkowe praktyki co do stosowania pewnych elementów lub nie. Jeżeli zrobienie jednej rzeczy jest możliwe na 10 różnych sposobów to bardzo łatwo o gównokod na dłuższą metę.
tefu
@jarekr000000: java -> kotlin -> scala : to sugerujesz z javy najpierw przerobić kotlina zanim się przejdzie do scali? Czy to tylko tak było u Ciebie?
jarekr000000
@tefu faktycznie to najpierw poznałem scale. Ale w firmach najpierw wywalczyłem kotlina (scala tylkl na mini projekciki). A potem przeszedłem do firmy scalowej. Najlepiej oczywišcie nie robić krokôw pošrdednich i od razu iść w haskella :-).
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Wrocław
2

No skoro każdy język imperatywny jest taki sam, to nie tylko C# to to samo, co Java, także np. C czy PHP. No i przede wszystkim JavaScript to to samo co Java, więc należy przeprosić wszystkie Panie z HR, które palnęły tę głupotę na rozmowach i w ogłoszeniach.

Twierdzenie na serio, że nie ma różnic, świadczy raczej o byciu tak w połowie drogi na szczyt na tym wykresie IQ score wklejonym parę postów wyżej. To, że nawet 90% mechanizmów czy koncepcji jest podobna, nie znaczy, że różnice nie są drastyczne.

stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 12 godzin
0

@somekind Chodzi o to, ze mozna powiedziec ze Java i C# sa takie same, albo dlatego ze sie patrzy plytko (gosc po lewej) albo dlatego, ze sie patrzy szeroko - zakapturzony gosc po prawej. I o co chodzi z plytkim podejscie, to nie musze tlumaczyc, bo wszyscy chyba to rozumiecie skoro stoicie w opozycji do takiego twierdzenia. Natomiast patrzac szeroko to jesli "To, że nawet 90% mechanizmów czy koncepcji jest podobna, nie znaczy, że różnice nie są drastyczne.", to co wtedy powiesz o zestawieniu C# albo Java vs Haskell, Rust, Lisp, Erlang? Jesli juz Java vs C# to "drastyczne" roznice, to dla tego drugiego zestawienia wlasnie zabraklo skali.

I juz nie chodzi o to czy np. Erlang to jest gorszy czy lepszy, tylko ze tutaj to dopiero jest roznica drastyczna

Btw. drastyczny ze slownika:

«o zmianach, metodach: zbyt radykalny lub zbyt gwałtowny»

No nie sadze, nie sadze. To co ja moge powiedziec, to to ze roznica jest widoczna i znaczaca


λλλ
edytowany 9x, ostatnio: stivens
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Wrocław
0
stivens napisał(a):

@somekind Chodzi o to, ze mozna powiedziec ze Java i sa C# sa takie same, albo dlatego ze sie patrzy plytko (gosc po lewej) albo dlatego, ze sie patrzy szeroko - gosc po prawej. I o co chodzi z plytkim podejscie, to nie musze tlumaczyc, bo wszyscy chyba to rozumiecie skoro stoicie w opozycji do takiego twierdzenia. Natomiast patrzac szeroko to jesli "To, że nawet 90% mechanizmów czy koncepcji jest podobna, nie znaczy, że różnice nie są drastyczne.", to co wtedy powiesz o zestawieniu C# albo Java vs Haskell, Rust, Lisp, Erlang? Jesli juz Java vs C# to "drastyczne" roznice, to dla tego drugiego zestawienia wlasnie zabraklo skali.

Użyłem słowa drastyczne, bo kod w języku C# pisany przez programistę Javy, który stosuje javowe idiomy wygląda makabrycznie. (Widać krew i zwłoki w IDE, a ludzie na to patrzący płaczą.)
Ok, mogę się zgodzić, że to nie jest trafny dobór słowa z mojej strony, ale te różnice po prostu są, i wpływają na sposób projektowania oraz pisania kodu. (I nie są to kosmetyczne różnice dotyczące zbędnych albo rzadko używanych mechanizmów typu out czy goto.)

Udawanie, że różnic nie ma jest ignorancją, bo opiera się wyłącznie na patrzeniu na kod i słowa kluczowe, nie mechanizmy czy ficzery języka, a gość po prawej, który "patrzy szeroko" jest takim samym ignorantem jak gość po lewej.

stivens
To co ja moge powiedziec, to to ze roznica jest widoczna i znaczaca, ale nie drastyczna
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 12 godzin
0

Udawanie, że różnic nie ma jest ignorancją

Postawiles sobie sam chochola i teraz z nim walczysz

No bo memy to maja to do siebie, ze sa 120% serious, prawda? Prawda?


λλλ
edytowany 2x, ostatnio: stivens
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Wrocław
1
stivens napisał(a):

No bo memy to maja to do siebie, ze sa 120% serious, prawda? Prawda?

To jest mem:
screenshot-20240805223358.jpg
To jest mem:
screenshot-20240805223421.jpg

Mem ma być śmieszny, Twój jest tylko bez sensu. :P

I nie postawiłem chochoła - Ty kilkukrotnie zasugerowałeś nieprawdę. Ok, pewnie hiperbolizowałeś na potrzeby żartu, tylko mnie to mocno rusza, bo zdarzało mi się być bezpośrednią ofiarą działań ludzi, którzy na serio uważają tak, jak Ty. I to jest bardzo traumatyczne.

edytowany 1x, ostatnio: somekind
stivens
Ok, pewnie hiperbolizowałeś na potrzeby żartu, tylko mnie to mocno rusza - kumam
stivens
Aczkolwiek kilkukrotnie w tym temacie wyjasnialem, w jakim kontekscie to mowie. Nie chcialem Cie traumatyzowac :D
somekind
Z drugiej strony, Ty chyba masz podobny problem. A jeśli nie Ty, to Twoi koledzy po fachu. Javowców piszących Javę w Scali jest przecież więcej niż tych, którzy biorą się za pisanie Javy w C#.
stivens
No tak. Dlatego ja podkreslam, ze ten mem byl w pewnym kontekscie
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 4 godziny
1

Tzn. oprócz patrzenia na same różnice w językach w ostatnich wersjach warto spojrzeć choćby na różnicę we wstecznej kompatybilności, czy powiązania języka z wersją frameworka. C# pozwala na używanie nowszej wersji języka na starszych wersjach frameworka, tak że możesz jako developer używać najnowszych feature'ów nie ingerując w finalny build.
Java co prawda zaczyna mieć niektóre feature'y dodane kilkanaście lat temu do innych języków, ale w rzeczywistości znaczna część kodu tkwi na starych wersjach 8 czy 11 więc programiści javy dopiero za jakieś 20 lat będą mogli się pobawić "nowinkami" języka. Mimo że niby java stawia na wsteczną kompatybilność to z tego co widziałem praktycznie każdy projekt ma istotne problemy z podniesiem wersji.
W .NET wygląda to całkiem inaczej i praktycznie rzadko kiedy występuje jakakolwiek przeszkoda żeby podnieść wersję języka w projekcie, nawet jeśli jakiś projekt utknął na starym .NET Frameworku (4.8) bo przejście z .NET Framework na .NET może być ciężkie, to nadal jeśli ktoś chce może używać w znacznej części najnowszej wersji języka do developmentu - wystarczy tylko użyć nowszego kompilatora i załatać brakujące wbudowane typy paczkami.

Jeśli java i c# są podobne to z pewnością kotlin i swift też wpadają do tego worka, kotlin ma mniej bloatu ale to tylko dlatego że jest stosunkowo nowy; każdy język w końcu staje się przesadzony i właściwie trzeba by było ciągle tworzyć nowe języki i zrywać kompatybilność ze starymi lub nie aktualizować języka żeby tego nie było.

jarekr000000 napisał(a):

Siła kotlina i scali polega na tym, że zasadniczo mają dużo mniej ficzerów niż C# i Java. Tylko mają akurat przeważnie te sensowne.

To zabrzmiało mocno subiektywnie i fanboyowo.

Tu lista najbardziej lubianych języków:

Rust – 83.5%
Python – 73.1%
TypeScript – 73.1%
Kotlin – 72.6%
WebAssembly – 69.5%
Swift – 69.2%
Clojure – 68.3%
Elixir – 68.2%
Go – 67.9%
C# – 67.0%
JavaScript – 66.8%
Dart – 66.3%
SQL – 64.1%
HTML/CSS – 62.2%
F# – 61.7%
Bash/Shell/PowerShell – 59.5%
Scala – 58.3%
Java – 53.4%
C++ – 52.0%
R – 51.7%
Ruby – 50.3%
Erlang – 47.4%
PHP – 45.8%
C – 42.5%
Assembly – 35.6%

I najbardziej nielubianych:

VBA – 75.2%
Objective-C – 68.7%
Assembly – 64.4%
C – 57.5%
PHP – 54.2%
Erlang – 52.6%
Ruby – 49.7%
R – 48.3%
C++ – 48.0%
Java – 46.6%
Scala – 41.7%
Bash/Shell/PowerShell – 40.5%
F# – 38.3%
HTML/CSS – 37.8%
SQL – 35.9%
Dart – 33.7%
JavaScript – 33.2%
C# – 33.0%
Go – 32.1%
Elixir – 31.8%
Clojure – 31.7%
Swift – 30.8%
WebAssembly – 30.5%
Kotlin – 27.4%
TypeScript – 26.9%

Podobnie jak na filmwebie polecam oglądać filmy tylko z oceną >6 tak samo tutaj polecam trzymać się języków z poziomem satysfakcji >60% nawet jeśli są do siebie podobne


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 3x, ostatnio: obscurity
Zobacz pozostałe 10 komentarzy
obscurity
@stivens: przecież "the Lobster" ma ocenę 6.8 więc ok, kilka razy zrobiłem wyjątek i zaryzykowałem oglądając film z oceną 5 lub niżej i zawsze tego bardzo żałowałem; nawet jak ma trafić się jeden wyjątek to nie warto :P Czy to że język jest bardziej lubiany znaczy że jest lepszy? No niekoniecznie moim zdaniem, można zrobić świetny język który będzie do wszystkiego i weźmie na siebie większość problemów ale będzie się w nim kiepsko pisało, tak samo jak można nie lubić języka a jednocześnie nie chcieć z niego migrować bo np bije na głowę inne pod względem ilości pracy
ZC
O ile co do zasady zgodzę się że podnoszenie wersji .net jest raczej bezbolesne to podam tylko jeden drobny wyjątek: nullable reference type, czyli nowość jaka weszła w net 6 (.net core 6). Jak się zaznaczy domyślną opcję bez wchodzenia w szczegóły to można się lekko zdziwić (choć nowy feature jest co do zasady fajny, a MS zrobił nawet turorial w jaki sposób proponują robić migrację do nowego feature).
ZI
Kurde, czyli Mordercza Opona się nie kwalifikuje :(
obscurity
@Zig: Mordercza Opona to dokładnie jeden z powodów po którym zdecydowałem że już nie oglądam takich filmów :D
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 7 godzin
0
obscurity napisał(a):

Java co prawda zaczyna mieć niektóre feature'y dodane kilkanaście lat temu do innych języków, ale w rzeczywistości znaczna część kodu tkwi na starych wersjach 8 czy 11 więc programiści javy dopiero za jakieś 20 lat będą mogli się pobawić "nowinkami" języka. Mimo że niby java stawia na wsteczną kompatybilność to z tego co widziałem praktycznie każdy projekt ma istotne problemy z podniesiem wersji.

z której na którą? java 9 dużo zmieniła w bebechach (tych nieustandaryzowanych, nieudokumentowanych oficjalnie szczegółach implementacyjnych nieprzeznaczonych do bezpośredniego użycia) i dlatego frameworki, które grzebią w tych bebechach mogą wymagać konkretnie javy 8. w pozostałych przypadkach, tzn. przesiadki z wersji x na y, gdzie zarówno x jak i y są >= 9, wielkich problemów nie powinno być.

gdyby javowe frameworki nie grzebały w bebechach nieprzeznaczonych do grzebania, tylko używały standardowego api, to problemu z upgrade'm javy by nie było. rzeczywistość jednak jest jaka jest. stąd java zmierza powoli w kierunku ograniczenia takich praktyk: https://openjdk.org/jeps/8305968 JEP draft: Integrity by Default.

innym problemem jest dynamiczna analiza i generowanie bajtkodu. ten czasem zmienia się z wersji na wersję i java nie daje tutaj oczywiście żadnych gwarancji kompatybilności wprzód, tzn. że stara biblioteka obsłuży nowy bajtkod. stąd potrzeba wbudowania w javę mechanizmów typu https://openjdk.org/jeps/457 JEP 457: Class-File API (Preview). z takim mechanizmem będzie łatwiej tworzyć frameworki, które nie powstrzymują przed upgradem javy, a jednocześnie dalej obrabiają bajtkod.

java 8 ma komercyjne wsparcie gdzieś około do końca 2030 roku, więc to 'odblokuje' ekosystem javy przed tym terminem, tzn. współczesny nacisk na aktualizacje bezpieczeństwa raczej wyeliminuje biblioteki uczepione porzuconej wersji javy.

tak czy siak, java idzie w kierunku coraz szybszego i sprawniejszego podnoszenia wersji, a ostatnim momentem, gdzie przejście na nową wersję było bardzo problematyczne, jest przejście z javy 8 na javę 9.


"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.
Zobacz pozostałe 2 komentarze
obscurity
praktycznie każdy framework trochę grzebie w bebechach. To ludzie mają nie używać frameworków?
Wibowit
to java 8 miała zaplanowane zakończone wsparcie w Marcu 2025 (stąd masowa migracja u mnie w firmie) ale przedłużono jej wsparcie do 2030 roku bo większość firm nie dała rady. Jak będzie trzeba to przedłużą znowu - teoretycznie java ma wsparcie w nieskończoność, jeśli odpowiednio dużo zapłacisz. dla konkretnej wersji javy liczba klientów używającej jej systematycznie spada, więc koszty utrzymania (per licencja) rosną i to prowadzi do podniesienia cen licencji, a dalej rzeczy są kształtowane przez prawa podaży i popytu (tzn. kiedyś wszyscy zrezygnują, bo ceny będą zaporowe)
Wibowit
praktycznie każdy framework trochę grzebie w bebechach. To ludzie mają nie używać frameworków? - w ukrytych (tzn. niedostępnych bezpośrednio) bebechach bez gwarancji kompatybilności wstecznej? w ekosystemie scali to bardzo rzadkie.
obscurity
może nie tyle ukrytych co takie "niskopoziomowe" frameworki często się dopinają do procesu buildowania i polegają na niszowych ficzerach
Wibowit
polegają na niszowych ficzerach - pokaż mi jakiś niszowy (i nieukryty) ficzer w javie, który nie ma kompatybilności wstecznej
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
0
somekind napisał(a):

No skoro każdy język imperatywny jest taki sam, to nie tylko C# to to samo, co Java, także np. C czy PHP. No i przede wszystkim JavaScript to to samo co Java, więc należy przeprosić wszystkie Panie z HR, które palnęły tę głupotę na rozmowach i w ogłoszeniach.

To nawet prawda. Wszystko zależy od tego jak szeroko patrzymy.
W porównaniu do prologa, Lisp itp. to wszystkie powyższe języki są mocno takie same.

Ale jak już weźmiemy te języki w izolacji to C# i Java są bardziej do siebie podobne niż do PHP, czy nawet do JS. Najbliżej będzie Javy i C# będzie C++, ale zasadnicza różnica to brak maszyny wirtualnej.

Twierdzenie na serio, że nie ma różnic, świadczy raczej o byciu tak w połowie drogi na szczyt na tym wykresie IQ score wklejonym parę postów wyżej. To, że nawet 90% mechanizmów czy koncepcji jest podobna, nie znaczy, że różnice nie są drastyczne.

Różnice są, ale to naprawdę niuanse.
Pisałeś, wcześniej że widziałeś różnice w stylu pisania javowców. Ja pracowałem w samej javie i widziałem różnice w stylu javowców :-) Z niektórymi naprawdę nie dawałem rady.

Dla mnie te jezyki różnią się niuansami.
Zasadniczo (jeśli chodzi o koncepcje) znajdziesz więcej rozbieżności w stylu kodowania między dwoma programistami Javy czy dwoma programistami C# niż między javowcem muszącym pisać w C#, a .Netowcem robiącym w Javie.

Kiedysz przepisywałem jeden serwis (webówka) z C# do Javy, serio bez problemu się w tym odnajdywałem i mógłbym to przepisać jeden do jednego.... niestety akurat ten C# był napisany dokładnie w tym javowym stylu, którego nie cierpie (czyli po prostu nie był to Haskell przebrany za C#).


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 8x, ostatnio: jarekr000000
Zobacz pozostałe 24 komentarze
GO
@jarekr000000: ale ty wszystko rozwiążesz, jesteś koksem, jedyne pytania są źle zadane, autor nie wie czego chce, często tak się zdarza.
GO
Nie no bieremy najdroższe whisky i pijemy, nigdy nie wydałęm 1000zł na gówna, ale raz na rok czy dwa mogę przepierdolić chętnie bym się nachlał jak świnia, ale mnie potem do pociągu wrzuć, żebym jakoś wrócił.
GO
Ja zawsze te najtańsze pije, bo się nie znam zbytnio,a ale też dobre.
obscurity
podobnie jak w C++ można pisać jak w C
somekind
Gratuluję, ja nawet po 10 latach nauki nie byłbym w stanie ugotować pizzy. To chyba możliwe tylko w dynamicznych językach.
marian pazdzioch
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 13 godzin
  • Postów:719
0
wiciu napisał(a):

to się ich w miesiąc nauczyłem i napisałem projekt od zera.

A potem świat musi się przez lata wozić z takim kodem napisanym przez gościa co się w miesiąc nauczył. Za każdym razem jak się ktoś w miesiąc nauczy - umiera kotek.

D3
  • Rejestracja:8 miesięcy
  • Ostatnio:8 miesięcy
  • Postów:7
0

To są właśnie tacy Technicy Magicy po botcampach, aby tylko szybko zarabiać na słabym kodzie. Nie czują pasji informatyki.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)