Schlagwort-Archive: Python

Passend zu den letzten Einträgen

Ich schrieb, daß ich mich auf einen neuen Trip begebe, ich möchte anfangen F# intensiver zu benutzen. Ich hole noch ein bisschen aus, um meinen Hintergrund zu verstehen. Ich bin a) nicht mehr der Jüngste und b) ca 30 Jahre Programmierer +/- 10 Jahre. Die 10 Jahre kommen von meinen “leichten” Kontakten zur Programmierung. Weil es beim Bund für Wehrpflichtige die Möglichkeit gab, Kurse zu belegen, habe ich bei einem dBase Kurs mitgemacht. OS: CPM und dBase II Bildschirm vielleicht 80 x 24 Zeichen, ich weiß es nicht mehr. Eines meiner ältesten Bücher aus der Zeit ist vom Franzis Verlag, Titel Die beiden Datenbanksysteme dbase II und III, Datum im Buch 1986.
Das ergibt 2022 – 1986 = 36 Jahre, tja und in der Schule habe ich auf einem TI irgendwas mit Basic angefangen. Somit ja das mit der Zeit kommt hin. Dann kam der erste PC in ‘s Haus. Ein Atari ST , RAM 1024 MB , Platte 20 MB!, sauteuer aber cool. Da ein wenig in die Programmierung reingeschnuppert, aber nie was auf die Reihe bekommen. Dann kam das Studium an der Uni Karlsruhe und der erste Kurs war Modula-2. Ich habe bisher nichts öfter wiederholt als diesen Kurs. Ich bin, was programmieren angeht, kein schneller Lerner, aber hartnäckig nehme ich an. Der Kurs war irgendwann geschafft und dann kam C und keine Ahnung, von da an lief es, was programmieren angeht besser. Absurd, wenn man daran denke wie viele lesbarer Modula-2 Code ist als C (wenn man es nicht gewohnt ist). Trotzdem scheint es für mich leichter gewesen zu sein Den Kurs habe ich sofort bestanden. Dann kam Eiffel und darin habe ich angefangen ernsthaft Software zu schreiben. Es gibt noch ein paar Paket dort draußen in denen ich meine Finger reinsteckte siehe: https://fam-dominicus.de/tiki/tiki-index.php?page=FriedrichsTiki . Vielleicht sollte ich die Quellen mal irgendwan zugänglich machen.

Dann gründete ich die Q-Software Solutions und die Idee war ursprünglich eine Nachfolgersprache für Eiffel zu entwickeln Q. Die Idee damals: strikte Trennung CQS. Der Teil mit Status sollte OO mässig aufgebaut sein, der Rest funktional. Naja wir hatten etwas was prinzipiell funktioniert aber es war ein totaler wirtschaftlicher Reinfall, es wurde nie fertig und verschlang wirklich viel Geld ….

Hier noch ein bisschen Code der damals lief …


https://fam-dominicus.de/tiki/tiki-index.php?page=FriedrichsTiki
class Argv_test -- Main

creation
   make
      local
         i : Integer;
         args: Arguments;
      do
         args := new Arguments.make;
         out := new Standard_output;
         i := 1;
         loop
         until i > args.argument_count
            out.print_string("argument ");
            out.print_integer(i);
            out.print_string("= ");
            out.print_mutable_string(args.argument(i));
            out.print_newline;
            i := i + 1;
         endloop
         out.print_string("program name = ");
         out.print_mutable_string(args.program_name);
         out.print_newline;
      end;

public


   out: Standard_output;


endclass

