Discussion:
"Programmiersprache des Jahres"
(zu alt für eine Antwort)
Stefan Ram
2018-03-20 21:39:04 UTC
Permalink
2017 kürte der Heise-Verlag Java zur "Programmiersprache des
Jahres". Dabei wurden vollkommen willkürliche und ungenaue,
teilweise auch falsche, Begründungen genannt.

www.heise.de/developer/meldung/Programmiersprache-des-Jahres-ist-Java-3583597.html

2018 scheint man aber keine weitere "Programmiersprache des
Jahres" erkoren zu haben.

Heise schreibt:

"Mit der zunehmend größer werdenden Rechenleistung fallen
die Schwächen der JVM (Java Virtual Machine) immer weniger
ins Gewicht. Zudem pflegt Oracle die von Sun übernommene
Sprache behutsam und doch effizient, was sich auf das
Ökosystem als Ganzes positiv auswirkt."

Tatsächlich konstatierte Herb Sutter 2005 "The free lunch is
over" - die Single-Thread-Leistung aktueller Prozessoren
steigt seit 2005 kaum noch. Damit wurden Sprachen wie C und
C++ wieder wichtiger als Kaffee-Sprachen. Die Argumentation
des Heise-Verlags stammt also noch aus den 90er Jahren.

www.gotw.ca/publications/concurrency-ddj.htm

Und die Meinungen über den Umgang Oracles mit Java gehen
auseinander. So wurde JavaFX erst kürzlich in das JDK
integriert, aber nun angekündigt, daß es wieder aus dem JDK
entfernt werden soll. "Behutsam und doch effizient" klingt
wie von einer Marketing-Abteilung geschrieben - nicht wie
von dem unabhängigen technischen Heise-Verlag.
Hermann Riemann
2018-03-21 10:23:58 UTC
Permalink
2017 kürte der Heise-Verlag Java zur "Programmiersprache des Jahres".
Java war bei mir vor ca 20 Jahre als applet im browser mal interessant.
Es ist nicht über den Stand von Testprogrammen hinausgekommen.
Die Entwicklung über javacdoc? war mir auch unhandlich.

Der letzte Versuch war einfache Grafik auf dem Monitor
vor mir zu erzeugen.
Es ist gescheitert.
Die Anfrage in einer Java newsgroup führte zum Hinweis,
das Java Grafikausgabe nur auf Monitor Nr. 1 funktionierte.

Java hatte bei mir gegenüber C praktisch keine Chance.

Erst Python hat mich überzeugt,
bei vielen Aufgaben besser als jede andere
mir bekannte Programmiersprache ist.

C werde ich weiterhin hauptsächlich für Grafik verwendet.
Javascript im Zusammenhang mit html in browser.
Und es gibt ein paar kurze shell scripts. (bash)

Andere Programmiersprachen sind bei mir nicht im Einsatz.
In C++ schaue ich manchmal rein,
Lua könnte auch noch interessant sein.
clisp könnte noch am ehesten zu Einsatz kommen:
bei selbstmodifizierenden Programmen.
Perl und PHP scheint mir wegen Python überflüssig zu sein.
Ein Vorteil von Ruby gegenüber Python kenne ich nicht,
ich vermute, es gibt da etwas.

Hermann
der vermutet,
das weniger als 10% der Schreiber in ger.ct
selber programmieren.
--
http://www.hermann-riemann.de
Herwig AQSR
2018-03-21 13:13:17 UTC
Permalink
2018-03-21 14:14:14 +0100
Post by Hermann Riemann
...
Hermann
der vermutet,
das weniger als 10% der Schreiber in ger.ct
selber programmieren.
Die Branche ist in den letzten Jahrzehnten erwachsen
geworden. Weniger als 10 Prozent der PKW-Fahrer
können einen KolbenRing austauschen, hast Du das
gewusst?

Es gibt noch ein paar andere Kriterien, um die
Reife einer Branche festzustellen:

FührungsKräfte, die fachlich keine
Ahnung haben

Geld, das nicht von den FachLeuten
erwirtschaftet worden ist

BWLer und Juristen, die mitreden wollen

FirmenImperien

regulierende Behörden

Übrigens hat mich in den 70-ger Jahren eine
Kommilitonin bewundernd gefragt: "Kannst du
wirklich richtig programmieren?" - Ich
glaube, da wäre was gelaufen. Ich hätte
allerdings zielführend aktiv werden müssen
- aber ich konnte ja *nur* wirklich richtig
programmieren ...

Herwig (mornig reboot)

... ist heute nicht ein
FrühlingsTag befohlen? ...
Hermann Riemann
2018-03-21 13:35:13 UTC
Permalink
Post by Hermann Riemann
der vermutet,
das weniger als 10% der Schreiber in ger.ct
selber programmieren.
Die Branche ist in den letzten Jahrzehnten erwachsen geworden.
Und in den nächsten Jahrzehnten wird lesen und schreiben verlernt?
Es geht dann ja auch ohne.
Weniger als 10 Prozent der PKW-Fahrer
können einen KolbenRing austauschen, hast Du das gewusst?
KolbenRing tauschen wäre schon etwas wie Linux Installation,
bei der es Hindernisse gibt.
Übrigens hat mich in den 70-ger Jahren eine
Kommilitonin bewundernd gefragt: "Kannst du
wirklich richtig programmieren?"
Und ich habe von einer Kollegin in einer anderen Abteilung gehört,
die meine firmeninterne Internetseite bewunderte.
- Ich glaube, da wäre was gelaufen.
Aus dem Alter war ich da raus.
... ist heute nicht ein FrühlingsTag befohlen? ...
https://www.wetter.de/cms/der-polarwirbel-bricht-zusammen-haut-der-winter-noch-einen-raus-4142783.html

Hermann
der momentan vermutet,
dass auch der Golfstrom innerhalb von 10 Jahren
erheblichen "Wackelkontakt" bekommt,
mehr als aktuelle Schwankungen.
--
http://www.hermann-riemann.de
Bernd L.
2018-03-21 15:40:01 UTC
Permalink
Tatsächlich konstatierte Herb Sutter 2005 "The free lunch is over" -
die Single-Thread-Leistung aktueller Prozessoren steigt seit 2005 kaum
noch. Damit wurden Sprachen wie C und C++ wieder wichtiger als
Kaffee-Sprachen. Die Argumentation des Heise-Verlags stammt also noch
aus den 90er Jahren.
www.gotw.ca/publications/concurrency-ddj.htm
Chip designers are under so much pressure to deliver ever-faster CPUs
that they’ll risk changing the meaning of your program, and possibly
break it, in order to make it run faster
Hallo Meltdown, hallo Spectre!
Volker Borchert
2018-03-22 18:57:08 UTC
Permalink
Post by Bernd L.
Tatsächlich konstatierte Herb Sutter 2005 "The free lunch is over" -
die Single-Thread-Leistung aktueller Prozessoren steigt seit 2005 kaum
noch. Damit wurden Sprachen wie C und C++ wieder wichtiger als
Kaffee-Sprachen. Die Argumentation des Heise-Verlags stammt also noch
aus den 90er Jahren.
www.gotw.ca/publications/concurrency-ddj.htm
Chip designers are under so much pressure to deliver ever-faster CPUs
that they'll risk changing the meaning of your program, and possibly
break it, in order to make it run faster
Hallo Meltdown, hallo Spectre!
Weil sie aus unerfindlichen Gründen bei der Leistungsaufnahme zögern.
Wo wäre das Problem, wenn der Prozessor 350A bei 1,7V braucht? Die TCM
Technologie ist geschätzt 30 Jahre alt, etwaige Patente von Big Blue
sind also längst abgelaufen.
--
"I'm a doctor, not a mechanic." Dr Leonard McCoy <***@ncc1701.starfleet.fed>
"I'm a mechanic, not a doctor." Volker Borchert <***@despammed.com>
Stefan Reuther
2018-03-21 19:05:06 UTC
Permalink
Post by Stefan Ram
"Mit der zunehmend größer werdenden Rechenleistung fallen
die Schwächen der JVM (Java Virtual Machine) immer weniger
ins Gewicht. Zudem pflegt Oracle die von Sun übernommene
Sprache behutsam und doch effizient, was sich auf das
Ökosystem als Ganzes positiv auswirkt."
Tatsächlich konstatierte Herb Sutter 2005 "The free lunch is
over" - die Single-Thread-Leistung aktueller Prozessoren
steigt seit 2005 kaum noch. Damit wurden Sprachen wie C und
C++ wieder wichtiger als Kaffee-Sprachen. Die Argumentation
des Heise-Verlags stammt also noch aus den 90er Jahren.
Das gilt, wenn Performance dein einziges Kriterium ist. Und selbst dann:
es ist nicht vorgeschrieben, dass Java in einer langsamen JVM ausgeführt
wird. Man kann Java ganz klassisch nativ compilieren, und auch ein JIT
kann ganz schön knackigen Code erzeugen.

Und wenn wir noch einen Schritt zurücktreten, leben wir in einer Welt,
in der Leute ernsthaft C++ nach JavaScript übersetzen, das vom Browser
dann in Maschinenkode übersetzt wird, und immer noch mit ausreichend
Geschwindigkeit für eine 3D-Engine läuft. Alternativ kann man eine
CPU-Emulation in JavaScript laufen lassen, die im Browser wahlweise
einen Linuxkern bootet oder DOS-Spiele der 90er laufen lässt.

Performance ist nicht alles.

Ob das jetzt eine "Programmiersprache des Jahres" wert ist, sei
dahingestellt. Ich habe derzeit kein Java-Projekt am Laufen. Für Neues
kommt Java aber schon in die engere Auswahl. Jedenfalls vor C#, Go, D
und wie die ganzen Me-Too-Sprachen alle heißen.


Stefan
Stefan Ram
2018-03-21 19:35:05 UTC
Permalink
Post by Stefan Reuther
es ist nicht vorgeschrieben, dass Java in einer langsamen JVM ausgeführt
wird. Man kann Java ganz klassisch nativ compilieren, und auch ein JIT
kann ganz schön knackigen Code erzeugen.
Aber auch dann ist es im Mittel immer noch langsamer als C.
Jedoch ist Java inzwischen tatsächlich schon relativ schnell,
etwa im Vergleich zu Python. Vielleicht hätte Heise besser /das/
lobend erwähnen sollen, als, daß es heute nicht mehr so darauf
ankommen würde.

Schließlich geht es nicht nur um Geschwindigkeit. Google lobt
an C++ auch, daß es hilft, in ihren riesigen Rechenzentren
Energie zu sparen (Progamme, die schneller fertig sind,
brauchen weniger Strom.) Das gleiche gilt auch für Mobilgeräte.

Was mich an Java stört - aber nicht unbedingt in Vergleich zu
anderen Sprachen (die machen das teilweise noch schlechter),
sondern in Vergleich zu meinen Wunschträumen (rant):

- Warum schimpft Oracle nur auf das böse Google, das Java ME
mit Android kaputt gemacht hat, als endlich ein eigenes
JRE mit JavaFX für Android anzubieten? Die Stärke von Java
war die Portabilität, aber jetzt kann man kein Programm
schreiben, das auf Android /und/ Windows läuft. Inzwischen
kann man wohl mit Qt auf mehr Platformen portieren als
mit Java.

- Die GUI für Java war erst AWT, dann Swing, dann JavaFX.
Kürzlich wurde JavaFX erst zum JDK hinzugefügt, aber nun
schon wieder angekündigt, daß es wieder aus dem JDK
entfernt werden soll. Ich will /eine/ stabile GUI für Java.
Sie sollten sich beispielsweise zu Swing bekennen und
sagen, daß es immer in Java SE bleiben wird und
weiter gepflegt werden wird.

- Ich will als Default eine SQL-Datenbank in Java SE,
sei es Derby (=JavaDB) oder SQLite. Leider geht mit der
"Modularisierung" der Zug in eine anderen Richtung:
zur weiteren Balkanisierung von Java SE.

- (aus Sicht von Kursen für Anfänger) Warum fügt das
Installationsprogramm die Binaries unter Windows nicht
zum "Path" hinzu? (Wenigstens, wenn da noch kein
anderes "javac.exe" ist.) Die neue JShell ist gut für
Anfänger, aber warum erscheint sie nicht in der
Programmgruppe im Startmenü, wo ein Anfänger sie
finden könnte? Warum liefern sie nicht als Minimal-IDE
einen Editor mit, dessen Inhalt mit F5 gestartet werden
kann? All dies würde in Programmierkursen am Anfang
Zeit sparen und Anfängern die ersten Schritte
erleichtern.
Dietz Proepper
2018-03-22 02:24:39 UTC
Permalink
Post by Stefan Ram
Post by Stefan Reuther
es ist nicht vorgeschrieben, dass Java in einer langsamen JVM ausgeführt
wird. Man kann Java ganz klassisch nativ compilieren, und auch ein JIT
kann ganz schön knackigen Code erzeugen.
Aber auch dann ist es im Mittel immer noch langsamer als C.
Jedoch ist Java inzwischen tatsächlich schon relativ schnell,
etwa im Vergleich zu Python. Vielleicht hätte Heise besser /das/
lobend erwähnen sollen, als, daß es heute nicht mehr so darauf
ankommen würde.
Ach was soll denn das? Wenn man Nummern crunchen muss, dann verwendet man das,
was auf $zielplattform maximal effizient ist. Fortran, anyone?

