Dlaczego wybraliście C#?

Dlaczego wybraliście C#?
0

Czy pisaliście wcześniej w swojej karierze w Javie? I kiedy odkryliście, że c# to wasz język?

Pixello
  • Rejestracja:prawie 10 lat
  • Ostatnio:4 miesiące
  • Lokalizacja:Podkarpacie
  • Postów:448
3

Zawsze podświadomie odrzucało mnie od javy ;)

WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:11 minut
  • Postów:5107
0

Zaczynałem programowanie od C++ i miałem duże problemy z np skakaniem pomiędzy typami danych, w ogóle od pewnego momentu nie był zbyt noob-friendly

Googlując dostawałem wyniki dla C++ typu:

Kopiuj
atoi( str.c_str() )

lub

std::istringstream ss(thestring);
ss >> thevalue;

lub

    using boost::lexical_cast;
    using boost::bad_lexical_cast;

    std::vector<short> args;

    while(*++argv)
    {
        try
        {
            args.push_back(lexical_cast<short>(*argv));
        }
        catch(bad_lexical_cast &)
        {
            args.push_back(0);
        }
    }

Będę szczery: Przerażało mnie to trochę i postanowiłem wybrać

Kopiuj
Convert.ToInt32()

Int.Try/Parse()

Gdy odkryłem, ze w C# zamiast męczyć się z takimi rzeczami, to mogę robić coś, co działa i daje oczekiwane rezultaty (jakieś formsy, lub consolki śmigające w trayu i robiące tam coś), to od razu przyjemniej się uczyło/robiło coś

Dodatkowo Visual Studio(tak wiem, c++ też obsługuje) i MSDN+dotnetperls.com (do C++ używałem cplusplus.com i codeblocksa)

edytowany 16x, ostatnio: WeiXiao
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:8 minut
1
Pixello napisał(a):

Zawsze podświadomie odrzucało mnie od javy ;)

Dziwna sprawa, bo C# i Java są w końcu bardzo podobne. Gdybyś wybrał coś co nie przypomina Javy to by to miało sens. Np Python ma całkowicie inną składnię.


"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.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 6 godzin
0
Wibowit napisał(a):
Pixello napisał(a):

Zawsze podświadomie odrzucało mnie od javy ;)

Dziwna sprawa, bo C# i Java są w końcu bardzo podobne. Gdybyś wybrał coś co nie przypomina Javy to by to miało sens.

Podobne, ale to właśnie te różnice powodują, że mnie również Java nie smakuje.

abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
0

Ja mam dokładnie takie same spostrzeżenia jak @Azarien - niby C# i JAVA to rodzeństwo ale w javie nie potrafię się odnaleźć a c# przychodzi mi naturalnie. Nie wiem czym jest to spowodowane ale tak jest


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
N0
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Kraków
  • Postów:767
0

Nie wybrałem C#, to C# wybrał mnie :D zostałem jego wojownikiem ;)


Pomogłem? To dobrze :)
jarekczek
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Siemianowice Śląskie
  • Postów:500
0

Tak. C# się nie wybiera. Do C# możesz zostać popchnięty, bo masz Windowsa i na nim stawiasz pierwsze kroki, a Visual Studio jest bardzo fajne. Bo chcesz pisać aplikacje pod klientów na Windowsie. Bo stawiałeś w nim pierwsze kroki i już wszystko inne jest fe.

Jak chcesz pisać wieloplatformowo, jesteś linuxowcem - nie wybierzesz C#. Jak już znasz dobrze jedno i drugie - nie wybierzesz C#. C# to zamknięcie, Java to otwartość.

C# ma tylko jedną zaletę: var. Ale skoro w Javie przez tyle lat nie wprowadzili vara, to znaczy, że da się bez niego żyć.

A jeżeli już mam pisać pod Windowsa, to C# bardzo lubię. Visual Studio jest spoko.


Przeważnie ignoruję niezarejestrowanych użytkowników.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 6 godzin
0

