Hallo Besucher, der Thread wurde 37k mal aufgerufen und enthält 323 Antworten

letzter Beitrag von Tale-X am

BASIC und Python - Was ist denn einfacher zu lernen?

  • Ich kann ein bisschen BASIC programmieren (als Laie über 50 Lenze). Habe mir auch einen kleinen Mini-Computer für 30 Euro (von FRANZIS) vor Jahren gekauft. Der muss komischerweise mit Python programmiert werden. Meine Überlegung: wenn die C64 mal nicht mehr funktionieren (also meine eigenen), muss ich ohnehin auf ein fremdes System wie Rasberry und Co. umsteigen, um meine kleinen Steuerungen im Haushalt und Garten zu programmieren.


    Lohnt es sich vom Zeitaufwand denn, Python noch dazu zu lernen? Oder sollte ich beim bekannten BASIC bleiben. Wie lange braucht man denn im Schnitt, bis man einigermaßen mit P. programmieren kann? Wenn ich mir überlege zu Spanisch noch Russisch zu lernen, packt mich eher das Grausen.


    Hat jemand den Überblick?


    jomodore

  • Wenn Du Basic kannst, bist Du auch nach einem Tag einlesen im Python.


    Der größte unterschied ist garnicht die Sprache sondern das nervige rumkonfigurieren - soblad Du aus den grundbefehlen raus gehts gibts dann diesen Befehl, der nur ab der Versin geht und jenen befehl der dann schon immer geht aber man brauch noch diese und jene Lib dazu und so. Aber das programmieren an sich ist nicht wesentlich anders. Und es gibt auch gutet turotials dazu. UND: Es gibt sogar ein Modul mit dem man dann GOTO wieder hat. :-)

  • Python lohnt sich auf jeden Fall, vor allem wenn die Alternative Basic V2 ist. Python-Bücher gibt's wie Sand am Meer, ebenso Bücher zu dem Bastelcomputer, wo dann durchaus auch Steuerung und Signalverarbeitung mit Python drin beschrieben sind.

  • Hier gibt es z. B. ein Openbook zu Python, da kannst Du ja mal schnuppern.


    Computer können sowieso nur drei Dinge tun:
    1. Anweisungen ausführen (PRINT, A=20, OPEN etc.)
    2. Verzweigungen bearbeiten (IF ... THEN, ON ... GOTO etc.)
    3. Schleifen abarbeiten (FOR ... TO ... NEXT, WHILE ... DO etc.)


    Daraus ist jede Programmiersprache gestrickt. Daher lernst Du auch jede Programmiersprache an einem Wochenende. ABER: dann kommen die Bibliotheken, die Dir die Erfindung des Rads abnehmen, und die sind teilweise SEHR umfangreich. Hier steckt der steile Teil der Lernkurve drin.
    Die paar-und-zwanzig Befehle von C lernst Du an einem Tag, für die optimale Anwendung der Bibliotheken brauchst Du sehr lange.


    Für Python kenne ich keine Details, aber es wird sicherlich dort ähnlich sein.

  • Das nervigste an Python ist die Tatsache, daß die Einrückung Teil der Syntax ist. Der, der diese Idee hatte macht sich wahrscheinlich auch die Hose mit der Kneifzange zu.

    Erklaere mir mal bitte warum das nervig ist.

  • Ich kann das Erlernen von Python jedem nahelegen, es ist eine Sprache, mit der man sehr schnell zum Ergebnis kommt, bei der man oftmals nicht "umstaendlich" programmieren muss sondern wo vieles sehr direkt geht, sie ist sehr lesbar und simpel, sie ist modern und damit auch "zukunftssicher", immer mehr im Kommen, und ich wuerde Python nicht mehr missen wollen. Ich habe z.B. auch die Prototypen fuer FROGS und SHOTGUN in Python innerhalb weniger Tage geschrieben, um zu sehen, ob die Spielkonzepte funktionieren. Gerade fuer so etwas ist es ideal, um schnell mal was auszuprobieren. Allerdings heisst das natuerlich nicht, dass man damit nicht auch "richtige" Software schreiben kann.

  • Weil ich nicht notwendigerweise einrücke, in anderen Sprachen sind Blöcke schliesslich anders gekennzeichnet und sofort zu erkennen. Warum sollte ich bei einer Funktion die mit Header keine 10 Zeilen hat einrücken?

    Weil es besser lesbar ist. Bei Sprachen wie C/C++ gibt es oft ellenlange Diskussionen ueber den Code-Style. Bei Python ist das kaum notwendig, da alle im Grunde sich an den gleichen Stil halten. Auch hat man viel weniger zu tippen, da man keine geschweiften Klammern oder haufenweise END-Statements benoetigt. Wer mal Lua programmiert hat, weiss was ich meine. Da hat man schnell mal 5-10 "END"-Statements untereinander (wohlgemerkt kein "END IF" oder "NEXT" oder sowas, sondern tatsaechlich nur "END"). Und schnell fehlt mal eines oder es ist eins zu viel, dann geht die Sucherei los. Bei Python ist alles automatisch uebersichtlich durch die Einrueckung.


    Es gibt nur einen einzigen Nachteil aus meiner Sicht - man kann nicht einfach mal ein "IF" auskommentieren, um den darunterhaengenden Block immer ausfuehren zu lassen. Da muss man sich dann mit einem "or True" am Ende des IFs begnuegen, was deutlich weniger uebersichtlich ist als z.B. einfach ein Kommentar-Zeichen am Anfang der If-Zeile. Davon abgesehen finde ich an der Einrueckungs-Pflicht von Python absolut nichts verkehrt.

  • Auch hat man viel weniger zu tippen, da man keine geschweiften Klammern oder haufenweise END-Statements benoetigt.

    Typischerweise will Python am Anfang eines Blocks ein ':' am Ende der Zeile sehen, man spart also nur die schliessende Klammer.


    Bei Python ist das kaum notwendig, da alle im Grunde sich an den gleichen Stil halten

    Ich rücke pro Ebene immer nur um 1 SPACE ein, sonst wird das zu schnell unübersichtlich weil der Code immer weiter nach rechts rutscht.



    Davon abgesehen finde ich an der Einrueckungs-Pflicht von Python absolut nichts verkehrt.

    Ich schon, sowas gehört nicht in die Syntax einer Sprache. Einen Nachteil hast du ja schon selbst beschrieben.

  • Für die, die auf der Microsoft Schiene sind: Microsoft hat Python bei Visual Studio 2015 SP3 direkt Python integriert.
    Bei VS2017 ist es leider aus dem RTM rausgeflogen, kommt aber hoffentlich bald. Man kann Python aber weiterhin mit der VS2017 Preview (die parallel mit RTM installiert sein kann).


    Warum hat MS Python integriert? Einerseits ist es eine dieser aufstrebenden Sprachen (die es aber schon lange gibt), in der mal schnell "basic-ähnlich" was Brauchbares bauen kann.
    Und es gibt viele Frameworks, welche enorm die Funktionalität erweitern.
    Eine der Zielgruppen sind Datenanalysen und -präsentationen und Statistik, z.B. im BI und wissenschaftlichen Bereich.
    Ausserdem gibt es Python für alle grossen Plattformen wie Windows/macOS/Linux, aber eben auch für Kleinstcomputer wie das Raspi, wo sich sehr einfach z.B. Ein/Ausgänge ansteuern lassen.


    Wegen dieser Universalität habe ich persönlich Python jetzt mehr Priorität gegeben zum Lernen als z.B. Swift.

  • Just my 2ct:


    Ich hab vor ca. einem Jahr das erste mal mit Python ersthaft Dinge getan und die Sprache hat es mir sofort angetan.

    • Die Syntax ist grade raus und es gibt schoene Konstrukte die es ermoeglichen sehr kurz zu formulieren und trotzdem lesbar und maechtig zu sein
    • Die Sprache ist objektorientiert, man kann aber auch "mal schnell" was Prozedurales zusammenstricken ohne das es weh tut
    • Der Interpreter ist sehr schnell. Ich habe auf Arbeit Numbercrunching gemacht und der limitierende Faktor waren meine 32GB RAM und nicht die Verarbeitungsgeschwindigkeit
    • Es gibt sehr viel gute Tutorials im Netz und auch auf etwas kuriosere Fragen findet man meist was bei Stackoverflow
    • Die Dokumentation ist OKisch (sorry, fuer mich ist die Java API-Doc immer noch das Mass aller Dinge)
    • Es gibt viele maechtige Bibliotheken die meistens auch gut dokumentiert sind. (Gegenbeispiel: Alles was mit Node.js zu tun hat)
    • Die Paketverwaltung mit PIP funktioniert einfach
    • Man kann auch ohne Schmerzen mal Binaerdaten verarbeiten


    Die fehlenden Klammern bei der Blockbildung finde ich weiterhin SEHR gewoehnungsbeduerftig, aber hey...


    Noch zwei Tips die (wie ich finde) das Leben leichter machen:

    • Finger weg von Python 2.7, am besten gleich mit Pythonn 3 anfangen
    • PyCharm ist (einen entsprechend maechtigen Rechner vorrausgesetzt) eine gute Entwicklungsumgebung und einem einfachen Texteditor definitiv vorzuziehen
  • Typischerweise will Python am Anfang eines Blocks ein ':' am Ende der Zeile sehen, man spart also nur die schliessende Klammer.

    Das war vielleicht etwas ungluecklich formuliert, mir ging es da nicht um ein Zeichen mehr oder weniger. So tippfaul bin ich jetzt auch nicht. Aber bei einem sauber formatierten Code waere jede schliessende Klammer auf einer eigenen Zeile, und das macht den Code unnoetig lang. Bei geschweiften Klammern sieht das aber noch einigermassen ok aus, zumal auch die meisten Editoren Klammer-Highlighting beherrschen. Bei einer Sprache wie Lua, wo es nur "END-Statements" gibt, sieht es aber sehr unuebersichtlich aus, wenn man dann sowas hier vorfindet:


    Code
    1. ... code...
    2. END
    3. END
    4. END
    5. END
    6. END
    7. END
    8. END
    9. END
    10. END



    Ich schon, sowas gehört nicht in die Syntax einer Sprache. Einen Nachteil hast du ja schon selbst beschrieben.

    Den meiner Meinung nach einzigen Nachteil. Zudem habe ich auch Nachteile bei Klammern und END-Statements beschrieben. Du koenntest ja mal ein paar Vorteile beschreiben ;)

  • Also grundsätzlich muss ich Gerrit in dem Punkt zustimmen, dass die Code-FORMATIERUNG in der formellen Beschreibung einer Sprache nichts verloren hat.


    Das ist aber keine Aussage darüber, ob das Konstrukt sinnvoll ist oder nicht.


    E D I T


    Tabs, Leerzeichen und anderer Whitespace sollten auch nicht integrale Bestandteile einer Programmiersprache sein, also z. B. als offizielle Begrenzer fungieren.

  • Tabs, Leerzeichen und anderer Whitespace sollten auch nicht integrale Bestandteile einer Programmiersprache sein, also z. B. als offizielle Begrenzer fungieren.


    Dann muesste also strenggenommen jede Sprache wie C64 BASIC sein, und sowas hier erlauben? ;)

    Code
    1. FORI=1TO150:IFA=30THENGOTO20:NEXTI
  • Wenn ich mir überlege zu Spanisch noch Russisch zu lernen, packt mich eher das Grausen.

    In Russisch schreibt man ja auch keine Programme. :gruebel


    Python habe ich in meiner Linuxzeit mal angetestet und es hat sich mir gegenüber recht freundlich verhalten. Vermutlich probiere ich es noch mal.

  • Dann muesste also strenggenommen jede Sprache wie C64 BASIC sein, und sowas hier erlauben? ;)

    Nein, denn so "streng" bin ich nicht. Whitespace als Trennung für Befehlswörter, Variablen und Operatoren ist sinnvoll, als Trennzeichen für Blöcke oder sogar die Programmsteuerung halte ich das jedoch für ein sehr unglückliches Konzept. Ich persönlich würde eher einen Tab als ein END vergessen / zuviel setzen.


    Noch einmal, damit sage ich nichts für oder gegen Python, und eigentlich ist die Diskussion über Interna von Python m. E. sowieso ein wenig OT ;)

  • Ich moechte eigentlich auch nicht unnoetig darueber rumdiskutieren - aber wenn ich mal so direkt fragen darf, wie kann man denn ein "Tab" vergessen? Wenn man uebersichtlich strukturiert programmiert, dann wuerde man den Tab doch sowieso machen, einfach der Form halber. Ich programmiere in anderen Sprachen wie C/C++ oder Java auch stets wohlformatiert, und wuerde eine Einrueckung niemals vergessen, weil ich ja selbst moechte, dass ich mich in meinem Code nach wie vor zurechtfinde. Aus diesem Grund habe ich wirklich Probleme damit, zu verstehen, warum viele diese Einrueckungspflicht so schlimm finden. Fuer mich ist das so selbstverstaendlich bzw. natuerlich, wie nach einem Satz einen Punkt zu machen

  • Den meiner Meinung nach einzigen Nachteil

    Naja, das Variablen nicht direkt als solche erkennbar sind stört wenn man es von PERL und Shellscripten her gewöhnt ist. Hat man Pech ist der eben ausgedachte Variablenname ein Keyword und es gibt Ärger beim ersten Start.


    Ausserdem ist es komisch, daß es in der Sprache zwar ein 'open()' gibt um eine Datei zu öffnen, aber man, um zuerst rauszufinden ob sie auch vorhanden ist, ein Modul ('os') laden muss damit man mit os.path.exists("filename") nachsehen kann.


    Python ist schon nett, aber obwohl es die Sprache schon eine Weile gibt hat sie immer noch einige WTF-Momente.

  • Der meiner Meinung nach einzige Nachteil der EINRUECKUNGS-PFLICHT. Dass die Sprache noch andere Nachteile oder WTF-Momente hat - wie JEDE andere Sprache - duerfte keinen ueberraschen.