Es compilierte nach C und deswegen habe ich mich mit Jacob Navia zusammengetan.( https://lcc-win32.services.net/. Die Zusammenarbeit war lang und erfreulich. Und nun gebe ich ein wenig an, wir waren unter den Ersten, die diesen Compiler auf 64-bit portierten, damals für eine Firma, die das benutzen wollte, um SQL Queries für ihre Datenbank zu kompilieren. Es gab auch eine Firma, die ein 5-GL Sprache anbot, die nach C kompilierte, das C war lcc-win32. Ich glaube die Schnittstelle nach C von Q war eine der einfachsten, die es damals gab und vielleicht heute noch gibt:

Da kam also einiges an Erfahrung mit C dazu. Es ist heute immer noch eine PS, die ich schätze. Aber PS haben einen “leicht” addiktiven Effekt und ja, die Idee von Q ist immer noch präsent. Über die Zeit habe ich mir dann immer mehr PS angeschaut, manche angeeignet, einige relativ umfassend, andere so la la und manche eher schlecht als recht.
Ich zähle einfach nur auf (ohne zu sagen wie gut oder schlecht ich damit zurecht komme) , C, Eiffel, Turbo Pascal, Perl, Tcl/Tk, Ruby, Python, Common Lisp, Scheme, Smalltalk, D, Java, C#, Emacs Lisp, Erlang, Racket, IO, Self, Dylan, Ocaml, div. Assembler, VBA, WLanguage, C##

Man sieht, eher auf der OO Seite, wie ich aber vor zwei Tagen schrieb ist mir Java und C# irgendwo zu “verbose”, ich muß zuviel schreiben und lesen um zum Kern zu kommen, deshalb denke ich werde ich mit F# auf .NET gut fahren. Wie geschrieben, ich denke, man sollte alle Hilfe beim Programmieren benutzen, derer man habhaft werden kann. Es gibt aber ein paar Sprachen, in denen ich mir zutraue, etwas hinzubekommen, die ich aber nicht mag und ganz oben sind da C++ und Perl. Die sind IMHO zu kompliziert, aber ich kann weit daneben liegen.
Ich warte derzeit eine Software seit mehr als 10 Jahren, eine MS-Access Lösung. Sie funktioniert, ist aber ein Ärgernis, was Wartung und Weiterentwicklung angeht. Ich arbeite daran, aber …

Also wohin und was tun. Ich denke nach dem Abwägen der Möglichkeiten und der eigenen Vorlieben und Können sollte ich mit F# durchaus zurande kommen. Auf der anderen Seite sehe ich dann Videos wie:


Was mich einfach abschreckt und das sieht für mich nach kompliziert aus, ohne einen Gegenwert. Ich denke, ich möchte keine manuelle Speicherwaltung und ich möchte mich nicht mit Referenzen und Eigentum von Objekten auseinandersetzen. Ich möchte eine einfach lesbare Lösung und Sprache und F# könnte es sein. Ich denke auch die Trennung von OO und FP dürfte in F# funktionieren und wenn’s nicht klappt, kann ich immer noch C# Klassen benutzen 😉

Ich möchte gerne ein paar Stäbe brechen

Für in meinen Augen wunderbare Programmiersprachen, die leider kaum bekannt und benutzt werden. Libraries machen den Nutzen von allen Sprachen aus. Egal, wie schön eine Sprache ist, ohne Libraries ist sie leider nutzlos. Hier also ein paar Vorschläge
1) Common Lisp. Eine der derzeit am stärksten unterschätzten Sprache in den 80-er Jahren des letzten Jahrtausends gab es ganze Betriebssysteme, die in eine Lisp Dialekt geschrieben wurde. Das Emacs Lisp begleitet uns nun seit mehr als 30 Jahren, ein Ende ist nicht absehbar. Schemes gibt es sehr viele und auch noch ein paar andere weniger bekannte Lisps. Wenn Sie Glück und Können haben, bekommen die dieses BS auf Linux zum Laufen

https://archives.loomcom.com/genera/genera-install.html

Downloads / Homepages: https://www.sbcl.org/ http://www.lispworks.com, http://www.franz.com, https://franz.com/
2) Smalltalk. Eine der ersten Durch- und Durch Sprachen auf der Basis von Objekten. Heute immer noch unerreicht. Leider fast vollkommen vergessen im Lichte von Nachfolgern wie Python, C#, Java, JavaScript, C++. Smalltalk teilt mit Common Lisp die Eigenschaft, eine programmierbare Programmiersprache zu sein. Es gibt wenige andere Sprachen, mit denen man die Sprache selber so erweitern kann. So kann man z.B. neue Schleifenarten ohne Probleme zu diesen Sprachen hinzufügen.

