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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 28. April 2009, 17:11

Libo hat geschrieben:Stimmt es das Ruby schneller ist in v1.9 als Python?
Nein, nicht generell und signifikant. Ab 1.9 ist es ähnlich schnell (oder langsam)
Libo hat geschrieben:Worin liegt eig. der Unterschied zwischen Ruby und Phyton?
Erstens heißt es Python und zweitens sind die Unterschiede eher gering. Ruby-Programmierer können oft Klammern weglassen (ob es dann klarer wird, sei dir überlassen) und Ruby besitzt im Gegensatz zu Python "Blöcke" also quasi anonyme Funktionen.

Ich habe mir Ruby eine zeitlang angesehen, aber aus Python-Sicht war es zu ähnlich um interessant zu sein. Selbiges gilt sicherlich auch aus der Ruby-Perspektive.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Dienstag 28. April 2009, 18:01

Ganz einfache Programme habe ich mit AutoIt geschrieben, fals jemand diese Script-Sprache kennt. Wie sieht es eig mit der verbreitung Pythons aus? (wachsende Community, oder schrumpfende?)
Zu dem Thema wird ich mir folgendes anschauen:
http://www.tiobe.com/index.php/content/ ... index.html
http://www.langpop.com/ (besonders der untere Teil dürfte interessant sein)
Über die Bewertungskriterien kann man sicher streiten, im groben geben sie aber doch ein annehmbares Bild über die Popularität der Sprachen.
verwendet man in der Software-Branche (Softwarehersteller-Konzerne) auch Python oder in der Regle nur C/C++?
Python wird mittlerweile relativ häufig, in verschiedensten Bereichen, eingesetzt, die Tendenz ist hierbei stark steigend. Prominentestes Beispiel ist hierbei sicherlich immernoch Google.
Hier würde ich auch einen großen Unterschied zu Ruby sehen. Dessen Einsatz in der Wirtschaft beschränkt sich im wesentlichen auf Ruby on Rails und Webanwendungen. Ich sehe auch ehrlich gesagt nicht, dass sich das jemals ändern wird. Ich finde auch (mit eigener Erfahrung) das die Einführung von Python in ein Unternehmen sicherlich einfacher ist, als bei Ruby, da Python doch viel leichter zu lernen ist.
Python anwendungen laufen aber nur unter Windows\Unix wenn Python selbst installiert ist??
Man kann auch den Python-Interpreter mit dem eigentlichen Programm bündeln, so das der Endanwender von Python nichts mitbekommt.

MFG HerrHagen
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Mittwoch 29. April 2009, 17:55

Python würde ich für Anfänger empfehlen, weil es intuitiver und zwangloser ist als jede andere Programmiersprache die ich kenne.

Je nachdem was du vor hast kann das aber auch ein Nachteil sein. C/C++ sind die zwanghaftesten Sprachen die ich kenne. Die Hälfte der Zeit wirst mit Dateitypen, Klammern- und Strichpunkte- suchen verbringen, was es bei Python praktisch überhaupt nicht gibt.
Aber gerade dadurch lernst du sauber zu programmieren.

Für Java spricht, dass es wohl immer noch Industrie-Standard ist, sonst aber nichts.

Von Microsoft-Sprachen würd ich persönlich die Finger lassen. Teils sicher aus ideologischen, aber auch aus Kostengründen und weil es in den Kreisen generell weniger freien Informationsaustausch gibt. Zum Geldverdienen sind sie aber sicher immer noch geeignet.

Die Unterschiede zwischen Ruby und Python sind nicht besonders groß, Python ist aber weiter verbreitet und hat dadurch auch mehr Erweiterungen, die das Leben einfacher machen.


Ich würd sagen, Python wenn du schnelle Erfolge willst, C++ bei rechenintensiven Aufgabenstellungen.


Ich hab vor kurzem eine Zoomfahrt in die Mandelbrotmenge berechnet, da war das C++-Programm um Faktor 10 schneller als mein Python-Entwurf. Für alltägliche Anwendungen fällts aber kaum auf.

Die ersten Entwürfe mach ich übrigen fast immer in Python bevor ich mich zwinge das ganze nochmal in C++ zu schreiben. Man kann auch schnell mal was in der Shell ausprobieren, bei C++ muss man bei jedem einzelnen geänderten Punkt alles neu kompilieren.

Aber über das Alter von C++ musst du dir keine Gedanken machen, die Sprache wird dich wahrscheinlich überleben :-D.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Mittwoch 29. April 2009, 18:14

