Jens Kallup <
kallu...@web.de> schrieb:
> Hallo,
>
> Am 20.01.2023 um 05:27 schrieb Martin Vaeth:
>
>> Es ist zwar m.W. nicht definiert, aber Du kannst davon ausgehen, dass
>> java das i.W. mit einem Miller-Rabin-Test macht, vielleicht mit leichten
>> Modififizierungen (z.B. für extrem kleine Zahlen).
>
> soviel ich weiß, benutzt Java einen Byte-Code, der erst durch/nach einen
> Maschienen-Code umgesetzt werden muss.
Ja, aber dieser Byte-Code ist sehr Low-level und lässt sich erstaunlich
schnell interpretieren. Zudem gibt es so Techniken wie JIT, bei denen
der Byte-Code in bestimmten Fällen (z.B. wenn er oft genug aufgerufen
wurde und sonst kein Hindernis wie serialisierte Methoden besteht)
direkt in Assembler übersetzt wird: Hotspots werden dadurch i.d.R.
genauso schnell wie in C.
> Das stelle ich mir dann um einiges langsamer vor, als das man für Eigene
> Berechnungen dazu keinen Byte-Code, sondern native-Programmiersprachen
> wie C (nicht C++), oder noch tiefer: Assembler verwendet.
Heutzutage direkt in Assembler *effizient* zu programmieren ist so
kompliziert geworden und braucht so viel Wissen (Cache-Größe, wann
brechen pipelines zusammen usw.), dass das ein Compiler fast immer
effizienter hinbekommt. Selbst wenn z.B. bei linearer Ausführung
die Byte-Code-Interpretation langsamer sein sollte, ist sie es in
der Praxis oft nicht. C/C++/go/rust haben aber immer noch einen
kleinen Vorsprung, wenn es wirklich auf jede Mikrosekunde ankommt -
was aber nur für sehr wenige Anwendungen wichtig ist, da Stabilität
in der Praxis oft wichtiger ist.
> Viele Programmierer kommen aber nicht mehr weit aus der C++ Objekt Welt
> heraus, weil es kaum noch C Compiler gibt
Jeder mir bekannte C++-Compiler kann auch andere C-Dialekte
kompilieren, wenn er entsprechend aufgerufen wird. ZUdem ist
besteht der Unterschied zwischen C als eigene Sprache und als
Teilmenge von C++ nur in ein paar Grenzfällen, die fürs eigene
Programmieren meist nicht von Bedeutung sind, sondern eher nur
für historischen Code wichtig sind.
> Aber für die Lehre würde ich Linux vorschlagen
Linux oder allgemeiner Unix ist wohl an den meisten Instituten
für Mathematik oder Informatik (an Unis) die Umgebung der Wahl.
Aber Apple hat deutlich aufgeholt. An FHs oder einzelnen
Lehrstühlen kann es manchmal aber auch ganz anders aussehen,
aus verschiedenen Gründen.