C# .NET vs. Java?

JurP

Re:C# .NET vs. Java?
« Odpověď #210 kdy: 25. 02. 2015, 08:28:27 »
Přidal bych další link ...

podla komentarov je autor asi jediny (mozno este 2-3 v komentaroch), komu takto to VS padalo. Tento clanok nemozno povazovat za relevantny dokaz.  8)


JurP

Re:C# .NET vs. Java?
« Odpověď #211 kdy: 25. 02. 2015, 08:29:21 »
(neni JetBrains nahodou ceska firma)?

jop je :)

Ab

Re:C# .NET vs. Java?
« Odpověď #212 kdy: 25. 02. 2015, 08:30:06 »
IEnumerable<T> je lazy list, funkce nad nim se daji komponovat jako ve funkcionalnich jazykach. Select je map, SelectMany je mapcat, Where je filter, je tam hromada foldu...

Teoreticky, ale prakticky zbožné přání. Zrovna včera jsem nad tím IEnumerable lazy list chtěl postavit otevřený result set z SQL. Po pár hodinách babrání jsem to vzdal a šel přímo na low-level SQL driver.

Nic sa ucit nemusite od toho tu mame predsa intelli sense.

Za a) intelli sense je hezký, ale hledat v seznamu 100 metod neintuitivní název je peklo, b) kdo má potom ten neintuitivní kód číst? Jedna z naprosto klíčových věcí, které Java přinesla, byla vzdání se kryptografických názvů. A C# nás chce vrátit zpátky? Když dělám code review na C# projektu, tak strávím obvykle několikanásobek času oproti srovnatelné změně na Java projektu.

Kit

Re:C# .NET vs. Java?
« Odpověď #213 kdy: 25. 02. 2015, 08:38:25 »
Přidal bych další link
http://www.dotnetportal.cz/blogy/3/Tomas-Herceg/935/Visual-Studio-2010-vs-Visual-Studio-11-Beta

Nechce se mi ani věřit, že by v dnešní době bylo nutné restartovat systém nebo vývojové prostředí častěji než 1× za měsíc.

tt

Re:C# .NET vs. Java?
« Odpověď #214 kdy: 25. 02. 2015, 08:44:36 »
Java nedosahnete takovy siroky zaber technologii jako se C#. Napr pomoci C# muzete programovat serverove casti (pomoci Mono i na linuxu), desktop (WinForms a excelentni WPF), web (ASP.NET a novy vNext, ktery je multiplatformni, typescript, hodne podobny C#, atd...), cloud Azure, mobilni aplikace (WP, android a IOS pomoci Xamarin) a dalsi.

Jeste doplnim dalsi: XBox, WinRT aplikace (v pripade budoucich Windows 10, ktere budou bezet na uplne vsech platformach (i na RaspberryPI) a pry budou podporovane dozivotne, to ma obrovskou vyhodu), .NET micro framework a vlastni desky (FEZ raptor, FEZ spider, ...).

Co se tyce VS, nemuzete porovnavat verzi 2010 kdyz uz tady je verze 2012, 2013 a za pul roku stabilni verze 2015 a to uz ani nezminuji verzi Community, ktera je zcela zdarma a nema omezeni jako mela edice express.

Co se tyce meho prikladu vzal jsem to tady odsud: http://www.deadcoderising.com/java-8-no-more-loops/ podivejte se na dalsi ukazky v jave a prectete si komentare.

Pokud byste se chteli podivat jak zije uvolneny .NET Core v opensource svete: https://github.com/dotnet/corefx

Radeji ani nezminuji Roslyn, protoze z toho by se java vyvojarum zamotala hlava. Az tento novy compilator s otevrenym API pujde bezne pouzivat, pak .NET bude 20 let napred.


Ivan

Re:C# .NET vs. Java?
« Odpověď #215 kdy: 25. 02. 2015, 08:45:44 »
Krom toho obrovskou výhodou C# oproti Javě je podpora
async + await pro psaní asynchronního kódu.