Ja mam dokładnie takie same spostrzeżenia jak @Azarien - niby C# i JAVA to rodzeństwo ale w javie nie potrafię się odnaleźć a c# przychodzi mi naturalnie. Nie wiem czym jest to spowodowane ale tak jest

Bo C# ma properties, operatory, unsigned, wskaźniki, goto… wszystko co Java złem nazywa ;-)

E9
  • Rejestracja:ponad 13 lat
  • Ostatnio:10 miesięcy
  • Postów:395
0
jarekczek napisał(a):

Tak. C# się nie wybiera. Do C# możesz zostać popchnięty, bo masz Windowsa i na nim stawiasz pierwsze kroki, a Visual Studio jest bardzo fajne. Bo chcesz pisać aplikacje pod klientów na Windowsie. Bo stawiałeś w nim pierwsze kroki i już wszystko inne jest fe.

Jak chcesz pisać wieloplatformowo, jesteś linuxowcem - nie wybierzesz C#. Jak już znasz dobrze jedno i drugie - nie wybierzesz C#. C# to zamknięcie, Java to otwartość.

C# ma tylko jedną zaletę: var. Ale skoro w Javie przez tyle lat nie wprowadzili vara, to znaczy, że da się bez niego żyć.

A jeżeli już mam pisać pod Windowsa, to C# bardzo lubię. Visual Studio jest spoko.

Być może za 1-2 lata gdy ustabilizują .NET Core ten argument będzie inwalidą.

somekind
Ten argument jest inwalidą właściwie od dawna.
E9
Masz na myśli Mono?
somekind
Mam na myśli to, że od dawna znaczna część kodu jest otwarta, specyfikacja języka jest standardem ISO, i istnieją tysiące otwartoźródłowych bibliotek niezależnych od MS.
JU
  • Rejestracja:około 22 lata
  • Ostatnio:29 dni
  • Postów:5042
1

Zaczynałem od Basica w latach 90tych ;) Potem był Pascal, Delphi (oczywiście w międzyczasie trochę weba i C++). W międzyczasie zrobiłem kurs Suna z Javy ale jakoś ten język nigdy mi nie podchodził.

Co ciekawe, moje pierwsze podejścia do C# sprawiły, że nie lubiłem tego języka. Uważałem go za "zabawkę dla głupich amerykanów" :D Z czasem, jak wszedłem w niego głębiej, okazało się że to całkiem przyzwoite. I dzisiaj jest jednym z moich dwóch głównych języków. Znaczenie też miało darmowe środowisko. Poza tym jest stosunkowo prosty i plusem dla mnie było to, że (współ)autorem był gościu od Delphi. Przez co często widać podobieństwa tych dwóch języków (co mi się podoba, bo wieeele lat robiłem w Delphi).

edytowany 1x, ostatnio: Juhas
EP
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:122
0

Generalnie tak jak koledzy wyżej, pisałem w obu językach (chociaż nie ukrywam że w Javie raczej małe projekty) i to właśnie szczególiki w stylu braku var, właściwości, i wielu innych rzeczy o których na szczęście już zapomniałem, doprowadzały mnie do szaleństwa. Oczywiście jakbym dłużej posiedział to pewnie bym się przestawił, ale mimo wszystko pierwsze wrażenia były wybitnie negatywne.

Za to o multiplatformowość bym się nie martwił, nie wspominając o Mono z którym jeszcze nigdy nie miałem problemu, to Microsoft pracuje w tej kwestii dość ostro i jestem dobrej myśli. Trzymam kciuki, bo bardzo polubiłem Linuksa, ale nie aż tak żeby uczyć się tej, fuj, Javy :P


Wenn ist das Nunstück git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!
edytowany 1x, ostatnio: EntityPamerano
neves
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Kraków
  • Postów:1114
0

Wybrałem C# swego czasu ponad jave 5 bo:

  • bo konwencja preferuje nawiasy blokowe w jednej kolumnie, niż otwierający w tej samej linii.
  • bo miał Linqu
  • bo miał wsparcie dla propertisów
  • bo miał przystępniejszą dokumentacje online (msdn) od javy
  • bo winformsy wyglądały jak kopia formatek z delphiego :D
  • bo miał delegaty