In eigentlich allen Realweltszenarien ist Java (bzw. die JVM) genauso
effizient wie jede andere Sprache. Man muss halt wissen, was man tut.

Achja. "Realweltszenario" == das, wo das Geld her kommt.
Einen Kernel würde ich nicht unbedingt in Java schreiben. Allerdings
heutzutage auch sicher nicht in C.

Und last not least - die Programmiersprache ist meist das kleinste Problem.
Herwig AQSR
2018-03-22 11:23:12 UTC
Permalink
2018-03-22 12:24:00 +0100
Post by Dietz Proepper
...
Ach was soll denn das? Wenn man Nummern crunchen muss, dann verwendet man das,
was auf $zielplattform maximal effizient ist. Fortran, anyone?
Long ago: Auf der Telefunken TR4 (Das heisst "TransistorRechner"). 48 k
Worte HauptSpeicher, 100 kHertz Takt, WortBreite 52 Bit (48+4), Verbrauch
25 KiloWatt.

Java hat die Kiste nicht gekonnt :-( die wäre auch mit meinen damaligen
TestProgrammen bis heute noch nicht fertig.

Vor 10 Jahren und einigen Tagen brachte ich das Buch über Fortran IV
auf der TR4 mit nach Clausthal und versuchte, es meinem damaligen
Dozenten zurückzugeben. Eine LeihFrist von einem DrittelJahrhundert
schien mir reichlich. Allerdings gelang es nicht, er hatte im März 2008
seinen letzten BerufsMonat, und den hatte er als Urlaub genommen. Also
habe ich das Buch heute noch. Und mirabile dictu: die alte Faszination
ist in den Seiten immer noch zu finden.

Vielleicht steigt es wieder im Wert.
Post by Dietz Proepper
...
In eigentlich allen Realweltszenarien ist Java (bzw. die JVM) genauso
effizient wie jede andere Sprache. Man muss halt wissen, was man tut.
Kann eigentlich nie schaden.
Post by Dietz Proepper
...
Achja. "Realweltszenario" == das, wo das Geld her kommt.
Einen Kernel würde ich nicht unbedingt in Java schreiben. Allerdings
heutzutage auch sicher nicht in C.
Häufig ist ein Produkt schon länger in der Welt und historisch
gewachsen. Da hat man wenig Einfluss auf die Sprache.

Ich kenne da einen Cobol-Compiler, der in Assembler, Cobol,
C und SchnittMengen-C geschrieben ist - ausserdem sind noch
ein paar binäre Module drin, in denen sich keiner mehr auskennt.
(SchnittMengen-C: isosemantisch mit C und C++ produzierbar.)
Post by Dietz Proepper
Und last not least - die Programmiersprache ist meist das kleinste Problem.
Sag nicht sowas. Vielleicht hast Du Recht, aber einem CompilerSchreiber
sowas zu sagen ist seelische Grausamkeit.

Herwig (morning reboot)
Hermann Riemann
2018-03-22 13:12:44 UTC
Permalink
Post by Herwig AQSR
Post by Dietz Proepper
Ach was soll denn das? Wenn man Nummern crunchen muss, dann verwendet man das,
was auf $zielplattform maximal effizient ist. Fortran, anyone?
Long ago: Auf der Telefunken TR4 (Das heisst "TransistorRechner"). 48 k
Worte HauptSpeicher, 100 kHertz Takt, WortBreite 52 Bit (48+4), Verbrauch
25 KiloWatt.
Die älteste Kiste, die ich verwendete, war eine Siemens 2002
https://de.wikipedia.org/wiki/Siemens_2002
Damit konnte ich nur Algol60 programmieren.
Z.B. Grenzen des Wachstums Algorithmen.
Post by Herwig AQSR
Vor 10 Jahren und einigen Tagen brachte ich das Buch über Fortran IV
auf der TR4 mit nach Clausthal und versuchte, es meinem damaligen
Dozenten zurückzugeben.
Vor mir liegt gerade ein Manual Lisp 1.5 ( Ausgabe 1966 )
Vielleicht sollte ich es irgendwann mal durchlesen.
Post by Herwig AQSR
Post by Dietz Proepper
Man muss halt wissen, was man tut.
Kann eigentlich nie schaden.
Auch wenn es dann nicht funktioniert?
( Wissen ≉ richtig machen.)
Post by Herwig AQSR
Post by Dietz Proepper
Achja. "Realweltszenario" == das, wo das Geld her kommt.
Einen Kernel würde ich nicht unbedingt in Java schreiben. Allerdings
heutzutage auch sicher nicht in C.
Häufig ist ein Produkt schon länger in der Welt und historisch
gewachsen. Da hat man wenig Einfluss auf die Sprache.
Naja, es gibt ja auch noch Präprozessor.
Ich habe einen Listingaufbereiter gebastelt,
der in einer Sprache, die nur Großbuchstaben kannte,
u.a. die Schlüsselworte in Kleinbuchstaben umsetzte.
Dadurch wurden Programme besser lesbar.
Post by Herwig AQSR
Post by Dietz Proepper
Und last not least - die Programmiersprache ist meist das kleinste Problem.
Sag nicht sowas. Vielleicht hast Du Recht, aber einem CompilerSchreiber
sowas zu sagen ist seelische Grausamkeit.
Nicht direkt, aber wenn die Entwicklung z.B. wegen herum irrenden
Hinweisen ( Zeiger pointer) etwas länger dauert, ..
( Es gibt Meinungsverschiedenheiten bei Speicherbelegung ..
also wie bei menschlicher Verständigung.)

Programmierer können auch Probleme bereiten.
Ich habe mal einen aus Rumänien erlebt,
dessen Programm Chaos fand ich auffallend.
Später, als der Programmierer weg war,
und das Programm geändert werden sollte,
hat dann jemand das Programm neu geschrieben.

Hermann
der etliche Jahrzehnte berufliche und private
Programmiererfahrung hat.
--
http://www.hermann-riemann.de
Oliver Voß
2018-03-22 18:15:05 UTC
Permalink
Post by Hermann Riemann
Vor mir liegt gerade ein Manual Lisp 1.5 ( Ausgabe 1966 )
Vielleicht sollte ich es irgendwann mal durchlesen.
Da würde ich doch lieber zeitgemäße Lektüre bevorzugen (z.B. "Practial
Common Lisp").

Gruß,

Oliver
Hermann Riemann
2018-03-22 18:58:59 UTC
Permalink
Post by Oliver Voß
Post by Hermann Riemann
Vor mir liegt gerade ein Manual Lisp 1.5 ( Ausgabe 1966 )
Vielleicht sollte ich es irgendwann mal durchlesen.
Da würde ich doch lieber zeitgemäße Lektüre bevorzugen (z.B. "Practial
Common Lisp").
Warum ein englisches Buch?

Hermann
der "ANSI Common Lisp" von Graham
und "Land of Lisp" von Barski
in seinen Regalen stehen hat.
--
http://www.hermann-riemann.de
Peter Heitzer
2018-03-22 13:26:56 UTC
Permalink
Post by Herwig AQSR
2018-03-22 12:24:00 +0100
Post by Dietz Proepper
...
Ach was soll denn das? Wenn man Nummern crunchen muss, dann verwendet man das,
was auf $zielplattform maximal effizient ist. Fortran, anyone?
Long ago: Auf der Telefunken TR4 (Das heisst "TransistorRechner"). 48 k
Worte HauptSpeicher, 100 kHertz Takt, WortBreite 52 Bit (48+4), Verbrauch
25 KiloWatt.
Bei den Daten (mit Ausnahme der Leistungsaufnahme) sollte es eigentlich
möglich sein, auf einem Mikrocontroller der 2-3 EUR Klasse die TR4
nachzubilden. Hat bisher aber noch niemand gemacht. Ich habe auch noch
kein Fortran für µC gesehen.
--
Dipl.-Inform(FH) Peter Heitzer, ***@rz.uni-regensburg.de
Hermann Riemann
2018-03-22 14:24:51 UTC
Permalink
Post by Peter Heitzer
Post by Herwig AQSR
Long ago: Auf der Telefunken TR4 (Das heisst "TransistorRechner"). 48 k
Worte HauptSpeicher, 100 kHertz Takt, WortBreite 52 Bit (48+4), Verbrauch
25 KiloWatt.
Bei den Daten (mit Ausnahme der Leistungsaufnahme)
Das 25 kW nicht in 230V*16 A passen, wäre für die Leistungsaufnahme
ein Kfz zweckmäßig. (IO Pin über PWM .. an Gashebel.)
Post by Peter Heitzer
sollte es eigentlich möglich sein, auf einem Mikrocontroller der 2-3 EUR Klasse
die TR4 nachzubilden.
Zu wenig RAM.
Zur Nachbildung der TR4 bräuchte man etliche I2C F-Ram.
RAM und Flash-Speicher sollten ansonsten reichen.
Post by Peter Heitzer
Hat bisher aber noch niemand gemacht.
Wozu auch.
Post by Peter Heitzer
Ich habe auch noch kein Fortran für µC gesehen.
µC haben auch kein Gleitkomma.
Und C ist Maschinencode näher.

Hermann
der nach Erfahrung mit C Fortran privat
nicht verwendete.
--
http://www.hermann-riemann.de
Peter Heitzer
2018-03-22 16:01:01 UTC
Permalink
Post by Hermann Riemann
Post by Peter Heitzer
Post by Herwig AQSR
Long ago: Auf der Telefunken TR4 (Das heisst "TransistorRechner"). 48 k
Worte HauptSpeicher, 100 kHertz Takt, WortBreite 52 Bit (48+4), Verbrauch
25 KiloWatt.
Bei den Daten (mit Ausnahme der Leistungsaufnahme)
Das 25 kW nicht in 230V*16 A passen, wäre für die Leistungsaufnahme
ein Kfz zweckmäßig. (IO Pin über PWM .. an Gashebel.)
Post by Peter Heitzer
sollte es eigentlich möglich sein, auf einem Mikrocontroller der 2-3 EUR Klasse
die TR4 nachzubilden.
Zu wenig RAM.
Zur Nachbildung der TR4 bräuchte man etliche I2C F-Ram.
RAM und Flash-Speicher sollten ansonsten reichen.
Preiswerte ARM µC gibt es mit 256 KiB RAM. Das sollte reichen.
Post by Hermann Riemann
Post by Peter Heitzer
Hat bisher aber noch niemand gemacht.
Wozu auch.
Post by Peter Heitzer
Ich habe auch noch kein Fortran für µC gesehen.
µC haben auch kein Gleitkomma.
ARM µC sind (verglichen mit der TR4) IMO ausreichend schnell für eine
FPU-Emulation.
--
Dipl.-Inform(FH) Peter Heitzer, ***@rz.uni-regensburg.de
Dietz Proepper
2018-03-22 13:50:03 UTC
Permalink
Post by Herwig AQSR
2018-03-22 12:24:00 +0100
Post by Dietz Proepper
...
Ach was soll denn das? Wenn man Nummern crunchen muss, dann verwendet man
das, was auf $zielplattform maximal effizient ist. Fortran, anyone?
Long ago: Auf der Telefunken TR4 (Das heisst "TransistorRechner"). 48 k
Worte HauptSpeicher, 100 kHertz Takt, WortBreite 52 Bit (48+4), Verbrauch
25 KiloWatt.
Ich hätte vor 15a fast eine Olivetti P652 retten können. Wurde leider nix
draus.
Hermann Riemann
2018-03-22 14:30:31 UTC
Permalink
Post by Dietz Proepper
Ich hätte vor 15a fast eine Olivetti P652 retten können. Wurde leider nix
draus.
Ich habe eine Sinix Kiste mit NS32016 Prozssor erhalten.
Ich habe ein wenig damit herumgespielt.
Die Absicht damit einen einfachen NS32016 code generator zu basteln
wurde nicht angefangen.
Irgendwann wurde die Maschine aus Platzgründen zum Wertstoffhof gebracht.
Ein Nachteil der Maschine war auch,
das sie exotische Schnittstellen enthielt
die Verbindungen zu anderer Elektronik erschwerte.

Hermann
dessen Bedarf an Gebrauchtware zurückgegangen ist.
--
http://www.hermann-riemann.de
Dietz Proepper
2018-03-22 15:10:06 UTC
Permalink
Post by Hermann Riemann
Post by Dietz Proepper
Ich hätte vor 15a fast eine Olivetti P652 retten können. Wurde leider nix
draus.
Ich habe eine Sinix Kiste mit NS32016 Prozssor erhalten.
Ich habe ein wenig damit herumgespielt.
Die Absicht damit einen einfachen NS32016 code generator zu basteln
wurde nicht angefangen.
Irgendwann wurde die Maschine aus Platzgründen zum Wertstoffhof gebracht.
Ein Nachteil der Maschine war auch,
das sie exotische Schnittstellen enthielt
die Verbindungen zu anderer Elektronik erschwerte.
Die P652 war von 1972 oder so. Iirc hatte sie noch richtigen Kernspeicher.
Hermann Riemann
2018-03-22 15:50:29 UTC
Permalink
Post by Dietz Proepper
Die P652 war von 1972 oder so.
1973
https://it.wikipedia.org/wiki/Olivetti_P652

1972 war HP 35
1974 war Altair 8800
1976 war KIM-1
..

Hermann
der einen HP 35 hatte,
1975 mit elektor 74 computer anfing,
und 1978 einen intersil 6100 Bausatz hatte.
--
http://www.hermann-riemann.de
Dr. Joachim Neudert
2018-03-22 15:56:50 UTC
Permalink
Post by Hermann Riemann
Post by Dietz Proepper
Die P652 war von 1972 oder so.
1973
https://it.wikipedia.org/wiki/Olivetti_P652
1972 war HP 35
1974 war Altair 8800
1976 war KIM-1
..
Hermann
   der einen HP 35 hatte,
Me too.

Ich hab jetzt auch das Remake gekauft- aber es ist nicht dasselbe... :-(

https://www.amazon.de/Wissenschaftlicher-Taschenrechner-schwarz-von-HP/dp/B004DBAHQE/


Klar, ist immer noch recht gut. Und ungleich preiswerter als damals der
HP-35.
Post by Hermann Riemann
   1975 mit elektor 74 computer anfing,
   und 1978 einen intersil 6100 Bausatz hatte.
Stefan Ram
2018-03-22 16:03:08 UTC
Permalink
Post by Hermann Riemann
1972 war HP 35
Intel 4004 (erster Mikroprozessor)
Computerspiel „Pong“
(Außerhalb der Computerwelt:
"Im Anfang war der Wasserstoff" - Hoimar von Ditfurth)
Post by Hermann Riemann
1974 war Altair 8800
In diesem Jahr kosten einfache Taschenrechner mit
Trigonometrie und Logarithmen noch dreistellige DM-Beträge.
(Außerhalb der Computerwelt:
Romy Schneider in einer Talkshow zum Bankräuber Burkhard
Driest: „Sie gefallen mir. Sie gefallen mir sogar sehr!“)
Post by Hermann Riemann
1976 war KIM-1
Neu im Handel: Digitaluhren.
Gründung von „Apple“
Debüt des Apple I
(Außerhalb der Computerwelt: David Bowie zieht nach Berlin)
Dr. Joachim Neudert
2018-03-22 16:09:15 UTC
Permalink
Post by Stefan Ram
Post by Hermann Riemann
1972 war HP 35
Intel 4004 (erster Mikroprozessor)
Computerspiel „Pong“
"Im Anfang war der Wasserstoff" - Hoimar von Ditfurth)
Post by Hermann Riemann
1974 war Altair 8800
In diesem Jahr kosten einfache Taschenrechner mit
Trigonometrie und Logarithmen noch dreistellige DM-Beträge.
Romy Schneider in einer Talkshow zum Bankräuber Burkhard
Driest: „Sie gefallen mir. Sie gefallen mir sogar sehr!“)
Post by Hermann Riemann
1976 war KIM-1
Neu im Handel: Digitaluhren.
Gründung von „Apple“
Debüt des Apple I
(Außerhalb der Computerwelt: David Bowie zieht nach Berlin)
Ha!

2018: Dr. Neudert erwägt zu Ostern mal wieder nach Valeggio zu fahren
und die dortigen Tortellini zu geniessen.
Hermann Riemann
2018-03-22 17:56:41 UTC
Permalink
Post by Dr. Joachim Neudert
2018: Dr. Neudert erwägt zu Ostern mal wieder nach Valeggio zu fahren
und die dortigen Tortellini zu geniessen.
Und Hermann will wieder am Karfreitag Schweinefleisch essen,
um religiöse Gebräuche zu "gedenken".

Hermann
der sich 2018 gezwungen sieht, SuSE 42.2 durch SuSE 42.3 zu ersetzen
und bei dieser Gelegenheit neben SuSE: Mint, Ubuntu und Debian
auf seine Arbeitsrechner über Grub2 Auswahl haben möchte.
--
http://www.hermann-riemann.de
Hermann Riemann
2018-03-22 18:39:58 UTC
Permalink
Post by Stefan Ram
Post by Hermann Riemann
1972 war HP 35
Intel 4004 (erster Mikroprozessor)
Computerspiel „Pong“
https://www.perrypedia.proc.org/wiki/1972https://de.wikipedia.org/wiki/Money,_Money

Für consum Fans:
https://en.wikipedia.org/wiki/Mercedes_Benz_(song)
http://www.songtexte.com/songtext/janis-joplin/mercedez-benz-23ea60c7.html
Post by Stefan Ram
Post by Hermann Riemann
1974 war Altair 8800
Heft Mai 1974 elektor beginnt mit computer 64
Wer kann hier noch mit 74181 ohne "Nachschlagen"
etwas anfangen?
( 20.11.2017 19:14 in de.alt.folkore.computer )
Post by Stefan Ram
Post by Hermann Riemann
1976 war KIM-1
Gründung von „Apple“
Am 1. April, als Aprilscherz?
Post by Stefan Ram
(Außerhalb der Computerwelt: David Bowie zieht nach Berlin)
https://de.wikipedia.org/wiki/Money,_Money,_Money

2016:
Im Katalog von Reichelt ist die Z80 CPU noch zu finden.

Hermann
der noch Material aus seinem computer Kauf
für computer 74 hat.
--
http://www.hermann-riemann.de
Volker Borchert
2018-03-23 20:25:46 UTC
Permalink
Post by Hermann Riemann
Wer kann hier noch mit 74181 ohne "Nachschlagen"
etwas anfangen?
Ohne Nachschlagen weiß ich, daß es eine ALU ist. Um wirklich was damit
anfangen zu können, müßte ich dann doch das orangefarbene Buch benutzen.
Post by Hermann Riemann
Im Katalog von Reichelt ist die Z80 CPU noch zu finden.
Als Vaporware oder tatsächlich kurzfristig lieferbar?
--
"I'm a doctor, not a mechanic." Dr Leonard McCoy <***@ncc1701.starfleet.fed>
"I'm a mechanic, not a doctor." Volker Borchert <***@despammed.com>
Wolfgang Kynast
2018-03-23 22:05:35 UTC
Permalink
On 23 Mar 2018 20:25:46 GMT, "Volker Borchert" posted:

...
Post by Volker Borchert
Post by Hermann Riemann
Im Katalog von Reichelt ist die Z80 CPU noch zu finden.
Als Vaporware oder tatsächlich kurzfristig lieferbar?
2018:
https://www.reichelt.de/?ACTION=3;ARTICLE=23034;SEARCH=Z80
--
Schöne Grüße,
Wolfgang
Hermann Riemann
2018-03-22 12:21:04 UTC
Permalink
Post by Dietz Proepper
Post by Stefan Ram
Post by Stefan Reuther
es ist nicht vorgeschrieben, dass Java in einer langsamen JVM ausgeführt
wird. Man kann Java ganz klassisch nativ compilieren, und auch ein JIT
kann ganz schön knackigen Code erzeugen.
Aber auch dann ist es im Mittel immer noch langsamer als C.
Jedoch ist Java inzwischen tatsächlich schon relativ schnell,
etwa im Vergleich zu Python. Vielleicht hätte Heise besser /das/
lobend erwähnen sollen, als, daß es heute nicht mehr so darauf
ankommen würde.
Ach was soll denn das? Wenn man Nummern crunchen muss, dann verwendet man das,
was auf $zielplattform maximal effizient ist. Fortran, anyone?
C ist meist fast so effizient wie Fortran.
Post by Dietz Proepper
In eigentlich allen Realweltszenarien ist Java (bzw. die JVM) genauso
effizient wie jede andere Sprache. Man muss halt wissen, was man tut.
Schlicht und einfach nein.
Es gibt Realwelten, da zählt fast nur die Programmierzeit.
In diesem Falle siegt IMHO bei kleinen Aufgaben Python.

Dann gibt es kleine System im embedded Bereich,
wo Rechenaufwand und Energie relevant ist.
Da dürfte immer noch Assembler das beste sein.
Mir ist keine höhere Sprache bekannt,
die carry Bit, interrupt etc ausreichend gut behandeln kann.

Dann gibt es den Bereich großer Programmiersysteme.
Derzeit versucht man sich da mit Objektdesorientierung,
wo Objektbeschreibungen nach meiner Einschätzung
an politischen Absichtserklärungen erinnern.
Und es bei Anwendungen erhebliche Meinungsunterschiede gibt.
( Ordentlicher Journalismus
( Maschinentrace: was passiert da eigentlich) ..)

Früher war Pseudocode modern.
Der compiler der Pseudocode in code umsetzte,
hatte, soweit ich es mitbekommen habe,
dann die gleiche Größenordnung wie der code.

Ich vermute, pseudocode kommt wieder.
Und wird mit ki Mittel ( rate mal was richtig sein könnte,
also suchen testen auswählen.
Unter Verwendung von Wissen und Erfahrung. )
in C ( später in compiler Zwischensprache) übertragen.
Post by Dietz Proepper
Achja. "Realweltszenario" == das, wo das Geld her kommt.
Führer befiehl, wir (müssen?) folgen.
Warum wird sonst so viel Malware produziert?
Post by Dietz Proepper
Einen Kernel würde ich nicht unbedingt in Java schreiben.
Ich vermute, das geht nicht ohne Trixerei,
mit der man peek und poke erzeugt.
Post by Dietz Proepper
Allerdings heutzutage auch sicher nicht in C.
https://www.heise.de/newsticker/meldung/Linux-Kernel-durchbricht-die-20-Millionen-Zeilen-Marke-2730780.html

In meine Z80 6502 Systeme habe ich die kernels
hexadezimal in Maschinencode erstellt.

Manchmal bastele ich an einer? virtuellen CPU
unter Verwendung der Programmiersprache Python3.

20 Millionen Zeilen werde ich in meiner Restlebenszeit
nicht mehr direkt eintippen.
Das geht nur mit Generatoren,
wobei zum Testen und entwickeln lisp interessant
sein könnte, weil deren interner code mittels eval ausführbar ist.
Post by Dietz Proepper
Und last not least - die Programmiersprache ist meist das kleinste Problem.
Aus
https://www.bernd-leitenberger.de/echte-programmierer-neu.shtml
"Und außerdem, ein zu allem entschlossener Echter Programmierer kann in
jeder Sprache FORTRAN-Programme schreiben."

Da gibt es den Programmierstil, wie z.B. die Namensvergabe.
Bei größeren Programmen ist die eigentliche Sprache
durch Namen und Funktionalität der Variablen und Funktionen etc. bestimmt.
( vergleichbar: Was liegt in welcher Schublade mit Außenschild.)

Eine Programmiersprache kann schon die Lesbarkeit beeinflussen.
So wie die Werbung auf internet Seiten

Hermann
fragend für wen || für wen or für wen ∨
bzw. für wen <= für wen le für wen ≤
besser lesbar ist. ( C/C+Python Python/Fortran Mathe/Mathe )
--
http://www.hermann-riemann.de
Wolfgang Kynast
2018-03-23 17:09:21 UTC
Permalink
Post by Dietz Proepper
Post by Stefan Ram
Post by Stefan Reuther
es ist nicht vorgeschrieben, dass Java in einer langsamen JVM ausgeführt
wird. Man kann Java ganz klassisch nativ compilieren, und auch ein JIT
kann ganz schön knackigen Code erzeugen.
Aber auch dann ist es im Mittel immer noch langsamer als C.
Jedoch ist Java inzwischen tatsächlich schon relativ schnell,
etwa im Vergleich zu Python. Vielleicht hätte Heise besser /das/
lobend erwähnen sollen, als, daß es heute nicht mehr so darauf
ankommen würde.
Ach was soll denn das? Wenn man Nummern crunchen muss, dann verwendet man das,
was auf $zielplattform maximal effizient ist. Fortran, anyone?
In eigentlich allen Realweltszenarien ist Java (bzw. die JVM) genauso
effizient wie jede andere Sprache. Man muss halt wissen, was man tut.
Eben. Vor allem: effiziente Algorithmen neigen dazu, aufwändiger zu
programmieren zu sein. Was dazu führt, dass Asm- und C-Programmierer
einen Bogen drum machen.

Da hab ich in meiner Berufspraxis einiges zu sehen bekommen,
angefangen mit der sequentiellen Suche, weil ein Binärbaum ja sooooo
aufwändig zu programmieren ist!

Das lustigste waren mal zwei Informatik-Studenten, der Betreuung mir
aufgedrückt wurde, nachdem ihr Programm es schaffte, für jede Suche
eines Mitarbeiters in einem Bestand von 1000 etwa 10 sec. CPU-Zeit
eines IBM-Grossrechners zu verbraten.

Des Rätsels Lösung: sie haben den Datenbestand für jede Suche im
Speicher neu sortiert, dazu maximal ungünstige Datenstrukturen
verwendet und einen Algorithmus implementiert der doppelt so schlecht
war wie der bisher schlechteste (sortieren durch vertauschen) :-)
--
Schöne Grüße,
Wolfgang
Volker Borchert
2018-03-23 20:29:14 UTC
Permalink
Post by Wolfgang Kynast
Das lustigste waren mal zwei Informatik-Studenten, der Betreuung mir
aufgedrückt wurde, nachdem ihr Programm es schaffte, für jede Suche
eines Mitarbeiters in einem Bestand von 1000 etwa 10 sec. CPU-Zeit
eines IBM-Grossrechners zu verbraten.
Des Rätsels Lösung: sie haben den Datenbestand für jede Suche im
Speicher neu sortiert, dazu maximal ungünstige Datenstrukturen
verwendet und einen Algorithmus implementiert der doppelt so schlecht
war wie der bisher schlechteste (sortieren durch vertauschen) :-)
Wieviele mit dem Rattanrohr gab es dafür?
--
"I'm a doctor, not a mechanic." Dr Leonard McCoy <***@ncc1701.starfleet.fed>
"I'm a mechanic, not a doctor." Volker Borchert <***@despammed.com>
Dietz Proepper
2018-03-24 11:12:51 UTC
Permalink
Post by Volker Borchert
Post by Wolfgang Kynast
Das lustigste waren mal zwei Informatik-Studenten, der Betreuung mir
aufgedrückt wurde, nachdem ihr Programm es schaffte, für jede Suche
eines Mitarbeiters in einem Bestand von 1000 etwa 10 sec. CPU-Zeit
eines IBM-Grossrechners zu verbraten.
Des Rätsels Lösung: sie haben den Datenbestand für jede Suche im
Speicher neu sortiert, dazu maximal ungünstige Datenstrukturen
verwendet und einen Algorithmus implementiert der doppelt so schlecht
war wie der bisher schlechteste (sortieren durch vertauschen) :-)
Wieviele mit dem Rattanrohr gab es dafür?
Lochkarten neu sortieren. 5000. Ohne mechanische Hilfe.
Wolfgang Kynast
2018-03-24 15:38:15 UTC
Permalink
Post by Dietz Proepper
Post by Volker Borchert
Post by Wolfgang Kynast
Das lustigste waren mal zwei Informatik-Studenten, der Betreuung mir
aufgedrückt wurde, nachdem ihr Programm es schaffte, für jede Suche
eines Mitarbeiters in einem Bestand von 1000 etwa 10 sec. CPU-Zeit
eines IBM-Grossrechners zu verbraten.
Des Rätsels Lösung: sie haben den Datenbestand für jede Suche im
Speicher neu sortiert, dazu maximal ungünstige Datenstrukturen
verwendet und einen Algorithmus implementiert der doppelt so schlecht
war wie der bisher schlechteste (sortieren durch vertauschen) :-)
Wieviele mit dem Rattanrohr gab es dafür?
Lochkarten neu sortieren. 5000. Ohne mechanische Hilfe.
Neee, das war schon zu 3270-Zeiten :-)
--
Schöne Grüße,
Wolfgang
Diedrich Ehlerding
2018-03-24 09:16:09 UTC
Permalink
Post by Wolfgang Kynast
Eben. Vor allem: effiziente Algorithmen neigen dazu, aufwändiger zu
programmieren zu sein. Was dazu führt, dass Asm- und C-Programmierer
einen Bogen drum machen.
Da hab ich in meiner Berufspraxis einiges zu sehen bekommen,
angefangen mit der sequentiellen Suche, weil ein Binärbaum ja sooooo
aufwändig zu programmieren ist!
Das lustigste waren mal zwei Informatik-Studenten, der Betreuung mir
aufgedrückt wurde, nachdem ihr Programm es schaffte, für jede Suche
eines Mitarbeiters in einem Bestand von 1000 etwa 10 sec. CPU-Zeit
eines IBM-Grossrechners zu verbraten.
Ja, Sortieralgorithmen ...

