Javascript für allgemein programmieren lernen?
Hallo,
ich lerne aktuell programmieren bzw. habe schon etwas Erfahrung. Ich habe etwas in c rein geschnuppert, da ich mit Platinen gearbeitet habe. Allerdings habe ich da das Problem, dass ich zwar Sachen zum Laufen bekomme, es aber sehr lang dauert bzw. es mir sehr schwer fällt eine Struktur in mein Programm zu bringen.
Was in c noch dazu kommt: Man kann nicht so richtig das "reine programmieren" üben, weil man nie weiß ob es ein Hardware oder Software Problem ist. Teilweise debugge ich sehr lange meinen Code, nur um dann irgendeinen Hardware Fehler zu
finden und umgedreht.
Mir ist auch klar, dass genau das c programmieren ausmacht. Aber ich möchte jetzt erstmal etwas besser in programmieren und strukturieren von Programmen werden.
Jetzt hatte ich auch ein kleines bisschen mit Python angefangen, da man das auch später mal für Scripte gebrauchen kann. Hier fehlt mir allerdings etwas der Antrieb. Ideen für größere Programme finde ich nicht so richtig im Netz.
Jetzt war meine Idee ein paar kleine Spiele, wie z.B. Snake/TicTacToe etc. zu programmieren. Mit einer UI ist das in Python aber wieder etwas Pain.
In Javacript bzw. HTML/CSS bekommt man ja sehr viel leichter eine UI hin.
Denkt ihr ich kann auch Javascript verwenden um einfach besser im programmieren zu werden? Oder was sind eure Erfahrungen, wie man c programmieren besser lernt?
Bin für alle Tipps offen, vielen Dank!
2 Antworten
(...) es mir sehr schwer fällt eine Struktur in mein Programm zu bringen. (...)
Sofern es dir schon bei einfachen Programmen schwerfällt, doppelten Code zu reduzieren oder generell das Programm in sinnvolle Funktionen aufzuteilen, ist das etwas, was dir bei einer anderen Programmiersprache genauso auf die Füße fallen würde.
Hinsichtlich der Entwicklung komplexerer Anwendungen (z.B. auch mit grafischer Oberfläche) würde ich dir Sprachen empfehlen, die das (klassenbasierte) objektorientierte Paradigma vollkommen unterstützen und stärker (statisch) typisiert sind. Passende Kandidaten wären da beispielsweise C#, Java oder Kotlin (es gibt natürlich noch viele andere).
Mit einer UI ist das in Python aber wieder etwas Pain.
Schau dir PyGame an. Die Bibliothek wurde explizit als Hilfe für die Spieleentwicklung gebaut. Mit ihr kannst du leicht Snake u.ä. Minispiele bauen.
Komplexere Anwendungen sollen einfach bedienbar sein, daher bieten sich grafische Oberflächen an. Du kannst aber natürlich auch Anwendungen bauen, die stattdessen zur Bedienung nur ein Konsoleninterface haben. Zum Beispiel:
- ein Text-Adventure
- ein Kontaktbuch, über welches man auch Nachrichten verschicken kann (Chat; via E-Mail; evt. schaust du einmal, ob es zudem APIs gibt, um Nachrichten an Facebook, Telegram, WhatsApp, o.ä. zu schicken)
- ein Terminplaner (mit Kalender, To-Do-Listen, usw.)
- ein Bildbearbeitungstool (mit Funktionen wie Cropping, Hinzufügen von Farbfiltern, u.ä.)
- ein Dateiversionierungssystem
- ein Parser für eine eigene Programmiersprache mit sehr einfacher Grammatik
- ein Verwaltungsprogramm für ZIP-Archive (öffnen, einzelne Dateien oder alles extrahieren, einfügen/bearbeiten, anlegen und Kompression eigener Archive mit Optionen wie der Zerlegung in Teilstücke)
- Schach (mit Kommunikation via Netzwerk)
- Schiffe versenken (mit Kommunikation via Netzwerk)
- Kartenspiele wie Uno
Danke das sind ein paar Anlaufstellen. Ich hatte auch überlegt Flask mit Python zu benutzen. Dann würde man einfache UI Erstellung mit Python vereinen. Hast du da Erfahrung, ob das zu empfehlen ist? Oder hole ich mir da wieder unnötige Komplexität ins Boot?
Da du GUI-Erstellung ausgeschlossen hattest, habe ich Flask nicht erwähnt. Unter diesem Gesichtspunkt könntest du dir ebenso kivy oder PyQt anschauen, da beide Tools Sprachen bieten, um die View deklarativ zu formulieren (siehe kv und QML).
Flask selbst ist recht einfach erlernbar. Eine Komplexität, die dann natürlich hinzukommt, ist der Bereich Web allgemein (Webstandards, wie Browser und Webserver miteinander agieren, u.ä.). Den Anspruch an die UI kannst du ziemlich gering halten, indem du entweder vorgefertigte HTML-Templates nutzt, auf CSS verzichtest oder Frameworks wie Bootstrap, Materialize, o.ä. einsetzt. Solltest du jedoch auf dynamische Oberflächen setzen, wirst du früher oder später mit CSS und JavaScript konfrontiert.
Dann denke ich ist aber Flask nicht optimal, weil man da ja glaub ich nie komplett ohne Javascript auskommt. Also so was wie einen gedrückten Button erkennen, geht ja glaub ich auch nur mit javascript.
Dann denke ich werde ich mir PyQt anschauen. Das ist denke ich für meine Zwecke voll ausreichend.
Einen Buttonklick kann man auch ohne JavaScript erkennen. Es gibt in HTML Formulare, die beim Abschicken eine Anfrage an die Webanwendung stellen können. Der Trigger für die Anfrage ist dabei in der Regel ein Button. Der Nachteil gegenüber einer JavaScript-Lösung ist, dass beim Formularversand auch immer ein Neuladen der Webseite im Browser einhergeht.
Ja, mit Javascript kann man solche Projekte gut machen und dann mit HTML und CSS auch noch gut aussehen lassen.
ABER mach nicht den Fehler und wechsel die Programmiersprachen wild durch. Konzentriere dich auf EINE Programmiersprache. Entweder du entscheidest dich für Javascript (und dazu HTML und CSS, das sind keine Programmiersprachen und viel leichter und schneller zu lernen, zumindest HTML) oder du lernst Python und bleibst dann auch erstmal dabei, bis du die Programmiersprache gut beherrscht.
C würde ich für den Anfang nicht empfehlen, da sehr kompliziert und überfordernd am Anfang. Wenn dein Ziel ist wirklich mal C zu lernen, kannst du auch erstmal C# lernen, wo du aber auch die Probleme haben wirst, die du jetzt mit Python hast.
Zusammenfassend: Was du lernst ist eigentlich egal, konzentriere dich nur auf jeden Fall auf eine Sprache. Ich mache wie gesagt Javascript und muss sagen die Sprache ist sehr gut zu lernen und man kann viel damit machen!
Wenn dein Ziel ist wirklich mal C zu lernen, kannst du auch erstmal C# lernen, (...)
Das ist meines Erachtens ein ziemlicher, unnötiger Umweg. C# ist um einiges umfangreicher als C. Zudem ist C gar nicht so kompliziert, als dass man als Anfänger keinen guten Einstieg finden könnte.
Ja das ist eben der Grund wieso ich frage: Ich möchte eben nicht durchwechseln, sondern eine Sprache gut lernen und nebenbei immer wieder etwas c weil ich zum Schluss mal embedded Hardware programmieren möchte.
Dann probiere ich wohl auch mal Javascript. Ich hab nur bisher keine Erfahrung damit und wollte jetzt erstmal nachfragen, ob man da auch eine gute Struktur von Programmen lernen kann.
Ich glaube an möchte ich nicht unbedingt eine graphische Oberfläche benutzen müssen. Ich habe nur das Gefühl, dass im Internet Beispiele für Python Programme entweder nur sehr kurze Skripte sind oder eine UI beinhalten wenn sie komplexer werden. Komplexere und größere Konsolenprogramme habe ich nicht so recht gefunden. Hast du da vielleicht noch eine Idee? Oder auch Beispiele?