Allgemeine Anfängerfragen zu 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.
Antworten
DeSa
User
Beiträge: 2
Registriert: Dienstag 22. Mai 2018, 13:12

Guten Tag,

ich würde mir sehr gerne das programmieren bei bringen, lediglich als Hobby, für kleine Tools zum rechnen etc..
Nach viel googlen, wird einem immer wieder Python empfohlen und hoch gelobt.

Ich habe bisher noch gar keine Erfahrung mit dem Programmieren, daher habe ich ein paar kleine Fragen und hoffe dass ihr mir diese eventuell beantworten könnt:

1.
So wie ich das verstanden habe, gibt es verschiedene Arten von Sprachen, die einen müssen compiliert werden um z.B. auf Windows zu laufen und die anderen benötigen einen Interpreter auf dem System um die Dateien verarbeiten zu können.

Habe ich das richtig verstanden, dass Python beides kann?

Ich kann also eine .exe erstellen, die dann auf einem Windows Rechner läuft ohne einen Python-Interpreter?
Es wäre aber auch möglich einen Interpreter zu installieren und könnte dann ohne compilieren meine Programme nutzen?

2
Ich habe gelesen dass es Python auch für Visual Studio gibt, allerdings weiß ich nicht ob ich mir auch eine grafische Oberfläche in Visual Studio bauen kann, wie man das z.B. bei C# oder VB.Net machen kann, oder bezieht sich das lediglich auf die Verarbeitung von Code mit dieser intelligenten Code-Vervollständigung?

Ansonsten habe ich gesehen das es da wohl etwas gibt was sich Tkinder nennt, fände so eine Klick und Zieh-Variante wie in Visual Studio halt ganz toll.

3
Ich habe mal ganz gerne HTML/CSS geschrieben und habe gesehen dass man über ein Python-Framework namens Django (hoffe ich vertue mich jetzt nicht) auch Webinhalte programmieren kann.

Kann ich mir das vorstellen wie PHP, oder kann man damit auch Frontend Sachen machen?
Also im Prinzip Kontaktformulare versenden oder Dinge animieren auf der Website?

Die 2. Sprache, die mich sehr interessieren würde, wäre JavaScript, allerdings soll die wohl sehr unsauber sein, habe ich zumindest oft gelesen, wohingegen Python für seinen sauberen Stil immer wieder gelobt wurde.

4
Kennt jemand einen besonders empfehlenswerten, deutschsprachigen, YouTube Channel oder auch ein kostenpflichtiges Lernvideo das er empfehlen kann.
Ich habe da schon oft die Katze im Sack gekauft, als ich mich damals mit Bildbearbeitung beschäftigt habe.
Daher frage ich mal lieber nach, bevor ich wieder viel Geld raus werfe.

Liebe Grüße,

DeSa
Benutzeravatar
DeaD_EyE
User
Beiträge: 1012
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

1) Python ist eine interpretierte Sprache. Es gibt zwar einen Zwischenschritt zur Generierung von Bytecode, der Assembler sehr ähnlich ist, aber der Bytecode wird im Interpreter ausgeführt. Die ausführbaren Dateien lassen sich erstellen, es ist dann aber nichts anderes als ein eingebetteter Python Interpreter zusammen mit dem Programm. Das ist nicht das gleiche, was z.B. raus kommt, wenn man C-Code kompiliert. In der Regel setzt man eine Python Installation voraus. Wenn man seine Anwendung verteilen möchte, ja dann ist es meist besser diese in eine exe zu bundeln. Es kommt immer auf die Zielgruppe an.

2) Syntax highliting sollte mit dabei sein

3) Django ist eins der vielen Webframeworks. Es gibt gewisse Erweiterungen, die auch für die Javascript generieren. In der Realität sieht es so aus, dass du Python, HTML, CSS und JS nutzen wirst. Oft hat man das Problem, dass Serverseitiger code (php, Python, nodejs) in einer anderen Sprache vorliegt, als der Clientseitige code (JS, CSS, HTML).

4) Habe jetzt keine Links parat (jemand anderes aber). Am besten erst Doku lesen und Grundkonzepte der Sprache verstehen. Dann gewisse Sache raus picken, die dich interessieren und damit experimentieren. Eine gute Quelle für Videos, sind Vorträge auf den Pycon's. Auf Blogs findet man auch oft Informationen, die sehr in Detail gehen. Also an Material bezüglich Python, gibt es ohne Ende.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

1. das stimmt, wobei eine exe-Datei nichts anderes ist als den Interperter + Code in einer Datei verpackt.
2. Deine zweite Vermutung stimmt. Den grafische Oberflächen-Editor gibt es nur für C# oder VB.NET. Ähnliche Editoren gibt es auch für andere Frameworks, Qt ist eines davon, was aber extra installiert werden muß.
3. Es ist anders als bei PHP, weil man mit Django bzw. den anderen Python-Web-Frameworks auch das Routing erledigt, es gilt also nicht eine Seite = eine Datei. Frontendsachen macht man immer mit JavaScript, weil es das einzige ist, was die Browser verstehen (Wobei Kontaktformulare versenden oder Dinge animieren ohne Javascript gehen).
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Du brauchst kein Geld rauszuwerfen. Python ist open source und kostenfrei. Dann suchst Du Dir einen Editor, auch da gibt es kostenfreie Möglichkeiten. Kann auch Visual Studio Code sein - der ist sogar recht gut gelungen. Und dann legst Du einfach los.

Und ja, GIUs und Webanwendungen gehen mit Python auch, sogar sehr gut. Aber das sind komplexe Themen - unabhängig von der Programmiersprache.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

