Hallo,
Ich habe vor einigen Tagen eine Diskussion über dynamische Sprachen in einem "c++" Forum gestartet. Die Diskussion viel leider nicht gerade hilfreich aus.
Trotzdem würde ich gerne ein paar Argumente von Python Nutzern hören
Diskussion
http://www.c-plusplus.de/forum/305462
( Bis Seite 3 )
[Diskussion] Dynamische Sprachen
@kantaki: Es werden die (Typ)fehler erwähnt, die durch die dynamische Natur dem Compiler nicht auffallen — da fehlt mir in der Diskussion das Thema Unit-Tests, die man ja eigentlich auch in statisch typisierten Sprachen bei jedem grösseren Projekt schreibt. Damit fallen dann sowohl Typ- als auch Logikfehler auch in dynamisch typisierten Sprachen sehr schnell auf.
Das ``if``-Beispiel von cooky451 (Seite 4, unten) könnte man in Python zum Beispiel auch so formulieren:
Und statt der '\' an Zeilenenden kann man auch zusätzliche Klammern um den Ausruck setzen, den man über mehrere Zeilen verteilen möchte. Sofern nicht sowieso schon welche vorhanden sind.
Das ``if``-Beispiel von cooky451 (Seite 4, unten) könnte man in Python zum Beispiel auch so formulieren:
Code: Alles auswählen
headers = [
header.blubb1, header.blubb2, header.blubb3, header.blubb4, header.blubb5
]
if all(file.read_binary(h) == sizeof(h) for h in headers):
...
Hab ehrlich gesagt keine Lust, dort zu antworten, da die Diskussion z.T. unsachlich geführt wird. Die Vor- und Nachteile der statischen versus der dynamischen Typisierung sind hinlänglich bekannt. Auch die 1001. Diskussion darüber wird da kein neues Licht darauf werfen. Entscheidend für ein Projekt XY sind eher die Programmiererbasis und das Projektziel/-anforderungen und die richtige Auslotung.
Was mir persönlich an Python sehr gefällt, ist zum einen die simple Syntax und desweiteren das batteries included Konzept. Gerade letzteres macht Python eher zu einem Programmierframework denn einfach nur zu einer weiteren Skriptsprache. Und beides zusammen genommen spart Entwicklungszeit und ist für agile Entwicklung oder RAD gut geeignet.
Was mir persönlich an Python sehr gefällt, ist zum einen die simple Syntax und desweiteren das batteries included Konzept. Gerade letzteres macht Python eher zu einem Programmierframework denn einfach nur zu einer weiteren Skriptsprache. Und beides zusammen genommen spart Entwicklungszeit und ist für agile Entwicklung oder RAD gut geeignet.
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@BlackJack: Oder so:
Code: Alles auswählen
headers = (getattr(header, 'blubb%d' % n) for n in xrange(1, 6))
if all(file.read_binary(h) == sizeof(h) for h in headers):
...
In specifications, Murphy's Law supersedes Ohm's.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Und jede menge FUD und faktisch falsche Aussagen. Halleluja.jerch hat geschrieben:Hab ehrlich gesagt keine Lust, dort zu antworten, da die Diskussion z.T. unsachlich geführt wird.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
In dem Thread wird ja eher darauf eingegangen, was die Leute für ihre 1Mio-Zeilen-Firmenprojekte verwenden (übertrieben gesagt). Dir geht es aber scheinbar um Webentwicklung und da ist Python durchaus geeignet. An 1-2 Stellen in dem Thread scheint das ja auch durch.
Ich würd sagen (wie immer bei solchen Fragen), guck einfach mal, wie du mit Python klarkommst. Falls du statische Typisierung zu sehr vermissen solltest, dann kannst du deine Pläne ja immer noch über Board werfen.
Ich würd sagen (wie immer bei solchen Fragen), guck einfach mal, wie du mit Python klarkommst. Falls du statische Typisierung zu sehr vermissen solltest, dann kannst du deine Pläne ja immer noch über Board werfen.
Ich bin nur gerade etwas lesefaul da ich in den letzten Monaten viel zu viele Bücher gelesen habe. Deswegen bin ich einfach mal in Python "eingetaucht" mit hilfe der offiziellen Doku. Und ich muss sagen bis jetzt finde ich die Sprache sehr sehr schön.
Ich denke ich werde einfach mal drauf los entwickeln, -> python Django Google App Engine. Wahrscheinlich werde ich mir aber in nächster Zeit noch ein indepth Buch für Python kaufen. Ich bin zwar relativ fit in OOP aber Python bzw dynmische Sprachen sind auch ein wenig anders.
Ich äugle momentan auf " Python in a Nutshell, Second Edition (In a Nutshell) " da mir die C# Variante sehr gut gefallen hat.
Ich denke ich werde einfach mal drauf los entwickeln, -> python Django Google App Engine. Wahrscheinlich werde ich mir aber in nächster Zeit noch ein indepth Buch für Python kaufen. Ich bin zwar relativ fit in OOP aber Python bzw dynmische Sprachen sind auch ein wenig anders.
Ich äugle momentan auf " Python in a Nutshell, Second Edition (In a Nutshell) " da mir die C# Variante sehr gut gefallen hat.
Ich habe schon in einigen Programmiersprachen programmiert (Cobol, PL/1, RPG, Fortran, C, C++, Pascal, PHP, Java, ...), aber Python ist meine wirklich große Liebe.kantaki hat geschrieben:Und ich muss sagen bis jetzt finde ich die Sprache sehr sehr schön.
Schmeiß noch einen Haskeller rein, dann beginnt erst der Spaß
Python ist natürlich wesentlich produktiver, in gewissen Bereichen.
Nicht zu verachten ist auch, wenn jemand extremst viel und gut C kann, ist er i.d.R. produktiver, als jemand der erst mit Python beginnen würde.
Deren Argumentationsstrang richtet sich genau nach diesem Argument. Das ist aber natürlich zu kurz gegriffen. Wenn, dann sollte man gleiche Levels vergleichen und da ist Python in einigen Bereichen wesentlich produktiver, z.B. NLP.
Es gibt aber natürlich für gewissen Bereiche noch produktiviere Sprachen, bswp. Matlab/Octave/R für mathematische Sachen und Statistik-Programmierung.
Python ist natürlich wesentlich produktiver, in gewissen Bereichen.
Nicht zu verachten ist auch, wenn jemand extremst viel und gut C kann, ist er i.d.R. produktiver, als jemand der erst mit Python beginnen würde.
Deren Argumentationsstrang richtet sich genau nach diesem Argument. Das ist aber natürlich zu kurz gegriffen. Wenn, dann sollte man gleiche Levels vergleichen und da ist Python in einigen Bereichen wesentlich produktiver, z.B. NLP.
Es gibt aber natürlich für gewissen Bereiche noch produktiviere Sprachen, bswp. Matlab/Octave/R für mathematische Sachen und Statistik-Programmierung.
NLP?Gregorrr hat geschrieben: Nicht zu verachten ist auch, wenn jemand extremst viel und gut C kann, ist er i.d.R. produktiver, als jemand der erst mit Python beginnen würde.
Deren Argumentationsstrang richtet sich genau nach diesem Argument. Das ist aber natürlich zu kurz gegriffen. Wenn, dann sollte man gleiche Levels vergleichen und da ist Python in einigen Bereichen wesentlich produktiver, z.B. NLP.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
@Gregorrr: C ist weitaus weniger ausdrucksstark und abstrakt als Python, mithin ist es sehr gewagt, aus diesen beiden Sprachen einen in der Typisierung begründeten Unterschied in der Produktivität zu konstruieren. So ziemlich jeder Sprache außer Brainfuck, Befunge und PHP ist produktiver als C, gleich welches Typsystem sie besitzt.
Sobald sich Sprachen auf annähernd gleichem Abstraktionsniveau bewegen, beispielsweise Python und C#, oder OCaml und Haskell, ist es unmöglich, die Produktivität dieser Sprachen gegeneinander abzuwägen, zumal bei komplexe Programme ohnehin wesentlich stärker von der Qualität verschiedener Bibliotheken abhängen als von der Sprache selbst.
Ohnehin geht es in dieser Diskussion um Typisierung und nicht um die wie auch immer geartete Produktivität von Sprachen.
Sobald sich Sprachen auf annähernd gleichem Abstraktionsniveau bewegen, beispielsweise Python und C#, oder OCaml und Haskell, ist es unmöglich, die Produktivität dieser Sprachen gegeneinander abzuwägen, zumal bei komplexe Programme ohnehin wesentlich stärker von der Qualität verschiedener Bibliotheken abhängen als von der Sprache selbst.
Ohnehin geht es in dieser Diskussion um Typisierung und nicht um die wie auch immer geartete Produktivität von Sprachen.
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
Vermutlich Natural Language Processing. Vermutlich nicht Neuro-Linguistisches Programmieren. *brrr*Kebap hat geschrieben:NLP?Gregorrr hat geschrieben:NLP.
In specifications, Murphy's Law supersedes Ohm's.
Ja, ich meinte Natural Language Processingpillmuncher hat geschrieben:Vermutlich Natural Language Processing. Vermutlich nicht Neuro-Linguistisches Programmieren. *brrr*Kebap hat geschrieben:NLP?Gregorrr hat geschrieben:NLP.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Argumente zu was? Im wesentlichen werden da halt die Stereotypen vorgekaut, wie toll etwa geschweifte Klammern sind (ja ne, ist klar, siehe CoffeeScript), wie toll es ist alle Typennamen immer hinschreiben zu müssen und wie schnell C++ ist. Wenn ich C++ programmiere und die Wikipedia-Seite zu Python durchlese, kann ich auch so Argumente bringen.kantaki hat geschrieben:Trotzdem würde ich gerne ein paar Argumente von Python Nutzern hören
Ich denke die Anzahl der Fehler die durch Tippfehler verursacht werden von C++-Leuten groß übertrieben werden. Außer sie Tippen indem sie mit dem Kopf auf die Tastatur schlagen, aber in Python kommt beim Testen halt ein NameError, Problem wird behoben, fertig. Statische Typsysteme haben auch Vorteile, aber dieser Vertipper-Schutz wird großartig übertrieben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Es kann manchmal zu etwas schwer zu findenden Fehlern kommen, wenn z.B. innerhalb einer Schleife ein Wert neu an einen bereits außerhalb der Schleife bekannt gemachten Namen gebunden werden soll. Macht man dort einen Tippfehler, dann wird innerhalb der Schleife "versehentlich" ein neuer Name angelegt, statt den schon bestehenden zu benutzen. Das würde bei statisch typisierten Sprachen wohl etwas früher auffallen, weil dort stattdessen vom Compiler ein Fehler gemeldet würde. Ich glaube, das war gemeint. Ist aber auch nur ein Randfall, der jetzt nicht sooo ins Gewicht fällt.Leonidas hat geschrieben:Ich denke die Anzahl der Fehler die durch Tippfehler verursacht werden von C++-Leuten groß übertrieben werden. Außer sie Tippen indem sie mit dem Kopf auf die Tastatur schlagen, aber in Python kommt beim Testen halt ein NameError, Problem wird behoben, fertig.
@snafu: Vor dem Fehler schützt mich eigentlich schon der simple (im Vergleich zu IDEs) Editor, den ich verwende. Wenn ich den Namen vor der Schleife schon mal geschrieben habe, greift innerhalb der Schleife die Autovervollständigung vom Editor und macht es mir schwer mich so zu verschreiben, dass ein neuer Name entsteht.
Ausserdem gibt es ja noch statische Code-Analyse. Hier mal Dein Beispiel:
Dazu sagt pylint:
Da brauchte ich also gar nicht lange selber suchen.
Ausserdem gibt es ja noch statische Code-Analyse. Hier mal Dein Beispiel:
Code: Alles auswählen
def f():
spam = 0
for i in xrange(42):
span = i
return spam
Code: Alles auswählen
W: 4:f: Unused variable 'span'
Mit den richtigen Tools ist das kein Problem, wobei das von der Sprachspezifikation selbst (in Gestalt eines Compilers) bei Python halt nicht abgefangen wird. Und eher simplen Editoren (z.B. Gedit), die aber durchaus produktiv für Python-Programmierung genutzt werden, fällt sowas auch nicht auf bzw die bieten keine Autovervollständigung an. Ich will hier aber auch eigentlich keine großartige Diskussion anfangen, sondern wollte nur erklären, was in dem verlinkten Thread sehr wahrscheinlich mit "Tippfehler" gemeint war...