ichbinsisyphos hat geschrieben:C/C++ sind die zwanghaftesten Sprachen die ich kenne. Die Hälfte der Zeit wirst mit Dateitypen, Klammern- und Strichpunkte- suchen verbringen, was es bei Python praktisch überhaupt nicht gibt.
Das wuerde ich mal ein bisschen relativieren. So zwanghaft sind C/C++ nun auch wieder nicht. Die wirkliche Zwangsjacke bekommst Du bei Ada oder Haskell. :)
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Mittwoch 29. April 2009, 18:42

Ich habe zu dem Thema auch noch mal eine Frage: Wie gut ist die Performance von python im vergleich zu PHP? Also Speziell im bereich Web-Applikationen?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 29. April 2009, 19:40

An synthetischen Benchmarks ist Pyhton schneller, bei Webapps hängt von vielen Faktoren ab, aber auch da ist es durchaus machbar dass Python schneller als PHP ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mittwoch 29. April 2009, 20:49

Kann nicht widerstehen, zu ein paar Punkten auch meinen Senf dazu zu geben.

Ruby 1.8 in etwa halb so schnell Ruby 1.9, das etwa so schnell ist wie Python 2.5. JRuby ist noch mal schneller als Ruby 1.9 und da ist nach oben noch Luft. Jython hingegen schafft es nur knapp CPython-Geschwindigkeit zu erreichen, dafür ist IronPython für ausgewählte Benchmarks deutlich schneller als CPython. Ich erwarte, dass bei Ruby in etwa die Geschwindigkeit von Googles V8 JavaScript-Engine erreicht werden kann. Und die ist um (mindestens) eine Größenordnung schneller als Python oder Ruby. MacRuby versucht dank LLVM ebenfalls schneller zu werden. Ebenso Maclev dank Smalltalk-VM. Google Unloaden Swallow-Projekt versucht das selbe mit der LLVM für CPython.

Da Ruby eigentlich Smalltalk mit anderer Syntax ist, Self ein klassenloser Smalltalk-Dialekt ist und JavaScript wiederum ähnlich zu Self mit anderer Syntax ist und V8 die Technik der in den 90er-Jahren entwickelten Self-VM nutzt, die übrigens auch in der Hotspot-Java-VM (und in Strongtalk, noch einem Smalltalk-Dialekt) steckt, erwarte ich hier am ehesten Erfolge. Hinzu kommt das Investment von Sun (ähem Oracle) und Microsoft in ihre VMs für dynamische Sprachen.

Für Python bin ich da skeptischer, da das Objektmodell komplexer ist und nicht so einfach zu optimieren ist, wie das von Smalltalk, wo es seit über 20 Jahren Forschung zu diesem Thema gibt.

Ich würde Java + IDE jederzeit C und auch C++ vorziehen. Eine IDE ist jedoch absolut notwendig, oder die Produktivität bricht unter das Niveau von Scriptsprachen ein. Mit einer guten IDE wie z.B. IntelliJ halte ich die Produktivität für gleichwertig. Unbestritten ist Python aber die elegantere Sprache. Java (mit Hotspot) und C++ nehmen sich nichts in der Performance.

Bei Ruby gefällt mir, dass die Sprache konsequent objektorientiert nach dem Smalltalk-Muster ist (genauer gesagt ist sie Nachrichten-orientiert, genau wie Objective-C, der einzig wahre objektorientierte C-Dialekt, der ebenfalls nach dem Muster von Smalltalk entworfen wurde - C++ wurde von Simula beeinflusst, älter als Smalltalk, aber nicht das, was sich Alan Kay unter dem von ihm erfundenen Begriff Objektorientierung vorgestellt hat).

Bei Python gefällt mir die Einfachheit der Sprache, ohne das man Ausdruckskraft (wie es z.B. bei Java oder VisualBasic der Fall ist) verliert. Python ist aber eher funktionsorientiert (von funktional würde ich nicht sprechen) denn objektorientiert. Grundprinzip ist hier der Funktionsaufruf und nicht das Nachrichtenversenden.

Ob die Python-Gemeinschaft wächst oder schrumpft weiß ich nicht so recht. Im Unix-Umfeld, das mich persönlich nicht so interessiert, ist sie wohl recht stark. Andernfalls aber eine Randerscheinung. Unter Windows benutzt man wohl eher Java oder eine .NET-Sprache und unter OS X hat (neben der Betriebssystemsprache Objective-C) Ruby eher Fuß gefasst als Python.