edytowany 1x, ostatnio: neves
Azarien
pewne podobieństwa między Delphi a C# nie są przypadkowe https://pl.wikipedia.org/wiki/Anders_Hejlsberg
0

A jak z zarobkami/ofertami pracy porownujac te dwa jezyki? Na podobnym stopniu? Po studiach w wawie troche umiejac da rade znalezc robote dla juniora?

FP
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 7 lat
  • Postów:132
2

"C# to zamknięcie, Java to otwartość."

Zależy jak definiować te określenia.
Jeżeli wprost... to na jest odwrót ;) C# ma specyfikacje ISO oraz ECMA ... a Java nie ma.
Dodam asekurując się... Być może coś się zmieniło bo od 4-5 lat nie obserwuje Javy.

To popularne stwierdzenie, ale wynika z faktu że ludzie źle interpretują słowo otwarty.
Otwarty nie znaczy że na wiele platform firma wydała sdk/maszynę wirtualna tylko czy jest dostępna specyfikacja,
tak aby 3-ci podmiot mógł takie coś napisać.

vpiotr
A coś w Javie nie jest oparte o specyfikacje? Lista dostępnych JVM-ek jest dość długa: https://en.wikipedia.org/wiki/List_of_Java_virtual_machines
FP
przyznam się że nie wiem; tylko ten fakt mi utknął w głowie ze C# ma zarówno specyfikacje ISO i ECMA, a Java nie.
FP
natomiast Jave szanuje, ba nawet uważam ze jest lepsza do nauk programowania obiektowego niż C# :) Ale to C# bardziej lubię i w nim pracuje zawodowo
0

Zacząłem naukę c# i javy. Uczyłem się mniej więcej równolegle i zrezygnowałem z Javy, język niby fajny, pracy niby więcej, ale jakoś ciezkawo mi się pisalo.

W c# jakos się "zakochalem" i teraz szukam pracy jako programista. ;)

0

A z zarobkami jak jest, .netowcy troche mniej chyba co?

Ktos
Bo Javowcy mają dodatek za pracę w trudnych warunkach.
jarekczek
Wg raportu Haysa 2017 jest to 0-10% na korzyść Javy. Np. najczęściej oferowana stawka dla deva 3-5 lat to 100/90 na B2B. Dla seniora różnice ledwo wyczuwalne.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:8 minut
4
fprogrammer napisał(a):

"C# to zamknięcie, Java to otwartość."

Zależy jak definiować te określenia.
Jeżeli wprost... to na jest odwrót ;) C# ma specyfikacje ISO oraz ECMA ... a Java nie ma.
Dodam asekurując się... Być może coś się zmieniło bo od 4-5 lat nie obserwuje Javy.

To popularne stwierdzenie, ale wynika z faktu że ludzie źle interpretują słowo otwarty.
Otwarty nie znaczy że na wiele platform firma wydała sdk/maszynę wirtualna tylko czy jest dostępna specyfikacja,
tak aby 3-ci podmiot mógł takie coś napisać.

Odleciałeś w kosmos.

Po pierwsze Java ma pełne specyfikacje języka oraz maszyny wirtualnej: https://docs.oracle.com/javase/specs/

Po drugie Java ma https://en.wikipedia.org/wiki/Technology_Compatibility_Kit który sprawdza czy dana implementacja Javy jest zgodna ze standardami.

Po trzecie to właśnie Microsoft ma problemy z dochowaniem standardów
https://en.wikipedia.org/wiki/Microsoft_Java_Virtual_Machine#Sun_vs._Microsoft

In October 1997, Sun Microsystems, the creator of Java, sued Microsoft for incompletely implementing the Java 1.1 standard.[4]

Microsoft, wykorzystując swoją dominującą pozycję na rynku próbował przepchnąć swoją niespełniającą standardów implementację Javy jako nowy "standard". Swego czasu pojawiało się trochę programów wymagających dokładnie Javy od Microsoftu i niedziałających na oficjalnej Javie. Jest to jeden z przykładów zastosowania strategii https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish

Jakie są praktyczne zalety posiadania specyfikacji ISO (względem posiadania oficjalnej dokumentacji w ogóle) czy otwartego kodu .NETa? Ja nie widzę żadnych, no chyba że zalety z punktu widzenia Microsoftu. Lista dostępnych JVMek niezależnych od Oracle'a jest długa, natomiast ZTCW obecnie wszystkie implementacje CLRa są w rękach Microsoftu.

Po czwarte otwartość Javy polega też na tym, że nie tylko Oracle ma znaczący wpływ na rozwój platformy. Dla przykładu system modułów w nadchodzącej Javie 9 został przerobiony ponieważ komitet złożony z delegatów z różnych firm i środowisk stwierdził, że mu się nie podoba i Oracle musiało go poprawić. Do poczytania np tutaj: https://www.infoq.com/news/2017/07/jsr-376-approved Tego typu komitety i głosowania są praktykowane od 1998 roku: https://en.wikipedia.org/wiki/Java_Community_Process

Po piąte platforma Java zostanie wyposażona w wydajne wykonywanie JavaScriptu, Pythona, R, Ruby, bajtkodu LLVMa oraz w łatwe tworzenie nowych języków na JVMa: http://www.oracle.com/technetwork/oracle-labs/program-languages/overview/index.html https://github.com/graalvm
GraalVM jest tworzony po to, by móc niskim kosztem tworzyć wydajne implementacje dowolnych języków - wystarczy zaimplementować tłumaczenie z kodu źródłowego (bądź pośredniego) do ustandaryzowanego AST, a GraalVM zajmie się JITowaniem tego do wydajnego kodu maszynowego. Ponadto dostępne są z automatu wszelkie bajery z platformy Java, a więc np wydajne Garbage Collectory czy rozbudowane zestawy narzędzi do profilowania, debugowania, etc


"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 4x, ostatnio: Wibowit
KR
strzelam, że ZTCW = AFAIK
Patryk27
Przecież wystarczy wpisać ZTCW w Google...
WeiXiao
Obstawiałem, że to jakiś C#-owy skrót i szukałem pod "C# ZTCW" Dzięki :P
FP
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 7 lat
  • Postów:132
2
Wibowit napisał(a):

Odleciałeś w kosmos.
.....

Bardzo Pan rozszerzył moja wiadomość.
Nadmienię jeszcze raz, że nie interesuje się Java od 5-8 lat wiec mogę się mylić.

Nie wnikałem co daje, a co nie daje dokument standaryzacyjny ISO i ECMA...
tylko ze C# go zdobył a Java nie ma. Koniec. Tyle.

Jeżeli się pomyliłem proszę mnie sprostować.

Pozdrawiam

0

Wybrałem c#/.net kilka lat temu ze względu na łatwość wystartowania w tym środowisku. Instalujemy Visual Studio, tworzymy projekt z szablonu i możemy działać. Bez zbędnego instalowania bibliotek, skomplikowanych IDE itp. Super sprawa dla żółtodzioba który dopiero zaczyna z programowaniem. Nabrałem doświadczenia i teraz za wszelką cenę próbuję uciec ze "stodoły" Microsoftu. Zamknięcie na jedną platformę (tak tak, aspnetcore jest wieloplatformowe, powodzenia jeśli ktoś w to wierzy), jeden słuszny IDE będący ogromną krową wywalającą 15x dziennie i programowanie obiektowe/ statyczne typowanie jako rozwiązanie każdego problemu programistycznego. Do tego ten nieszczęsny typescript który jest ładowany w każdy nowy projekt. Aktualnie nieco zmieniłem zdanie na temat tej platformy - świetnej dla 100 juniorów budujących system do którego kodu lepiej nie zaglądać. Niestety znalezienie pracy w językach typu Elixir graniczy teraz z cudem, dlatego pewnie przejdę na javascript. Tak, po latach z .net uważam że javascript jest lepszym rozwiązaniem:D

0

