On Tue, Dec 23, 2008 at 08:07:33PM +0100, Peter Vitt wrote:
> In .NET muss der Programmierer nicht wirklich dafür sorgen. Dank Mono
> ist nahezu alles bis .NET 2.0 auch auf Linux (und anderen Unixen, die
> mir gearde entfallen sind) nutzbar.

Du meinst so wie bei Java? Vorraussetzung ist und bleibt das der
Programmierer portabilität das als ziel hat und konsequent umsetzt -
Pfadtrenner zum beispiel - Windows "\" - Unixe "/" - MacOS ":" - Fragen?
Es gibt triviale dinge die mit einem mal nicht mehr funktionieren. 

Und die liste von nicht implementierten win apis in mono sollte man auch
nicht nutzen sonst ists schon wieder essig auf != Windows.

> > Warum muss das in C# sein? Warum den ganzen overhead einer virtual
> > machine und der garbage collection?
> >   
> Virtual machine??? Ich als janglähriger C#-Entwickler war bis heute
> davon überzeugt, dass C#-Code in einer speziellen Intermediate Language
> vorliegt und zur Laufzeit compiliert und ausgeführt  Und das Garbawird.
> Von einer VM war mir bisher nichts bekannt. Und das garbage collection
> overhead ist, ist mir bisher auch nicht wirklich bekannt (die paar
> Millisekunden, die der GC abknapst, wenn er denn überhaupt einmal läuft,
> fallen nicht messbar ins Gewicht). Ich denke, du solltest dich erst
> einmal mit C# auseinander setzen, bevor du solche unbegründeten
> Kommentare abgibst.

2 Moeglichkeiten - Virtual Machine - Oder Just in Time compiler - Wann
findet nochmal das "Just in time" statt? Ach ja - Zur Laufzeit.

Und das mit dem Garbage Collection ist nunmal unnoetiger overhead. Ja -
der faule programmierer muss sich nicht drum kuemmern weil der GC ja
einfach den gesamten prozess addressraum durchsucht nach irgendwelchen
pointern die moeglicherweise noch eine reference darstellen.

Warum kann der programmierer nicht explizit den speicher freigeben wenn
er nicht mehr benoetig wird? Ach ja - ich vergass - uebersicht verloren
...  schlechte doku ... undefinierte lifecycles ...

> Geht auch in C#. Teilweise sogar schneller... Und die Programmierung
> dieser Anwendungen in einer höheren Sprache als C (C ist ja nicht mehr
> als etwas versteckter Assembler) ist auch um einiges schneller. Das sage
> ich als langjähriger C-Entwickler. Aber wie gesagt, bitte erst einmal
> schlau machen und dann Hasstieraden loslassen.

Ich lasse keine Hasstiraden los sondern es geht um Performance und als
erstes wird C# erwaehnt - und ich frage mich warum performancekritische
applikationen nicht in C# oder Java programmiert sind - libc, kernel
oder gleich der CPU microcode?

Wenn ich performanten code schreibe dann vermeide ich schon ein malloc
und greife auf einen slab allocator zurueck - und hier wird performanter
code im zusammenhang mit virtual machines, jit, intermediate code etc
erwaehnt. Da sind mindestens 2-3 abstraktionsebenen dazwischen die ihr
häppchen cpu cycles brauchen.

> > Aber vermutlich wird ausser Java und C# in der Informatikvorlesung
> > nichts mehr gemacht oder?
>   
> Da kann ich nur noch mit dem Kopf schütteln. Ist das hier eine
> konstruktive Mailingliste oder fühlen sich hier Leute angegriffen, weil
> andere evtl. jüngere Leute, die andere Sprachen programmieren können,
> mit neuen Ideen kommen und was bewegen wollen?

Es geht mir auf den zwirn staendig applikationen in Java und C#
vorgesetzt zu bekommen die erstmal sich die haelfte des speichers
schnappen, 10 Minuten fuer den Startup brauchen und dann von den
Entwicklern als performant verkauft werden.

Wenn ich nur Java und C# hoere dann stecken dahinter allzuoft
Programmierer die voellig den Kontakt zu der eigentlich ausfuehrenden
Einheit - der CPU - verloren haben. Wie aus der einen C# anweisung dann
400 instructions mit 600 cycles wurde kann dann keiner mehr erklaeren.
Dann wird noch ein wenig portabilitaetsgefasel vom Stapel gelassen das
ja unbedingt Java erfordert um dann gleich im naechsten halbsatz zu
erwaehnen welches patchlevel welcher exakten jre auf welchem
Betriebssystem man jetzt braucht damit es auch wirklich funktioniert.

Ist ja auch egal - Die naechste CPU generation mit der doppelten
Frequenz und dem doppelten 2nd level cache steht ja schon vor der Tuer.

Es mag sein das C# und Java die Einstiegshürde ins Programmieren senkt,
aber sie machen es zu einfach sich in den Fuss zu schiessen. Ja - man
kann sich mit vielen Sprachen in den Fuss schiessen aber je high-level
desto einfach. 

Flo
-- 
Florian Lohoff                  f...@rfc822.org             +49-171-2280134
        Those who would give up a little freedom to get a little 
          security shall soon have neither - Benjamin Franklin

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an