Vor ca 35 Jahren, ich kam gerade von der Uni, traf ich auf einen
handgeschnitzten Sortieralgorithmus, in Maschinensprache auf einem /370-
Rechner (nach heutigen Maßstäben waren die schnarchlangsam, die damaligen
CPUn takteten nicht im GHz-, sondern im MHz-Bereich) gebastelt. Der Autor
glaubte ja nicht daran, dass es passende Bibliotheksfunktionen gibt.

Wie das genau ablief, habe ich nie verstanden (selbstmodifizierender Code;
brr...) Der Algorithmus funktionierte auch für Listen der Länge 20. Und
dann wuchsen die Liste auf die Länge 2000 bis 4000, und das Teil brauchte
ca 1000 (!) CPU-Sekunden. Muss irgendwie gruselig gewesen sein.

$KOLLEGE war auch der Ansicht, das sei zu lange. Er bastelte quick+dirty
eine naive Variante ("such das Minimum und vertausch es mit dem ersten
Element"); die brauchte dann nur noch 100 Sekunden. Darauf war er auch
stolz; immerhin, Faktor 10 besser. Ich meinte zwar "das ist immer noch ein
Verfahren mit quadratischem Aufwand, das ist immer noch viel zu lange,
geht besser!", aber ich war ja neu und bekam herablassend zu hören "Sie
mit ihren Uni-Kenntnissen haben ja keine Ahnung von der Praxis, das
kriegen Sie niemals besser hin als ich!".

Nun, ich fühlte mich in meiner Ehre getroffen und bastelte mal auf die
schnelle einen Quicksort (oder Heapsort, weiß ich nicht mehr genau). Ich
hätte vorher mit ihm eine Wette abschließen sollen - der wäre jede Wette
eingegangen. Meine Version brauchte dann für 6000 Listenelemente nur noch
10 Sekunden ...

Danach wurde meine Kompetenz nicht mehr ganz so heftig angezweifelt ;-)