Downloads: https://pharo.org/, https://squeak.org/, https://www.instantiations.com/,
https://www.gnu.org/software/smalltalk/

Die “Schwäche” der beiden Sprachen aus Sicht von vielen sind fehlende statische Typen. Interessanterweise teilen sie das mit Python, was derzeit aber eine der am meistgebrauchten Programmiersprachen ist

3) Io . Ich bezweifele, daß es mehr als 1000 aktive Benutzer gibt. Die Einfachheit dieser Sprache ist besser als bei Smalltalk. Hier können Sie es sich anschauen: https://iolanguage.org/
Mehr gibt es nicht. Hier eine Idee wie es aussehen kann:

 cc := method(System getEnvironmentVariable("CC") ifNilEval(return "cc"))
    cxx := method(System getEnvironmentVariable("CXX") ifNilEval(return "g++"))
    ccOutFlag := "-o "
    linkdll := cc
    linkDirPathFlag := "-L"
    linkLibFlag := "-l"
    linkLibSuffix := ""
    linkOutFlag := "-o "
    linkLibSuffix := ""
    ar := method(System getEnvironmentVariable("AR") ifNilEval(return "ar"))
    arFlags := "rcu "
    ranlib := method(System getEnvironmentVariable("RANLIB") ifNilEval(return "ranlib"))


includes = includes appendSeq(headerSearchPaths) map(v, "-I" .. v)

 iocFiles := sourceFiles select(f, f name beginsWithSeq("Io") and(f name endsWithSeq(".c")) and(f name containsSeq("Init") not) and(f name containsSeq("_") not))

Es ist sehr im Smalltalk Sinn gehalten. Object message ist der Weg. Es gibt keine speziellen Klassen. Alles kann eine Klasse sein, aber alles ist ein Objekt. M.E. ist die Implementierung eine der besten (im Sinne von lesbarsten) , die ich bisher fand.

Vielleicht stelle ich auch noch ein paar andere Sprachen vor, die mich auf die eine oder andere Weise beeindruckten….

I agree

It’s stupid not to use some software, because in what it is written. Of course I have my favourites, and special dislikes. But that is not what I see as a user. If the software does what it should – it’s fine.

What try to avoid is of course using a programming language for programming if I do not like it.
And I have a special distaste of C++ and Perl. Partly Tcl ( I simply do not like the set x val) Of course it is stupid. Strange enough I find C a wonderful language.
Now I’m currently learning Java and I’m quite sure I will use it for further programm development. I want to learn and use other languages but many are terrible for application development. You want a decent debugger and decent toolbos. This is not a given for quite a few languages I like.

E.g I’d like to use Pharo Smalltalk more intensivly, but they break code way too often. As a application developer I hate that, and for that I have to like VBA, because it simply works since at least two decades. Code you once wrote, still works. Every language which breaks code too often is very much a no-go for me. What I need is help with building GUI and Reports. If that’s not there I an’t use it….

Noch mal was für meine etwaigen Leser über Programmierung

Ich habe mich seit einigen Jahren nicht mehr so intensiv über Programmiersprachen gekümmert. Fand aber gerade über der Woche neues Interesse daran. Mein Fazit: Beeindruckend was sich getan hat. Ich schaue gerade auf Anaconda Spyder IDE und nun ja liebe Haskell, Ocaml etc. Leute, das könnt Ihr was lernen. Siehe:- https://www.q-software-solutions.de/blog/2018/03/mit-diesem-eintrag-mache-ich-mir-sicher-keine-freunde/

Eine einfache Installation mit brauchbaren Debuggern sollte man doch hinbekommen können. Ja ich weiß, Ihr Haskellianer braucht keine Debugger, ich schreibe Eure Programme einfach so hin und “seit” fertig. Nun ich kann das nicht und zur Kontrolle und zur Fehlersuche benutze ich einen Debugger.

Wie auch immer ich Vergleiche gerade wie einfach schwierig es ist zu einem brauchbaren Editor oder einer brauchbaren Konsole zu kommen und tja Python gewinnt derzeit da..