C# .NET vs. Java?

Radek Miček

Re:C# .NET vs. Java?
« Odpověď #255 kdy: 25. 02. 2015, 16:44:02 »
Musím se tu přiznat, že neznám C# a nevím, co přesně znamená že "některé implementace nedokáží např. přeložit skládání funkcí", takže možná nemluvím úplně k věci...

Parametr Selectu má typ Expression<Func<TSource, TResult>>, což není typ funkce TSource -> TResult, ale typ jejího AST. Když se pak dělá dotaz do databáze, tak se vezme tento AST a přeloží se do SQL, když se dělá dotaz jinam, tak se to přeloží do příslušného dotazovacího jazyka. Pokud se překlad nepodaří (třeba Compose), je vyhozena výjimka.

U kolekcí se překlad podaří vždy, protože tam se ten AST jen kompiluje do IL kódu. Nicméně u některých dotazovacích jazyků to nemusí jít.


Osobne to vidim podobne jako ava. Vubec by me nenapadlo, ze nekdy muze nastat situace, ze x.Select(Compose(g, f)) nevrati stejny vysledek jako x.Select(f).Select(g) ??? . IMO takova implementace je dost nesikovna a zaslouzila by prepsani nebo odebrani.

Když se to podaří přeložit, tak se ty výsledky mohou lišit pořadím - např. se oboje přeloží na trochu jiný dotaz a služba, co vrací výsledky, to vrátí v jiném pořadí (tohle by mohlo nastat i u někerých kolekcí - např. u hašovacích tabulek, když to vracíte v pořadí, v němž to je uloženo v té tabulce).


noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:C# .NET vs. Java?
« Odpověď #256 kdy: 25. 02. 2015, 17:19:40 »
Nebylo by teda cistsi reseni vracet pri dotazu na DB (pri nepouziti razeni) neusporadanou mnozinu (co se divam na SO, tak v C# to bude asi HashSet)? Takto to pusobi, ze ta abstrakce "DB = list" se snazi spojit dva neslucitelne svety.

Osobne si myslim, ze pro nizkourovnovy pristup k DB staci dobre DSL a neni treba spojovat pristup do DB s pristupem ke kolekci na urovni jazyka i standardni knihovny. Co jsem rychle vygooglil, tak squeryl pusobi pouzitelne:
Citace
def songsInPlaylistOrder =
  from(playlistElements, songs)((ple, s) =>
    where(ple.playlistId === id and ple.songId === s.id)
    select(s)
    orderBy(ple.songNumber asc)
  )

JurP

Re:C# .NET vs. Java?
« Odpověď #257 kdy: 25. 02. 2015, 20:33:30 »
chlapi, co tak vymysliet jazyk podla vasich predstav, konvencii a preslavit ho? radsej ako vypisovat spravy na roote  8)

perceptron

Re:C# .NET vs. Java?
« Odpověď #258 kdy: 26. 02. 2015, 10:35:32 »
naco novy jazyk ked su tu mnohe vyhovujuce

Radek Miček

Re:C# .NET vs. Java?
« Odpověď #259 kdy: 26. 02. 2015, 13:26:18 »
naco novy jazyk ked su tu mnohe vyhovujuce

Například?


Kit

Re:C# .NET vs. Java?
« Odpověď #260 kdy: 26. 02. 2015, 13:40:16 »
naco novy jazyk ked su tu mnohe vyhovujuce

Například?

Například Java.

tt

Re:C# .NET vs. Java?
« Odpověď #261 kdy: 27. 02. 2015, 17:37:01 »
naco novy jazyk ked su tu mnohe vyhovujuce

Například?

Například Java.

Spise ten C#

perceptron

Re:C# .NET vs. Java?
« Odpověď #262 kdy: 27. 02. 2015, 19:07:37 »
alebo python

kat

Re:C# .NET vs. Java?
« Odpověď #263 kdy: 27. 02. 2015, 20:10:57 »

satan

Re:C# .NET vs. Java?
« Odpověď #264 kdy: 27. 02. 2015, 22:46:14 »
naco novy jazyk ked su tu mnohe vyhovujuce

Například?

Například Java.

ak je pre vas java vyhovujuci jazyk tak potom poznate asi len javu alebo mozno este daco horsie (PHP, Visual Basic)

kat

Re:C# .NET vs. Java?
« Odpověď #265 kdy: 27. 02. 2015, 22:59:07 »
Můžeš napsat nějaký lepší jazyk?

Radek Miček

Re:C# .NET vs. Java?
« Odpověď #266 kdy: 27. 02. 2015, 23:25:18 »
Můžeš napsat nějaký lepší jazyk?

Záleží, v čem ten jazyk má být lepší. Výhodou Javy je rozšířenost, ale kdybychom hodnotili vyjadřovací schopnosti jazyka nebo jednoduchost, tak tam to bude horší.

Například zmíněná Scala má lepší vyjadřovací schopnosti než Java. Na druhou stranu je hůře specifikovaná, složitější a její kompilátor obsahuje mnoho chyb.

Například Standard ML 97 je jednodušší než Java a má přesnější specifikaci (dokonce existují i mechanizované specifikace). Na druhou stranu není příliš rozšířená.

JurP

Re:C# .NET vs. Java?
« Odpověď #267 kdy: 28. 02. 2015, 00:48:52 »
A co fak Pascal???  ;D

perceptron

Re:C# .NET vs. Java?
« Odpověď #268 kdy: 28. 02. 2015, 10:12:13 »
pascal bol dobry na vyucbu programovania ale pri oop uz vidiet ako to tam bolo prilepene dodatocne

java zacina plesniviet tym ze ten skok na funkcionalko trochu premeskali a finty zo scaly ako traity asi tak skoro nebudu. ostatne kritiky smerom k properties su nepodstatne

na druhej strane skala je c++ java sveta. silne, huste, na zaciatku necitatelne (zhluky symbolov znamenaju ze autor pisal minutu a citatel parsuje tri minuty).

skoda ze groovy nedokaze vyletiet

python je tiez dobry ale tiez ma veci ktore su syntakticky wtf (this v metodach)



Citace
ak je pre vas java vyhovujuci jazyk tak potom poznate asi len javu alebo mozno este daco horsie (PHP, Visual Basic)
a vy pan satan co poznate?

Citace
Standard ML 97
si musim pozriet

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:C# .NET vs. Java?
« Odpověď #269 kdy: 28. 02. 2015, 12:34:29 »
Vidim, ze si tu nekdo dela srandu z Pascalu. Ale on i ted jeste "zije", napr. velmi oblibeny Total Commander (drive Windows Commander) je napsan ve Free Pascalu. A myslim ze i dost veci v Delphi se jeste udrzuje pri zivote.

U Groovy byl velky problem s rychlosti, takze jazyk ziskal negativni povedomi, ktere se spatne meni. Od zavedeni podpory staticke kompilace to tusim bylo celkem pouzitelne.

S Pythonem si zrovna trochu hraju (uroven zacatecnik), dost veci mi ale prijde strasne ukecanych a neintuitivnich. Funkcionalni ficury jako prilis dlouhy zapis lambdy nebo map ala globalni funkce se mi moc nelibi (volani nejdou hezky retezit).