Diedrich
--
pgp-Key (RSA) 1024/09B8C0BD
fingerprint = 2C 49 FF B2 C4 66 2D 93 6F A1 FF 10 16 59 96 F3
HTML-Mail wird ungeleſen entſorgt.
Herwig AQSR
2018-03-24 11:38:33 UTC
Permalink
2018-03-24 12:39:00 +0100
Post by Diedrich Ehlerding
...
$KOLLEGE war auch der Ansicht, das sei zu lange. Er bastelte quick+dirty
eine naive Variante ("such das Minimum und vertausch es mit dem ersten
Element"); die brauchte dann nur noch 100 Sekunden. Darauf war er auch
stolz; immerhin, Faktor 10 besser. Ich meinte zwar "das ist immer noch ein
Verfahren mit quadratischem Aufwand, das ist immer noch viel zu lange,
geht besser!", aber ich war ja neu und bekam herablassend zu hören "Sie
mit ihren Uni-Kenntnissen haben ja keine Ahnung von der Praxis, das
kriegen Sie niemals besser hin als ich!".
Kommt mir bekannt vor - aus mehreren LebensBereichen.

Gerade SortierAlgorithmen sind ein Beispiel, wo der
Griff zum LehrBuch der Informatik naheliegt, und so
der kompetente Informatiker auch eigentlich weiss,
dass er sich mal eben auf den state of the art
bringen muss.

Bei Siemens in NeuPerlach gab es früher mal eine
WerksBibliothek - und wenn es bloss um SortierAlgorithmen
geht, da wird man da mehrfach fündig. Die Notwendigkeit,
das Rad selber zu erfinden, auch auf die Gefahr hin, dass
da etwas Eckiges rauskommt, entfällt. Zumindest bei
FachThemen wird man heute im Internet gelegentlich
fündig - leider aber wird das oft als Grund genommen,
keine LehrBücher mehr anzuschaffen. Und es ist nicht
jedes LehrBuch als EBook im Internet - die Autoren wollen
ja auch was verdienen! (Das ist in der Medizin übrigens
noch schlimmer.)

Und natürlich - im ArbeitsUmfeld ist das mit dem
konzentrierten Lesen so eine Sache. Der Kollege, der
SPON liesst, sieht genauso aus wie der, der online
FachLiteratur liesst. (Management ist also schnell
misstrauisch.) Letzterer wird durch das
GrossRaumBüroPalaver bei seinen intellektuellen
Bemühungen aber ausgebremst - und mit dem PC kann
man nicht rausrennen und sich eine ruhige Ecke
suchen. Das Dilletieren zur WiederErfindung des
Rades ist da oft der Weg des geringsten Widerstandes.

Ich habe es schon erlebt, dass ich anlässlich einer
Kundgebung bei einem WarnStreik dabei mehr zielführende
fachliche Überlegungen gemacht habe als wenn ich im
Büro sitzengeblieben wäre und "gearbeitet" hätte.
(Ist man dann "StreikBrecher"?)

Nebenbei: wenn man die berufliche Tätigkeit der
SoftwareHerstellung als AnlernJob auffasst und die
eigenen "genialen" Algorithmen häufiger mal crashen,
vorzugsweise beim Kunden, dann ist man unentbehrlich
und sichert so seinen ArbeitsPlatz. Wenn man seine
Arbeit perfekt und unauffällig macht, dann gilt man
irgendwann als überflüssig. Auch nicht gerade eine
Motivation, wenn man Qualität abliefern möchte.

Herwig (morning reboot)
Dietz Proepper
2018-03-24 12:02:21 UTC
Permalink
Post by Herwig AQSR
2018-03-24 12:39:00 +0100
Post by Diedrich Ehlerding
...
$KOLLEGE war auch der Ansicht, das sei zu lange. Er bastelte quick+dirty
eine naive Variante ("such das Minimum und vertausch es mit dem ersten
Element"); die brauchte dann nur noch 100 Sekunden. Darauf war er auch
stolz; immerhin, Faktor 10 besser. Ich meinte zwar "das ist immer noch ein
Verfahren mit quadratischem Aufwand, das ist immer noch viel zu lange,
geht besser!", aber ich war ja neu und bekam herablassend zu hören "Sie
mit ihren Uni-Kenntnissen haben ja keine Ahnung von der Praxis, das
kriegen Sie niemals besser hin als ich!".
Kommt mir bekannt vor - aus mehreren LebensBereichen.
Gerade SortierAlgorithmen sind ein Beispiel, wo der
Griff zum LehrBuch der Informatik naheliegt, und so
der kompetente Informatiker auch eigentlich weiss,
dass er sich mal eben auf den state of the art
bringen muss.
TAOCP sollte man im Regal stehen haben, right.
Matthias Hanft
2018-03-24 18:04:08 UTC
Permalink
Post by Herwig AQSR
Gerade SortierAlgorithmen sind ein Beispiel, wo der
Griff zum LehrBuch der Informatik naheliegt, und so
der kompetente Informatiker auch eigentlich weiss,
dass er sich mal eben auf den state of the art
bringen muss.
Wobei man sowas aber auch verwenden kann, ohne es zu
verstehen :-) Ich muss gestehen, dass ich seit rund
dreißig Jahren einen Sortieralgorithmus am Leben
erhalte, den ich damals in einem BASIC-Handbuch
entdeckt hatte und den ich heute noch gelegentlich
in meinen Delphi-Programmen verwende (obacht, Spag-
hetti-Code; die Labels sind die Zeilennummern des
ehemaligen Original-BASIC-Programms):

--- schnipp ---

procedure sort;
label 2030,2060,2070;
var i,j,k,l,m:integer;
s:t_string24;
begin (* sort *)
m:=n;
2030: m:=m div 2;
if m=0 then exit; (* fertig *)
j:=1;
k:=n-m;
2060: i:=j;
2070: l:=i+m;
if as[i]>as[l] then begin
s:=as[i]; // vertausche as[i] und as[l]
as[i]:=as[l];
as[l]:=s;
i:=i-m;
if i>=1 then goto 2070
end; (* if as[i]>as[l] *)
j:=j+1;
if j>k then goto 2030;
goto 2060
end; (* sort *)

--- schnapp ---

Das sortiert ein String-Array "as" mit der Länge "n". Es ist
irre schnell und funktioniert wunderbar, aber ich habe in
dreißig Jahren nicht verstanden, wie und warum es funktio-
niert. Muss ich aber auch nicht :-)

Trotzdem: Weiß zufällig jemand, wie dieser Algorithmus heißt
(und ob es vielleicht einen noch besseren gibt)? Nach dreißig
Jahren wäre es ja vielleicht doch mal an der Zeit, auch die
Theorie dahinter zu verstehen...

Gruß Matthias.
Herwig AQSR
2018-03-25 01:22:09 UTC
Permalink
2018-03-25 03:23:00 +0200
Post by Matthias Hanft
...
Wobei man sowas aber auch verwenden kann, ohne es zu
verstehen :-) Ich muss gestehen, dass ich seit rund
dreißig Jahren einen Sortieralgorithmus am Leben
erhalte, ...
Achtung, Opa erzält vom Krieg!:

Ich habe lange einen Algorithmus am Leben erhalten,
der überhaupt nicht notwendig war! TatOrt: der
ESQL-Cobol Precompiler im BS2000. Ich kam als
einziger etwas spät zu dem Projekt und kriegte
eine zentrale Phase, die aus den Ergebnissen der
lexikalischen und syntaktischen Analyse einen
das QuellProgramm repräsentierenden Baum aufbauen
sollte - wie ein Compiler das halt so macht (Ein
Precompiler muss dabei nicht das ganze Programm
verstehen, aber in die Einzelheiten will ich hier
nicht gehen.).

Eine der Funktionen, die ich als zentrale Komponente
anbieten sollte, war ein BaumDurchLauf - beginnend
*irgendwo* im Baum! - Eine der anderen Phasen brauchte
das eben.