Nieposkromiony Polityk - dobry hipokryta :D

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około godziny
  • Lokalizacja:Wrocław
7

Ja właściwie nie wybierałem, zacząłem pisać na studiach i tak zostało. Na początku podobała mi się łatwość tworzenia aplikacji okienkowych na Windowsa i myślałem, że będę się tym zajmował zawodowo. No i w sumie na początku tak było, ale szybko dopadła mnie rzeczywistość.

Zmiana z C# na Javę to byłyby dla mnie co najmniej trzy kroki wstecz. Ludzie, którzy twierdzą, że te języki są podobne stanęli w rozwoju jakieś 16 lat temu. Jedyne co je łączy to te głupie klamerki jako first-class citizen.
Java była (no i jest nadal uboga): brak generyków w czasie wykonywania, lambd, metod rozszerzających, inferencji typów, właściwości i wielu innych małych detali (jak nawet głupie przeciążanie operatorów, dzięki któremu string można porównywać w sposób intuicyjny), jakieś zamotany system typów z rozróżnieniem na klasy i prymitywy, wymuszana obsługa wyjątków. Owszem, to nie są może cechy krytyczne, ale są ładne i przydatne. A jeśli ktoś się upiera, że wygląd kodu nie ma znaczenia, to niech pisze w brainfucku.
No i przeciw Javie przemawiały jeszcze dwie rzeczy: Eclipse i NetBeans.

Teraz Java niby trochę nadgoniła, część braków składniowych zastępują zewnętrzne narzędzia, ale i tak jest zacofana. Co też ma swoje zalety - jest łatwiejsza dla początkujących, C# niedługo będzie chyba bardziej skomplikowany niż C++, a już teraz ma wiele śmierdzących ficzerów (np. query syntax czy jednolinijkowe metody jako wyrażenia). No, ale z drugiej strony uniwersalność języka jest większa - nie ma chyba zbyt wielu języków, które wspierają pattern matching i wskaźniki jednocześnie?

Zmiana z .NET na Javę to mógłby być krok naprzód. Wiadomo, platforma Javy jest starsza i od początku była otwarta, więc po pierwsze ma większą społeczność, po drugie ma więcej bibliotek, po trzecie są to też bardziej dojrzałe rozwiązania. No i potencjalnie przydatna jest możliwość wyboru wielu implementacji samej maszyny wirtualnej.
Pod tym względem .NET ma sporo do nadrobienia, ale idzie raczej ku dobremu. Wszystko, co najważniejsze jest już otwarte, społeczność ma wpływ na kształt produktów, a nawet Google i RedHat są członkami .NET Foundation. Od dawna zresztą nie jest tak, że tylko Microsoft dostarcza narzędzia i biblioteki, do wszystkiego są otwarte/darmowe alternatywy.

Wielu mówi, że w Javie więcej się zarabia... tylko przy okazji zapominają wspomnieć, że w takich przypadkach nie chodzi o język, ale o wiedzę i umiejętności, których większość przeciętnych programistów nie ma (np. HFT, implementacja systemów baz danych). Przeciętni programiści dostaną podobną kasę, a smutna prawda jest taka, że teraz więcej się zarabia w JavaScript niż w Javie czy C#.

A - no i Microsoft jest jednak zdecydowanie bardziej twórczy, skoro potrafi nazwać platformę inaczej niż język. W Sunie tego nie umieli. :P

Fanbojów Javy cierpiących na dysonans poznawczy uprasza się o przemyślenie ewentualnych odpowiedzi.

Zobacz pozostałe 7 komentarzy
somekind
@Wibowit: używałeś IntelliJ IDEA w 2005?
Wibowit
Wtedy jeszcze nie używałem Javy.
somekind
A jak zacząłeś pisać w Javie to od razu w tym IDE?
Wibowit
Nie. W NetBeansie, bo tego używaliśmy na zajęciach. Visual Studio też próbowałem (do C++), ale zupełnie mi nie podchodziło. NetBeans był spoko, ale przeniosłem się na IntelliJa (ale to po kilku latach dopiero), bo miał więcej funkcjonalności.
somekind
No więc sam widzisz. W 2005 roku, kiedy to internet 128kbps to było dobre łącze, Google na zapytanie o java ide zwracało Eclipse i NetBeans. Wydaje mi się, że IntelliJ IDEA zaczął zyskiwać na popularności dopiero w okolicach 2010 roku.
0

