Seite 1 von 3

Verfasst: Dienstag 28. April 2009, 17:11
von Leonidas
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.

Verfasst: Dienstag 28. April 2009, 18:01
von HerrHagen
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

Verfasst: Mittwoch 29. April 2009, 17:55
von ichbinsisyphos
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.

Verfasst: Mittwoch 29. April 2009, 18:14
von hendrikS
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. :)

Verfasst: Mittwoch 29. April 2009, 18:42
von bankkind
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?

Verfasst: Mittwoch 29. April 2009, 19:40
von Leonidas
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.

Verfasst: Mittwoch 29. April 2009, 20:49
von sma
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

Verfasst: Mittwoch 29. April 2009, 21:02
von lunar
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.

Verfasst: Mittwoch 29. April 2009, 21:19
von sma
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

Verfasst: Mittwoch 29. April 2009, 23:24
von ichbinsisyphos
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.

Verfasst: Mittwoch 29. April 2009, 23:58
von EyDu
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.

Verfasst: Donnerstag 30. April 2009, 08:18
von BlackJack
@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.

Verfasst: Donnerstag 30. April 2009, 08:19
von Leonidas
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.

Verfasst: Donnerstag 30. April 2009, 08:21
von audax
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.

Verfasst: Donnerstag 30. April 2009, 08:29
von ichbinsisyphos
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.

Verfasst: Donnerstag 30. April 2009, 08:46
von Leonidas
ichbinsisyphos hat geschrieben: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.
Ich sehe, du hast meinen Tipp von wegen schlampig sein in C zu Herzen genommen.
http://en.wikipedia.org/wiki/Short_integer hat geschrieben:It is required to be at least 16 bits, and is often smaller than a standard integer, but this is not required. It is often a 16-bit integer, but can be larger. A conforming program can assume that it can safely store values between −215 and 215-1, but it may not assume that the range isn't larger.
Es gibt einen Grund warum es sizeof gibt. Und es gibt auch einen Grund warum die GLib Datentypen mit einer festen Länge definiert.
ichbinsisyphos hat geschrieben: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.
Wo führt dieses Unwissen also zu Schlampigkeit? Dass du keine Out-of-Bounds Fehler machen kannst?
ichbinsisyphos hat geschrieben:Bei C musst du dich erzwungenermassen schon zu Beginn mit den Grundlagen beschäftigen, zum Beispiel mit Datentypen und deren binären Repräsentationen.
Wenn du nicht gerade mit Bitmasken arbeitest, kann dir die binäre Repräsentation doch völlig egal sein. Wieviele Programmierer kennen die binäre Repräsentation eines floats?
ichbinsisyphos hat geschrieben: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?
Klar, aber wo macht einen das Überspringen von Datentyprepräsentationen zu einem schlechten oder schlampigen Programmierer?

Verfasst: Donnerstag 30. April 2009, 08:54
von BlackJack
@ichbinsisyphos: `short integer` ist in C nicht 16 Bit lang. Das mag auf vielen Plattformen so sein und ist im neuesten Standard wohl auch die Mindestlänge (?), aber keine generelle Aussage die man so über C treffen kann.

Natürlich kümmerst Du Dich in Python auch um Datentypen. Du wählst ja bewusst den Typ "ganze Zahl" und Du versuchst doch auch nicht über Fliesskommazahlen zu iterieren, weil Du weisst, dass der Typ das nicht unterstützt. Python befreit einen nicht davon sich über Typen Gedanken zu machen, man muss sie nur nicht alle naselang deklarieren.

Man muss auch nicht die genaue interne Datenstruktur auf Maschinenebene kennen, um gute Programme zu schreiben, es reicht die O()-Notation für den Speicherverbrauch von Typen und das Laufzeitverhalten von Operationen zu kennen.

