Warum 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
newbee
User
Beiträge: 7
Registriert: Sonntag 7. November 2010, 12:32

Hallo liebe Freunde,

ich komme aus der "C-Ecke". Seit gewisser Zeit befasse ich mich mit Python, da ich ein wenig mit der Reverse Engeneering herumexperimentieren wollte. Viele weitaus erfahrene Kollegen loben Python wenn man sich mit diesem Thema befasst. Es ist mächtig, einfach und bringt gute Resultate.
Python macht schon Spaß, muss ich gestehen, aber:
wenn man z. B. c-types in Python abbilden muss, sich mit Pointern befassen muss, Netzwerkprogrammierung betreibt-kurz gesagt sehr tief in die Materie einsteigt, kommen mir Zweifel und dann frage ich mich: warum Python? Warum nicht gleich bei C bleiben ohne das alte "Bonbon" in ein anderes Papier umzuwickeln? Ich würde sagen: Python für hübsche Skripte, administrative Aufgaben usw. verwenden - OK, aber sonst?
Wie ist Euere Meinung dazu?
lunar

@newbee: Ist diese Frage ernst gemeint, oder nur der Versuch, eine möglichst unsinnige Diskussion anzuzetteln?

Ich frage, da die Unterschiede zwischen Python und C und somit auch die Vorteile von Python eigentlich unmittelbar ersichtlich sind, selbst für jemanden, der beide Sprache nur rudimentär beherrschst. Insofern fällt es mir schwer zu glauben, dass Du Dich vor dieser Frage überhaupt ernsthaft mit Python beschäftigt hast.

Zudem wirst Du in diesem Forum recht eindeutige Antworten erhalten im Bezug auf die Vorteile von Python, und das war Dir bestimmt auch vorher klar.

Was also soll diese Frage?
newbee
User
Beiträge: 7
Registriert: Sonntag 7. November 2010, 12:32

Hallo,

die Frage ist ernst gemeint, ich wollte doch keine unsinnige Diskussion lostreten. Wie ich sagte: ich fange erst mit Python an. Dann stoße ich auf C-Types, wo ich Strukturen, Pointern usw. in Python abbilden muss. Das ist nicht immer so einfach, wie man doch gerne von Python behauptet und für jemanad, der von C ein wenig Ahnung hat kommt automatisch die Frage: warum soll ich das in Python abbilden, wenn ich doch gleich bei C bleiben könnte?
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Es sind am Ende immer eine ganze Reihe von Kriterien, nach denen man ein Entwicklungstool auswählt:
- Wie schnell muss was am Laufen sein?
- Wie schnell muß die Applikation selbst laufen?
- Mach ich die Applikation für mich oder auch für andere?
- Das Betriebssystem
- Brauche ich die Anwendung einmal oder laufend?
- GUI oder nicht?
- Wie gut beherrsche ich die Programmiersprache?
- Kann ich auf Bibliotheken zurückgreifen?
- etc.
Überleg Dir selbst, wann Du Python für zweckmäßig hälts.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Ich finde du reitest da zu viel auf `ctypes` herum. Das benötigst du nur, wenn du irgendwelche C-Libraries in die Programm einbauen willst. In der Regel brauchst du das aber nicht, weil viele Wrapper schon existieren, wie z.B. pygtk.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Ich glaub du hast den Sinn von c-types nicht verstanden. Du musst es nicht benutzen. Es ist nur eine Variante um in C geschriebene Bibliotheken einzubinden. Für den sonstigen Gebrauch der Sprache ist es vollkommen unnötig.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

newbee hat geschrieben:Dann stoße ich auf C-Types, wo ich Strukturen, Pointern usw. in Python abbilden muss.
Kann, nicht muss. So lange du nicht auf direkt auf C-Bibliotheken zugreifen musst, musst du ctypes nicht benutzten. Das der Zugriff auf C-Bibliotheken den Umgang mit Pointern erfordern kann sollte allerdings nicht weiter verwundern. Wie stellst du dir das denn anders vor? Man kann gewisse Low-Level Mechanismen nunmal nicht weiter vereinfachen. Aber du musst sie ja nicht immer benutzten. Nicht ohne Grund gibt es z.B. ftplib, httplib oder urllib. Eben damit man nicht immer mit sockets hantieren muss.
newbee
User
Beiträge: 7
Registriert: Sonntag 7. November 2010, 12:32

ich habe die C-Types nur als Beispiel genannt. Klar muss man in "täglichen" Leben nicht auf irgendwelche C-Bibliotheken zugreifen. Wenn ich aber z. B. auf SQL-Server-APIs zugreifen will, dann muss ich wohl die C-Types bemühen (schon wieder) und dann würde ich als C-User eher bei C bleiben. Ich glaube hendrikS hat das Problem richtig beschrieben: man muss das richtige Werkzeug für eine konkrete Aufgabe benutzen. Und Python (wie jede andere Sprache auch) ist keine eierlegende Wollmilchsau.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Für Datenbank-Zugriffe gibt es genauso Python-Bibliotheken wie für zig andere Anwendungsgebiete ebenfalls. Vielleicht solltest du dich mal etwas informieren, bevor du hier solch unqualifizierte Statements abgibst, also bitte.
Einfach von irgendwas ausgehen und das dann in einer Diskussion anführen, das ist doch wirklich lächerlich.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Im Vergleich zu C ist Python definitiv die eierlegende Wollmilchsau, du bist nur gefangen in der Sicht des C-Programmierers und versuchst in Python alles genauso zu lösen wie in C, dass geht natürlich schief. Wenn du dich davon löst und unbefangen mal die Frage stellst "Wie mache ich X in Python?" würdest du auch zu einem Objektiven und sinnvollen Ergebnis kommen.
BlackJack

@newbee: Was sind "SQL-Server-APIs"? Warum muss man da `ctypes` verwenden? Gibt's für das DBMS kein DB-API 2 konformes Modul?

Wenn Deine Programme tatsächlich nur aus der Verwendung von `ctypes` bestehen, dann solltest Du natürlich bei C bleiben. Meine Programme bestehen hauptsächlich aus Python-Quelltext und ich bin sehr froh dass ich das nicht alles in C schreiben muss. Darum Python. Um die Frage zu beantworten.

Eine Gegenfrage wäre vielleicht, ob Du da wirklich Programme schreibst, bei denen C geeigneter wäre, oder ob Du Python einfach nur nicht richtig verwendest. Also ob Du zum Beispiel in C "denkst" und dass dann mit `ctypes` in Python-Syntax hinschreibst und dadurch nur mehr und unnötige Komplexität siehst, oder ob Du mit `ctypes` eine "pythonische" API über die verwendeten C-Bibliotheken legst und dann echte Python-Programme schreibst und nicht nur C in Python-Syntax.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
newbee hat geschrieben:Wie ich sagte: ich fange erst mit Python an. Dann stoße ich auf C-Types, wo ich Strukturen, Pointern usw. in Python abbilden muss.
Wenn das wirklich so ist, dann hast du definitiv "von der falschen Seite" angefangen, dich mit Python zu befassen. Neben den Modulen, die Python standardmäßig mitbringt gibt es unzählige anderen, dritte Module für alle möglichen (und unmöglichen) Aufgaben. Z.B. bei PyPi. Aktuelle Linux-Distros haben auch viele Module in den Paketquellen.

Jedenfalls kann man ohne Probleme auch umfangreiche und komplexe Python-Programme schreiben, ohne auch nur die leiseste Ahnung von C zu haben.

Gruß, noisefloor
Antworten