Seite 1 von 2

Anfänger Frage - Einschätzung

Verfasst: Donnerstag 5. Februar 2015, 11:08
von hotze
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

Re: Anfänger Frage - Einschätzung

Verfasst: Donnerstag 5. Februar 2015, 11:16
von /me
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.

Re: Anfänger Frage - Einschätzung

Verfasst: Donnerstag 5. Februar 2015, 11:27
von Sr4l
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.

Re: Anfänger Frage - Einschätzung

Verfasst: Donnerstag 5. Februar 2015, 11:54
von MagBen
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.

Re: Anfänger Frage - Einschätzung

Verfasst: Donnerstag 5. Februar 2015, 13:19
von Hyperion
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.

Re: Anfänger Frage - Einschätzung

Verfasst: Donnerstag 5. Februar 2015, 14:20
von 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.

Re: Anfänger Frage - Einschätzung

Verfasst: Donnerstag 5. Februar 2015, 14:56
von Hyperion
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?

Re: Anfänger Frage - Einschätzung

Verfasst: Donnerstag 5. Februar 2015, 15:05
von 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.

Re: Anfänger Frage - Einschätzung

Verfasst: Freitag 6. Februar 2015, 10:03
von hotze
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 !

Re: Anfänger Frage - Einschätzung

Verfasst: Freitag 6. Februar 2015, 10:42
von Hyperion
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.

Re: Anfänger Frage - Einschätzung

Verfasst: Freitag 6. Februar 2015, 11:12
von MagBen
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

Re: Anfänger Frage - Einschätzung

Verfasst: Freitag 6. Februar 2015, 12:43
von Leonidas
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.

Re: Anfänger Frage - Einschätzung

Verfasst: Freitag 6. Februar 2015, 13:07
von 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.

Re: Anfänger Frage - Einschätzung

Verfasst: Freitag 6. Februar 2015, 13:09
von Hyperion
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:

Re: Anfänger Frage - Einschätzung

Verfasst: Freitag 6. Februar 2015, 20:00
von hotze
@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....

Re: Anfänger Frage - Einschätzung

Verfasst: Freitag 6. Februar 2015, 21:33
von hwm
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.

Re: Anfänger Frage - Einschätzung

Verfasst: Samstag 7. Februar 2015, 21:47
von hotze
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

Re: Anfänger Frage - Einschätzung

Verfasst: Sonntag 8. Februar 2015, 11:26
von EyDu
Qt ist schon in Ordnung, du solltest halt nur nicht mit GUIs anfangen.

Re: Anfänger Frage - Einschätzung

Verfasst: Sonntag 8. Februar 2015, 12:21
von snafu
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.

Re: Anfänger Frage - Einschätzung

Verfasst: Sonntag 8. Februar 2015, 12:33
von 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.