Posts by Tale-X

    Die Computer AG an der Schule kann ich so bestätigen, war bei mir nicht anders (1 KC87, ~6 Schüler). Dazu kamen später Computerkurse von der FH mit 2 Personen pro Rechner und später "Computerferienlager" (Ziel: schreiben einer Adressverwaltung - eine Aufgabe die besser mit Pascal zu lösen ist) wo die Quote noch besser war. Allerdings gab's da die Grundsatzdiskussion, ob Unterprogramme an den Anfang oder ans Ende des Programms gehören. Mit Pascal wäre das nicht passiert, da ist das klar geregelt. Die Berufsschule hatte dann ein Computerkabinett mit A5105 (inkl. Floppies). Der Informatikkurs war freiwillig, so dass wir gerade eine handvoll Schüler waren und mehr Rechner als Schüler (okay, war da auch schon '90).


    Die Hardware war bei den zentralen Bildungseinrichtungen schon da, nur die Angebote nicht immer so bekannt. Und es war von Vorteil, wenn die Mitmenschen null Interesse an diesen komischen Geräten hatte :D

    Das Basic vom C64 fand man nur toll, wenn man nicht über den Tellerrand schaute, was andere Systeme boten.

    Zeige mir einen 64er User der damals über den Tellerrand schaute. :D

    Hier!


    Basic lernte ich u. a. am KC85/3 (kurzzeitig auch am KC87). Die Bücher, die ich zum Programmieren in Basic hatte, setzten deren Befehlsumfang voraus. Zum Glück kam irgendwann der C128, dessen Basic war endlich brauchbar.

    oobdoo aber nur, wenn man das Basic als Spieleloader verwendet. Ansonsten merkte man an allen Ecken und Enden die Unzulänglichkeiten - sogar im Vergleich zu DDR-Computern. Kein PRINT AT, keine Grafik- oder Soundbefehle. IF-THEN-ELSE? Nada! Das Basic vom C64 fand man nur toll, wenn man nicht über den Tellerrand schaute, was andere Systeme boten. Und sobald man sich mit Pascal, C (eigentlich mehr ein Unfall, vor allem C nach K&R) oder ähnlichen Sprachen beschäftigte, wollte man mit dem Beginners All Purpose Symbolic Instruction Code kaum noch was zu tun haben. Und warum gibt es heute noch immer neue Basicprogramme? Es ist wie mit dem Rauchen - schlechte Angewohnheiten wird man schwer los, dazu die Versuchung des blinkenden Cursors unter READY: "Komm, nur paar Zeilen, geht ganz schnell, ist nichts bei, das machen viele..."

    ...

    Tale-X : Vor einiger Zeit habe ich im Internet folgenden Algorithmus zum Wurzelziehen bei Integers gefunden (ungeprüft!) :

    Auch hier sollte man natürlich die Operationen " / 2 " und " / 4 " durch entsprechende Rechtshifts ersetzen und die Werte an 16 Bit anpassen. Unter Umständen könnte der Algorithmus schneller sein, da hier keine Division mehr verwendet wird.



    Peter : Eine kleine Bitte: Wäre es vielleicht möglich, uns den Pascalcode zur Verfügung zu stellen? Ich würde mal gerne den Versuch machen, ihn zum Vergleich unter ApplePascal zum Laufen zu bringen. Vielen Dank!

    Ich hab' mal bei rosettacode.org für isqrt gespickt und die dortige Variante genommen. Ist das Gleiche in Grün, nur shiftet die erste Schleife von 1 aufwärts statt von 0x40000000 abwärts - ist bei Wurzeln bis 1000 ein Tick schneller.
    Das Ergebnis ist aber hier eine Verschlechterung - es dauert jetzt 51 Sekunden statt 46 Sekunden. In einem anderen Pascal oder anderer Programmiersprache kann isqrt schneller sein.


    Die beiden Wurzelfunktionen (falls jemand eine Wurzel in GPascal ziehen will):
    isqrt -> 51 Sekunden

    integer square root: 46 Sekunden (kleine Optimierung ist noch möglich, das erste x / x0 dürfte immer zwei sein):

    Zum Datentyp: bei modernen Systemen sieht die Sache anders aus als bei unseren Altsystemen - die Prozessoren in den modernen PCs haben Fließkommaeinheiten - da kann (und wird in der Regel) eine Umstellung von Fließkomma auf Festkomma oder Ganzzahlen eine Verlangsamung bewirken.

    Muss hier gerade gut optimierten Code schreiben und hab festgestellt, dass bei meinem AMD Phenom die Verwendung von Gleitkommazahlen zum Teil auch drastisch bremst. Versuch ich jetzt zu vermeiden, wo immer es geht. Kann also durchaus lohnen, den Code immer in diese Richtung zu optimieren.

    Ich hatte bei der Fraktalberechnungen (Apfelmänchen) in C das gegensätzliche Ergebnis. Also: zuerst das Problem lösen und dann optimieren (und immer vorher/nachhar messen).

    ...

    Ohne dass ich die Diskussion wieder anheizen will, aber ich habe früher immer gezielt nach Programmiersprachen gesucht, die (für mich) nicht zu einschränkend waren. Insofern waren Compiler, die nur Integer konnten, uninteressant. Daher hatte ich G-Pascal damals auch zur Seite gelegt. Mir war als Jugendlichem nicht klar, welch massive Auswirkung der Datentyp auf die Performance hat. Insofern hilft mir der leidenschaftliche Diskurs hier schon :D

    Mich hatte damals bei G-Pascal die Unterstützung von SID und VIC beeindruckt - immerhin hat es nicht nur Spritebewegung sondern auch noch Spriteanimation mit eingebaut. Allerdings fehlte mir damals der Teil, mit dem eigenständig laufende Programme erstellt werden konnten - somit ließ mein Interesse daran dann stark nach.

    Die fehlenden Datentypen und mathematischen Funktionen waren für mich damals auch ein Problem - inzwischen hab ich dazugelernt und es gibt das Internet. Egal wie abwegig das Problem erscheint - in der Regel hat jemand schon mal eine Lösung dafür gefunden. Und plötzlich sind früher unlösbare Probleme eine Sache von 10 Minuten...

    Zum Datentyp: bei modernen Systemen sieht die Sache anders aus als bei unseren Altsystemen - die Prozessoren in den modernen PCs haben Fließkommaeinheiten - da kann (und wird in der Regel) eine Umstellung von Fließkomma auf Festkomma oder Ganzzahlen eine Verlangsamung bewirken.

    Mal noch eine Frage an die Profis z.B. Tale-X: dass man mit Schiebebefehlen x2 und /2 beschleunigen kann, ist mir klar, aber das sind doch Sonderfälle, die ich vor jeder Division abprüfen muss.. Das IF kostet dann aber bei jedem Durchlauf Zeit.. wenn nicht gerade sehr viel x2 /2 gerechnet wird, sollte das doch langsamer werden. Oder gibts da einen Trick?

    Naja, in den Hochsprachen schätze ich macht sowas als allgemeiner Ansatz wenig Sinn. Könnte im besten Fall schneller sein, auf jeden Fall macht es das Programm unübersichtlicher und bringt eine Fehlerquelle mehr rein - der Flaschenhals ist in der Regel meist an einer anderen Stelle im Programm ;)

    Wenn man aber einen Algorithmus hat, wo konstant durch 2, 4,... geteilt oder damit multipliziert wird arbeitet, dann kann /2 durch Rechtsshift 1 bzw *2 durch Linksschrift 1 ersetzt werden (/4 - Rechtsshift 2, usw). Geht aber nur mit Ganzzahlen (und höchstwahrscheinlich auch mit Festkommazahlen)

    Ich vermute, im Wikipediaartikel wurde die Division verwendet um den mathematischen Zusammenhang besser darzustellen.


    Ich habe statt durch zwei teilen immer ein Rechtsshift verwendet - GPascal hat direkte Befehle für's Shiften (SHR und SHL). Und dann ist der Algorithmus gar nicht mehr so langsam. Allerdings erzeugt auch GPascal "nur" P-Code und keine Maschinensprache - C dürfte da die Nase vorne haben.


    GPascal braucht 2,6 Sekunden... Also deutlich schneller als Profi Pascal. Ich habe die C-Routine 1:1 übernommen und für die Wurzelfunktion bei Wikipedia gespickt (die fehlt GPascal, genauso wie Fließkommazahlen). Die primzahl.txt ist im gpascal-Format gespeichert.

    Mit GPascal hab ich eine zeitlang herumgespielt. Mich beeindruckt das Gesamtkonzept - alle Tools zu GPascal sind damit umgesetzt und die Demoprogramme beeindruckend (für die Zeit). Aber wie zu Anfang des Threads schon geschrieben: es ist sehr eigen und unflexibel was die Syntax angeht. Allerdings kenne ich kein besseres für nativ C64..


    Ich hatte damit mal ein kleines Spiel programmiert: https://csdb.dk/release/?id=188031

    Für den C64 Maxi seh ich dann auch keinen Markt, bekommen haben wir ihn trotzdem.

    Einspruch - mit dem Maxi ist das Retrofeeling komplett. C64Maxi anschalten, das alte Handbuch aus den 80ern hervorkramen und loslegen. Der Mini ist ein lookalike, der Maxi ein feelalike.

    Es gilt das Hausrecht - wenn Aldi sagt, hier herrscht Maskenpflicht, dann gilt das (wer das nicht glaubt - siehe Mario Barth vs. Deutsche Bahn). Solche Regelungen beeinflussen dann auch meine Wahl des Einkaufsladens - auch geimpft und geboostert ist man nicht sicher vor Corona. Bei den aktuellen Inzidenzen ist es wirklich sehr sinnvoll, die Maskenpflicht vorzugeben.


    Nachtrag: am Platz kann man sie abnehmen - falls jemand soweit gelesen hat


    Ansonsten: ich melde mich auch mit zur Interface an.

    Test Drive 2 scheint schon mal nicht gut zu laufen. Sonst laufen viele Spiele. Ich freue mich mega auf den A500 mini. Heute kommt er bei mir.

    Test Drive 2 scheint allgemein zickig zu sein - auch im WinUAE vom AmigaForever sind Bild- und Tonstörungen