Python zu können, kann definitiv nicht schaden. Doch auf jeden Python-Programmierer kommen bestimmt 10 Java- oder C#-Entwickler (und 100 PHP-Entwickler). Übrigens, wem Java zu langweilig ist, dem empfehle ich Scala. Oder Clojure, wenn's noch exotischer sein soll. Dank JVM aber in beiden Fällen viele plattformunabhängige Bibliotheken. Auch C# ist eine interessante Programmiersprache, jedenfalls in Version 3.0 oder 4.0 und definitiv besser als C als Systemsprache. Dafür eignet sich Java nicht so, da man nicht wie bei C# die Sandbox verlassen kann.

Ich finde Python für Webanwendungen gut, doch für GUI-Programmierung würde ich die Sprache nicht einsetzen, da es aus meiner Sicht keine guten plattformübergreifenden Bibliotheken mitgeliefert werden. Extra WX oder Qt zu installieren empfinde ich als Nachteil. Hier sieht es bei Java IMHO besser aus. Wenn man unter Linux bleiben will, ist das natürlich kein größeres Manko.

Was Leonidas als Nachteil von Java sieht, empfinde ich als den großen Vorteil: Die JVM abstrahiert vom Betriebssystem. Den Anspruch haben andere Sprachen auch, können das aber IMHO nicht in dieser Konsequenz leisten.

Tatsächlich denke ich aber, die Zukunft der GUIs liegt sowieso bei Rendering-Engines wie Webkit - auf für die meisten Desktop-Anwendungen. Web- und Desktop werden dank AIR oder Titanium und anderen Widget-Technologien verschmelzen.

Stefan
lunar

Mittwoch 29. April 2009, 21:02

ichbinsisyphos hat geschrieben:Aber gerade dadurch lernst du sauber zu programmieren.
Man wird kein bessere Programmierer, weil man den Befehlen des Compilers folgt und fleißig Strichpunkte setzt.
Teils sicher aus ideologischen
Sowohl C# als auch die Kernbibliotheken des .NET-Framework sind standardisiert und nicht mit Patenten belastet. C# als Sprache ist so frei oder unfrei wie C++.
aber auch aus Kostengründen
Das .NET-Framework ist kostenlos und darf frei weiter verteilt werden, mit SharpDevelop gibt es eine freie IDE, die für viele Projekte ausreicht. Man ist nicht gezwungen, Geld auszugeben, um vernünftig C# programmieren zu können.
und weil es in den Kreisen generell weniger freien Informationsaustausch gibt.
Die Microsoft-.NET-Newsgruppen können sich in punkto Qualität und Quantität durchaus mit der Python-Newsgruppe messen. Microsoft hat mit MSDN auch eine nicht zu verachtende Community unter .NET-Programmierern geschaffen.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mittwoch 29. April 2009, 21:19

lunar hat geschrieben:Sowohl C# als auch die Kernbibliotheken des .NET-Framework sind standardisiert und nicht mit Patenten belastet.
Standardisiert ja, das mit den Patenten, um ein bisschen zu klugscheißen, ist nicht ganz korrekt.

Microsoft räumt allen Anwendern eine kostenlose Nutzung ihrer Patente ein - eine Voraussetzung der ECMA- und ISO-Standardisierung. Sie behaupten nicht, keine Patente zu halten, im Gegenteil. Was genau das ist, ist meines Wissens nicht näher aufgelistet. Jeder kann da ja selbst auf die Suche gehen.

Funktioniert bei Java ähnlich. Alle, die am Java-6-Standard (nur Industrie, kein ECMA- oder ISO-) mitgearbeitet haben, haben ihre Lizenzen gebündelt und Anwendern ist eine unentgeltliche Nutzung erlaubt. Die Überschreibung der Nutzungserlaubnis ist dabei an das Durchlaufen der Testfälle für den Standard geknüpft. Der Apache-Foundation stehen für ihre Java-Version (Harmony) diese leider nicht zur Verfügung, sodass sie offiziell kein Java haben und Nutzer dieser Version keine Lizenz.

Ob es da noch dritte gibt, die irgendwann in Zukunft die Hand aufhalten werden, ist völlig unklar. Der auf keinen Fall rechtsverbindliche Rat wäre auch, lieber nicht nachzuschauen, denn wenn man wissentlich ein Patent verletzt, dann kann das schlimmer sein, weil es Vorsatz sein könnte.
C# als Sprache ist so frei oder unfrei wie C++.
Und das ist wieder richtig und gilt eigentlich für alles im Bereich Software.

