Programmieren lernen

  • Es geht doch nichts über Cobol ....

    Alternativ (aber ganz andere Schiene): Assembler.


    ;)

    Assembler ist cool. In den 70er Jahren hatte mein Kumpel einen Cosmos-Baukasten mit programmierbarem NIC zu Weihnachten bekommen. Den haben wir dann gemeinsam in Maschinensprache programmiert.
    Er studierte nach dem Abi Informatik in Berlin, ich hab' Kunst und Mathe auf Lehramt studiert.
    Er war dann an der Entwicklung von StarOffice (dem Vorläufer von LibreOffice) beteiligt und hatte eine eigene Firma, die er irgendwann Anfang der 90er verkauft hat. Damals hat er reihum gefragt, wo es auf der Welt nett sei, um sich niederzulassen, falls genug Geld vorhanden sei. Seitdem lebt der Sack auf Maui (Hawaii) :schreien:

    «Wissen – das einzige Gut, das sich vermehrt, wenn man es teilt.» (Marie von Ebner-Eschenbach)
    Meine Beiträge können Spuren von Ironie und Sarkasmus enthalten

  • Dave Plummer hat letztens mal Zig in einem seiner Videos vorgestellt. Sieht tatsächlich nach einer Alternative zu C und C++ im Bereich Systemprogrammierung aus.


    In dem Zusammenhang sind besonders Pointer inklusive deren Dereferenzierung für Neueinsteiger eher im Bereich "Raketenwissenschaften" anzusiedeln

    Naja, bei C++ finde ich gerade den Teil jetzt erheblich weniger wüst als in C. Und auch in C ist es schlussendlich nur eine mühsame Tipperei und man muss halt dran denken, dass es für jedes malloc irgendwo ein free geben muss. Wirklich gecheckt, was ein Referenzdatentyp sein soll, wie verkettete Listen funktionieren, etc. habe ich dieses Semester, als wir eben angefangen haben in C und C++ zu programmieren. 1. Semester war Java, das war viel einfach irgendwas tippen, von dem man nur erahnt, warum eigentlich. Und Python führt sowieso irgendein seltsames Eigenleben, das ist mir hochgradig unsympathisch.



    Alternativ (aber ganz andere Schiene): Assembler

    Man lernt in Basel nur noch, wie es prinzipiell geht und quält sich mal durch einen Simulator. So habe ich aber wahrhaftig final erst verstanden, wie Rekursion funktioniert. Es hat schon noch seine Daseinsberechtigung, aber dass man es noch wirklich lernt ist glaube wenig sinnvoll.

  • Ein Irrglaube ist ja, dass man in C++ mit "Pointer inklusive deren Dereferenzierung" arbeiten muss.

    Man kann komplette c++ GUI Anwendungen schreiben, ohne damit überhaupt direkt in Berührung zu kommen und ohne das zwingend verstehen zu müssen.

  • Habt ihr eigentlich auch Erfahrungen in der Softwareentwicklung, insbesondere in Bereichen wie Design Pattern und UML? Ich frag' deshalb, weil mir zu diesen Themen regelmäßig der Austausch fehlt. Treib' mich dann regelmßig bei Stackoverflow rum, wobei die Community ja nicht so verständnisvoll auf didaktische Fragen reagiert.

  • Ein Irrglaube ist ja, dass man in C++ mit "Pointer inklusive deren Dereferenzierung" arbeiten muss.

    Man kann komplette c++ GUI Anwendungen schreiben, ohne damit überhaupt direkt in Berührung zu kommen und ohne das zwingend verstehen zu müssen.

    Eben das. Man kann ja einfach dynamisch mit Objekten arbeiten, wenn man keine Lust auf Zeiger hat und die Aufganstellung nicht zwingend kritisches Speichermanagement verlangt. Grade dass es so und eben auch anders geht, finde ich bei C++ sehr sympathisch. Und wie du schreibst, Qt z. B. ist für GUI Programmierung nun auch nicht schlechter als der Scene Builder für Java. Man kommt mit C++ irgendwie überall hin.



    Bei Python ist ja der Witz, dass ein sehr großer Teil von Python in c geschrieben ist, weil Python in Python geschrieben einfach zu langsam ist.

    Python ist für Leute, die eigentlich keine Lust auf Informatik haben. Es hat schon einen Grund, dass es im Scientific Computing unterdessen so weit verbreitet ist. Als Naturwissenschaftlerin interessiere ich mich nicht für Code-Optimierung sondern für die Auswertung meiner Daten. Wobei in dem Bereich Fortran wohl auch nie aussterben wird ^^

  • Habt ihr eigentlich auch Erfahrungen in der Softwareentwicklung, insbesondere in Bereichen wie Design Pattern und UML?

    Zu "Design Pattern" und "UML": Im Grunde nur das, was so auch in Fachbüchern steht. Aber "richtig" genutzt: nein.

    Zu "Softwareentwicklung". Ja. Ich programmiere Software, die wirklich im Berufsleben von anderen Leuten produktiv angewendet wird. Also nicht so ein Hobby "Ich programmiere mal Taschenrechner oder Sodoku".

    Schwerpunkt bei mir C++/Qt. GUI, welche NP Probleme lösen kann. Daten werden u.a. in einer SQL Datenbank gespeichert. Daten werden aus verschiedensten Formaten gelesen (xml, csv, ...) und in verschiedensten Formaten exportiert (html, cvs, ...). (Da ist sogar etwas css, JavaScript und LaTeX dabei. Aber da bin ich nur auf Anfängerniveau). Ich kompiliere die Software für Windows, MacOS, Linux, x86, ARM. WebAssembly habe ich mal ausprobiert, geht aber noch nicht gut genug. Versuche ich mal in ein paar Jahren nochmal.

    Eine gute Anlaufstelle für Design Pattern und UML kann ich nicht nennen. Für Qt ist definitiv das offizielle Qt Forum die erste Anlaufstelle bei Fragen (Nach der sehr guten Dokumentation, die (fast) alle Qt Dinge sehr gut vorstellt.).

  • Python ist für Leute, die eigentlich keine Lust auf Informatik haben. Es hat schon einen Grund, dass es im Scientific Computing unterdessen so weit verbreitet ist. Als Naturwissenschaftlerin interessiere ich mich nicht für Code-Optimierung sondern für die Auswertung meiner Daten. Wobei in dem Bereich Fortran wohl auch nie aussterben wird

    Also ich programmiere mega gerne in Python 😇

    In C++ würde ich nichts mehr machen wollen, dazu ist mir die Sprache bzw. das ganze Ökosystem inzwischen zu Old School und meine Lieblingssprache war C++ noch nie, auch nicht, als ich vor einer gefühlten Ewigkeit (wobei... nicht nur gefühlt, ist schon fast 10 Jahre her 😅) damit noch meine Brötchen verdient habe 😂

    Wenn eine systemnahe Sprache, dann würde ich mir tatsächlich Rust überlegen. Oder abwarten, ob Google mit Carbon tatsächlich den grossen Wurf schafft.

    Fortran mochte ich immer schon gerne, da werde ich vielleicht mal wieder einen Blick einwerfen, wenn ich Zeit dazu habe.

  • Also ich programmiere mega gerne in Python 😇

    Du bist eindeutig komisch ... :rofl:


    (Und ich habe eigentlich eh keine Ahnung sondern klugscheisse nur so vor mich hin. Nee, im Ernst ... Allein die dynamische Typisierung macht mich bei Python schon nervös. Da funktioniert wahrscheinlich mein Hirn einfach total old school.)

  • Wobei "c++ ist old school" so auch nicht stimmt. C++ entwickelt sich immer noch sehr aktiv weiter. Datentypen müssen nicht mehr zwingend vorgegeben werden. (Stichwort "auto". Sinn und Einsatzbereich ist aber ganz anders als bei Python. Man kann jetzt auch lambda-Ausdrücke schreiben, ...). Ich gucke mir auf YouTube schon mal ganz gerne die Vorträge c++ Compilerentwicklern an. Es ist schon interessant zu sehen in wie unterschiedliche Richtungen sie die Sprache weiterentwickeln möchten und warum sie einige "modernere" Techniken nicht aufnehmen wollen oder können bzw. warum sie schon mehrfach einige "moderne" Features aus aktuellen Versionen wieder entfernt haben.

  • Du bist eindeutig komisch ...

    Ich weiss 😂 Du bist auch nicht die erste, die das feststellt... 🤭


    Das eigentlich Schicke an Python finde ich persönlich die Libraries und damit verbunden die Tatsachen, dass mit einem Paketmanager wie Conda (ich nutze conda-forge) das Auflösen der Abhängigkeiten in den meisten Fällen ziemlich gut klappt - zumindest, soweit es mich betrifft.

    Im Gegensatz zu Julia, die ich von der Idee her super finde, die aber praktisch unter einem ziemlichen Entwicklungschaos zu leiden scheint - die Cummunity hat sich da anscheinend noch nicht auf einen gemeinsamen roten Faden einigen können. Jedenfalls war das so, als ich vor einem halben Jahr mal etwas probieren wollte und an inkompatiblen Paketen gescheitert bin.

  • Ein Irrglaube ist ja, dass man in C++ mit "Pointer inklusive deren Dereferenzierung" arbeiten muss.

    Man kann komplette c++ GUI Anwendungen schreiben, ohne damit überhaupt direkt in Berührung zu kommen und ohne das zwingend verstehen zu müssen.

    exakt so. Obwohl es für die Einführung der Grundkonzepte der Programmierung in der Schule einfachere Programmiersprachen gibt als C++.

    Es kommt bei den Programmiersprachen aber doch auch immer auf den Einsatzzweck an.

    Ich programmiere gerne in C++, aber wenn ich was mit neuronalen Netzen oder KI programmieren möchte, kommt man momentan an Python,

    aufgrund der umfangreichen Bibliotheken zu dem Thema, nicht vorbei.

    Aber natürlich hat sich diese Sprache in der Wissenschaft durchgesetzt, da die Syntax sehr gummiartig benutzerfreundlich ist...

  • Ja, KI (bzw. das nutzen der KI-Bibliotheken; die Bibliotheken selbst sind oft in C geschrieben) und grafische Aufbereitung von Daten in der Wissenschaft z.B. mit Mathplotlib sind Bereiche, in denen Python bevorzugt genutzt wird.

    Ich werfe Schüler ja nicht (mehr) ins kalte Wasser. In den letzten Jahren habe ich immer zuerst Scratch gemacht.

  • Habt ihr eigentlich auch Erfahrungen in der Softwareentwicklung, insbesondere in Bereichen wie Design Pattern und UML? Ich frag' deshalb, weil mir zu diesen Themen regelmäßig der Austausch fehlt. Treib' mich dann regelmßig bei Stackoverflow rum, wobei die Community ja nicht so verständnisvoll auf didaktische Fragen reagiert.

    UML und UML-Erweiterungen habe ich zum Ende meines Studiums in einigen Projekten viel mit gearbeitet, also auch praktisch.


    Design Pattern relativ wenig, da eher in Gesprächen mit meinem Partner, der nach unserem Studium den klassischen Weg gegangen ist und im Bereich Softwareentwicklung arbeitet.

    UML spielt aber z.B. bei denen überhaupt keine Rolle.


    Also Design Patterns auf praktischer Ebene das was ich irgendwann mal in kleineren Projekten genutzt habe, aber spezielles ist irgendwo in den grauen Zellen verschwunden ist. Ich unterrichte es aktuell auch gar nicht. Müsste mich dann glaub erstmal in einige wieder rein denken. Geht mir manchmal schon bei der IHK-Korrektur so, dass ich erstmal wieder überlegen muss, wie war das nochmal...

    Eigentlich schade, aber naja, der Tag hat nur 24 Stunden und wenn man sich dann auch noch mit anderen Dingen außer Programmierung oder Informatik überhaupt beschäftigen möchte.

Werbung