Java czy C#

0

To tak jak z platformami systemowymi.
Windows miał Pascal/C#
Apple miało Objective-C/Swift
A Linux C/C++
JVM jest pod wszystkie systemy, a taki Rust chyba nie jest kojarzony z żadnym systemem. No może z tym FirefoxOS ;)

Wibowit
abstrahując od reszty to Rust jest zbyt młody by być kojarzonym z czymkolwiek innym niż twórcami, czyli Mozillą
BK
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:41
1

Nowe technologie to przyszłość! Nie ma sensu brnąć w stare strupy! Widać to chociażby po tym, że żadna firma nie używa SAPa i wykorzystuje tylko nowoczesne oprogramowanie

0

Dlatego Polska ma najwięcej programistów Javy, bo takie jest zacofanie Januszy w rozwoju. Jak już czegoś się raz nauczą, to nie ma przeproś na zmiany, najwięcej Javy i PHP w Polsce. W w takich cywilizowanych krajach jak UK, Niemcy, USA, Rosja ludzie są kreatywni, wymyślają nowe języki programowania, technologie. A u nas jak to u nas, taka mentalność.

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

Polska jest tanią siłą roboczą, ale programiści Javy najwięcej zarabiają.


"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.
FE
Jeszcze nie widziałem żadnego raportu który by mówił, że Javowcy najwięcej zarabiają. Od C# to i owszem, ale też bez szału.
Wibowit
jak patrzę na statystyki z polskiego rynku to zawsze Java jest na topie, np na stronie wynagrodzenia.pl
Wibowit
biorąc jeszcze pod uwagę, że jest spora podaż niedzielnych Javowców co zaniża średnią to będąc dobrym programistą można w Javce sporo zarobić
Wibowit
Innymi słowy: niestety raporty z wynagrodzeń nie mówią ile trzeba włożyć wysiłku, by zarabiać średnią dla danego języka, a to jest bardzo ważny czynnik, który wpływa na osiągalne zarobki.
0

Ciekawe dlaczego nie może powstać kompilowany język programowania z odśmiecaniem pamięci i bez wskaźników. Go, Rust i Swift nie do końca pasują jako odpowiedź na to pytanie. Pisanie, że język oparty o maszynę wirtualną jest przenośny i kompatybilny wstecz, jest nie do końca prawdziwe.

koszalek-opalek
"kompilowany język programowania z odśmiecaniem pamięci i bez wskaźników" -- jest taki, Haskell się nazywa...
jarekr000000
Dobre pytanie to dlaczego Go, Rust i Swift nie pasują, bo może nic Ci nie pasuje po prostu.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:8 minut
0

Ciekawe dlaczego nie może powstać kompilowany język programowania z odśmiecaniem pamięci i bez wskaźników.

Bez wskaźników nie da się programować niczego nietrywialnego. Muszą być pod jakąś postacią - chociażby referencji, bo to w sumie tylko inna nazwa na wskaźniki.

Zresztą nawet gdyby jakiś język udawał, że wskaźników nie ma to i tak po zejściu na poziom kodu maszynowego widać by było mnóstwo wskaźnikó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 1x, ostatnio: Wibowit
koszalek-opalek
  • Rejestracja:około 9 lat
  • Ostatnio:około 2 lata
0
Wielki Kogut napisał(a):

Ciekawe dlaczego nie może powstać kompilowany język programowania z odśmiecaniem pamięci i bez wskaźników. Go, Rust i Swift nie do końca pasują jako odpowiedź na to pytanie. Pisanie, że język oparty o maszynę wirtualną jest przenośny i kompatybilny wstecz, jest nie do końca prawdziwe.

Napisałem o Haskellu w komentarzu, ale to się pewnie nie spodoba... :)

Natomiast możesz spokojnie programować z odśmiecaniem pamięci (pod postacią RAII) i bez wskaźników (w sensie surowych, bo o to Ci chodzi?) w C++11.

Wibowit
RAII to nie żadne odśmiecanie
0

A w C++17 i D też tak można programować? Właściwie to C++17 wprowadził jakieś ułatwienia do tego języka, czy bardziej namącił? Bjarne Stroustrup powiedział o standardzie C++11, ze to jak by nowy język programowania, ciekawe co sądzi o tych nowszych standardach C++17, 20, czy macie jakieś jego uwagi na ten temat?

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:17 minut
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
1
Wibowit napisał(a):

Ciekawe dlaczego nie może powstać kompilowany język programowania z odśmiecaniem pamięci i bez wskaźników.