Verfasst: Donnerstag 30. April 2009, 10:23
von hendrikS
audax hat geschrieben: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.
OK. Meinetwegen auch Stuetzstrumpf. Obwohl mich dieser nach dem 1000. Typeerror schon einige male zur Weissglut gebracht hat.
Aber wenn es dann mal läuft ist wieder alles gut. Positiv in Haskell finde ich beispielsweise die etwas klarere Abgrenzung von Listen und Tuples, die in Python irgendwie schwammig ist.
Fuer Einsteiger wuerde ich Haskell nicht empfehlen. Aber als Ergänzung jederzeit.

Verfasst: Donnerstag 30. April 2009, 12:55
von ichbinsisyphos
BlackJack hat geschrieben:@ichbinsisyphos: `short integer` ist in C nicht 16 Bit lang. Das mag auf vielen Plattformen so sein und ist im neuesten Standard wohl auch die Mindestlänge (?), aber keine generelle Aussage die man so über C treffen kann.

Natürlich kümmerst Du Dich in Python auch um Datentypen. Du wählst ja bewusst den Typ "ganze Zahl" und Du versuchst doch auch nicht über Fliesskommazahlen zu iterieren, weil Du weisst, dass der Typ das nicht unterstützt. Python befreit einen nicht davon sich über Typen Gedanken zu machen, man muss sie nur nicht alle naselang deklarieren.

Man muss auch nicht die genaue interne Datenstruktur auf Maschinenebene kennen, um gute Programme zu schreiben, es reicht die O()-Notation für den Speicherverbrauch von Typen und das Laufzeitverhalten von Operationen zu kennen.
Ja die Länge der Datentypen ist plattformabhängig, aber das ist nicht wirklich der Punkt.

Du wählst in Python zu Beginn den Datentyp nicht explizit. Du schreibst zum Bsp. "x = 2", oder "x = 2.5". Der Anfänger denkt er speichert die "Zahl" in der Variablen und wundert sich oft über die Resultate. Ich bin mir sicher ihr hattet schon viele Typen hier, die den Unterschied zwischen floating point und integer nicht verstanden haben.

In C heißts "int x = 2", "float x = 2.5" und "int x = 2.5" liefert x als 2 zurück, jeder Datentyp hat eigene Rechenoperationen. Da kanns von Anfang an keine Verwechslungen geben.

Python ist sehr stark abstrahiert und verbirgt die Vorgänge auf der Maschinenebene. Es ist nicht unmöglich sie herauszufinden, aber halt nicht naheliegend.

Jemanden der z.B. vorhat später mal Informatik zu studieren würd ich auf alle Fälle C empfehlen.

Ich benutzt Python seit 2 Jahren oder so, hatte dabei einen learning-by-doing Ansatz. Es hat auf alle Fälle gereicht um schön langsam alle Probleme zu bewältigen, für die ich den Computer brauche, aber die C/C++-Vorlesung im letzten Semester hat mir ordentlich die Augen geöffnet. Und ich denke nicht, dass ich wesentlich dümmer bin als der durchschnittliche Python-Anfänger.

Verfasst: Donnerstag 30. April 2009, 13:55
von Darii
ichbinsisyphos hat geschrieben:In C heißts "int x = 2", "float x = 2.5" und "int x = 2.5" liefert x als 2 zurück, jeder Datentyp hat eigene Rechenoperationen. Da kanns von Anfang an keine Verwechslungen geben.
Verwechslungen gibt es immer. Bei C fällt man ggf. bei "float x = 2.5/2" auch hin. Nur weil ich irgendwo explizit einen Datentyp davorschreiben muss, verstehe ich auch nicht automatisch was ich da eigentlich mache.
Python ist sehr stark abstrahiert und verbirgt die Vorgänge auf der Maschinenebene. Es ist nicht unmöglich sie herauszufinden, aber halt nicht naheliegend.
Und das macht C nicht? Ich muss nicht wissen wie Variablen abgespeichert werden und wie Funktionen aufgerufen werden um mit C Programme schreiben zu können. Selbst Assembler sind im Allgemeinen schon recht abstrakt.