Zitat von
Headcool
Kommt darauf an was man unter Welten versteht. Ich finde 120 statt 100% sind schon sehr viel. Dementsprechend halte ich die 300-400% was der Größenordnung entspricht die JIT-Sprache langsamer sind für nicht hinnehmbar.
Benchmarks sind übrigens der völlig falsche Weg um die Performance einer Sprache zu messen.
Wie kommst du dann auf 300-400% ?
es geht darum dass, dass Programm die ganze Zeit warten muss weil irgendwas von der Festplatte/vom Speicher gelesen werden musste weil es nicht mehr in den Cache gepasst hat.
Ich würde das jetzt nicht als JIT-spezifisches Problem bezeichnen. Mit nativen sprachen kann man da zwar bei den Datenstrukturen bisschen tricksen und mit passende bitanordnungen Platz sparen, man muss die Datenmenge aber trotzdem verarbeiten und die primitiven Datentypen sind ja auch von der gleichen standardisierten Größe (bis natürlich z.B: auf Strings)
Gerade bei GUI-Anwendung ist Geschwindigkeit das wichtigste überhaupt. Wenn ich auf einen Button klicke, dann hat das Programm im Worst-Case-Szenario nur ~17ms Zeit damit das Ergebnis im nächsten Frame dasteht. Im Best-Case-Szenario sind es fast 34ms. Prinzipiell ist das für einen Computer ewig lang.
Dafür muss eine typischen GUI Anwendungen auch nicht ewig lange herumrechnen. Bei Auswertung von größeren Datenmengen machen kleine Details aber schon deutlich mehr aus.
Es geht weniger um gute/schlechte sonder eher um sinnlose/sinnvolle Programme.
Dazu muss man nur wissen in welcher Sparte mit welcher Sprache gearbeitet wird. Da im Bereich der naturwissenschaftlichen Simulationen hauptsächlich mit Fortran gearbeitet wird und es sonst fast nirgendwo verwendet wird, kann ich ziemlich schnell zu dem Schluss kommen, dass das durchschnittliche Fortran-Programm ziemlich sinnvoll ist, da es der Forschung dient.
Wie und ob jemand etwas verwendet ist kein Qualitätskriterum. Populäres Beispiel wären da die die Betamax-Kasetten. Oder im Bereich der Sprachen D, was auch kaum einer verwendet.
Beim "einfach" geht es um das finden der Lösung. Im "nicht einfach" ging es um das Anwenden der Lösung.
Aber ich wusste schon dass das von dir kommt.
Ein Fehlerfreies Programm zu schreiben ist eher ein Ziel und keine Lösung für ein Problem. Du kannst dir halt nicht sicher sein, dass da eben keine Fehler drin sind. Das bedürfte schon formaler Code-Verifikation, wozu man meist keine Zeit und keine Lust hat. Da bringt es auch nicht viel zu wissen, dass man bei absoluter Fehlerfreiheit x und y nicht bräuchte.
Ich möchte lieber etwas möglichst komplexes haben, sodass es nur sehr wenige Leute gibt die es ebenfalls lösen können, sodass ich mehr Geld dafür verlangen kann.
Es muss dann natürlich auch eine Nachfrage geben. Brainfuck ist ja auch arg umständlich/kompliziert, bloß kriegt man da wohl trotz Programmiererknappheit kaum einen passenden Job
Wenn es aber vorrangig um Komplexität geht, wäre die theoretische Informatik wohl eine gute Anlaufstelle.
Stimmt. Aber du brauchst dafür immer eine native Sprache. Eine JIT-Sprache ist dazu nicht nötig. Umgekehrt dagegen braucht man beides, denn der JIT-Compiler muss nativ aufgebaut werden.
Wozu braucht man eine native Sprache um eine ausführbare Datei zu generieren?
Auch wenn es eine riesige Java, .NET Fancommunity gibt und dir viele Leute einreden wollen der Performanceunterschied wäre klein, dann komm nicht auf die Idee das zu glauben. Er ist nicht klein. Er mag des öfteren "irrelephant" sein, aber klein ist er nicht.
Wie kommst du drauf, wenn du Benchmarks als nicht aussagekräftig genug erachtest?
Also ich habe schon JIT-Codes geschrieben, die schneller waren (und trotzdem das gleiche gemacht haben), wie äquivalente c++ programme, welche von älteren Leuten mit mehr Erfahrung geschrieben wurden. Und nun Dass die JIT-Sprachen nicht immer so schnell sein können, wie die nativen möchte ich natürlich nicht abstreiten. Aber so schlimm ist es nun auch wieder nicht.
Kommt im Endeffekt darauf an, was man konkret macht und inwiefern man da in Schwächen von JIT-Sprachen reintappt.
Wenn man mit VHDL "programmiert" muss man sowohl geeignete Hardware als auch Software dafür haben. Software die sich entsprechend parallelisieren lässt, aber auch nicht mordsmäßig viel Speicher frisst muss auch erst mal gefunden werden. Die Hardware sollte dann auch ein entsprechend schneller FPGA sein. Also mit einem 50€ FPGA wird man nicht viel reißen können.
Was ich eher in dem Zusammenhang erwähnen würde wäre GPGPU. Da muss keine neue Hardware angeschafft werden. Und man kann seine Programme auch weitergeben.
Geht ja nur um die Veranschaulichung, dass es 'schneller' geht.