Es gab zwei Möglichkeiten: Kanonischer BaumDurchlauf,
und erst, wenn man am vorgegebenen Knoten vorbeikommt,
dann "gildet" es, oder

den vorgegebenen Knoten und dessen Umgebung - die
Pointer und alles - analysieren, um herauszufinden,
welches der nächste Knoten im BaumDurchlauf ist.

Ich wählte die zweite Methode, obwohl algorithmisch
komplexer - aber den ganzen Baum zu traversieren,
das wollte ich nicht.

Als alles fertig war und funktionierte, erfuhr ich
dann freundlicherweise, dass es in der Praxis gar
nicht vorkommen würde, etwas anderes als die Söhne
eines Knoten zu traversieren - dazu wäre nur das
Folgen einer Kette von Pointern nötig gewesen!

Der überflüssige Code, den ich geschrieben habe,
ist heute noch drin. Und der ist schuld daran, dass
ich nicht mit gutem Gewissen behaupten kann, in
diesem Produkt nie fehlerhaften Code geschrieben
zu haben, denn da dieser Teil des Codes nie
ausgeführt wird, gibt es dafür keinen
(experimentellen) Beweis!

So - jetzt habe ich ein BetriebsGeheimnis verraten
- im ESQL-Cobol-Precompiler im BS2000 gibt es
perfekten, wenn auch unnützen Code. Und der wird
mich überleben, wie das manchmal so ist, bei
unnützen Kindern ...

KriegsBericht Ende.

Herwig
Matthias Eißing
2018-03-25 09:37:20 UTC
Permalink
Post by Matthias Hanft
Trotzdem: Weiß zufällig jemand, wie dieser Algorithmus heißt
(und ob es vielleicht einen noch besseren gibt)?
Das ist ein „Mergesort“

Effizienz ist abhängig von der zu sortierenden Menge
--
cu://Matthias.Eiß***@iOS
Volker Borchert
2018-03-25 08:17:14 UTC
Permalink
Post by Herwig AQSR
Post by Diedrich Ehlerding
$KOLLEGE war auch der Ansicht, das sei zu lange. Er bastelte quick+dirty
eine naive Variante ("such das Minimum und vertausch es mit dem ersten
Element"); die brauchte dann nur noch 100 Sekunden. Darauf war er auch
stolz; immerhin, Faktor 10 besser. Ich meinte zwar "das ist immer noch ein
Verfahren mit quadratischem Aufwand, das ist immer noch viel zu lange,
geht besser!", aber ich war ja neu und bekam herablassend zu hören "Sie
mit ihren Uni-Kenntnissen haben ja keine Ahnung von der Praxis, das
kriegen Sie niemals besser hin als ich!".
Kommt mir bekannt vor - aus mehreren LebensBereichen.
Leider gibt es reichlich Beispiele, die ihm recht geben. Auch (und
vielleicht gerade) Leute, die brillante Ideen haben. Die wirklich Guten
wissen das und überlassen die handwerkliche Umsetzung ihren Doktoranden
[0] bzw. MATAen [1].
Post by Herwig AQSR
Gerade SortierAlgorithmen sind ein Beispiel, wo der
Griff zum LehrBuch der Informatik naheliegt, und so
der kompetente Informatiker auch eigentlich weiss,
dass er sich mal eben auf den state of the art
bringen muss.
Und wo der kompetente MATA [1] weiß, daß sich in der Laufzeitbibliothek
oder gar im Betrübssüstem oftmals eine Sortierroutine befindet, mit der
sich ein paar richtig gute Leute richtig viel Mühe gegeben haben [2],
und daß man sich die mal genau anschaut, bevor man selber anfängt, das
(dreieckige) Rad neu zu erfinden.

[0] Und die wiederum hoffentlich nicht den studentischen Hilfskräften,
sondern MATAen [1].
[1] Heißen heute [3] wohl "Fachinformatiker Anwendungsentwicklung".
[2] Von gelegentlichen blunders wie dem TimSort-Bug in Java abgesehen.
[3] Ob sie noch so kompetent sind wie damals die MATAen?
--
"I'm a doctor, not a mechanic." Dr Leonard McCoy <***@ncc1701.starfleet.fed>
"I'm a mechanic, not a doctor." Volker Borchert <***@despammed.com>
Hermann Riemann
2018-03-25 11:44:05 UTC
Permalink
Post by Herwig AQSR
Gerade SortierAlgorithmen sind ein Beispiel, wo der
Griff zum LehrBuch der Informatik naheliegt,
Erinnert mich an Kommunismus,
eine Aufräumformel für alles.

Wenn ich aufräume, versuche ich mich nach momentaner
Lage zu orientieren.
Beispiel Bücher
Da gibt es Gesichtspunkte wie Gebiet, Alter,
Häufigkeit der geschätzten Benutzung, ..

Hermann
der nicht nach einem Kriterium sortiert,
wo ihm bei wenigen kleinen Fällen nach einem Kriterium
der Aufruf menge.sort(sortier_nach_funktion) reicht.
und beim Aufräumen häufig an unvorhergesehenen
Fällen unterbrochen wird.
--
http://www.hermann-riemann.de
Wolfgang Kynast
2018-03-25 12:08:22 UTC
Permalink
On Sun, 25 Mar 2018 13:44:05 +0200, "Hermann Riemann" posted:

...
Post by Hermann Riemann
Beispiel Bücher
Da gibt es Gesichtspunkte wie Gebiet, Alter,
Häufigkeit der geschätzten Benutzung, ..
Die Tage irgendwo gesehen: nach Buchrückenfarbe.
;-)
--
Wolfgang
Herwig AQSR
2018-03-25 21:28:46 UTC
Permalink
2018-03-25 23:29:00 +0200
Post by Hermann Riemann
...
Post by Herwig AQSR
Gerade SortierAlgorithmen sind ein Beispiel, wo der
Griff zum LehrBuch der Informatik naheliegt,
Erinnert mich an Kommunismus,
eine Aufräumformel für alles.
Nö. Ein gutes LehrBuch stellt mehrere Algorithmen
und ihre angemessenen AnwendungsSzenarien dar.
Und sogar der dümmste Algorithmus hat seinen Platz
- wenn Du drei Sachen sortierst, ist BubbleSort
das geschickteste. Nur als Beispiel jetzt, aber
ich glaube nicht, dass es noch einen dööferen
SortierAlgorithmus als BubbleSort gibt.

Herwig
Wolfgang Kynast
2018-03-25 21:45:24 UTC
Permalink
Post by Herwig AQSR
2018-03-25 23:29:00 +0200
Post by Hermann Riemann
...
Post by Herwig AQSR
Gerade SortierAlgorithmen sind ein Beispiel, wo der
Griff zum LehrBuch der Informatik naheliegt,
Erinnert mich an Kommunismus,
eine Aufräumformel für alles.
Nö. Ein gutes LehrBuch stellt mehrere Algorithmen
und ihre angemessenen AnwendungsSzenarien dar.
Und sogar der dümmste Algorithmus hat seinen Platz
- wenn Du drei Sachen sortierst, ist BubbleSort
das geschickteste. Nur als Beispiel jetzt, aber
ich glaube nicht, dass es noch einen dööferen
SortierAlgorithmus als BubbleSort gibt.
Dochdoch, die genannten Jungs hatten ihn schließlich implementiert!
;-)
--
Wolfgang
Hermann Riemann
2018-03-26 05:31:21 UTC
Permalink
Post by Herwig AQSR
Post by Hermann Riemann
Post by Herwig AQSR
Gerade SortierAlgorithmen sind ein Beispiel, wo der
Griff zum LehrBuch der Informatik naheliegt,
Erinnert mich an Kommunismus,
eine Aufräumformel für alles.
Nö. Ein gutes LehrBuch stellt mehrere Algorithmen
und ihre angemessenen AnwendungsSzenarien dar.
Und sogar der dümmste Algorithmus hat seinen Platz
- wenn Du drei Sachen sortierst, ist BubbleSort
das geschickteste. Nur als Beispiel jetzt, aber
ich glaube nicht, dass es noch einen dööferen
SortierAlgorithmus als BubbleSort gibt.
Doch, solange die Reihenfolge zufällig zu mutieren,
bis die Reihenfolge der Zielvorgabe entspricht.

Hermann
der unter Bedingungen des totalen Chaos
bei schnell wechselnden Sortierkriterien
kein anderes funktionierendes Verfahren kennt.
--
http://www.hermann-riemann.de
Herwig AQSR
2018-03-26 12:22:58 UTC
Permalink
2018-03-26 14:23:00 +0200
Post by Hermann Riemann
...
Post by Herwig AQSR
- wenn Du drei Sachen sortierst, ist BubbleSort
das geschickteste. Nur als Beispiel jetzt, aber
ich glaube nicht, dass es noch einen dööferen
SortierAlgorithmus als BubbleSort gibt.
Doch, solange die Reihenfolge zufällig zu mutieren,
bis die Reihenfolge der Zielvorgabe entspricht.
Naja, vielleicht. Das Vergleichen ReihenFolge gegen
ZielVorgabe ist vielleicht nicht ganz untrivial
(LochProblematik bei Arrays oder Strukturen).
Kann man schon viel falsch machen.

Herwig (still morning reboot)
Dietz Proepper
2018-03-24 11:12:14 UTC
Permalink
Post by Wolfgang Kynast
Post by Dietz Proepper
Post by Stefan Ram
Post by Stefan Reuther
es ist nicht vorgeschrieben, dass Java in einer langsamen JVM ausgeführt
wird. Man kann Java ganz klassisch nativ compilieren, und auch ein JIT
kann ganz schön knackigen Code erzeugen.
Aber auch dann ist es im Mittel immer noch langsamer als C.
Jedoch ist Java inzwischen tatsächlich schon relativ schnell,
etwa im Vergleich zu Python. Vielleicht hätte Heise besser /das/
lobend erwähnen sollen, als, daß es heute nicht mehr so darauf
ankommen würde.
Ach was soll denn das? Wenn man Nummern crunchen muss, dann verwendet man
das, was auf $zielplattform maximal effizient ist. Fortran, anyone?
In eigentlich allen Realweltszenarien ist Java (bzw. die JVM) genauso
effizient wie jede andere Sprache. Man muss halt wissen, was man tut.
Eben. Vor allem: effiziente Algorithmen neigen dazu, aufwändiger zu
programmieren zu sein. Was dazu führt, dass Asm- und C-Programmierer
einen Bogen drum machen.
Beispielsweise. Bzw. wenn Du eine C-Implementierung mit viel
Speichermanagement hast (malloc/free sind quasi kostenfrei <duck>) und die 1:1
auf eine JVM, vielleicht noch mit ungeschickten GC-Einstellungen portierst,
dann wird diese mit Sicherheit eine Größenordnung langsamer laufen. Aber das
ist eben das, was ich oben unter "wissen, was zu tun ist" subsumierte.
Post by Wolfgang Kynast
Da hab ich in meiner Berufspraxis einiges zu sehen bekommen,
angefangen mit der sequentiellen Suche, weil ein Binärbaum ja sooooo
aufwändig zu programmieren ist!
Hehe. Und auf der Teststage lief es auch gaaanz schnell. Dumm nur, dass in
PROD die Tabelle nicht 50, sondern 250000 Einträge umfasst.
Post by Wolfgang Kynast
Das lustigste waren mal zwei Informatik-Studenten, der Betreuung mir
aufgedrückt wurde, nachdem ihr Programm es schaffte, für jede Suche
eines Mitarbeiters in einem Bestand von 1000 etwa 10 sec. CPU-Zeit
eines IBM-Grossrechners zu verbraten.
Des Rätsels Lösung: sie haben den Datenbestand für jede Suche im
Speicher neu sortiert, dazu maximal ungünstige Datenstrukturen
verwendet und einen Algorithmus implementiert der doppelt so schlecht
war wie der bisher schlechteste (sortieren durch vertauschen) :-)
YES! Die berühmte O(n³)-Sortierung. Wobei ich dergleichen auch schon von
"erfahrenen" Codern gesehen habe.
Stefan+ (Stefan Froehlich)
2018-03-27 05:21:59 UTC
Permalink
[...] der Teststage lief es auch gaaanz schnell. Dumm nur, dass in
PROD die Tabelle nicht 50, sondern 250000 Einträge umfasst.
Erinnert mich an die Tabelle, bei der aus später nicht mehr
nachvollziehbaren Gründen der eine, wesentliche Index abhanden
gekommen ist. Ich war erstaunt, wie weit die Engelsgeduld des
Kunden reichte, bevor er sich beschwert hat.

Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Happy mit Stefan, überlegen und pampisch!
(Sloganizer)
Dietz Proepper
2018-03-27 06:12:31 UTC
Permalink
Post by Stefan+ (Stefan Froehlich)
[...] der Teststage lief es auch gaaanz schnell. Dumm nur, dass in
PROD die Tabelle nicht 50, sondern 250000 Einträge umfasst.
Erinnert mich an die Tabelle, bei der aus später nicht mehr
nachvollziehbaren Gründen der eine, wesentliche Index abhanden
gekommen ist. Ich war erstaunt, wie weit die Engelsgeduld des
Kunden reichte, bevor er sich beschwert hat.
Manche sind echt geduldig.
Herwig AQSR
2018-03-27 20:40:37 UTC
Permalink
2018-03-27 22:45:00 +0200
Post by Dietz Proepper
...
Post by Stefan+ (Stefan Froehlich)
Erinnert mich an die Tabelle, bei der aus später nicht mehr
nachvollziehbaren Gründen der eine, wesentliche Index abhanden
gekommen ist. Ich war erstaunt, wie weit die Engelsgeduld des
Kunden reichte, bevor er sich beschwert hat.
Manche sind echt geduldig.
Ne. In HörWeite mancher Vorgesetzter irgendeine Klage
zu äussern, egal ob über die eigene Firma oder andere,
ist für die Verfolgung weiterer KarriereZiele nicht
optimal.