Od Javy 5 existuje spousta luxusní podpory pro psaní asynchronního kódu, například http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/FutureTask.html je přesně to citované async + await

To je omyl, async + await není o nějaké třídě, ale o syntaxi. Jde o přehlednost zápisu.

Vetsina Java programatoru co znam ma stejne pouzivani vlaken zakazany. V JEE se to vsechno resi pres "framework". Java dlouho hresila na to, ze byla hrozne dogmanticka:
  • nepodporujeme viceradkove literaly - na to jsou resources
  • nepodporujeme gepopt => programum se nemaji predavat paramertry - na to jsou properties
  • je to objektovy jazyk => vsechno musi byt objekt.
  • mame GC => ulolneni vsech prostredku vyresi GC(alespon si to porad dost programatoru mysli)
  • RMI neumi volat vzdalene metody trid? => kazda trida musi mit svuj dummy interface

Dneska uz je to preci jenom trochu jinak. Ten jazyk je jednoduchy(i kdyz frameworky jsou slozity) a zvladnou ho i lidi, ktery by s C/C++ meli problemy. Java byla zamyslena jako COBOL pro 21. stoleti a tim taky bude. Kdo se nechce drbat s patchovanim windows a zoufale kopirovat dll-ka mezi systemama, tak zvoli neco co bezi na Unixu/Linuxu a neni to tak narocne na lidske zdroje jako C++.

Re:C# .NET vs. Java?
« Odpověď #216 kdy: 25. 02. 2015, 08:54:20 »
a co tak si pozriet ako naozaj FirstOrDefault funguje az potom nieco komentovat?
A co tak si nejprve přečíst celý komentář a až pak na něj reagovat? Kdybyste si můj komentář přečetl celý, zjistil byste, že vím, co funkce FirstOrDefault dělá – akorát že je ta funkce špatný příklad intuitivnosti jazyka, protože to vede k tomu, že máte kód ve zdrojáku na přeskáčku a hlavně musíte vědět, kdy se ten predikát použije.

Vobec nefiltruje komplet mnozinu.
To ten Javovský kód také nedělá.

A dalsia vec, aky by to malo zmysel, keby to porovnava len prvy prvok mnoziny?
To je jedno.

Jinak teda porovnávat dvě rozsáhlé vývojové platformy podle třech řádků kódu je totální nesmysl. Chtěl jsem jenom poukázat na špatně zvolený příklad, protože ten kód v C# je neintuitivní.

Kit

Re:C# .NET vs. Java?
« Odpověď #217 kdy: 25. 02. 2015, 08:56:34 »
  • nepodporujeme viceradkove literaly - na to jsou resources
  • nepodporujeme gepopt => programum se nemaji predavat paramertry - na to jsou properties
  • je to objektovy jazyk => vsechno musi byt objekt.
  • mame GC => ulolneni vsech prostredku vyresi GC(alespon si to porad dost programatoru mysli)
  • RMI neumi volat vzdalene metody trid? => kazda trida musi mit svuj dummy interface

To jsou všechno vlastnosti, které mají podpořit správný styl objektového programování. Účelem není házet vývojářům klacky pod nohy, ale zpřehlednit kód, tedy čtenářům snížit počet WTF za hodinu.

JurP

Re:C# .NET vs. Java?
« Odpověď #218 kdy: 25. 02. 2015, 09:00:43 »
protože ten kód v C# je neintuitivní.

intuitivnejsi, ako ten zapis v Jave. Ale bavit sa o takychto kktinach to je tak rootovske :)