1) Python ist eine interpretierte Sprache. Grundsaetzlich muss also ein Python Interpreter vorhanden sein. Es gibt allerdings Moeglichkeiten, spezielle Installer-Bundles zu bauen, mit Tool wie cx_freeze oder PyInstaller, mit denen du ein Programm verteilen kannst, dass dann einfach installiert wird wie jedes andere auch, und das auch direkt laeuft. Allerdings hat das dann eine Reihe von Dateien wie zB die python.dll im Installer. Das ist aber eigentlich bei fast allen Programmen so.

2) IntelliSense bei Python ist aufgrund der dynamischen Natur der Sprache sehr beschraenkt moeglich. Aber auf der anderen Seite schreibt man so viel weniger Code, dass es auch nicht so wichtig ist. Ob VS das unterstuetzt weiss ich nicht, dieser Tage liest man aber auch viel ueber VS Code, den auf ATOM/Electron basierenden Code-Editor von MS. Fuer DEN geht eine Einbindung problemlos.

2b) Grafische Benutzeroberflaechen kann man mit tkinter und einigen anderen Tools machen. Wenn du einen GUI-Designer nutzen moechtest, ist Qt wohl die beste wahl, das hat einen. Fuer den Anfang reicht tkinter aber, und erst bei grossen, mit komplexen Layouts behafteten GUIs spielt ein solcher Designer seine Staerken aus.

3) Django ist insofern wie PHP, als das es auf einem Server ausgefuehrt wird. Alles, was IM Browser an Code laufen soll ist zwangsweise Javascript. Bestenfalls transpiliert, aber du solltest davon ausgehen, dafuer Javascript lernen zu muessen. Was dessen "Sauberkeit" angeht - das ist ein bisschen Ansichtssache, aber sooo schlimm ist es nicht. Und da es eh keine wirklich andere Wahl gibt...

4) Nein.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Zu den Punkten 1 bis 3 haben meine Vorredner alles gesagt:

zu 4)
The Morpheus Tutorials
Hat sehr viele Videos zu vielen Themen, über 100 Videos zu Python
https://www.youtube.com/user/TheMorpheus407/playlists

Diddy Development
Hat ca 70 Videos zu Python
https://www.youtube.com/channel/UCeSlQg ... /playlists

Frederik Weitz
nen Prof an irgendeiner Uni, hat eine Python GUI mit TKinter Reihe
https://www.youtube.com/user/RhetorikUn ... /playlists

OrangeOnBlack
hat nen Python Anfänger Crashcourse
https://www.youtube.com/user/OrangeOnBlack/playlists

Socratica
Super Python Tutorial auf Englisch
https://www.youtube.com/watch?v=bY6m6_I ... hPOSuh8Er-
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@__deets__: Python ist kein interpretierte Sprache, weil es nicht auf die Sprache ankommt, sondern wie das Programm, das den Code ausführt aufgebaut ist. Im Sinne von, es wird von einem Interpreter ausgeführt, kompilieren alle mir bekannten Implementierungen von Python just in time modulweise in eine intermediäre Sprache, die von einer virtuellen Maschine verarbeitet wird, also wie bei PHP (und wenn man den JIT-Compiler durch einen AOT-Compiler ersetzt, wie Java und C#).
DeSa
User
Beiträge: 2
Registriert: Dienstag 22. Mai 2018, 13:12

Hui, vielen lieben Dank für die ganzen ausführlichen Antworten, haben mir schon sehr geholfen!
Vielen Dank ThomasL für die ganzen tollen Links, da habe ich ja was zu tun :-) !
Benutzeravatar
DeaD_EyE
User
Beiträge: 1012
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Die intermediäre Sprache wäre dann der Python-Bytecode.
Die Sprache lässt es gar nicht zu, dass diese ohne Interpretation lauffähig ist, da Datentypen nicht erraten werden können.
Zur Laufzeit des Programms werden die Datentypen festgelegt.

Wer behauptet die Sprache an sich würde nicht festlegen, ob diese interpretiert ist oder nicht, soll einfach den Beweis liefern und das würde wie eine Bombe einschlagen.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Python hat eval und exec. Jede vollständige Implementation von Python muss also sicherstellen dass diese zur Laufzeit verfügbar sind und somit zur Laufzeit eine Implementation von Python bereitstellen.

Ein Compiler ist also gezwungen einen Interpreter in die Binary zu packen bzw. die Runtime (bei einer JVM ähnliche Implementation) müsste einen haben.

Das macht es praktisch nicht möglich Python mittels eines Compilers zu implementieren.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

@Sirius3: das ist ein haarspalterisches Argument. Die Tatsache, dass zur Laufzeit durch Bytecode optimiert, und das auch in Form von .pyc-Dateien zur wieder-ausfuehrung optimiert wird aendert nichts an den charakteristischen Eigenschaften einer Interpretersprache: das Ergebnis der Verarbeitung liegt nicht als maschinen-ausfuehrbarer Code vor, sondern benoetigt einen Interpreter. Wegen mir eben einen Bytecode-Interpreter. Was natuerlich auch fuer Java gilt. Und ja, auch ein C-Programm hat gewisse Anforderungen an die Laufzeitumgebung in der es ausgefuehrt wird. Aber die sind ueblicherweise vorhanden, und muessen *nicht* explizit installiert werden. Last but not least kann ich auch LLVM in meine Software einbinden, und zur Laufzeit C++ uebersetzen. Einer sinnvollen Abgrenzung bringt uns das aber auch nicht naeher.

Wenn du eine aehnlich kompakte und deiner Meinung nach zutreffendere Beschreibung dieses Unterschieds hast - immer her damit. Aber 3 Absaetze zu schreiben, um der eigentlichen Frage des TE nach den Umstaenden einer Distributierbarkeit von Programmen zu genuegen, ist uebertrieben.
Antworten