Herwig

Hermann Riemann
2018-03-24 11:46:03 UTC
Permalink
Post by Wolfgang Kynast
Eben. Vor allem: effiziente Algorithmen neigen dazu, aufwändiger zu
programmieren zu sein.
ok
Post by Wolfgang Kynast
Was dazu führt, dass Asm- und C-Programmierer einen Bogen drum machen.
Nein.
Unter Zeitdruck wir eher an Stil und Dokumentation gespart.
Und für Prototypen ist die Programmerstellung das teuerste.
Die erhalten dann kleine billige Korrekturen und ..
Post by Wolfgang Kynast
Da hab ich in meiner Berufspraxis einiges zu sehen bekommen,
angefangen mit der sequentiellen Suche, weil ein Binärbaum ja sooooo
aufwändig zu programmieren ist!
Das lustigste waren mal zwei Informatik-Studenten, der Betreuung mir
aufgedrückt wurde, nachdem ihr Programm es schaffte, für jede Suche
eines Mitarbeiters in einem Bestand von 1000 etwa 10 sec. CPU-Zeit
eines IBM-Grossrechners zu verbraten.
Ich habe man zu Atari ST Zeiten auf einer Ausstellung
eine Vorführung eines Rechners eine deutschen Unternehmens gesehen,
bei dem das Erscheinen einzelner Buchstaben
gefühlt jeweils >1 Sekunde gedauert hat.

Das Programm wurde vermutlich streng vorschriftsmäßig erstellt.

Hermann
der als zeiteffiziente Programmierung
Pixelprogrammierung für bewegte Bilder empfiehlt.
--
http://www.hermann-riemann.de
Matthias Eißing
2018-03-22 09:42:24 UTC
Permalink
Am 21.03.18 um 20:35 schrieb Stefan Ram:

[Java Programm starten/Mini-IDE]
Inhalt mit F5 gestartet werden kann?
Weil <F5> dem Refresh unter Windows entspricht :-)

Aber Microsoft kriegt das ja auch im Visual Studio nicht hin...
--
cu://Matthias.Eißing.de
Hermann Riemann
2018-03-22 12:24:27 UTC
Permalink
Post by Matthias Eißing
Aber Microsoft kriegt das ja auch im Visual Studio nicht hin...
Visual C++ ist bei mir schon bei hello world gescheitert.
( Ich wollte kein Objekt mit 16 bit Adressierung haben.)

Hermann
der damit wieder zu C zurückgekehrt ist
und zum Programmierung praktisch
nur noch Linux verwendet hat.
--
http://www.hermann-riemann.de
Matthias Eißing
2018-03-22 12:38:37 UTC
Permalink
   und zum Programmierung praktisch
   nur noch Linux verwendet hat.
Ich benutze Compiler (oder vielleicht einen Interpreter dafür).
--
cu://Matthias.Eißing.de
Hermann Riemann
2018-03-22 13:18:37 UTC
Permalink
Post by Matthias Eißing
    und zum Programmierung praktisch
    nur noch Linux verwendet hat.
Ich benutze Compiler (oder vielleicht einen Interpreter dafür).
Das verwende ich auch.
Wobei dabei auch über Laufzeitfunktionen Betriebssystemaufrufe
stattfinden.

Bessere Formulierung wäre
"nur noch mit Programmen in Linux verwendet" hat.


Hermann
zugebend, das seine Aussage unvollständig war.
und auch zum Programmieren Editoren wie *emacs, *vi*, kate,
verwendete und verwendet.
--
http://www.hermann-riemann.de
Hermann Riemann
2018-03-22 11:19:54 UTC
Permalink
Post by Stefan Ram
Was mich an Java stört - aber nicht unbedingt in Vergleich zu
anderen Sprachen (die machen das teilweise noch schlechter),
- Die GUI für Java war erst AWT, dann Swing, dann JavaFX.
Ich habe Java zuerst mit Visual J gelernt
Das erste hat 90.- DM gekostet das update 110.-.
Das nächste für 400.- DM war mir schon zu teuer.
Und danach gab es kein Visual J mehr.
( wegen irgendwelche Probleme im Rechtswesen.)

Und dann gab es applets. GUI zum Anschauen waren browser
wie Netscape oder internet exploder.

Unter Linux habe ich auf der Kommandooberfläche
oder mit shell Prozduren.
War umständlich wegen vieler Dateien ..
Post by Stefan Ram
- Ich will als Default eine SQL-Datenbank in Java SE,
sei es Derby (=JavaDB) oder SQLite.
Ich will keine Datenbank.
Für Ein Personen Systeme sind IMHO Dateien besser.
Post by Stefan Ram
- (aus Sicht von Kursen für Anfänger) Warum fügt das
Installationsprogramm die Binaries unter Windows nicht
zum "Path" hinzu? (Wenigstens, wenn da noch kein
anderes "javac.exe" ist.) Die neue JShell ist gut für
Anfänger, aber warum erscheint sie nicht in der
Programmgruppe im Startmenü, wo ein Anfänger sie
finden könnte? Warum liefern sie nicht als Minimal-IDE
einen Editor mit, dessen Inhalt mit F5 gestartet werden
kann? All dies würde in Programmierkursen am Anfang
Zeit sparen und Anfängern die ersten Schritte
erleichtern.
Auauauauau.

Linux:
Python3
auf Konsole eintippen und loslegen.

Hermann
der auch die "Java-Behörde" nicht mag.
--
http://www.hermann-riemann.de
Stefan Reuther
2018-03-22 18:06:07 UTC
Permalink
Post by Stefan Ram
Post by Stefan Reuther
es ist nicht vorgeschrieben, dass Java in einer langsamen JVM ausgeführt
wird. Man kann Java ganz klassisch nativ compilieren, und auch ein JIT
kann ganz schön knackigen Code erzeugen.
Aber auch dann ist es im Mittel immer noch langsamer als C.
Jedoch ist Java inzwischen tatsächlich schon relativ schnell,
etwa im Vergleich zu Python.
Bei welcher Workload?

Es gibt wenig, das dagegen spricht, dass ein Numbercrunching-
Algorithmus in Java aufgeschrieben langsamer sein muss als in C. Aus
einer Schleife über ein paar int/float-Arrays und ein paar
Rechenoperationen wird am Ende der gleiche Maschinencode.

Dafür wird nie eine C-/C++-Laufzeitumgebung sagen "das ist nur ein
kleines Programm, die free-Aufrufe/Destruktoren lass ich weg". Sehr wohl
wird eine Java-Laufzeitumgebung sich das Garbage-Collecten bei
kurzlebigen Prozessen sparen.
Post by Stefan Ram
Schließlich geht es nicht nur um Geschwindigkeit. Google lobt
an C++ auch, daß es hilft, in ihren riesigen Rechenzentren
Energie zu sparen (Progamme, die schneller fertig sind,
brauchen weniger Strom.) Das gleiche gilt auch für Mobilgeräte.
...und deswegen werden die Google-Mobilgeräte in Java programmiert?
Post by Stefan Ram
- Die GUI für Java war erst AWT, dann Swing, dann JavaFX.
Kürzlich wurde JavaFX erst zum JDK hinzugefügt, aber nun
schon wieder angekündigt, daß es wieder aus dem JDK
entfernt werden soll. Ich will /eine/ stabile GUI für Java.
Sie sollten sich beispielsweise zu Swing bekennen und
sagen, daß es immer in Java SE bleiben wird und
weiter gepflegt werden wird.
Ja, das nervt. Andererseits nerven die GUI-Bauer ja auch mit immer
wieder neuen geilen Ideen. Erst waren Toolbars statt Menüleisten der
heiße Scheiß, dann Ribbons, jetzt eine bunte Mischung aus Hamburger- und
Dreipunkt-Menüs und anderem Touch-Kram...
Post by Stefan Ram
- Ich will als Default eine SQL-Datenbank in Java SE,
sei es Derby (=JavaDB) oder SQLite. Leider geht mit der
zur weiteren Balkanisierung von Java SE.
Gegenmeinung: wenn eine JRE zwingend Threads, Netzwerk, GUI usw.
mitbringen muss, wird es halt keine JRE für kleine Systeme ohne sowas
geben können. Library-Subsetting ist da keine dumme Idee.
Post by Stefan Ram
- (aus Sicht von Kursen für Anfänger) Warum fügt das
Installationsprogramm die Binaries unter Windows nicht
zum "Path" hinzu?
Das hat ja nun wirklich nix mit der Sprache Java zu tun. Ich bin ganz
dankbar, wenn Installer meinen %PATH% in Ruhe lassen. Schon deswegen,
weil ich einem ungefragt am %PATH% rumfummelnden Deppeninstaller meine
bisher einzige Windows-Wurm-Infektion verdanke (Deppeninstaller schreibt
Registry-Key als REG_SZ statt REG_EXPAND_SZ, beim nächsten Boot kommt
dadurch die Hälfte der Dienste inkl. Firewall nicht hoch, *boom*).


Stefan
Stefan Ram
2018-03-22 18:40:19 UTC
Permalink
Post by Stefan Reuther
Post by Stefan Ram
Aber auch dann ist es im Mittel immer noch langsamer als C.
Jedoch ist Java inzwischen tatsächlich schon relativ schnell,
etwa im Vergleich zu Python.
Bei welcher Workload?
Was ist "Workload"? Ich dachte an:

https://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest-firstlast.svgz
Post by Stefan Reuther
Es gibt wenig, das dagegen spricht, dass ein Numbercrunching-
Algorithmus in Java aufgeschrieben langsamer sein muss als in C. Aus
einer Schleife über ein paar int/float-Arrays und ein paar
Rechenoperationen wird am Ende der gleiche Maschinencode.
Java führt zur Laufzeit Bereichsprüfungen für Versatzwerte
aus, falls es zur Übersetzungszeit nicht beweisen kann, daß
sie innerhalb der Reihung bleiben.
Post by Stefan Reuther
Dafür wird nie eine C-/C++-Laufzeitumgebung sagen "das ist nur ein
kleines Programm, die free-Aufrufe/Destruktoren lass ich weg". Sehr wohl
wird eine Java-Laufzeitumgebung sich das Garbage-Collecten bei
kurzlebigen Prozessen sparen.
Java braucht oft erst mal eine Weile, bis die JVM startet.

