Re: An alle Schüler und Studenten mit Informatikproblemen
Verfasst: Mittwoch 21. Februar 2018, 07:15
wie kommst du denn zu dem Schluss hier würde keinen Anfängern geholfen?!?
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Dafür ist aber Python denkbar ungeignet!mkesper hat geschrieben: Montag 14. Dezember 2009, 16:44 Bitte an die angegebene Zielgruppe denken. Von beruflichen Softwareentwicklern war nicht die Rede. Es geht darum, Schülern und Studenten grundlegende Konzepte des Programmierens beizubringen.
Bitte nicht fast zehn Jahre alte Posts ausbuddeln.
Experten auf diesem Gebiet haben eine andere Meinung dazu.Dafür ist aber Python denkbar ungeignet!
Es fängt schon beim sauber deklarieren von Variablen an. Dann ist die Posix-kompatibilität nicht von vorne gegeben.narpfel hat geschrieben: Sonntag 13. Mai 2018, 16:05 @RIN67630: Welche grundlegenden Konzepte des Programmierens kann man denn am Beispiel Pythons nicht unterrichten bzw. lernen?
Wenn man seine Meinung begründet, dann macht man übrigens mehr den Eindruck, dass man eine ernsthafte Diskussion führen möchte und nicht nur trollen will.
Das ist das Konzept von dynamischen Sprachen.Selbst der Datentyp einer Variable ist nicht stabil.
Bekommt man auch mit C hin, also die schlechten Gewohnheiten und was die schlechten Gewohnheiten uns bis jetzt gebracht haben, kann man z.B. auf exploit-db.com nachlesen.Ja, man bekommt schnell Ergebnisse, aber auch schlechten Gewohneiten, die einem später im Wege stehen werden.
Geht auch mit Python. Ich weiß gar nicht was du willst. Ich könnte wenn ich wollte jeden Datentyp checken.Sobald dass man an Schnittstellen kommt, die klar definierte Inhalten verlangen, ist der Spuk vorbei.
Der Support wird 2020 eingestellt und das ist gut so. Die Inkompatibilitäten kommen dadurch zustande, dass manDie Rückwärtskompatibilität mit Python 2 ist nicht gewährleistet.
Dieses Konstrukt wird in Python auch nicht benötigt und falls du denkst du bräuchtest das in Python, dann kennst du die Sprache nicht.Nebenbei: das Konstrukt select..case fehlt
Ach du liebe Guete. Ahnungslos und meinungstark - das sind ja immer die Besten... was hat denn POSIX-Kompatibilitaet (eine Eigenschaft von BETRIEBSSYSTEMEN) mit einer Programmiersprache zu tun? Und welches grundlegende Konzept stellt den Abwaertskompatibilitaet bitte dar? Wenn ich in C++17 programmiere, geht das auch nicht mehr durch einen Compiler von vor 5 Jahren. Ist laut deiner Logik also auch nicht geeignet zum beibringen von Konzepten des Programmierens. Da wuerde ich mal wissen wollen, welche Sprache du denn dafuer geeignet haelst...RIN67630 hat geschrieben: Montag 14. Mai 2018, 12:08
Es fängt schon beim sauber deklarieren von Variablen an. Dann ist die Posix-kompatibilität nicht von vorne gegeben.
Ja, man bekommt schnell Ergebnisse, aber auch schlechten Gewohneiten, die einem später im Wege stehen werden.
Selbst der Datentyp einer Variable ist nicht stabil.
Sobald dass man an Schnittstellen kommt, die klar definierte Inhalten verlangen, ist der Spuk vorbei.
Die Rückwärtskompatibilität mit Python 2 ist nicht gewährleistet.
Nebenbei: das Konstrukt select..case fehlt
usw...
Ohne den Flamewar fortsetzen zu wollen: Ich will nur deine Fragen beantworten.__deets__ hat geschrieben: Montag 14. Mai 2018, 12:39 Und welches grundlegende Konzept stellt den Abwaertskompatibilitaet bitte dar? Wenn ich in C++17 programmiere, geht das auch nicht mehr durch einen Compiler von vor 5 Jahren.
Sofern du keine Bibliotheken benutzt oder genau die selben wie vor 5 Jahren noch hast. Aber wenn sich nichts auf deinem System geändert hat, woher kommt dann der neue Kompiler?RIN67630 hat geschrieben: Montag 14. Mai 2018, 15:37 Ein Programm, der vor 5 Jahren in C++11 geschrieben wurde, lässt sich akkurat mit C++17 compilieren.
Auch diese Frage möchte ich noch beantworten.kbr hat geschrieben: Montag 14. Mai 2018, 13:12 Warum solltest Du selbst eine Sprache nutzen, die Du kritisierst?
Natuerlich geht es dabei um die Portabilitaet von Software auf verschiedene Systeme. Hat aber nichts mit einer Programmiersprache zu tun (jenseits des C FFI). Python laeuft auf diesen System gerade WEIL es gegen POSIX APIs gebaut ist, und offeriert diese explizit oder implizit. Und falls welche fehlen, kann man die sich zur Not mit ctypes dazubasteln, dazu haette ich aber gerne ein Beispiel. Und es bleibt dabei, das diese Aussage im Kontext von Programmierkonzepten die mittels Python vermittelbar sein sollen (oder nicht, laut dir) Unfug ist. Abstraktionen wie Dateien, Sockets, Threads sind verfuegbar, und portabel. Und koennen damit auch gelehrt werden. Das heisst nicht, das ALLES in Python sinnvoll darstellbar ist - eine eigene malloc Implementierung mangels einer Notwendigkeit dank gemanagtem Speicher wuerde ich in Python jetzt nicht schreiben. Aber habe ich auch in meinem gesamten Informatik-Diplom nicht gemacht.RIN67630 hat geschrieben: Montag 14. Mai 2018, 15:37 Und POSIX ist nicht nur eine Eigenschaft von Betriebsysteme, sondern eine Ansammlung von Grundkonzepte, die die Portabiltät von Programmierlösungen garantiert.
Bitte erzaehl das den Leuten, die diese Liste verantworten:RIN67630 hat geschrieben: Montag 14. Mai 2018, 15:37 Abwärtskompatibilität geht genau anders herum: Ein Programm, der vor 5 Jahren in C++11 geschrieben wurde, lässt sich akkurat mit C++17 compilieren.
Ich finde es interessant, dass du das so siehst, denn Python ist, soweit ich weiß, ja ursprünglich als Lehrsprache gedacht gewesen, bzw.aus einer solche Sprache (ABC) hervorgegangen. Das muss jetzt zugegebenermaßen nicht heißen, dass dieses Ziel erfüllt wurde -- viele Menschen scheinen das aber schon so zu sehen. Was schon stimmt, ist, dass Python einige Dinge anders macht, als "traditionellere" Sprachen; und wenn man über viele Jahre hinweg eine bestimmte Art zu Programmieren praktiziert hat, fällt es vielleicht schwer, sich auf Python einzulassen, oder anzuerkennen, dass es anders auch geht (oder vielleicht sogar besser). Mich würde zum Beispiel (ernst gemeinte Frage) interessieren, ob du Pascal für eine bessere Lehrsprache als Python hältst; das könnte aufschlussreich sein.
Damit haben viele Probleme, die neu zu einer dynamischen Programmiersprache hinkommen; die vielen Vorteile erschließen sich zumeist langsam – und für manche sogar gar nicht. Anhand Deiner Beschreibung wage ich zu behaupten, dass das Problem nicht bei Python liegt, sondern sich vielmehr im Designentwurf des von Dir zu erweiternden Programms befindet.RIN67630 hat geschrieben: Montag 14. Mai 2018, 16:06 Dass Python die Daten ohne Deklaration nutzt und gar im Programmablauf verändert, macht es unglaublich schwer den Ablauf zu verstehen, da man nicht vom Code aus wissen kann, welche Struktur die Variable gerade vorweist.
Ja, irgendwann kracht es wenn ein falscher Typ vorliegt. Das hast du selbst bei der Standardbibliothek von Python, dass da *nicht* alles Duck-Typing-gerecht programmiert ist und stattdessen ein bestimmter Datentyp verlangt wird. Das ist unsauber, weil inkonsequent, stellt jedoch kein riesiges Problem dar.RIN67630 hat geschrieben: Montag 14. Mai 2018, 12:08 Selbst der Datentyp einer Variable ist nicht stabil.
Sobald dass man an Schnittstellen kommt, die klar definierte Inhalten verlangen, ist der Spuk vorbei.
Die Aussage ist ja falsch. Jede Variable hat einen stabilen Datentyp (Python ist stark typisiert). Es kann einem also nicht wie bei PHP oder Javascript passieren, dass man plötzlich eine Zahl hat, obwohl man einen String erwartet. Was Du meinst, ist, dass nicht der Compiler sofort meckert, wenn irgendeine Vorgabe, die ein Programmierer für nötig befunden hatte, nicht eingehalten wurde. Wenn man aber nur nach Compilermeldungen programmiert, hat man zwar ein formal korrektes Programm, das aber trotzdem voller Bugs ist. Das richtige vorgehen ist so oder so, Funktionen zu schreiben, die per (Unit-)Test auf Korrektheit geprüft sind und daraus ein komplexeres Programm zusammenzusetzen. Dann ist es auch egal, ob oder wie typisiert wird, denn die gefährlichen Fehler sind nicht Typfehler sondern logische Fehler, die kein Compiler erkennen kann. Daher sind die ganzen Typangaben, die jetzt immer häufiger in Pythonprogrammen auftauchen, nur unnützer Balast, der das Lesen und Schreiben verkompliziert, ohne in realen Szenarien irgendeinen Nutzen zu haben.RIN67630 hat geschrieben: Montag 14. Mai 2018, 12:08 Selbst der Datentyp einer Variable ist nicht stabil.
Sobald dass man an Schnittstellen kommt, die klar definierte Inhalten verlangen, ist der Spuk vorbei.
Die Typangaben die man in Python jetzt haben kann oder die es in C, Java o.ä. Sprachen gibt sind größtenteils unnütz. Grundsätzlich erlauben dir aber Typsysteme eine ganze Reihe von Fehlern auszuschliessen, was dir erlaubt dich wirklich aufs wesentliche zu konzentrieren. Außerdem erlauben dir Typsysteme Dinge zu tun die sonst gar nicht möglich wären, z.b. erlaubt dir Rust durch Substructural Typing Programme zu schreiben die schnell, sparsam, fehlerfrei und sicher mit Memory umgehen, etwas dass du sobald Concurrency hinzukommt mit einem GC nicht hinbekommst.Sirius3 hat geschrieben: Dienstag 15. Mai 2018, 07:22Dann ist es auch egal, ob oder wie typisiert wird, denn die gefährlichen Fehler sind nicht Typfehler sondern logische Fehler, die kein Compiler erkennen kann. Daher sind die ganzen Typangaben, die jetzt immer häufiger in Pythonprogrammen auftauchen, nur unnützer Balast, der das Lesen und Schreiben verkompliziert, ohne in realen Szenarien irgendeinen Nutzen zu haben.