Seite 1 von 2
[Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 12:40
von kantaki
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 )
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 13:19
von BlackJack
@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:
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):
...
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.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 13:28
von jerch
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.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 13:29
von pillmuncher
@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):
...
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 14:25
von cofi
jerch hat geschrieben:Hab ehrlich gesagt keine Lust, dort zu antworten, da die Diskussion z.T. unsachlich geführt wird.
Und jede menge FUD und faktisch falsche Aussagen. Halleluja.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 14:43
von snafu
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.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 15:16
von kantaki
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.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 15:22
von /me
kantaki hat geschrieben:Und ich muss sagen bis jetzt finde ich die Sprache sehr sehr schön.
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.

Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 17:39
von Malachite
Meine auch. Zwar vermisse ich einige Sachen an Python (automatisches Exception Handling, Type Hints), aber eigentlich ist diese Sprache quasi perfekt.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 18:25
von Gregorrr
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.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 18:58
von Kebap
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.
NLP?
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 19:21
von BlackJack
@Gregorrr: Für den Mathekram gibt es doch `numpy`, `scipy`, `matplotlib` & Co.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 19:26
von lunar
@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.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 19:43
von /me
Kebap hat geschrieben:NLP?
Natural Language Processing
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 19:47
von pillmuncher
Kebap hat geschrieben:Gregorrr hat geschrieben:NLP.
NLP?
Vermutlich
Natural Language Processing. Vermutlich nicht
Neuro-Linguistisches Programmieren. *brrr*
Re: [Diskussion] Dynamische Sprachen
Verfasst: Mittwoch 4. Juli 2012, 23:23
von Gregorrr
Ja, ich meinte Natural Language Processing

Re: [Diskussion] Dynamische Sprachen
Verfasst: Donnerstag 5. Juli 2012, 04:18
von Leonidas
kantaki hat geschrieben:Trotzdem würde ich gerne ein paar Argumente von Python Nutzern hören
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.
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.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Donnerstag 5. Juli 2012, 06:30
von snafu
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.
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.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Donnerstag 5. Juli 2012, 08:28
von BlackJack
@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:
Code: Alles auswählen
def f():
spam = 0
for i in xrange(42):
span = i
return spam
Dazu sagt pylint:
Da brauchte ich also gar nicht lange selber suchen.
Re: [Diskussion] Dynamische Sprachen
Verfasst: Donnerstag 5. Juli 2012, 08:46
von snafu
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...
