Neuling in Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
doclektor
User
Beiträge: 10
Registriert: Mittwoch 28. Oktober 2015, 04:37

Hallo ihr lieben.

Ich habe gerade angefangen mich in das Thema Python einzuarbeiten. Die einzigsten Programmierkenntnisse die ich habe, ist die Programmierung von Werkzeugmaschinen ( CNC-Drehmaschinen, CNC Fräsmaschinen und Bearbeitungszentren).
Ich habe jetzt von einigen Seiten gehört das man Python leichter lernen kann als andere Sprachen. Deshalb habe ich mir Video Material und ein Buch besorgt.

Ich würde gerne eure Meinung zu meiner Frage Wissen.

Ich würde gerne für unseren Sportverein ( Knaben und Schülermanschaften) ein Program für ein Turnier schreiben.

Folgendes soll passieren.

In jeder Gruppe sind 4 Manschaften.

M1 spielt gegen M2
M3 spielt gegen M4

M4 spielt gegen M1
M2 spielt gegen M3

M3 spielt gegen M1
M4 spielt gegen M2

und das ganze auch noch mal in Rückspielen.

Es müssten die Spieltage anzeigt werden
Es müssten also die Ergebnisse eingegeben werden.
Es müsste eine Tabelle ausgegeben werden.

So weit so gut.
Ich habe mir ein paar einfache Gedanken gemacht wie man es eventuell realisieren könnte.
Leider fehlt mir noch das Wissen, dieses Umzusetzten.

Also ich habe im Augenblick noch nicht so viel Ahnung. :K

Wie seht ihr das, habe ich eine Chance dieses Project zu realisieren oder ist es zu Komplex für mich.

Bitte gebt mir eine ehrlich Antwort.

Ich würde es gerne lernen.

Danke für eure Antworten
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Hallo doclektor, willkommen bei Python und im Forum!

Dein Vorhaben klingt für mich definitiv realisierbar. Wie lange es dauern würde, hängt aber von vielem ab.

Die eigentliche Programmlogik sieht harmlos aus. Gut, du müsstest ggf. einige Python Grundlagen auffrischen.

Spannend wird es bei der Ein-/Ausgabe. Wird alles über dich abgewickelt, oder soll es bspw. online verfügbar werden?

Gibt es bestimmte Vorgaben, die die ausgegebene Tabelle definitiv erfüllen müsste, oder bist du da ganz frei in der Gestaltung?

Was hast du denn bisher so programmiert, gab es da auch schon Variablen, Fallunterscheidungen, Schleifen, Funktionen, usw?
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Bei so einer Aufgabe würde ich mit einem Prototypen mit LibreOffice Calc oder Excel anfangen.
(Das ist nun kein guter Hinweis um Python zu lernen, sondern ein Hinweis ganz allgemein zu Software-Entwicklung.)
a fool with a tool is still a fool, www.magben.de, YouTube
karolus
User
Beiträge: 141
Registriert: Samstag 22. August 2009, 22:34

MagBen hat geschrieben:Bei so einer Aufgabe würde ich mit einem Prototypen mit LibreOffice Calc oder Excel anfangen.
(Das ist nun kein guter Hinweis um Python zu lernen, sondern ein Hinweis ganz allgemein zu Software-Entwicklung.)
Damit er dort direkt in die Arme von VBA-und Star-basic-jüngern läuft ??
Die Empfehlung grenzt schon an an "fahrlässige Körperverletzung"

Karolus
doclektor
User
Beiträge: 10
Registriert: Mittwoch 28. Oktober 2015, 04:37

Hallo ihr alle.

Nein ich habe keine Schleifen und anderes Programmiert. Ich habe Maschinencode Programmiert
<geht alles mit einfachen Befehlen

z.b. G01 (Lineare Bewegung) Z-50 X50 F20 M04. G02 (Kreis im Uhrzeigersinn) usw.


Also keine Erfahrung in einer Programmiersprache.
Habe mal früher für den C64 C128 Programme aus einem Heft abgetippt Poke, 40258 etc. :D

Habe jetzt bei einigen Übungen auch schon einige Übungen in die GUI gebracht aber das wars erst mal.

In meinem Gedanken glaube ich zu Wissen wie es aussehen sollte.
Mir fehlt nur der Anstoss.

Wie realisiere ich die Eingabe der Spieltage.
Wenn ich die Ergebnisse eingebe , wie bringe ich Python dazu die Tabelle zu Berechnen.

Wie bringe ich die Tabelle zustande etc.

Ich brauchte für die Grafische Oberfläche ja bestimmt label und entrys und mehr

Mir fehlt einfach der Anstoos wie ich anfangen kann und wie ich die Ergebnisse der Tabelle zuweise.

Habe ja gesagt bin Anfänger und würde es sehr gerne Lernen. Aber manchmal fehlt der Schlag mit dem Hammer oder besser
der Einstieg. :K

Wäre nett wenn mir jemand Tips geben könnte wie ich vorgegen muss.

Alles in einer Datei oder mehrere welche Berechnungen etc.

Danke für eure Hilfe
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

doclektor hat geschrieben:Mir fehlt einfach der Anstoos wie ich anfangen kann und wie ich die Ergebnisse der Tabelle zuweise.
Fang mit den Grundlagen an. Wenn du dir direkt noch eine GUI ans Bein bindest, dann führt das zu Chaos.

Programme sollte man ohnehin so schreiben, dass die Geschäftslogik von der Darstellung getrennt wird. Du kannst also erst einmal damit beginnen, die gewünschten Funktionen zu realisieren. Wenn die tun was sie sollen, dann kannst du eine wie auch immer geartete grafische Oberfläche anflanschen.
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

Hallo,

bin auch Anfänger und mein erstes "Hallo Welt"-Programm ist noch keine drei Wochen alt. Und obwohl ich durchaus Programmiererfahrung habe, vom reinen Maschinencode über Assembler, diverse Basic-Dialekte (GW, Quick, VBA etc.), Clipper, Pascal, C, C++ und Java, stellen sich auch mir, wie unter jeder anderen Programmiersprache auch, diverse Fragen, so wie sie sich in ähnlicher Form auch doclektor stellen.

Wenn ich mir die Antworten hier ansehe, dann frage ich mich allerdings schon, wieso mancher davon ausgeht, dass der Fragesteller einen ähnlichen Erfahrungsschatz mit Python hat, wie der Antwortgeber. Leute, das wäre schön, das ist aber nicht so.

Zum Beispiel "eine grafische Oberfläche anflanschen" - klar, ist nicht vorrangig, da muss man eben noch einmal nachfragen, wie so etwas geht. Die Geschäftslogik soll von der Darstellung getrennt werden, hm - was ist damit wohl im konkreten Fall gemeint.

Die meiner Ansicht nach für einen absoluten Anfänger durchaus verständliche Empfehlung, es einmal mit OpenOffice Calc oder Excel zu probieren, wird in die Nähe zu einer versuchten Körperverletzung gebracht. Muss so etwas sein?

Ich bin zum Beispiel über OpenOffice Calc auf Python gestoßen. Man braucht Python nicht einmal installieren, Installiert man OpenOffice, ist auch Python installiert. Ich sehe übrigens durchaus eine Möglichkeit, mit OpenOffice und Python gleichzeitig zu arbeiten.

MfG, kodela
Zuletzt geändert von kodela am Freitag 30. Oktober 2015, 13:22, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

kodela hat geschrieben: Die Geschäftslogik soll von der Darstellung getrennt werden, hm - was ist damit wohl im konkreten Fall gemeint.
Ganz einfach: Keine GUI zu Beginn verwenden (und keine ``print``-Ausgaben innerhalb der reinen Geschäftslogik), sondern erst dann, wenn man weiß, was damit gemeint ist :twisted: Denn dann bekommt man das "automatisch" so hin, wie es sein sollte ;-)

Aber um konkret zu werden: Diesen Thread durchlesen, *insbesondere* die Antworten der Regulars, die sich *für* die Trennung aussprechen.

Ich muss dazu wirklich mal ein kleines Tutorial schreiben...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

kodela hat geschrieben:Die Geschäftslogik soll von der Darstellung getrennt werden, hm - was ist damit wohl im konkreten Fall gemeint.
Das gleiche wie im allgemeinen Fall (siehe auch MVC).
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

Hallo Hyperion,
hallo /me,

ja, ich habe geschrieben:
Die Geschäftslogik soll von der Darstellung getrennt werden, hm - was ist damit wohl im konkreten Fall gemeint.
Das war allerdings keine Frage, bestenfalls eine hintergründige. Trotzdem danke für Eure Antworten, die verständlicherweise nicht darauf eingehen, was damit wohl im "konkreten Fall" gemeint ist.

Der konkrete Fall wurde von doclektor beschrieben. Wie man darauf dann mit "Geschäftslogik" und "Model View Controller" einem Anfänger helfen will, bleibt mir schlichtweg unverständlich. Es geht mir einfach nur darum, einmal darauf aufmerksam zu machen, wie manche hier in ihrem Bestreben, anderen zu helfen, argumentieren. Die Fragen, um die es hier geht, wurden von keinem Informatikstudenten gestellt, sondern von einem Programmier-Anfänger und Python-Neuling, der eine simple Aufgabe eventuell mit Hilfe von Python bewältigen will. Sollten da nicht auch die Antworten entsprechend einfach und keinesfalls zu hoch gestochen sein?

Versteht mich bitte nicht falsch, ich will nicht herumkritisieren. Ich will nur einmal reflektieren, wie ein absoluter Anfänger empfindet, wenn er mit Antworten konfrontiert wird, die eigentlich nur bewirken, dass er sich "saudumm" vorkommen muss, weil er nur "Bahnhof" versteht.

Nichts für Ungut und mit freundlichem Gruß,
kodela
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

kodela hat geschrieben: Der konkrete Fall wurde von doclektor beschrieben
Nein, eben nicht! Er hat lediglich den Anwendungsfall beschrieben, und das auch nur grog (reicht ja aktuell auch). Aber wie soll ich ihm da *konkret* zeigen, wie ich GUI (und allgemein Ausgaben) von Logik trenne?

Im übrigen glaube ich nicht, dass man das einem Anfänger immer komplett auf sein Problem zugeschnittene Ansätze und Lösungen geben muss. Ganz im Gegenteil gehört der Aspekt des Abstrahierens und des Transfers von Erkenntnissen auf eigene Probleme ist ja inhärent zu Programmieren dazu. Ich denke auch kaum ein (Anfänger-)Tutorial wird *exakt* das behandeln, was *ich* umsetzen will. Wenn ich jedoch z.B. das Konzept einer Schleife verstanden habe, kann ich das für mich und mein Problem anwenden. Und das BMI-Beispiel aus dem verlinkten Thread ist doch extrem simpel und gut zu verstehen! Das zu transfrieren sollte imho auch für einen Anfänger möglich sein - gewiss nicht in Perfektion und ggf. auch erst durch Code Reviews, aber auch das fällt leichter für beide Seiten, wenn das Wissen um die Zielsetzung da ist!

Und last but not least: Der *extrem konrekte* Tipp von mir, erst einmal komplett auf GUI zu verzichten ist schlicht und ergreifend ohne Zutun umzusetzen und das beste, was man einem Anfänger raten kann!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

Hyperion hat geschrieben:Und last but not least: Der *extrem konrekte* Tipp von mir, erst einmal komplett auf GUI zu verzichten ist schlicht und ergreifend ohne Zutun umzusetzen und das beste, was man einem Anfänger raten kann!
Ja, das unterschreibe ich zu 100%!

Auch Deine Aussage, dass man einem Anfänger nicht immer komplett auf sein Problem zugeschnittene Ansätze und Lösungen geben muss, ist richtig. Ich will ja auch nicht den Schlaumeier spielen und herumkritisieren. Ich habe lediglich versucht, die Empfindungen eines Python-Neulings jenen zu vermitteln, die vielleicht vergessen haben, wie es ihnen einmal ging, als sie Neulinge waren.

Entschuldige bitte, wenn ich Dich dabei verletzt habe.

MfG, kodela
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@kodela:
Darüber zu reflektieren, wie man selbst angefangen hat, halte ich persönlich für müßig - z.B. habe ich mit Pascal/Assembler begonnen und erwische mich hin und wieder dabei, das Verständnis von Maschinen beim Fragesteller zu hinterfragen, was aber bei heutigen "Hochsprachen" kaum bis keine Rolle mehr spielt. Und gerade darin liegt die Chance - vergiss die Maschine (naja sofern problemirrelevant) und erarbeite Dir die modernen Paradigmen. Klar dass diese nicht vom Himmel gefallen sind - an dieser Stelle sollte man auf die Aussagen von Regulars vertrauen können.
Und btw, auch MVC ist nicht der Weisheit letzter Schluss - um das zu erkennen, braucht man aber MVC. ;)
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

jerch hat geschrieben:Und btw, auch MVC ist nicht der Weisheit letzter Schluss - um das zu erkennen, braucht man aber MVC. ;)
Ja, aber bitte nicht auf dem Rücken von Anfängern.

MfG, kodela
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

kodela hat geschrieben:Ja, aber bitte nicht auf dem Rücken von Anfängern.
Was meinst Du damit?
doclektor
User
Beiträge: 10
Registriert: Mittwoch 28. Oktober 2015, 04:37

Hallo hallo,
ich wollte hier keinen Streit vom Zaun brechen :shock:

Ich wollte eigentlich nur eine Möglichkeit finden, dass was wir sonst Handschriftlich mache zu vereinfachen.
Da bin ich zufällig auf Python gestoßen.
Da ich vom Programmieren ( ausser CNC- Programmierung) keine Ahnung habe, schien mir Python laut der Aussagen
im Internet, die einfachste Lösung (wenn man da von einfach Sprechen kann)

Deshalb möchte ich nun mal gerne eine konkrete Frage stellen.

Ich weise den Vereinen Variablen für Punkte und Tore zu. Am Anfang 0
Durch Eingabe des Ergebnisses des Spiels bekommt ein Verein 3 Punkte oder beide Vereine 1 Punkt dazu.
Der Eintrag der Ergenisse würde ja über EntryFelder in der GUI erfogen. Also Tore Verein 1 - Tore Verein 2 (tv1 - tv2)
Variablen für Verein m1 - m2 und punktem1 , punktem2
Also müsste die Abfrage nicht ungefähr so lauten, nicht Lachen bin Anfänger.

ist tv1 = tv2
dann punktem1 ; punktem2 +1
ist tv1 > tv2 dann punktem1 +3
ist tv1 < tv2 dann punktem2 +3

so auch bei den Toren.

Natürlich ist das noch kein Befehl, aber so sind meine Gedanken.

Wenn das ungefähr richtig ist , wie sieht das dann in Python aus. :K
Kann mir jemand ein Beispiel geben ?

Danke

Und bitte keinen Streit unter euch.

Ich möchte nich als Profi Programmieren sondern als Hobby und aus Spaß
Benutzeravatar
NoPy
User
Beiträge: 158
Registriert: Samstag 28. Dezember 2013, 12:39

Ich versuche mich mal als Ketzer, mal sehen, wer mich zuerst steinigt.

Ja, pythons Möglichkeiten sind quasi unerschöpflich, aber wie hier im Forum schon oft gesagt: Wenn Du Dir erst einmal eine GUI ans Bein binden musst ...

Ich bin für den Ansatz, zu jedem Problem das passende Werkzeug zu benutzen. Ich nehme ja auch nicht die Zahnbürste für das Klo, nur weil es geht, ich es kann und man mit der Zahnbürste viel mehr machen und genauer arbeiten kann.

Dein Problem könnte man m.E. auf 2 Weisen lösen, die durchaus auch für Anfänger in Programmiersprachen geeignet sind.
- irgend ein Office und notfalls was mit VBA oder ähnlichem draufsetzen
- C#/Delphi/Lazarus

Meine persönliche Empfehlung wäre Lazarus.
Vorteile:
- kostet nix
- Du kannst intuitiv Deine Oberfläche zusammenstöpseln, wie sie Dir gefällt
- Wenn Du damit fertig bist, dann kannst Du an Deine Knöpfe/Schalter etc. die Funktionalitäten hängen, die Du erwarten würdest
- Wenn alles klappt, dann kannst Du daraus ein ausführbares Programm basteln und verteilen. Wenn Du nichts falsch gemacht hast, läuft es sofort, ohne dass irgend jemand python und evtl. erforderliche Bibliotheken installiert hat
- Programmiersprache ist stark an Englisch orientiert, man kommt leicht rein
- IDE hat reichhaltige Möglichkeiten, Dir Arbeit abzunehmen
- Du musst Klassen(-hierarchien) explizit bauen, es gibt kein Duck- Typing
- der Hä?- Effekt ist deutlich geringer, als bei python

Nachteile:
- Entwicklung ist nicht so "rapid", wie beispielsweise mit Delphi
- Du bist weniger frei im Umherwerfen von Dingen (return a kann in python alles mögliche zurückwerfen, in Lazarus musst Du festlegen, dass es beispielsweise das Spielergebnis ist)
- Du musst Klassen(-hierarchien) explizit bauen, es gibt kein Duck- Typing

Ganz ehrlich, bei Deinem Projekt wirst Du die meisten Möglichkeiten von Python NICHT benötigen, sie werden/würden Dich eher verwirren.
Um den Umgang mit Variablen/Schleifen/Bedingungen etc. zu lernen, reicht es aus. Funktionale Programmierung, flexible Wörterbücher, Strukturen, die mal eben die ganze Welt auf einmal fassen könne, iteratoren, generatoren - all das ist bei Deinem Projekt definitiv nicht erforderlich, würde wahrscheinlich stören.

python ist m.E. interessant, wenn Du plugins schreiben musst für bestehende Software mit python- Schnittstelle, wenn Du Scripte schreiben musst, die intelligenter sind, als die shell normalerweise, wenn Du Zeichenkettenverarbeitung betreiben willst, die über "ersetze ein a durch ein u" hinausgehen, wenn Oberflächen nur eine geringe Rolle spielen oder diese Oberfläche hochgradig dynamisch sein muss. Python kommt zum Tragen, wenn Du Schnittstellen bedienen musst, die komplex sind, neu sind, sich permanent ändern, für die es bereits gute python- wrapper gibt.

So, zur Steinigung? Bitte hier entlang. :D
BlackJack

@NoPy: (Moment ich sammle noch Steine, geht gleich los… ;-))

Ich denke man kann Deinen ganzen Beitrag am letzten Punkt der „Vorteile“ zerlegen: Diesen Hä-Effekt hast Du nur weil Du vorher etwas ganz anderes kennengelernt hast. Den hat man sehr wahrscheinlich nicht, wenn man komplett neu mit dem Programmieren anfängt. Das habe ich im Studium schön an mir selbst, mit Vorbelastung in imperativen Sprachen, und Kommolitonen ohne jegliche Programmiererfahrung sehen können, als im ersten Semester mit Haskell begonnen wurde. Das war für mich ziemlich ”Hä‽” und ich musste da total umdenken, während sich unbelastete Leute da sehr schnell zurecht gefunden haben („Ist ja genau wie Mathe.“). Umgekehrt hatten die Einsteiger aus dem ersten Semester dann im zweiten Semester diesen ”Hä‽”-Effekt als sie von Haskell zu Java weitergegangen sind.

Auch die Möglichkeiten von Delphi (C#/…) wird man bei dem Projekt des OP nicht komplett ausschöpfen, das ist IMHO deshalb kein Grund eine Sprache zu wählen. Die Frage ist ja nicht ob der komplette Sprachumfang für ein Projekt ausgeschöpft wird (Dann dürfte man C++ wahrscheinlich für fast gar nichts verwenden), sondern ob die Ausdrucksstärke der Sprache für das Vorhaben ausreicht, beziehungsweise gut passt. Und da sehe ich jetzt nichts was gegen Python spricht.

Bei dem Projekt braucht man auf jeden Fall irgendwelche Datenstrukturen und wohl auch eine ”dynamische” GUI, es sei denn man will wirklich die Variablen durchnummerieren und die Teams oder zumindest die Anzahl der Teams, Begegnungen, und so weiter, hart in der GUI festschreiben. Und spätestens dann sehe ich bei Delphi keinen wirklichen Vorteil mehr. Aber den Nachteil das diese GUI-Klickerei wo man den Code direkt zu den GUI-Elementen schreiben kann, Erfahrungsgemäss sehr leicht dazu verführt die GUI und die Logik nicht sauber zu trennen. Was Weiterentwicklungen, zum Beispiel in Richtung Web dann sehr schwierig macht. Oder auch automatisiertes Testen.

@doclektor: Ich würde ja empfehlen einfach mal die Grundlagen von Python zu lernen. Syntax, Grunddatentypen, Kontrollstrukturen. Dann hast Du eine bessere Vorstellung davon was möglich ist und wie Deine Ideen in Python umzusetzen sind. Ich glaube nicht, dass es Dir jetzt so wirklich weiterhilft wenn man so etwas hier antwortet:

Code: Alles auswählen

def update_points(club_a, club_b, goals_a, goals_b):
    if goals_a == goals_b:
        club_a.points += 1
        club_b.points += 1
    else:
        (club_a if goals_a > goals_b else club_b).points += 3
Benutzeravatar
NoPy
User
Beiträge: 158
Registriert: Samstag 28. Dezember 2013, 12:39

BlackJack hat geschrieben:@NoPy: (Moment ich sammle noch Steine, geht gleich los… ;-))
Ich denke man kann Deinen ganzen Beitrag am letzten Punkt der „Vorteile“ zerlegen: Diesen Hä-Effekt hast Du nur weil Du vorher etwas ganz anderes kennengelernt hast. Den hat man sehr wahrscheinlich nicht, wenn man komplett neu mit dem Programmieren anfängt. Das habe ich im Studium schön an mir selbst, mit Vorbelastung in imperativen Sprachen, und Kommolitonen ohne jegliche Programmiererfahrung sehen können, als im ersten Semester mit Haskell begonnen wurde. Das war für mich ziemlich ”Hä‽” und ich musste da total umdenken, während sich unbelastete Leute da sehr schnell zurecht gefunden haben („Ist ja genau wie Mathe.“). Umgekehrt hatten die Einsteiger aus dem ersten Semester dann im zweiten Semester diesen ”Hä‽”-Effekt als sie von Haskell zu Java weitergegangen sind.
Kann ich so nicht bestätigen. Imperative Sprachen entsprechen letztlich mehr dem gewöhnlichen Leben.
Ich sage zu meiner Frau: "Mach mir Kaffee!" und nicht "Glücklich wäre ich, wenn ich eine Tasse Kaffee bekommen könnte!".
Daher ist m.E. der Einstieg in imperative Sprachen im Grunde einfacher.
BlackJack hat geschrieben:Auch die Möglichkeiten von Delphi (C#/…) wird man bei dem Projekt des OP nicht komplett ausschöpfen, das ist IMHO deshalb kein Grund eine Sprache zu wählen. Die Frage ist ja nicht ob der komplette Sprachumfang für ein Projekt ausgeschöpft wird (Dann dürfte man C++ wahrscheinlich für fast gar nichts verwenden), sondern ob die Ausdrucksstärke der Sprache für das Vorhaben ausreicht, beziehungsweise gut passt. Und da sehe ich jetzt nichts was gegen Python spricht.
Gegen Python spricht für mich eindeutig, dass das bauen einer Oberfläche mit python allein definitiv nicht intuitiv ist.
BlackJack hat geschrieben:Bei dem Projekt braucht man auf jeden Fall irgendwelche Datenstrukturen und wohl auch eine ”dynamische” GUI, es sei denn man will wirklich die Variablen durchnummerieren und die Teams oder zumindest die Anzahl der Teams, Begegnungen, und so weiter, hart in der GUI festschreiben.

Jetzt wird es aber polemisch, oder? Die Anzahl der Mannschaften wird nicht mit der Zahl der Knöpfe korrespondieren. Die Zahlen werden in Tabellen dargestellt, die Zahl der Tabellenzeilen und -spalten ist schon dynamisch. Und man kann auch mühelos darauf reagieren, welche Zeile angeclickt wurde. Und es ist hochgradig simpel, dafür zu sorgen, dass die Oberfläche immer noch sinnvoll ist, wenn man das Fenster vergrößert oder verkleinert, solange es sich in praktikablen Grenzen bewegt. (Die meisten machen die Fenster doch letztlich relativ zum Bildschirm groß. Nur wenige Menschen würden ein Fenster, dass für 800x600 konzipiert ist, auf 1800x100 ziehen wollen. Aber selbst das könnte man mit wenig Aufwand lösen.
BlackJack hat geschrieben:Und spätestens dann sehe ich bei Delphi keinen wirklichen Vorteil mehr. Aber den Nachteil das diese GUI-Klickerei wo man den Code direkt zu den GUI-Elementen schreiben kann, Erfahrungsgemäss sehr leicht dazu verführt die GUI und die Logik nicht sauber zu trennen. Was Weiterentwicklungen, zum Beispiel in Richtung Web dann sehr schwierig macht. Oder auch automatisiertes Testen.
Doch, das mit dem schnellen Erstellen der Oberfläche mit Bordmitteln bleibt!
Mir ist bewusst - nicht zuletzt dadurch, dass ich auch in einschlägigen Foren dort unterwegs war - dass eine Trennung zwischen Benutzeroberfläche/Geschäftslogik/Datenmodell mehr Disziplin erfordert, als viele Nutzer von Dephi/Lazarus etc. aufzubringen bereit sind. Aber ganz ehrlich - das ist in python auch eher freiwillig, das klassifiziert python nicht als geeigneter.
Den Sinn einer solchen Trennung wird man sowieso erst einsehen, wenn man das erste mal gezwungen ist, Komponenten auszutauschen.
BlackJack hat geschrieben:@doclektor: Ich würde ja empfehlen einfach mal die Grundlagen von Python zu lernen. Syntax, Grunddatentypen, Kontrollstrukturen. Dann hast Du eine bessere Vorstellung davon was möglich ist und wie Deine Ideen in Python umzusetzen sind. Ich glaube nicht, dass es Dir jetzt so wirklich weiterhilft wenn man so etwas hier antwortet:

Code: Alles auswählen

def update_points(club_a, club_b, goals_a, goals_b):
    if goals_a == goals_b:
        club_a.points += 1
        club_b.points += 1
    else:
        (club_a if goals_a > goals_b else club_b).points += 3
Ich behaupte, dass ich ein Programm, wie das angegebene mit Lazarus in weniger als einem Tag mühelos zusammenstöpseln kann (from the scratch) und dass ich jemanden, der nicht völlig störrisch ist, nach insgesamt 20 Stunden Einarbeitung dazu befähigen kann, ein solches Programm zu schreiben. Einschließlich einer flexiblen Oberfläche und Datenhaltung in Form einer simplen Datei.

Was glaubst Du, wie lange Du benötigst? Was musst Du alles installieren? Was muss der Patient alles lernen? Wie lange dauert das?
Ich denke, da gewinne ich ;)
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

NoPy hat geschrieben:Imperative Sprachen entsprechen letztlich mehr dem gewöhnlichen Leben.
Ich sage zu meiner Frau: "Mach mir Kaffee!"
Anschließend wird dann vermutlich auch Deine Frau eine imperative Sprache bevorzugen ... :wink:
Antworten