Bez wskaźników nie da się programować niczego nietrywialnego. Muszą być pod jakąś postacią - chociażby referencji, bo to w sumie tylko inna nazwa na wskaźniki.

Piszesz nieściśle. To akurat wskaźniki są rodzajem referencji. Zrypanym, niebezpieczym i przeważnie niepotrzebnym.
Nawet w wiki jest takie sformułowanie:

The feature that separates pointers from other kinds of reference is that a pointer's value is meant to be interpreted as a memory address, which is a rather low-level concept.

https://en.wikipedia.org/wiki/Pointer_(computer_programming)

Zresztą nawet gdyby jakiś język udawał, że wskaźników nie ma to i tak po zejściu na poziom kodu maszynowego widać by było mnóstwo wskaźników.

To akurat trochę demagogia. Po zejściu na poziom maszynowy możemy mieć wszystko, ważne, że z punktu piszącego w danym jezyku tego syfu nie widać.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 3x, ostatnio: flowCRANE
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 4 godziny
0
Wielki Kogut napisał(a):

A w C++17 i D też tak można programować? Właściwie to C++17 wprowadził jakieś ułatwienia do tego języka, czy bardziej namącił? Bjarne Stroustrup powiedział o standardzie C++11, ze to jak by nowy język programowania, ciekawe co sądzi o tych nowszych standardach C++17, 20, czy macie jakieś jego uwagi na ten temat?

Uwagi są do wygóglania. Stroustrup jest cały czas zaangażowany w prace nad nowymi standardami.

SL
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Bydgoszcz
0

Walka między C# a Javą jest jak między katolicyzmem a prawosławiem - niby to samo ale inne. I wcale nie jest to walka, jedno i drugie ma swoich fanatyków i przeciwników.
Ważne że jedno i drugie pozwala te same cele.

a tak na poważnie:

  • Poziom książek i artykułów w necie wskazuje że w społeczność Javy jest bardziej dojrzała, mocniejsza merytorycznie. Dla .Neta ilość artykułów o architekturze, o jakiś wewnętrznych szczegółach itd wydaje się mniejsza. Jasne że to wynika z stażu platformy i programistów w danym języku piszących.
  • swego czasu było widać migracje Java -> .Net, choćby za sprawą przepisania niektórych bibliotek Javy do C#, największym przykładem jest choćby nHibernate. Teraz to się chyba ustabilizowało.
  • C# ciągle się rozwija. A nowa Java wydana została z dużym opóźnieniem i społeczeństwo się mocno pokłóciło swego czasu. Spodziewano się też trochę więcej nowości.
  • dotnet core, trochę przetasował na rynku, ponownie niektórzy zaczęli patrzeć na c#.
  • Java ma ciągle mocną niszę i będzie mocna jeszcze przez wiele lat.

Bydgoszcz, Senior .Net Developer
Wibowit
Java ma niszę? WTF? Raczej zostawia nisze dla innych.
SL
Tak... Java ma ogromną niszę :D
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 4 godziny
2

Java czy C#

Java!

Nie no, żartuję.

jarekczek
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Siemianowice Śląskie
  • Postów:500
0

To tak jakbyś na forum zimowym zapytał, czy lepsza deska czy narty.


Przeważnie ignoruję niezarejestrowanych użytkowników.
Zobacz pozostały 1 komentarz
jarekczek
Zapomniałem dodać, że ja na nartach też mam frajdę, ale zdecydowanie wolę parapet :)
litrmleka
Wiadomo, że deska, no i wiadomo, że C# ;)
Szalony Programista
Szalony Programista
Tylko deska, na nartach ludzie podświadomie się uczą, a deska jest logiczna, bo zwykle późno się na nią wchodzi.
Szalony Programista
Szalony Programista
Bo narty są ostre i można zamiast deski używać do krojenia.
WeiXiao
@jarekczek: hah. Myślałem, że tobie chodziło o "deskorolkę" vs "narty" na forum zimowym, że jakoby 4p było stronnicze względem javy/c#. Ops
0

Dobrze że już nie powstaje trzecia maszyna wirtualna. Z racji tego, że używam system GNU/Linux to jestem po stronie języków kompilowanych typu Rust.

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

Tak piszecie, że c# się szybko rozwija i w sumie nie czułem tego.

wchodzę patch notes c# 7.1/7.2, a tu taka niespodzianka :D

Kopiuj
While learning C#, most of the time, we create console apps. In the scenarios, while testing code for the async method, we had to write some additional logic. We normally had to write boilerplate as follows:
Kopiuj
public static void Main()
{
    MainAsync().GetAwaiter().GetResult();
}

