Scala

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Re: Scala

Beitrag von remi_meier »

PMV hat geschrieben:Aber jede zu überwachende Optimierung und Statistik benötigt wieder
CPU-Zyklen, die das ganze nicht nur später beschleunigen können,
sondern grundsätzlich ausbremsen. Wie soll das ganze Wissen den
überhaupt angesammelt werden, wenn dadurch nicht zusätzlich
CPU-Zeit verbraten wird?
Da hast du natürlich recht. Aber diese Statistiken müssen ja auch
nicht immer weiterlaufen. Sie können für weitere Ausführungen
gespeichert werden. Und ganz nebenbei ist ein Zähler pro Funktions-
aufruf meist kein Problem. Das ganze Memory-Management (und
die damit verbundenen Statistiken laufen sowieso parallel in einem
eigenen Thread, womit das Hauptprogramm nicht gebremst wird
(Multicore vorausgesetzt)).
PMV hat geschrieben:Ein Code kann nur bis zu einem gewissen
Punkt optimiert werden. Sagen wir, das ist Zustand A. Code, der
durch JIT + Interpreter bearbeitet wird, kann zwar den zu verwalten-
den Code auf den Zustand A bringen, doch insgesamt brauchen alle
Mechanismen zusammen so viel, das es bei Zustand B oder gar C
bleibt. Der Zustand A ist so garnicht erreichbar, dafür müsste sich
das ganze System selber abschalten, nachdem alles kompiliert wurde.
Und wenn dem so wäre, dann könnte man auch direkt das ganze ein mal
optimieren lassen und dann die Daten anbieten, so dass beim ersten
Ausführen sofort der beste Code produziert und das Programm ohne
Overhead perfekt läuft.
Wieso soll sich das System nicht selbst abschalten können? Ausserdem
kann man C#-Programme sowieso AOT-Compilen, also wie C++. Das
Problem dabei ist natürlich, dass du nicht auf jedem PC der Welt die
Daten sammeln kannst.
PMV hat geschrieben:Und wenn Java (und .NET) dafür garantieren würden, dass der Zustand A
immer erreicht wird, dann frage ich mich, warum zeitintensive Dinge nicht
immer damit realisiert werden? Es wäre ja mit die beste Sprache dann
für so etwas. Sie analysiert zur Laufzeit die besten Optimierungen und
erstellt darauß den besten Maschinencode.
DD hat da schon mal 2 Gründe genannt. Den 2. Grund könnte man da
noch etwas ergänzen. Diese Optimierungen benötigen CPU-Aufwand,
keine Frage. Wie also macht man das, ohne das Programm auszubremsen?
Multithreading erlaubt das zu einem gewissen Grad. Viele Optimierungen
benötigen auch zusätzlich Speicher (RAM). Das bedeutet also, das man
eine gewisse Rechenleistung benötigt um die "besten" Optimierungen
durchzuführen. Ausserdem sind für _wichtige_ zeitintensive Anwendungen
auch meist die gesamte Plattform bekannt, wodurch man viele der JIT-
Optimierungen gar nicht benötigt, da man die Compiler-Parameter
entsprechend setzen kann.

Ein ähnliches Problem findet man auch bei der Garbage-Collection. Es
wurde oft gezeigt, dass GC schneller ist, als durchschnittlich programmiertes
manuelles Memory-Management (und oft auch schneller als gut programmiertes
MM). Trotzdem wird GC oft nicht verwendet, da es teilweise unvorhersagbar
ist und oft mehr Speicher für's Management benötigt.


Zum Schluss noch ein kleines Fazit: Irgendwo müssen die Berechnungen
durchgeführt werden, die dann das Programm schneller laufen lassen.
Es ist immer die Frage, ob man die Ausführung eines Programms für
einmal verlangsamen will, damit es das nächste mal schneller laufen
kann. Auch muss abgewogen werden, ob Speicherverbrauch wichtiger
ist als Performance, oder umgekehrt.


greetz
Remi
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Scala

Beitrag von ts-soft »

Wenn ich Texteditor UltraPad in unter 2 Sekunden starte und Texteditor JavaPad in 15 sekunden, kann ich
bei beiden mit 200/min schreiben, werde bei UltraPad aber ca 3 Zeilen mehr in derselben Zeit geschrieben haben,
auch wenn dieser 50x langsamer während der Laufzeit ist, da in diesem Falle nur die Startzeit für mich einen
Unterschied macht.

Für "nomale" Büroanwendungen sind solche Aussagen vollkommen belangslos. Es interessiert wirklich nur die
Startzeit des OS oder der Anwendung, der Rest hat auf die Arbeitsleistung keinen Einfluss, egal wer da noch
optimiert. Anwendungen wo das Sinn macht sind eher die Minderheit.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Re: Scala

Beitrag von remi_meier »

ts-soft hat geschrieben:Wenn ich Texteditor UltraPad in unter 2 Sekunden starte und Texteditor JavaPad in 15 sekunden, kann ich
bei beiden mit 200/min schreiben, werde bei UltraPad aber ca 3 Zeilen mehr in derselben Zeit geschrieben haben,
auch wenn dieser 50x langsamer während der Laufzeit ist, da in diesem Falle nur die Startzeit für mich einen
Unterschied macht.
Streitet dir ja niemand ab. Aber nur weil JavaPad vielleicht suboptimal
einige unnötige Dinge beim Start ladet oder deine JVM nicht den oben
beschriebenen Interpreter+JIT Ansatz verwendet, musst du dadurch
nicht auf andere schliessen.
Schreib ich hier ein Java-HelloWorld, startet das _ohne_ Verzögerung.
Wenn man jetzt natürlich zig Bibliotheken einbindet, wollen die zuerst
geladen werden. Das hat nichts mehr mit Java zu tun, sondern mit den
verwendeten Bibliotheken und dem Umgehen mit diesen Ressourcen.
Java macht es einem einfach, Ressourcen zu verschwenden. Man wird
aber nicht dazu gezwungen.