@somekind czy ja wiem czy w js sa wieksze? W Polsce 60-70% ogłoszeń to jakieś stronki. A dobry front/js musi mieć sporą wiedzę, albo jak już wchodzi w node'a to w sumie już jest backendowcem i często ma styczność z innymi językami.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 6 godzin
2
somekind napisał(a):

A - no i Microsoft jest jednak zdecydowanie bardziej twórczy, skoro potrafi nazwać platformę inaczej niż język. W Sunie tego nie umieli. :P

Bo .NET jest platformą powstałą z myślą o wielu językach, a nie o jednym.
W Visual Studio 2002 od razu był C#, VB.NET i Managed C++ (nie mylić z C++/CLI).

edytowany 1x, ostatnio: Azarien
vpiotr
W 2002 był też np. J#.
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:120
0
Nieposkromiony Polityk napisał(a):

Wybrałem c#/.net kilka lat temu ze względu na łatwość wystartowania w tym środowisku. Instalujemy Visual Studio, tworzymy projekt z szablonu i możemy działać. Bez zbędnego instalowania bibliotek, skomplikowanych IDE itp. Super sprawa dla żółtodzioba który dopiero zaczyna z programowaniem. Nabrałem doświadczenia i teraz za wszelką cenę próbuję uciec ze "stodoły" Microsoftu. Zamknięcie na jedną platformę (tak tak, aspnetcore jest wieloplatformowe, powodzenia jeśli ktoś w to wierzy), jeden słuszny IDE będący ogromną krową wywalającą 15x dziennie i programowanie obiektowe/ statyczne typowanie jako rozwiązanie każdego problemu programistycznego. Do tego ten nieszczęsny typescript który jest ładowany w każdy nowy projekt. Aktualnie nieco zmieniłem zdanie na temat tej platformy - świetnej dla 100 juniorów budujących system do którego kodu lepiej nie zaglądać. Niestety znalezienie pracy w językach typu Elixir graniczy teraz z cudem, dlatego pewnie przejdę na javascript. Tak, po latach z .net uważam że javascript jest lepszym rozwiązaniem:D

Pisać można w VS Code.

Możesz uargumentować, dlaczego JS > TS? Bo mnie właśnie TS przekonał do tego, żeby trochę nadgonić C# i ogólnie rozwiązania od MS.

ZD
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 7 lat
  • Postów:99
0
Nieposkromiony Polityk napisał(a):

Wybrałem c#/.net kilka lat temu ze względu na łatwość wystartowania w tym środowisku. Instalujemy Visual Studio, tworzymy projekt z szablonu i możemy działać. Bez zbędnego instalowania bibliotek, skomplikowanych IDE itp. Super sprawa dla żółtodzioba który dopiero zaczyna z programowaniem. Nabrałem doświadczenia i teraz za wszelką cenę próbuję uciec ze "stodoły" Microsoftu. Zamknięcie na jedną platformę (tak tak, aspnetcore jest wieloplatformowe, powodzenia jeśli ktoś w to wierzy), jeden słuszny IDE będący ogromną krową wywalającą 15x dziennie i programowanie obiektowe/ statyczne typowanie jako rozwiązanie każdego problemu programistycznego. Do tego ten nieszczęsny typescript który jest ładowany w każdy nowy projekt. Aktualnie nieco zmieniłem zdanie na temat tej platformy - świetnej dla 100 juniorów budujących system do którego kodu lepiej nie zaglądać. Niestety znalezienie pracy w językach typu Elixir graniczy teraz z cudem, dlatego pewnie przejdę na javascript. Tak, po latach z .net uważam że javascript jest lepszym rozwiązaniem:D

A Mono, GTK#, Xamarin to co? :P

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:8 minut
0
fprogrammer napisał(a):
Wibowit napisał(a):