private static async Task MainAsync()
{
    ... // Main body here
}
Kopiuj
//OLD way (before C#7.1)
static int Main(string[] args)
{
    var fruits = Fruit.GetFruitsAsync().GetAwaiter().GetResult();
    //Do Some work

    //return exit code
    return 0;
}
Kopiuj
Luckily, in C#7.1, the main method can be async, so in here, our code will now look more similar to the normal async methods as follows
Kopiuj
static async Task Main(string[] args)
{
    var fruits = await Fruit.GetFruitsAsync();

    //Do Some work
}

https://www.codeproject.com/Articles/1228437/What-is-New-in-Csharp-Csharp

edytowany 6x, ostatnio: WeiXiao
Zobacz pozostałe 4 komentarze
Wibowit
W NetBeansie wpisywałem "main", dawałem Taba i dostawałem "public static void main(String[] args) {}". Nie można podobnych skrótów zrobić dla C#, np "amain" + Tab?
somekind
Można robić snippety, ale w tym przypadku jest to obejście, a nie rozwiązanie.
Azarien
@Wibowit: tutaj problemem nie jest public static void main, tylko to że żeby wywołać funkcję asynchroniczną musisz dodać do wywołania .GetAwaiter().GetResult(). do każdego wywołania. albo w main w ten sposób wywołać jakieś np. MainAsync i w tej funkcji już normalnie. tak, dałoby się snippetem.
Wibowit
Rozwiązanie, ale czego? Jaki jest problem? Jeśli problem to konieczność wklepywania znaków podczas pisania hello worldów, to wstawki rozwiązują sprawę.
WeiXiao
@Wibowit: main nie mógł być "async" i przykładowym obejściem było dodanie "drugiego maina" który był po prostu wywołany z tego pierwsze. trochę dziwne, ale zostało to 'naprawione'
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:8 minut
0

Dobrze że już nie powstaje trzecia maszyna wirtualna.

W Oracle powstaje Graal VM: https://github.com/oracle/graal - uber JIT do wszelakich języków, zarówno popularnych jak i eksperymentalnych.

Poza tym jaka znowu trzecia? Każdy silnik JavaScriptu to VMka - masz więc co najmniej 4 popularne VMki do JSa: V8 w Chrome, SpierMonkey w Firefoksie, NItro (?) w Safari i Chakra w IE. Mało tego - ludzie podniecają się lekkością i szybkością GUI napisanego w JavaScripcie - a ta szybkość jest właśnie dzięki dopracowanym VMkom (no i silnikom CSS, ale to już zależy co dominuje: ciężkie CSSy czy ciężkie JSy).


"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 1x, ostatnio: Wibowit
Szalony Programista
Szalony Programista
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 4 lata
  • Postów:227
0

Na dzień dzisiejszy w javie i c# praktykuje się czynności masochistyczne i tak raczej długo pozostanie...

koszalek-opalek
  • Rejestracja:około 9 lat
  • Ostatnio:około 2 lata
0
Wibowit napisał(a):

Dobrze że już nie powstaje trzecia maszyna wirtualna.

W Oracle powstaje Graal VM: https://github.com/oracle/graal - uber JIT do wszelakich języków, zarówno popularnych jak i eksperymentalnych.

Poza tym jaka znowu trzecia? Każdy silnik JavaScriptu to VMka - masz więc co najmniej 4 popularne VMki do JSa: V8 w Chrome, SpierMonkey w Firefoksie, NItro (?) w Safari i Chakra w IE. Mało tego - ludzie podniecają się lekkością i szybkością GUI napisanego w JavaScripcie - a ta szybkość jest właśnie dzięki dopracowanym VMkom (no i silnikom CSS, ale to już zależy co dominuje: ciężkie CSSy czy ciężkie JSy).

No i Python ma swoje maszyny wirtualne... Tam też jest bajtkod wykonywany przez VM.

WO
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:1
0

Hej, ja właśnie szukam takich Januszy do współpracy w projekcie.

Zakręcony Kura napisał(a):

Dlatego Polska ma najwięcej programistów Javy, bo takie jest zacofanie Januszy w rozwoju. Jak już czegoś się raz nauczą, to nie ma przeproś na zmiany, najwięcej Javy i PHP w Polsce. W w takich cywilizowanych krajach jak UK, Niemcy, USA, Rosja ludzie są kreatywni, wymyślają nowe języki programowania, technologie. A u nas jak to u nas, taka mentalność.

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)