Es gibt die idiotischsten Patente und die Anzahl der möglichen Patenthalter ist unbeschränkt. Jemand, dessen Patent verletzt wurde, kann sich dabei wahlweise an den User oder den Toolhersteller wenden. Die Hoffnung der User wäre, dass dies versuchen, Geld von den Toolherstellern zu erpressen. Sun hat vor einiger Zeit ja mal knapp 100 Mio für ein RMI betreffendes Patent abgedrückt. Auch Microsoft und Apple müssen immer mal wieder zahlen. Nur IBM hat selbst dermaßen viele Patente, dass die Schutzgeldeintreiber da offenbar nicht ganz so gierig sein können. SCO hat's ja mal versucht...

Stefan
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Mittwoch 29. April 2009, 23:24

lunar hat geschrieben:
ichbinsisyphos hat geschrieben:Aber gerade dadurch lernst du sauber zu programmieren.
Man wird kein bessere Programmierer, weil man den Befehlen des Compilers folgt und fleißig Strichpunkte setzt.
Kurz gesagt: Doch. Die Strichpunkte alleine bringens nicht, aber sich zum Beispiel über die Datentypen Gedanken machen zu müssen lässt einem schon mehr Verständnis für die Vorgänge im Rechner entwickeln.

Würd sich ein Computer auf die Couch legen, dann müsst man ihm einen zwanghaften Charakter bescheinigen. Und C/C++ bringen das noch am ehesten zum Ausdruck. Außerdem sind das die "lowest" level-Programmiersprachen die ich irgendjemanden zumuten würde. Wer Assembler lernt, versteht die Bedürfnisse eines Binärrechners sicher noch besser.

Python verleitet zum schlampigen Programmieren, und es gibt unzählige Wege ein bestimmtes Problem zu lösen.
Ich beginne die meisten meiner Skripte ohne konkreten Plan, das ergibt sich alles später noch. Bei C/C++ tut man sich mit der Einstellung schwer, da empfiehlt es sich, strategischer vorgehen.
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Mittwoch 29. April 2009, 23:58

ichbinsisyphos hat geschrieben:
lunar hat geschrieben:
ichbinsisyphos hat geschrieben:Aber gerade dadurch lernst du sauber zu programmieren.
Man wird kein bessere Programmierer, weil man den Befehlen des Compilers folgt und fleißig Strichpunkte setzt.
Kurz gesagt: Doch. Die Strichpunkte alleine bringens nicht, aber sich zum Beispiel über die Datentypen Gedanken machen zu müssen lässt einem schon mehr Verständnis für die Vorgänge im Rechner entwickeln.
Das hat aber nichts mit sauberer Programmierung zu tun. Wenn du dir in Python keine Gedanken über geeignete Datentypen machst, dann hast du ernsthaftes (aufs Programmieren bezogen) Problem ;-) Ich kenn niemanden der ordentlicher programmiert, weil er an irgend welche Hardwaregrenze gebunden ist.
ichbinsisyphos hat geschrieben:Python verleitet zum schlampigen Programmieren, und es gibt unzählige Wege ein bestimmtes Problem zu lösen.
Ich beginne die meisten meiner Skripte ohne konkreten Plan, das ergibt sich alles später noch. Bei C/C++ tut man sich mit der Einstellung schwer, da empfiehlt es sich, strategischer vorgehen.
Wenn du dich bei Scriptsprachen nicht "unter Kontrolle" hast, sitzt das Problem eindeutig vor dem Bildschirm.
Das Leben ist wie ein Tennisball.
BlackJack

Donnerstag 30. April 2009, 08:18

@ichbinsisyphos: Also C++ ist die letzte hardwarenahe Sprache, die ich irgendwem zumuten würde. Schon gar nicht Anfängern um gutes Programmieren zu erlenen. C, Pascal, meinetwegen auch Ada wenn's wirklich "zwanghaft" sein soll, aber bestimmt nicht C++. Und Forth ist noch sehr nett, fällt aber ziemlich aus dem Rahmen der üblichen Verdächtigen.

In C++ gibt's auch viele verschiedene Wege etwas zu erreichen, inklusive "funktionaler" Programmierung mit Funktoren und generischer Algorithmen über Iteratoren. Und dann die ganze Template-Magic die es so gibt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 30. April 2009, 08:19