Re:C# .NET vs. Java?
« Odpověď #219 kdy: 25. 02. 2015, 09:21:16 »
intuitivnejsi, ako ten zapis v Jave. Ale bavit sa o takychto kktinach to je tak rootovske :)
„Intuitivní“ pro mne opravdu neznamená „musím vědět, co přesně ta funkce dělá, a program musím číst chvilku zepředu dozadu a chvilku opačně“. Intuitivní je, když funkce FirstOrDefault vrátí první záznam, nebo výchozí hodnotu, pokud je seznam prázdný. Jenže ta funkce s predikátem dělá dvě věci – jednak filtruje, a pak vybírá ten první záznam. A to, že se ten predikát používá zrovna pro filtrování, to musíte vědět – z definice té funkce to nijak nepoznáte. Ona by se ta funkce správně musela jmenovat FilterAndGetFirstOrDefault, ale pak už by bylo jasné, že ta funkce nedělá jen jednu věc.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:C# .NET vs. Java?
« Odpověď #220 kdy: 25. 02. 2015, 09:21:44 »
... Co sa tyka R# ja som ho zatial nepotreboval ale chapem ze si treba propagovat vlastny produkt (neni JetBrains nahodou ceska firma)?

Nepracuji v ani pro tuto firmu. Fakta zustavaji, dokud jsem nezkusil R#, tak jsem netusil, ze VS muze byt jeste lepsi. Pak jsem zkusil IntelliJ IDEA a u toho zustal, snazim se jej pouzivat na vsechno na co muzu. Jak jsem psal vyse, je to nekolik let zpet, je mozne ze Microsoft vse dohnal. Drive ve VS nebylo type-aware naseptavani, v jinych Java IDE mi casto chybela i tak zakladani funkce, jako naseptavani podle camel nebo casti (ne nutne zacatku) identifikatoru (coz doufam uz vsude davno napravili).

protože ten kód v C# je neintuitivní.
intuitivnejsi, ako ten zapis v Jave. Ale bavit sa o takychto kktinach to je tak rootovske :)

Take mi neprijde spojení first s filtrovanim (a s default) semancticky spravne. Navic pokud jedete na co nejmene kodu, tak proc pracujete v C#? Proc jste nezkusil F# nebo jiny jazyk z siroke rodiny .NET?

JurP

Re:C# .NET vs. Java?
« Odpověď #221 kdy: 25. 02. 2015, 09:28:55 »
myslim, ze aj priemerne inteligentny clovek pochopi, ze: FirstOrDefault(x => x.Name == "nieco") robi nasledovne: daj mi prvok, ktory vyhovuje kriteriu Name == "nieco". Nic intuitivnejsie nemoze byt. Nepotrebujem ani FilterAndGetFirstOrDefault.
Potom su asi C# vyvojari na vyssej inteligentnej urovni nez Javisti, pretoze my tomu chapeme :P a kto ma s tym problem, tak nech si spravi vlastnu extension metodu a nazve si ju trebars aj kokot  8)

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:C# .NET vs. Java?
« Odpověď #222 kdy: 25. 02. 2015, 09:37:01 »
Ono celkove veci nad kolekcemi (hlavne ty z funkcionalniho sveta) jsou v C# divne a vymykaji se beznym standardum. Napr. select misto (IMO podstatne intuitivnejsiho) map. U select bych cekal, ze dela filtrovani, ne mapovani...

shini

Re:C# .NET vs. Java?
« Odpověď #223 kdy: 25. 02. 2015, 10:04:53 »
Radeji ani nezminuji Roslyn, protoze z toho by se java vyvojarum zamotala hlava. Az tento novy compilator s otevrenym API pujde bezne pouzivat, pak .NET bude 20 let napred.

To uz snad bude funkcni projekt Graal, aby se nam ta hlava netocila az tak moc:).

NooN

Re:C# .NET vs. Java?
« Odpověď #224 kdy: 25. 02. 2015, 10:24:05 »
Ono celkove veci nad kolekcemi (hlavne ty z funkcionalniho sveta) jsou v C# divne a vymykaji se beznym standardum. Napr. select misto (IMO podstatne intuitivnejsiho) map. U select bych cekal, ze dela filtrovani, ne mapovani...
Select a filtrovanie? A to z akého dovodu?
Ze aj v SQL v definujes stlpce kotre chces dostat ako výsledok?
Ze aj v SQL musis pridat zazracne slovicko WHERE ktore filtruje?

SELECT nema preco znamenat filter  SELECT znamena vybrat, a ked uz toto ri robi problemy....