Odleciałeś w kosmos.
.....

Bardzo Pan rozszerzył moja wiadomość.
Nadmienię jeszcze raz, że nie interesuje się Java od 5-8 lat wiec mogę się mylić.

Nie wnikałem co daje, a co nie daje dokument standaryzacyjny ISO i ECMA...
tylko ze C# go zdobył a Java nie ma. Koniec. Tyle.

Jeżeli się pomyliłem proszę mnie sprostować.

Pozdrawiam

Tak. ZTCW to C# ma ISO i ECMA, a Java nie.

Microsoft "ustandaryzował" nawet swój format OOXML, tyle że sam ma problem z dostosowaniem się do niego:
https://en.wikipedia.org/wiki/Office_Open_XML

Kopiuj
Starting with Microsoft Office 2007, the Office Open XML file formats have become the default file format[4] of Microsoft Office.[5][6] However, due to the changes introduced in the Office Open XML standard, Office 2007 is not wholly in compliance with ISO/IEC 29500:2008.[39] Office 2010 includes support for the ISO/IEC 29500:2008-compliant version of Office Open XML, but it can only save documents conforming to the transitional, not the strict, schemas of the specification.[40][41] Note that the intent of the ISO/IEC is to allow the removal of the transitional variant from the ISO/IEC 29500 standard.[41]

Sam standard zawiera zaskakujące znaczniki:

Kopiuj
These settings (including element with names such as autoSpaceLikeWord95, footnoteLayoutLikeWW8, lineWrapLikeWord6, mwSmallCaps, shapeLayoutLikeWW8, suppressTopSpacingWP, truncateFontHeightsLikeWP6, uiCompat97To2003, useWord2002TableStyleRules, useWord97LineBreakRules, wpJustification and wpSpaceWidth) were the focus of some controversy during the standardisation of DIS 29500.[26] As a result, new text was added to ISO/IEC 29500 to document them.[27]

Wygląda po prostu na to, że MS powyjmował słownictwo z kodu Worda i skleił z tego standard.

Wracając do otwartości .NETa to na stronie https://en.wikipedia.org/wiki/Common_Language_Infrastructure jest napisane:

Kopiuj
As of July 2009,[3] Microsoft added C# and CLI to the list of specifications that the Microsoft Community Promise applies to,[4] so anyone can safely implement specified editions of the standards without fearing a patent lawsuit from Microsoft. (...)
In 2012, ECMA and ISO published the new edition of the CLI standard,[1][2] which is not covered by the Community Promise.[4]

Hmmm.....

Microsoft gdyby mógł to by ze swojego Internet Explorera uczynił standard.

Odniosę się jeszcze do wypowiedzi somekinda:

jakieś zamotany system typów z rozróżnieniem na klasy i prymitywy

W .NETu też jest rozróżnienie na klasy i prymitywy. int jest prymitywem, nie dziedziczy po object. Do konwersji inta na object i z powrotem wymagane więc są boxing i unboxing dokładnie jak w Javie. Opis np tutaj: https://msdn.microsoft.com/pl-pl/library/yz2be5wk(v=vs.90).aspx

O ile w Javie autoboxing działa płynnie w obie strony:

Kopiuj
Integer a = 6;
int b = 7;
a = b;
b = a;

o tyle C# wymaga wprost rzutowania:

Kopiuj
object a = 6;
int b = 7;
a = b;
b = (int) a;

To co odróżnia Javę i C# w kwestii obsługi prymitywów to to, że w C# można sparametryzować klasy prymitywami. W Javie będzie można to zrobić jeśli zostanie zaimplementowany Project Valhalla


"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.
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około godziny
  • Lokalizacja:Wrocław
2

To co odróżnia C# od Javy w kwestii prymitywów, to to, że w C# nie ma takiej koncepcji. W sensie pewna grupa typów jest czasem tak określana, ale to nie jest jakiś oddzielny rodzaj typów, który się czymś specyficznym cechuje.
W C# jest int, który jest aliasem na System.Int32 i jest to jeden typ. Nie ma żadnej duplikacji jak w Javie i podziału na int i Integer.

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:8 minut
0