greetz
Remi

Edit: versuch doch mal GCJ, hilft bei dir vielleicht.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Scala

Beitrag von ts-soft »

Was ist GCJ?

Das obige Beispiel war ja fiktiv.

Als Anwender interessiert mich die Technik nicht, nur meine Erfahrungen und die sagen mir:
Java lädt beim Start zum Kaffee trinken ein. Vielleicht sehe ich ja auch irgendwann mal,
ein schneller startendes Programm, bisher war das nicht der Fall, werde deshalb solchen
Anwendungen aus dem Wege gehen, wenn möglich.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Re: Scala

Beitrag von remi_meier »

Verstanden und abgehakt <)
ts-soft hat geschrieben:Was ist GCJ?
http://gcc.gnu.org/java/
GCJ is a portable, optimizing, ahead-of-time compiler for the Java Programming Language. It can compile Java source code to Java bytecode (class files) or directly to native machine code, and Java bytecode to native machine code.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Re: Scala

Beitrag von remi_meier »

Hab da zum Spass jetzt wirklich mal das Experiment gemacht.
Hab mir "ein" JavaPad runtergeladen:
http://javaboutique.internet.com/applications/javapad/
Unter Ubuntu 10.10:

Code: Alles auswählen

sudo aptitude install gcj
Dann einmal normal gestartet:

Code: Alles auswählen

java -jar JP\ -\ JavaPad.jar
~10s Startzeit.
Dann gleich nochmals (mehrmals):
~1s Startzeit.

Dann mit GCJ:

Code: Alles auswählen

gcj JP\ -\ JavaPad.jar --main=JavaPad -o javapad
erzeugt ein javapad-ELF. Nun per

Code: Alles auswählen

./javapad
aufgerufen (mehrmals) -> ~0.5s Startzeit.

Bringt also was, wenn man sich dauernd ab langen Startzeiten
ärgert. Aber die Startzeit ist nicht 100% verschwunden.

greetz
Remi
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Scala

Beitrag von ts-soft »

Oh, gibt tatsächlich ein JavaPad :mrgreen:

Aber als Anwender nützt mir so was herzlich wenig, das ist Aufgabe der
Entwickler entsprechende Binaries zur Verfügung zu stellen. Wenn die das
nicht nutzen, dürfen Sie sich nicht wundern, wenn Java-Anwendungen den
Ruf von Schlaftabletten haben.

Ich wollte ja dem edel auch nur darlegen, warum die Startzeit eines
Programmes, ein wichtiges Argument bei der Beurteilung der Sprache
ist. Oftmals ist es nämlich das einzige was die Zeit des Nutzers wirklich
beeinträchtigt.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Skiller
Beiträge: 151
Registriert: 04.02.2005 22:26

Re: Scala

Beitrag von Skiller »

Danke Folks für die ( mir mitunter zu hohen ) Ausführungen und das Threadbeispiel von PMV.

Mich wundert allerdings
warum trotz der vielen hochentwickelten Programmiersprachen noch eine weitere von der EU gefördert wird - zumal ja andere und sogar PB (außer OOP) scheinbar über alle features verfügen. Da hätte PB ja genauso gut gefördert werden können.

Deshalb mal ne persönliche Frage: Was reizt Euch da eigentlich noch an PB ?

so long... Skiller
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Scala

Beitrag von ts-soft »

Skiller hat geschrieben:Deshalb mal ne persönliche Frage: Was reizt Euch da eigentlich noch an PB ?
Solange ich alles, was ich programmieren möchte, mit PB umsetzen kann, warum sollte ich was anderes
nutzen? Sicherlich gibt es Anwendungen, die man besser mit anderen Entwicklungsumgebungen angeht,
aber das gilt für alle Programmiersprachen. Also richtet man sich nach seinen eigenen Ansprüchen, bzw.
denen seiner Kunden, sofern man den welche hat.

Ich hab keinen Grund zu einer Sprache zu wechseln wo womöglich das Source-Code schreiben auch noch
erheblich länger dauert, da ich mir immer die Finger breche bei geschwungenen Klammern, oder ähnl.
PB Code ist für mich sehr gut lesbar, im gegenteil von z.B. C-Source oder perl-script.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Scala

Beitrag von DarkDragon »

Skiller hat geschrieben:Deshalb mal ne persönliche Frage: Was reizt Euch da eigentlich noch an PB ?
Die Startzeit der Entwicklungsumgebung :D .

Spaß beiseite: PB ist gut wenn man sich zwischendurch ein paar Hilfsprogramme schreibt (Z.B. vergrößere/verkleinere ich damit Bilder ganz gern, werfe den Quelltext aber immer wieder weg). Da brauche ich nicht extra ein Projekt in einem workspace anlegen wie in anderen Entwicklungsumgebungen und in ziemlich wenigen Zeilen kommt man damit bei solchen Problemen ans Ziel. Außerdem ist die Autovervollständigung eigentlich recht fix in PB. Wenn ich mir manchmal Visual Studio anschau kann ich mir da nur an den Kopf fassen. Hat man nämlich einen marginalen Fehler im Code wirkt sich das bei VS auf die Autovervollständigung aus, was eigentlich nicht sein sollte. In Verbindung mit Qt hat es mir schon so manches mal die Einträge der Autovervollständigung durcheinander geworfen.
Der PB Compiler selbst hat allerdings kaum Vorteile, eher das halbwegs plattformunabhängige Framework.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten