Anfänger Frage - Einschätzung

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.
hotze
User
Beiträge: 4
Registriert: Donnerstag 5. Februar 2015, 10:20

Hallo !
ich habe mal eine frage bzgl. Python, hoffe ich bin hier richtig, sonst bitte verschieben/löschen ;)

Derzeit bin ich Programmier-Anfänger, habe schon ein wenig erfahrung in richtung html/php, und auch in einge andere schon reingeschaut.
C++ war eigentlich mein Favorit, bin aber durch vers. Bücher und Seiten auf Python aufmerksam geworden, was für mich derzeit noch "interessanter" klingt da es anscheinend etwas einfacher sein soll bzw. schneller zu ergebnissen führen kann.

Mein Wunsch-Test-Projekt wäre eine kleine GUI in der ich z.B. Kundendaten (Name, Adresse, Vertrag ect.) eingeben, speichern und aufrufen kann. Vielleicht auch mit Datenbank, um verschiedene Felder ein/auszugeben, ggf. Dokumente hinterlegen, Notizen machen.
Das ganze nur als Testobjekt - ich brauche etwas als "Ziel" an dem ich arbeiten kann. Das ist zwar meist nicht die eleganteste Methode, liegt mir aber am ehesten.

Nun meine Frage : für wie realistisch haltet Ihr es so etwas als Anfänger zu realisieren ? Für die GUI hatte ich Qt im sinn.
Ich kann mir nur keine vorstellung machen ob so etwas überhaupt realistisch ist oder ob's dafür 5 gute Programmierer und 2 Jahre Zeit braucht ;)
Oder wären das alles schon Funktionen für sehr fortgeschrittene ?

Wär schön wenn Ihr mir da eine kleine Einschätzung geben könntet. Wie gesagt obiges ist nur ein Testprojekt und soll keine Einsatzfähige SW werden. Reichlich gute Python Anleitungen scheint es ja zu geben, was das ganze für mich auch irgendwie interessant macht. Bei C++ hatte ich den eindruck es gibt "zu viele" Anleitungen. Und ich bin ehrlich...ich möchte nicht nach 6 Monaten noch bei Hello Word sein ;)


Vielen Dank,
gruß Hotze
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

hotze hat geschrieben:Nun meine Frage : für wie realistisch haltet Ihr es so etwas als Anfänger zu realisieren ? Für die GUI hatte ich Qt im sinn.
Fang ohne GUI an, damit handelst du dir nur unnötige Komplexität ein. Im Endeffekt trennt man ja ohnehin Businesslogik und Darstellung, so dass du den "Arbeitsteil" erst einmal so bauen kannst. Ob du dann anschließend QT oder ein anderes (Web-)Framework verwendest sollte für die Umsetzung egal sein.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Egal in welcher Sprache, ich halte es für den schlechtesten Weg mit GUIs anzufangen.

1. Du könntest damit anfangen alles in einer Textkonsole zu schreiben, erst ohne DB, dann vielleicht mit CSV Backend. Wenn du etwas bei der Sache bleibst sollte man das in 1-2 Wochen hinbekommen nachdem man das Python Tutorial durchgearbeitet hat . (https://docs.python.org/3/tutorial/index.html, gibts auch auf Deutsch http://www.python-forum.de/viewtopic.php?f=21&t=19080 )

2. Wenn du bereits Erfahrung in SQL hast kannst du dein CSV Backend gegen ein SQLite Backend tauschen. (https://docs.python.org/3/library/csv.html, https://docs.python.org/3/library/sqlite3.html)

3. Da du schon HTML kennst, kannst du HTML und einen Lokalen Python Webserver als GUI nutzen, dafür würde ich dir Bottle oder Flask empfehlen, auch da kannst du wieder dein Projekt umsetzen, ebenfalls mit CSV oder SQL Backend (http://bottlepy.org/ )

4. Wenn du ein paar OOP Tutorials durchgearbeitet hast kannst du vll mit GUIs wie QT anfangen

Viel Spaß und Erfolg.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

hotze hat geschrieben:Das ganze nur als Testobjekt - ich brauche etwas als "Ziel" an dem ich arbeiten kann. Das ist zwar meist nicht die eleganteste Methode, liegt mir aber am ehesten.

Nun meine Frage : für wie realistisch haltet Ihr es so etwas als Anfänger zu realisieren ? Für die GUI hatte ich Qt im sinn.
Ich kann mir nur keine vorstellung machen ob so etwas überhaupt realistisch ist oder ob's dafür 5 gute Programmierer und 2 Jahre Zeit braucht
Python und Qt sind eine gute Wahl. Wenn Du später mit C++ weitermachst, dann kannst Du beides immer noch gut gebrauchen.

Mit GUI-Programmierung anzufangen hat Vor- und Nachteile. Die Nachteile wurden schon beschrieben.
Nun zu den Vorteilen:
Du hast ein visuelles Ergebnis Deiner Arbeit.
GUI-Bibliotheken sind sehr objektorientiert. Wo hat man sonst so lange Vererbungshierarchien und soviel überladene Methoden?

Deine GUI wird nach ein paar Wochen wie die eines Anfängers aussehen und irgendwann wird es keinen Sinn mehr machen, sie noch weiter zu verschlimmbessern und Du müsstest wieder von vorne anfangen, solltest Du sie wirklich für was brauchen. Aber Du hast was gelernt.
a fool with a tool is still a fool, www.magben.de, YouTube
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

MagBen hat geschrieben: Nun zu den Vorteilen:
GUI-Bibliotheken sind sehr objektorientiert. Wo hat man sonst so lange Vererbungshierarchien und soviel überladene Methoden?
Und das ist jetzt wieso gut oder ein Vorteil? Vererbung ist ja kein Selbstzweck und auch nicht der alleinige Kern von OOP - imho ist sie sogar für sich betrachtet der kleinste "Sockel"...

OOP in Python fühlt sich in der Praxis im Vergleich zu statisch typisierten Sprachen mit Fokus auf eine Klassen basierte OOP ziemlich anders an. Insbesondere Vererbung wendet man eher selten an - wozu auch, wenn man Duck Typing nutzen kann? :-)

Ich würde dem OP auch ein iteratives Vorgehen empfehlen! Also erst Domäne, dann (simple) Persistenz, dann ggf. grafische Aufsätze.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Hyperion: Gerade bei GUI-Programmierung erbt man dann in Python aber oft von anderen Klassen. Sei es um Widgets aus anderen Widgets zusammen zu bauen und die nach aussen als Einheit zu präsentieren oder bei Qt zum Beispiel um eine der `Standard*`- oder `Abstract*`-Klassen mit Funktionaltät auszufüllen.

Der Vorteil bei der GUI-Programmierung liegt eben genau darin dass man da mal Vererbungshierachien hat die Sinn machen und nicht irgendwelche Spielzeugbeispiele die man oft auch ohne Vererbung hätte lösen können. Wenn man das ohne GUI-Rahmenwerk lernen möchte, hat man in der Regel sehr an den Haaren herbeigezogene Beispiele die man in Python oft durch „duck typing” ohne eine Basisklasse lösen kann. Man braucht die halt nur dann *wirklich* wenn da auch tatsächlich gemeinsam benutzter Code drin steckt, und nicht einfach nur um einen gemeinsamen statischen Obertyp zu haben.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

BlackJack hat geschrieben:@Hyperion: Gerade bei GUI-Programmierung erbt man dann in Python aber oft von anderen Klassen.
Das ist mir klar - aber das ist ja nur *ein* Themengebiet. Mir ist nicht klar, worin da ein "Vorteil" besteht? (Gegenüber was eigentlich?) Bzw. wieso das an sich gut ist, dass man sich als Anfänger genau damit befasst?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Hyperion: Natürlich ist das nur ein Themengebiet, hat da jemand etwas anderes behauptet? Der Vorteil eines GUI-Rahmenwerkes ist wie schon geschrieben das man da anschaulich und sinnvolle und grafisch auch „erlebbare” Vererbung hat. Gegenüber was? Na eben gegenüber den Spielzeugbeispielen mit Säugetieren, Konten, Autos, oder was da immer so in den Büchern und Tutorials steht.

Ob man damit direkt anfangen muss, bin ich auch eher skeptisch, aber wenn man im Tutorial bei OOP angekommen ist, dann ist ein kleiner Ausflug in ein Rahmenwerk das OOP (in Python) tatsächlich ”komplett” mit realen Beispielen abdeckt, schon ganz praktisch.
hotze
User
Beiträge: 4
Registriert: Donnerstag 5. Februar 2015, 10:20

Hallo - was für ein aktives Forum :)
Vielen Dank für die guten Antworten - das hat mir schon weiter geholfen.
GUI zu beginn - für mich der klare vorteil das ich schnell etwas sehe - nach euren Beiträgen und einigen Aneitungen die ich mir letzte Nacht etwas näher angeschaut habe denke ich aber auch eher das kommt am schluss. Ohne die "basics" ....nunja.

Bei dem ganzen gelese und suche nach Beiträgen, Anleitungen ect. ist mir aber wieder die Frage C++/Python aufgekommen.
Python gefällt mir aufgrund einiger Faktoren sehr, den Code den ich bisher gesehen habe kann ich "nachvollziehen" - aber ist es wirklich das richtige um Anwendungen für KDE zu schreiben (wäre so mein "Anwendungsgebiet") ?
Kennt jemand in Python geschriebene Programme für KDE ? Habe da bisher eigentlich nur einen alten BitTorrent Client gefunden.

So---zeit drängt gerade ein wenig, melde mich nachher nochmal.
Vielen Dank aber schon einmal die Beiträge haben mir schon sehr weiter geholfen !
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Bis dato (KDE SC 4.x) gab es immer Python Bindings der KDE Libs. Ich weiß nicht, wie das mit der Umstellung auf KDE Frameworks 5, Plasma 5 usw. aussieht. Plasmoide kann man afaik nur noch mittels QML schreiben - Data Provider natürlich aber noch in einer Sprache Deiner Wahl, sofern eben die Bindings nachgezogen worden sind.

Wenn Du noch gar nicht programmieren kannst, dann würde ich Dir aber von C++ so oder so abraten! Die Sprache ist eine der unschönsten, weil komplexesten, Sprachen überhaupt. Da der Sprachumfang selbst die meisten Profis überfordert, dürfte es einen Anfänger noch mehr verwirren. Hinzu kommt, dass C++ so ein "bescheidenes" Konzept für Strings mit sich bringt. Gerade für Anfänger sind Strings jedoch etwas sehr wichtiges; wenn man nicht aus den Naturwissenschaften kommt und Programmieren nur als Mittel zum Zweck ansieht. Zeigerarithmetik, Unterschiede beim Übergeben von Objekten uvm. macht das ganze insbesondere für Anfänger sehr sperrig.

Ich würde Dir von C++ als erste Sprache definitiv abraten. Imho braucht man sie auch gar nicht können, aber ok, wenn man an KDE Entwicklung Interesse hat, kommt man nicht drum herum - leider! :mrgreen:

(Irgend wie wäre mal eine JVM / CLR basierte Desktop Umgebung sexy... damit würde vieles so unglaublich einfacher!)

Mache doch einfach Deine ersten Schritte in Python - da hast Du neben einer der schönsten Sprachen auch ein tolles Forum am Start ;-) Wenn Du damit die elementaren Dinge verstanden hast (Kontrollstrukturen, wichtige Datentypen, evtl. OOP), kannst Du Dir immer noch andere Sprachen angucken.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

hotze hat geschrieben:Bei dem ganzen gelese und suche nach Beiträgen, Anleitungen ect. ist mir aber wieder die Frage C++/Python aufgekommen.
Mach beides, aber fang mit Python an. C++ und Python passen sehr gut zusammen. Die Nachteile von C++ wurden hier schon beschrieben, nun zu den Vorteilen:
Um als "richtiger" Software-Entwickler bei der Bewerbung annerkannt zu werden, solltest Du entweder Java oder C++ oder .NET können.
hotze hat geschrieben:Kennt jemand in Python geschriebene Programme für KDE ?
Nicht speziell für KDE, sondern ganz allgemein was alles mit Python so gemacht wird: https://www.python.org/about/success/

Und hier meine Lieblings-Python-Anwendung: http://code.google.com/p/spyderlib/wiki/Screenshots
a fool with a tool is still a fool, www.magben.de, YouTube
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hyperion hat geschrieben:(Irgend wie wäre mal eine JVM / CLR basierte Desktop Umgebung sexy... damit würde vieles so unglaublich einfacher!)
GNOME war ne zeitlang mit Mono und recht kompletten Bindings dafür ziemlich auf dem Weg. Gab auch mehrere in C# geschriebene Desktopapplikationen die dann aus politischen Gründen abgesägt wurden. Stattdessen haben wir… JavaScript.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@hotze: Was wären denn „Programme für KDE”? Ich weiss das KDE im Gegensatz zu reinem Qt nochmal ein paar Klassen mehr hat und Qt-Klassen erweitert/anpasst, dafür schränkt KDE als Abhängigkeit aber auch ganz schön ein wo man das Programm am Ende laufen lassen kann. Selbst unter Linux werden dass dann nur noch die Leute laufen lassen die auch bereit sind die KDE-Desktop-Umgebung zu installieren. Zumindest für das Projekt das Du am Anfang beschrieben hast, macht es IMHO keinen Sinn das an eine bestimmte Desktop-Umgebung zu ketten.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Leonidas hat geschrieben: GNOME war ne zeitlang mit Mono und recht kompletten Bindings dafür ziemlich auf dem Weg. Gab auch mehrere in C# geschriebene Desktopapplikationen die dann aus politischen Gründen abgesägt wurden. Stattdessen haben wir… JavaScript.
Tja... vielleicht tut sich da ja doch mal etwas, jetzt wo sich .NET öffnet und das JDK seit einigen Jahren frei ist... die Hoffnung stirbt nie :mrgreen:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
hotze
User
Beiträge: 4
Registriert: Donnerstag 5. Februar 2015, 10:20

@Hyperion : Mittel zum zweck nicht...mehr das interesse am Programmieren. Wenn dabei was vernünftiges Rauskommt - sehr gern. Das Thema reizt mich schon lange - jetzt will ich's endlich mal angehen.
hotze hat geschrieben:neben einer der schönsten Sprachen auch ein tolles Forum am Start
Mit dem Forum geb ich Dir absolut recht - großes lob und danke an euch alle, das macht mut und hilft weiter. Gibts ja auch häufiger mal anders.

@BlackJack : Ein Programm das unter KDE läuft. Da siehst Du auch wo ich Programmiertechnisch aktuell stehe ;) Aber stimmt schon...ich nutze seit langem KDE, daher natürlich der gedanke das es dort auch laufen soll. Aber sollte da mal ein brauchbares Programm bei rauskommen, wäre es natürlich schön / sinnvoll es auch KDE unabhängig weitergeben zu können.

Ich werd mich mal wieder an die Tutorials setzen....
hwm
User
Beiträge: 39
Registriert: Mittwoch 20. April 2005, 23:33

Heute ist es doch so, dass man reine QT Programme von KDE Programmen optisch nicht mehr unterscheiden kann. Es muss keinesweg, wie oben jemand behauptete, in C++ programmiert werden. Mit Python und PyQT geht das wunderbar.

Siehe
http://kde-apps.org

Dort gibt es Unmengen in Python geschriebene KDE/QT Programme. Wenn man die KDE Widgets im QT Creator links liegen lässt und sich noch an ein paar andere Regeln hält, ist das Programm vollkommen plattformunabhängig und läuft unter Linux (alle Desktops), Windows, Mac, vorausgesetzt natürlich, auf der Plattform gibt es PyQT.
hotze
User
Beiträge: 4
Registriert: Donnerstag 5. Februar 2015, 10:20

So - die Bücherei ist leer, mein Tisch voll - habe angefangen Python zu lernen.
Muss sagen : bis jetzt ne saubere sache. Langsam wird mir einiges klarer :)

Ich denke wir werden uns bald wiedersehen...und mit Qt werd ich sehen - mir gefiel halt der Designer aber es gibt ja anscheinend auch noch andere Lösungen.

:D


lg
Hotze
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Qt ist schon in Ordnung, du solltest halt nur nicht mit GUIs anfangen.
Das Leben ist wie ein Tennisball.
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

EyDu hat geschrieben:Qt ist schon in Ordnung, du solltest halt nur nicht mit GUIs anfangen.
Das gilt sicherlich für C++. Aber bei Python macht man Qt-Programmierung ohne GUI-Funktionalität doch wohl eher selten, oder? Da dürfte doch das meiste, was Qt vereinfacht, bereits durch Python-Module, die von Qt unabhängig sind, möglich sein.
BlackJack

@snafu: Es war nicht gemeint Qt ohne GUI anzufangen sondern Python ohne GUI anzufangen und da erst mit oder nach OOP-Grundlagen dran zu gehen.
Antworten