ichbinsisyphos hat geschrieben:Kurz gesagt: Doch. Die Strichpunkte alleine bringens nicht, aber sich zum Beispiel über die Datentypen Gedanken machen zu müssen lässt einem schon mehr Verständnis für die Vorgänge im Rechner entwickeln.
Nein, die Datentypen lassen eigentlich gar nicht auf die Vorgänge im Rechner schließen. Nimm etwa das statische Typsystem von Scala, dort wirst du kaum draufkommen was da "unter der Haube" passiert - die Idee ist ja eben dass du es nicht wissen musst, da du Abstraktionen verwendest. Datentypen in C und C++ sind ja auch nur Abstraktionen auf den ungetypten Speicher.
ichbinsisyphos hat geschrieben:Python verleitet zum schlampigen Programmieren, und es gibt unzählige Wege ein bestimmtes Problem zu lösen.
Ach und in C nicht? Na das ist ja mal ein Ding!
ichbinsisyphos hat geschrieben:Ich beginne die meisten meiner Skripte ohne konkreten Plan, das ergibt sich alles später noch. Bei C/C++ tut man sich mit der Einstellung schwer, da empfiehlt es sich, strategischer vorgehen.
Weils einfach geht, dann arbeitest du schlampig und beschuldigst die Sprache? Dann arbeite doch auch mal schlampig mit C und debugge dann die Memory Leaks, Segfaults und das komische Verhalten.

Man kann in jeder Sprache Basic programmieren.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Donnerstag 30. April 2009, 08:21

hendrikS hat geschrieben:
ichbinsisyphos hat geschrieben:C/C++ sind die zwanghaftesten Sprachen die ich kenne. Die Hälfte der Zeit wirst mit Dateitypen, Klammern- und Strichpunkte- suchen verbringen, was es bei Python praktisch überhaupt nicht gibt.
Das wuerde ich mal ein bisschen relativieren. So zwanghaft sind C/C++ nun auch wieder nicht. Die wirkliche Zwangsjacke bekommst Du bei Ada oder Haskell. :)
Bei Haskell seh ich das aber nicht als Zwangsjacke, sondern eher als Stützstrumpf. In der Sprache hilft dir der Typchecker, einfachen und korrekten Code zu schreiben und man kämpft dich dauernd mit dem Compiler. Sehr angenehm und das geht in Java oder C so nicht.
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Donnerstag 30. April 2009, 08:29

EyDu hat geschrieben:
ichbinsisyphos hat geschrieben:
lunar hat geschrieben:
ichbinsisyphos hat geschrieben:Aber gerade dadurch lernst du sauber zu programmieren.
Man wird kein bessere Programmierer, weil man den Befehlen des Compilers folgt und fleißig Strichpunkte setzt.
Kurz gesagt: Doch. Die Strichpunkte alleine bringens nicht, aber sich zum Beispiel über die Datentypen Gedanken machen zu müssen lässt einem schon mehr Verständnis für die Vorgänge im Rechner entwickeln.
Das hat aber nichts mit sauberer Programmierung zu tun. Wenn du dir in Python keine Gedanken über geeignete Datentypen machst, dann hast du ernsthaftes (aufs Programmieren bezogen) Problem ;-) Ich kenn niemanden der ordentlicher programmiert, weil er an irgend welche Hardwaregrenze gebunden ist.
ichbinsisyphos hat geschrieben:Python verleitet zum schlampigen Programmieren, und es gibt unzählige Wege ein bestimmtes Problem zu lösen.
Ich beginne die meisten meiner Skripte ohne konkreten Plan, das ergibt sich alles später noch. Bei C/C++ tut man sich mit der Einstellung schwer, da empfiehlt es sich, strategischer vorgehen.
Wenn du dich bei Scriptsprachen nicht "unter Kontrolle" hast, sitzt das Problem eindeutig vor dem Bildschirm.
Ich werds dir noch einmal ganz langsam erklären, mein kleiner Freund:

Bei C weiß ich, dass eine short integer 16 bit Länge hat, wenn ich ein array von 20 solcher Zahlen erstelle, wird ein Speicherplatz von 16*20 bit reserviert.
Bei Python kümmer ich mich erst gar nicht selbst um den Datentyp, Python wählt einen passenden für mich. Was eine Liste in Python auf der Datenebene ist, ist für mich überhaupt nicht einzuschätzen.

Das Problem sitzt nicht vorm Bildschirm, mein guter Mann. Es gibt nämlich kein Problem, weder vorm Bildschirm, noch dahinter.

Jetzt musst du dich ganz doll anstrengen und versuchen dir vorzustellen, wie das wohl wäre, wenn du mit unterschiedlichen Programmiersprachen zu programmieren beginnst.

Bei C musst du dich erzwungenermassen schon zu Beginn mit den Grundlagen beschäftigen, zum Beispiel mit Datentypen und deren binären Repräsentationen.
Da das aber mühsam und nicht unbedingt nötig ist, ist man bei Python versucht, sich das zu Beginn zu sparen, man kann die Grundlagen überspringen.

Könntest du dir vorstellen, dass das einen Unterschied macht?


Ich bin leider grad etwas im Stress ... wenn noch was unklar ist, nicht schüchtern sein! Frag einfach nochmal kurz nach.
Antworten