Wenn ein C-Programmierer ein Programm schreibt, das bald
endet (kein Server), dann könnte er schon mal auf
free-Aufrufe verzichten, da diese egal sind, wenn der Prozeß
gleich wieder endet. In C++ könnte dies schon schwieriger
sein, wenn Objekte bei RAII hinter den Kulissen delete/free
aufrufen.
Post by Stefan Reuther
Post by Stefan Ram
Schließlich geht es nicht nur um Geschwindigkeit. Google lobt
an C++ auch, daß es hilft, in ihren riesigen Rechenzentren
Energie zu sparen (Progamme, die schneller fertig sind,
brauchen weniger Strom.) Das gleiche gilt auch für Mobilgeräte.
...und deswegen werden die Google-Mobilgeräte in Java programmiert?
Das ist Android-Java, kein Java SE. Die Bibliotheken sind
nur teilweise die gleichen. Der Aufbau der GUI ist
unterschiedlich.
Post by Stefan Reuther
Ja, das nervt. Andererseits nerven die GUI-Bauer ja auch mit immer
wieder neuen geilen Ideen. Erst waren Toolbars statt Menüleisten der
heiße Scheiß, dann Ribbons, jetzt eine bunte Mischung aus Hamburger- und
Dreipunkt-Menüs und anderem Touch-Kram...
Das findet man auch bei Windows 10: Dort wird jetzt alles
auf Touch umgestellt, dabei ist Windows bei Mobilgeräten
gescheitert. Dafür dürfen die Desktop-Benutzer jetzt alle
mit einer Touch-orientierten Oberfläche arbeiten.
Post by Stefan Reuther
Gegenmeinung: wenn eine JRE zwingend Threads, Netzwerk, GUI usw.
mitbringen muss, wird es halt keine JRE für kleine Systeme ohne sowas
geben können. Library-Subsetting ist da keine dumme Idee.
Dafür gibt es Java ME oder Java card, ich dachte an Java SE.
Post by Stefan Reuther
Das hat ja nun wirklich nix mit der Sprache Java zu tun. Ich bin ganz
dankbar, wenn Installer meinen %PATH% in Ruhe lassen.
Wenn es in einem Anfängerkurs darum geht, Java zu
installieren, dauert die Anleitung zur Installation zirka
eine Minute ("Installationsprogramm kopieren, starten und
dann immer [Yes], [Ok], [Next] anklicken."). Anfängern zu
erklären, wie sie das bin-Verzeichnis finden und dann PATH
konfigurieren könnte eine Stunde dauern. Man könnte das
PATH-Verändern ja im Installationsprogramm konfigurierbar
machen (Voreinstellung: Nein).
Stefan Reuther
2018-03-23 18:15:34 UTC
Permalink
Post by Stefan Ram
Post by Stefan Reuther
Post by Stefan Ram
Aber auch dann ist es im Mittel immer noch langsamer als C.
Jedoch ist Java inzwischen tatsächlich schon relativ schnell,
etwa im Vergleich zu Python.
Bei welcher Workload?
https://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest-firstlast.svgz
Eine unbeschriftetet Grafik sagt jetzt nichts über Java vs C vs FORTRAN aus.
Post by Stefan Ram
Post by Stefan Reuther
Es gibt wenig, das dagegen spricht, dass ein Numbercrunching-
Algorithmus in Java aufgeschrieben langsamer sein muss als in C. Aus
einer Schleife über ein paar int/float-Arrays und ein paar
Rechenoperationen wird am Ende der gleiche Maschinencode.
Java führt zur Laufzeit Bereichsprüfungen für Versatzwerte
aus, falls es zur Übersetzungszeit nicht beweisen kann, daß
sie innerhalb der Reihung bleiben.
Bei typischen Numbercrunching-Algorithmen ist dieser Nachweis nun nicht
kompliziert.

for (int i = 0; i < a.length; ++i) { machwas(a[i]); }
Post by Stefan Ram
Post by Stefan Reuther
Dafür wird nie eine C-/C++-Laufzeitumgebung sagen "das ist nur ein
kleines Programm, die free-Aufrufe/Destruktoren lass ich weg". Sehr wohl
wird eine Java-Laufzeitumgebung sich das Garbage-Collecten bei
kurzlebigen Prozessen sparen.
Java braucht oft erst mal eine Weile, bis die JVM startet.
Bis die libc.so, libstdc++.so, libX11.so usw. reingepaged sind auch.
Post by Stefan Ram
Wenn ein C-Programmierer ein Programm schreibt, das bald
endet (kein Server), dann könnte er schon mal auf
free-Aufrufe verzichten, da diese egal sind, wenn der Prozeß
gleich wieder endet. In C++ könnte dies schon schwieriger
sein, wenn Objekte bei RAII hinter den Kulissen delete/free
aufrufen.
Eben. Und das ist eine Entscheidung, die diese Sprachen zur Compilezeit
treffen müssen.

Die JVM gibt dem Programm einfach eine eigene Arena, und wenn das
Programm fertig ist, wirft sie sie weg.
Post by Stefan Ram
Post by Stefan Reuther
Das hat ja nun wirklich nix mit der Sprache Java zu tun. Ich bin ganz
dankbar, wenn Installer meinen %PATH% in Ruhe lassen.
Wenn es in einem Anfängerkurs darum geht, Java zu
installieren, dauert die Anleitung zur Installation zirka
eine Minute ("Installationsprogramm kopieren, starten und
dann immer [Yes], [Ok], [Next] anklicken."). Anfängern zu
erklären, wie sie das bin-Verzeichnis finden und dann PATH
konfigurieren könnte eine Stunde dauern. Man könnte das
PATH-Verändern ja im Installationsprogramm konfigurierbar
machen (Voreinstellung: Nein).
Das hat aber nix mit Java zu tun. Das Problem (so es denn eins ist) hat
jede Programmiersprache.

mingw (von nuwen.net) liefert ja einfach eine "open_distro_window.bat"
mit, in der dann die Pfade gesetzt sind.


Stefan
Stefan Ram
2018-03-23 20:53:55 UTC
Permalink
Post by Stefan Reuther
Post by Stefan Ram
https://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest-firstlast.svgz
Eine unbeschriftetet Grafik sagt jetzt nichts über Java vs C vs FORTRAN aus.
Ich habe neulich auch mal gesehen, daß da in einem Browser
die Beschriftung fehlt (SVG). Es gibt aber auch einige, die
sie anzeigen. Man erkennt dann, daß C am schnellsten ist und
Java zwei bis drei mal so lange braucht.

Warum liefern sie es nicht einfach als GIF, JPG oder PNG
aus wie früher? Genauso schlimm ist es, wenn solche
Graphiken in einer Webseite mit JavaScript generiert werden
(TIOBE)!
Post by Stefan Reuther
mingw (von nuwen.net) liefert ja einfach eine "open_distro_window.bat"
mit, in der dann die Pfade gesetzt sind.
Aber dann muß man erst den Pfad zu dieser BAT finden. TDM-GCC
hat jetzt ein Installationsprogramm, das den Path erweitert
und ist dadurch für Anfänger leichter als Java. Wurde aber
leider schon eine Weile nicht mehr aktualisiert.
Hermann Riemann
2018-03-24 10:24:40 UTC
Permalink
Post by Stefan Ram
Post by Stefan Ram
https://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest-firstlast.svgz
http://www.dateiendung.com/format/svgz
Die Dateiendung svgz kennzeichnet svg Dateien, die mit GZIP komprimiert
Post by Stefan Ram
Eine unbeschriftetete Grafik sagt jetzt nichts über Java vs C vs FORTRAN aus.
Genauer, da wurde eine Messung durchgeführt,
und durch diese Seite das Ergebnis dargestellt
Post by Stefan Ram
Ich habe neulich auch mal gesehen, daß da in einem Browser
die Beschriftung fehlt (SVG).
Unterschiedliche browser haben unterschiedliche Schwächen.
Post by Stefan Ram
Warum liefern sie es nicht einfach als GIF, JPG oder PNG
aus wie früher?
svg die wie *.txt sind, lassen sich leichter editieren.
Ein tool welches aus Zahlen per script in gimp
jpg erstellt ist vielelicht nicht mehr auffindbar.
Da geht mit einem kleinen Python Programm die SVG Erstellung einfacher.

Ein Vergleich der Anzahl der übertragenen Bits in den beiden Fällen,
und ein Zeitvergleich,
gif jpg png Expandierung gegen svg Zeichnen
wäre auch interessant.
Post by Stefan Ram
Genauso schlimm ist es, wenn solche
Graphiken in einer Webseite mit JavaScript generiert werden.
IMHO nein.

Eigentlich sehe ich bei bei svg und canvas sogar den Vorteil,
das man als Anwender die Werte besser weiterverwenden kann,
als wenn man sie mittels Musterkennung aus Grafiken heraus rechnet.
Post by Stefan Ram
mingw (von nuwen.net) liefert ja einfach eine "open_distro_window.bat"
mit, in der dann die Pfade gesetzt sind.
Klingt so nach M$ only.
Also Benutzung verweigern
und über deren Geldzufuhr nachdenken.

Hermann
der sich schon etwas mit svg und canvas beschäftigt hat,
weil er da erheblichen Nutzen vermutet.
--
http://www.hermann-riemann.de
Stefan Reuther
2018-03-24 17:37:43 UTC
Permalink
Post by Stefan Ram
Post by Stefan Reuther
Post by Stefan Ram
https://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest-firstlast.svgz
Eine unbeschriftetet Grafik sagt jetzt nichts über Java vs C vs FORTRAN aus.
Ich habe neulich auch mal gesehen, daß da in einem Browser
die Beschriftung fehlt (SVG). Es gibt aber auch einige, die
sie anzeigen. Man erkennt dann, daß C am schnellsten ist und
Java zwei bis drei mal so lange braucht.
OK, mit IE erfährt man, dass die Spalten irgendwas mit
Programmiersprachen zu tun haben, aber das ändert immer noch nix dran,
dass die Grafik keinerlei Aussage trifft, was da gemessen wurde.
Post by Stefan Ram
Post by Stefan Reuther
mingw (von nuwen.net) liefert ja einfach eine "open_distro_window.bat"
mit, in der dann die Pfade gesetzt sind.
Aber dann muß man erst den Pfad zu dieser BAT finden. TDM-GCC
hat jetzt ein Installationsprogramm, das den Path erweitert
und ist dadurch für Anfänger leichter als Java. Wurde aber
leider schon eine Weile nicht mehr aktualisiert.
Mal ehrlich, wer mit dem Finden einer Datei im Programm-Verzeichnis
überfordert ist, sollte vielleicht erstmal was anderes lernen als
ausgerechnet Programmieren. Ist ja nicht so, als ob das absolut elitäres
Profiwissen wäre, das man nie braucht. Der nächste ist dann vermutlich
mit der Zwischenablage überfordert? Oder mit dem gar schröcklichen
Warndialog "Ändern der Dateiendung von *.txt auf *.java kann die Datei
unbrauchbar machen"?


Stefan
Stefan Ram
2018-03-24 18:17:04 UTC
Permalink
Post by Stefan Reuther
Post by Stefan Ram
Ich habe neulich auch mal gesehen, daß da in einem Browser
die Beschriftung fehlt (SVG). Es gibt aber auch einige, die
sie anzeigen. Man erkennt dann, daß C am schnellsten ist und
Java zwei bis drei mal so lange braucht.
OK, mit IE erfährt man, dass die Spalten irgendwas mit
Programmiersprachen zu tun haben, aber das ändert immer noch nix dran,
dass die Grafik keinerlei Aussage trifft, was da gemessen wurde.
Das ist eine Mittelung über diverse Benchmark-Programme,
siehe auch: Haupteingang jener Website.
Post by Stefan Reuther
Mal ehrlich, wer mit dem Finden einer Datei im Programm-Verzeichnis
überfordert ist, sollte vielleicht erstmal was anderes lernen als
ausgerechnet Programmieren. Ist ja nicht so, als ob das absolut elitäres
Profiwissen wäre, das man nie braucht. Der nächste ist dann vermutlich
mit der Zwischenablage überfordert? Oder mit dem gar schröcklichen
Warndialog "Ändern der Dateiendung von *.txt auf *.java kann die Datei
unbrauchbar machen"?
Neulich habe ich einer Teilnehmerin gezeigt, daß man Fenster
mit der Maus /verschieben/ kann, indem man sie am
Fenstertitel ergreift - bei einem Kurs, für den angegeben
wurde, daß Windows-Kenntnisse erwartet werden.

Ich versuche dann eben, den Kurs möglichst auf die
Programmiersprache zu konzentrieren, so daß man möglichst
wenig mit Windows in Kontakt kommt und möglichst wenig
Windows-Kenntnisse braucht. Ich kann mir die Teilnehmer
nicht aussuchen, sondern muß mit den Teilnehmern arbeiten,
die in den Kurs kommen.

Zwischenablage ist auch so eine Sache. Anstatt ein Textfeld
mit Strg-A Strg-V mit dem Inhalt der Ablage zu ersetzen, wird
da erst einmal mit der Cursor-Taste an das Ende des Textfeldes
gegangen, dann Zeichen für Zeichen mit der Rücktaste gelöscht
und dann Strg-V gedrückt.
Bernd L.
2018-03-25 02:13:07 UTC
Permalink
Post by Stefan Reuther
Mal ehrlich, wer mit dem Finden einer Datei im Programm-Verzeichnis
überfordert ist, sollte vielleicht erstmal was anderes lernen als
ausgerechnet Programmieren. Ist ja nicht so, als ob das absolut elitäres
Profiwissen wäre, das man nie braucht. Der nächste ist dann vermutlich
mit der Zwischenablage überfordert? Oder mit dem gar schröcklichen
Warndialog "Ändern der Dateiendung von *.txt auf *.java kann die Datei
unbrauchbar machen"?
Neulich habe ich einer Teilnehmerin gezeigt, daß man Fenster mit der
Maus /verschieben/ kann, indem man sie am Fenstertitel ergreift - bei
einem Kurs, für den angegeben wurde, daß Windows-Kenntnisse erwartet
werden.
Diese Übung war zuletzt Bestandteil des offiziellen Windows-3.1-
Lernprogramms von 1992. Danach ist dieser Stoff nie wieder in einer
Windows-Version aufgetaucht.
Zwischenablage ist auch so eine Sache. Anstatt ein Textfeld mit Strg-A
Strg-V mit dem Inhalt der Ablage zu ersetzen, wird da erst einmal mit
der Cursor-Taste an das Ende des Textfeldes gegangen, dann Zeichen für
Zeichen mit der Rücktaste gelöscht und dann Strg-V gedrückt.
Diese Tastenkombinationen kommen vom Macintosh (dort mit Command- statt
Control-Taste zu verwenden) und standen vermutlich zuletzt in irgendeinem
Handbuch von 1984 oder später.

Die äquivalenten PC-Shortcuts (Shift-Del, Shift-Ins, Ctrl-Ins) waren
zuletzt in der "Online"-Hilfe des MS-DOS-Editors von MS-DOS 6 (1993)
dokumentiert.

Als ich seinerzeit das erstemal mit einem Fullscreen-Texteditor
konfrontiert war, wurde das Konzept vom Programm selbst ausführlich
erklärt.

Auf gleiche Weise fand der Erstkontakt mit einem Windowing-System statt,
bei dem wiederum von der Software selbst sowohl die Bedienung der Maus,
als auch das Handling von Fenstern erklärt und geübt wurden.

Mittlerweile sind Menschen in Ausbildung, deren Geburtsjahr hinter diesen
historischen Zeitpunkten liegen. Die müssen sich das alles irgendwie
zusammengooglen, weil das als bekannt vorausgesetzt wird. Bei Windows 10
ist Microsoft gleich den konsequenten Schritt gegangen und hat die
eingebaute Dokumentation vollständig entfernt und durch eine Bing-Suche
ersetzt.

Jungs, ihr züchtet euch eure IT-Idiocracy selbst.
Michael Bode
2018-03-25 09:23:03 UTC
Permalink
Post by Bernd L.
Post by Stefan Reuther
Mal ehrlich, wer mit dem Finden einer Datei im Programm-Verzeichnis
überfordert ist, sollte vielleicht erstmal was anderes lernen als
ausgerechnet Programmieren. Ist ja nicht so, als ob das absolut elitäres
Profiwissen wäre, das man nie braucht. Der nächste ist dann vermutlich
mit der Zwischenablage überfordert? Oder mit dem gar schröcklichen
Warndialog "Ändern der Dateiendung von *.txt auf *.java kann die Datei
unbrauchbar machen"?
Neulich habe ich einer Teilnehmerin gezeigt, daß man Fenster mit der
Maus /verschieben/ kann, indem man sie am Fenstertitel ergreift - bei
einem Kurs, für den angegeben wurde, daß Windows-Kenntnisse erwartet
werden.
Diese Übung war zuletzt Bestandteil des offiziellen Windows-3.1-
Lernprogramms von 1992. Danach ist dieser Stoff nie wieder in einer
Windows-Version aufgetaucht.
Zwischenablage ist auch so eine Sache. Anstatt ein Textfeld mit Strg-A
Strg-V mit dem Inhalt der Ablage zu ersetzen, wird da erst einmal mit
der Cursor-Taste an das Ende des Textfeldes gegangen, dann Zeichen für
Zeichen mit der Rücktaste gelöscht und dann Strg-V gedrückt.
Diese Tastenkombinationen kommen vom Macintosh (dort mit Command- statt
Control-Taste zu verwenden) und standen vermutlich zuletzt in irgendeinem
Handbuch von 1984 oder später.
Die äquivalenten PC-Shortcuts (Shift-Del, Shift-Ins, Ctrl-Ins) waren
zuletzt in der "Online"-Hilfe des MS-DOS-Editors von MS-DOS 6 (1993)
dokumentiert.
Das ist auch das Jahr, in dem zum letzten Mal jemand in eine
Dokumentation geschaut hat.
Volker Borchert
2018-03-22 19:00:29 UTC
Permalink
Post by Stefan Reuther
Ob das jetzt eine "Programmiersprache des Jahres" wert ist, sei
dahingestellt. Ich habe derzeit kein Java-Projekt am Laufen. Für Neues
kommt Java aber schon in die engere Auswahl. Jedenfalls vor C#, Go, D
und wie die ganzen Me-Too-Sprachen alle heißen.
Sämtliche JVM bytecode erzeugende Sprachen kranken daran, daß selbige
keine Mehrfachvererbung unterstützen kann.
--
"I'm a doctor, not a mechanic." Dr Leonard McCoy <***@ncc1701.starfleet.fed>
"I'm a mechanic, not a doctor." Volker Borchert <***@despammed.com>
Herwig AQSR
2018-03-22 23:46:26 UTC
Permalink
2018-03-23 00:48:00 +0100
Post by Volker Borchert
...
Sämtliche JVM bytecode erzeugende Sprachen kranken daran, daß selbige
keine Mehrfachvererbung unterstützen kann.
MehrFachVererbung war mir immer ein Gräuel, und ich denke,
ObjektHierarchien, in die MehrFachVererbung hineindesignt
wurde, zeugen davon, dass man erstens das ProblemUmfeld
nicht verstanden hat, und dass man zweitens nicht in der
Lage ist, konsistente Designs abzuliefern.

MehrfachVererbung ist wie ein Vertrag, wo das Kleingedruckte
in diversen Dokumenten überall auf der Welt verteilt ist,
wobei die Autoren vom Kleingedruckten, das andere geschrieben
hatten, nichts wussten.

Ich habe es im ganzen BerufsLeben nie gebraucht - und ich hätte
sogar Cobol lieber programmiert. - Hermann, sag jetzt nichts
falsches!

Herwig
Peter Heitzer
2018-03-23 08:59:30 UTC
Permalink
Post by Herwig AQSR
2018-03-23 00:48:00 +0100
Post by Volker Borchert
...
Sämtliche JVM bytecode erzeugende Sprachen kranken daran, daß selbige
keine Mehrfachvererbung unterstützen kann.
MehrFachVererbung war mir immer ein Gräuel, und ich denke,
ObjektHierarchien, in die MehrFachVererbung hineindesignt
wurde, zeugen davon, dass man erstens das ProblemUmfeld
nicht verstanden hat, und dass man zweitens nicht in der
Lage ist, konsistente Designs abzuliefern.
(http://altlasten.lutz.donnerhacke.de/mitarb/lutz/usenet/Fachbegriffe.der.Informatik.html)
Fachbegriffe der Informatik:
3: Polymorphie
Der Fehler tritt in vielerlei Gestalt auf. (Kristian Köhntopp)
--
Dipl.-Inform(FH) Peter Heitzer, ***@rz.uni-regensburg.de
Dietz Proepper
2018-03-23 09:25:17 UTC
Permalink
Post by Herwig AQSR
2018-03-23 00:48:00 +0100
Post by Volker Borchert
...
Sämtliche JVM bytecode erzeugende Sprachen kranken daran, daß selbige
keine Mehrfachvererbung unterstützen kann.
MehrFachVererbung war mir immer ein Gräuel, und ich denke,
ObjektHierarchien, in die MehrFachVererbung hineindesignt
wurde, zeugen davon, dass man erstens das ProblemUmfeld
nicht verstanden hat, und dass man zweitens nicht in der
Lage ist, konsistente Designs abzuliefern.
"Wiederverwendbare Software" war doch der eigentliche Hirnfurz. Sowas *geht*
natürlich, nur, als Hausnummer, Code der "wiederverwendbar" im Sinn von
"dokumentiert, getestet, irgendwer fixt auch Bugs" ist kostet pi x Daumen das
fünffache von "works". Das hat den Damagern nur niemand gesagt.

Use before reuse.
Volker Borchert
2018-03-25 08:49:59 UTC
Permalink
Post by Herwig AQSR
Post by Volker Borchert
Sämtliche JVM bytecode erzeugende Sprachen kranken daran,
daß selbige keine Mehrfachvererbung unterstützen kann.
MehrFachVererbung war mir immer ein Gräuel, und ich denke,
ObjektHierarchien, in die MehrFachVererbung hineindesignt
wurde, zeugen davon, dass man erstens das ProblemUmfeld
nicht verstanden hat, und dass man zweitens nicht in der
Lage ist, konsistente Designs abzuliefern.
Bei fachlichen Objekten mag das sein.

Leider muß man manchmal aus technischen Gründen von einer JVM-
(ich sage absichtlich _nicht_ Java-, weil die fraglichen Klassen
sehr eng mit den Innereien der JVM verklüngelt sind) Klasse wie
z.B. WeakReference ableiten.

Und ohne Spezialisierung in Primitiven gilt beispielsweise
LongToIntMap$Entry extends AnyToIntMap$Entry, LongToAnyMap$Entry
oft auch für die Implementierungen.
Post by Herwig AQSR
MehrfachVererbung ist wie ein Vertrag, wo das Kleingedruckte
in diversen Dokumenten überall auf der Welt verteilt ist,
wobei die Autoren vom Kleingedruckten, das andere geschrieben
hatten, nichts wussten.
Das trifft auf {@code public} Ableitung zu, nicht jedoch auf die
z.B. in C++ auch mögliche {@code private} Ableitung, die eben
kein Bestandteil des contract der ableitenden Klasse wird.
--
"I'm a doctor, not a mechanic." Dr Leonard McCoy <***@ncc1701.starfleet.fed>
"I'm a mechanic, not a doctor." Volker Borchert <***@despammed.com>
Dietz Proepper
2018-03-23 09:21:57 UTC
Permalink
Post by Volker Borchert
Post by Stefan Reuther
Ob das jetzt eine "Programmiersprache des Jahres" wert ist, sei
dahingestellt. Ich habe derzeit kein Java-Projekt am Laufen. Für Neues
kommt Java aber schon in die engere Auswahl. Jedenfalls vor C#, Go, D
und wie die ganzen Me-Too-Sprachen alle heißen.
Sämtliche JVM bytecode erzeugende Sprachen kranken daran, daß selbige
keine Mehrfachvererbung unterstützen kann.
Du schmarrst.
Stefan Reuther
2018-03-23 18:06:42 UTC
Permalink
Post by Volker Borchert
Post by Stefan Reuther
Ob das jetzt eine "Programmiersprache des Jahres" wert ist, sei
dahingestellt. Ich habe derzeit kein Java-Projekt am Laufen. Für Neues
kommt Java aber schon in die engere Auswahl. Jedenfalls vor C#, Go, D
und wie die ganzen Me-Too-Sprachen alle heißen.
Sämtliche JVM bytecode erzeugende Sprachen kranken daran, daß selbige
keine Mehrfachvererbung unterstützen kann.
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface


Stefan
Volker Borchert
2018-03-23 20:34:34 UTC
Permalink
Post by Stefan Reuther
Post by Volker Borchert
Sämtliche JVM bytecode erzeugende Sprachen kranken daran, daß selbige
keine Mehrfachvererbung unterstützen kann.
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface
Meinerseits ungenau formuliert, hätte "Implementierungsmehrfachvererbung"
heißen müssen.

(auch @Dietz)

Das .class file format erlaubt genau eine Oberklasse.
--
"I'm a doctor, not a mechanic." Dr Leonard McCoy <***@ncc1701.starfleet.fed>
"I'm a mechanic, not a doctor." Volker Borchert <***@despammed.com>
Dietz Proepper
2018-03-24 11:15:48 UTC
Permalink
Post by Volker Borchert
Post by Volker Borchert
Sämtliche JVM bytecode erzeugende Sprachen kranken daran, daß selbige
keine Mehrfachvererbung unterstützen kann.
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface
Post by Volker Borchert
Meinerseits ungenau formuliert, hätte "Implementierungsmehrfachvererbung"
heißen müssen.
Das .class file format erlaubt genau eine Oberklasse.
Das ist ein feature, kein bug. Zudem müsste der notwendige glue um das zu
emulieren eher unspektakulär sein.
Volker Borchert
2018-03-25 08:31:49 UTC
Permalink
Post by Stefan Reuther
Post by Volker Borchert
Post by Volker Borchert
Sämtliche JVM bytecode erzeugende Sprachen kranken daran, daß selbige
keine Mehrfachvererbung unterstützen kann.
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface
Post by Volker Borchert
Meinerseits ungenau formuliert, hätte "Implementierungsmehrfachvererbung"
heißen müssen.
Das .class file format erlaubt genau eine Oberklasse.
Das ist ein feature, kein bug. Zudem müsste der notwendige glue um das zu
emulieren eher unspektakulär sein.
Klar kann man Mehrfachvererbung durch Aggregation irgendwie emulieren.
Und klar kann man das einen Nonjava-nach-JVM-Compiler erledigen lassen.
Kostet halt nur pro Objekt und emulierter Oberklasse ein weiteres Objekt
mit Header, Allokation, Konstruktion, Destruktion, Deallokation. Das
will man manchmal nicht bezahlen.
--
"I'm a doctor, not a mechanic." Dr Leonard McCoy <***@ncc1701.starfleet.fed>
"I'm a mechanic, not a doctor." Volker Borchert <***@despammed.com>
Dietz Proepper
2018-03-25 09:34:19 UTC
Permalink
Post by Volker Borchert
Post by Dietz Proepper
Post by Volker Borchert
Post by Volker Borchert
Sämtliche JVM bytecode erzeugende Sprachen kranken daran, daß selbige
keine Mehrfachvererbung unterstützen kann.
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface
Post by Volker Borchert
Post by Dietz Proepper
Post by Volker Borchert
Meinerseits ungenau formuliert, hätte "Implementierungsmehrfachvererbung"
heißen müssen.
Das .class file format erlaubt genau eine Oberklasse.
Das ist ein feature, kein bug. Zudem müsste der notwendige glue um das zu
emulieren eher unspektakulär sein.
Klar kann man Mehrfachvererbung durch Aggregation irgendwie emulieren.
Es müsste sogar recht einfach sein. Details habe ich vergessen.
Post by Volker Borchert
Und klar kann man das einen Nonjava-nach-JVM-Compiler erledigen lassen.
Vielleicht sollte man auch einfach Mehrfachvererbung sein lassen. Dient imnsho
im Wesentlichen der Erzeugung unwartbaren Codes.
Post by Volker Borchert
Kostet halt nur pro Objekt und emulierter Oberklasse ein weiteres Objekt
mit Header, Allokation, Konstruktion, Destruktion, Deallokation. Das
will man manchmal nicht bezahlen.
Man will auch nicht gegen die Zielumgebung arbeiten. Zudem hindert Dich
niemand, Dein preprocessing so zu machen, dass die Oberklasse entsprechend
geinline'd wird.
Lesen Sie weiter auf narkive:
Loading...