https://ideone.com/dCt0T2

Kopiuj
using System;
 
public class Test
{
	public static void Main()
	{
		object a = 5;
		object b = 5;
		System.Console.WriteLine(a == b);
		System.Console.WriteLine(a.Equals(b));
		System.Console.WriteLine(a.GetType().Name);
	}
}

Wyjście:

Kopiuj
False
True
Int32

Jak widać da się zapakować inta (prymityw) w obiekt. Ten obiekt ma swoją tożsamość oraz nienadpisany operator porównania (oryginalny operator porównania z bazowej klasy object porównuje właśnie tożsamość) - z tych dwóch faktów wynika False na wyjściu. Metoda Equals jest jednak nadpisana - wychodzi na to, że duży int w C# działa dokładnie tak samo jak duży int w Javie.

A tu jest przypadek gdzie koleś się naciął na zapakowane prymitywy w C#: https://stackoverflow.com/questions/6205029/comparing-boxed-value-types
Zamiast operatora == musiał więc użyć metody Equals i wtedy zadziałało.

Panie somekindzie: nie znasz podstaw C# :]


"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 4x, ostatnio: Wibowit
Azarien
int w C# nie jest prymitywem, jest typem wartościowym (value type) w przeciwieństwie do typów referencyjnych (reference type). w Javie nie istnieje koncept “value type”, zamiast tego wymyślono inta prymitywnego i inta opakowanego. w C# ten drugi rzadko jest potrzebny, dlatego standardowo nawet nie ma takiej klasy, można ewentualnie boxować rzutując inta na object.
Wibowit
Kwestia nazewnictwa. int nieopakowany z C# to to samo co niepakowany int z Javy, a opakowany int z C# to mniej więcej to samo co Integer z Javy.
neves
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Kraków
  • Postów:1114
5
Wibowit napisał(a):

Odniosę się jeszcze do wypowiedzi somekinda:

jakieś zamotany system typów z rozróżnieniem na klasy i prymitywy

W .NETu też jest rozróżnienie na klasy i prymitywy. int jest prymitywem, nie dziedziczy po object. Do konwersji inta na object i z powrotem wymagane więc są boxing i unboxing dokładnie jak w Javie. Opis np tutaj: https://msdn.microsoft.com/pl-pl/library/yz2be5wk(v=vs.90).aspx

W .net jest rozróżnienie na typy wartościowe i typy referencyjne, oba typy dziedziczą po object. Int jest typem wartościowym. Boxing i unboxing jest jedynie szczegółem implantacyjnym który dzielą zarówna typy referencyjne jak i prymitywy. Obsługa typów prostych została lepiej zaimplementowana w C# i już od lat możemy się cieszyć generykami w C# bez boxingu, a wy jak sam zauważyłeś ciągle na to czekacie.

Wibowit napisał(a):

Jak widać da się zapakować inta (prymityw) w obiekt. Ten obiekt ma swoją tożsamość oraz nienadpisany operator porównania (oryginalny operator porównania z bazowej klasy object porównuje właśnie tożsamość) - z tych dwóch faktów wynika False na wyjściu. Metoda Equals jest jednak nadpisana - (..)

Operatorów się nie nadpisuje, operatory się przeciążą w c#, wybór operatora jest na podstawie typu zmiennej, a nie typu obiektu na który ta zmienna wskazuje.

Wibowit napisał(a):

wychodzi na to, że duży int w C# działa dokładnie tak samo jak duży int w Javie.

tak jak somekind juz wcześniej wyjaśnił int jest tylko aliasem na Int32, zamień w tym swoim kodzie objecty na Int32, i się okaże że duży int działa zupełnie inaczej niż ten Javowy ;)

Edytka:
Jako gratis, int w C# jest obiektem więc możemy zrobić sobie chociażby takie coś, java tak nie potrafi bo ma prymitywy :D:
5.ToString();


edytowany 1x, ostatnio: neves
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)