Dynamische Sprachen



  • Hallo,

    bisher kannte ich nur c# java c++ und lerne momentan meine erste dynamische Sprache - Python.

    Ich muss sagen meine Meinung ist gespalten. Ich finde Python teilwese sehr elegant, doch so richtig überzeugt bin ich noch nicht.

    zb keine types , Fehlererkennung erst bei Laufzeit.

    In meinem Buch ,das ich momentan lese ,wird behauptet das programmieren in Python bis zu 5x schneller ist als in c#. (Je nach Aufgabe)

    Kann das jemand bestätigen ?

    Ich möchte mich momentan mit Webdevelopment beschäftigen und so kann ich gleichzeitig auch meinen Horizont ein wenig erweitern.

    (Python + Django)

    Was haltet ihr von dynamischen Sprachen ?



  • Ich bin absolut kein Fan von dynamic Typing, auch wenn ich einsehe, dass es in Skripsprachen unter Umständen was bringen kann...



  • kantaki schrieb:

    In meinem Buch ,das ich momentan lese ,wird behauptet das programmieren in Python bis zu 5x schneller ist als in c#. (Je nach Aufgabe)

    Seh ich nicht so. Das kommt wirklich auf die Aufgabe an. Wenn du etwas ganz einfaches schreiben muss, was in Python ein Dreizeiler ist und du in C# erstmal ein Grundgerüst mit 20 Zeilen dafür brauchst, dann ja. Bei allen anderen Programmen nein.

    Meine Meinung über Python ist auch gespalten. Schon ganz nett für kleine Scripte oder für Macros als eingebettete Sprache, aber ich würde damit nichts ernsthaftes schreiben, das liegt mir einfach nicht. Richtige Objektorientierung und stark typisierte Sprachen finde ich einfach wesentlich besser für größere Programme.



  • dot schrieb:

    Ich bin absolut kein Fan von dynamic Typing, auch wenn ich einsehe, dass es in Skripsprachen unter Umständen was bringen kann...

    👍
    +1 für die Vorredner.



  • Mechanics schrieb:

    Richtige Objektorientierung

    Boeses Wort.
    Was du sagen wolltest ist: herkoemmliche Objektorientierung. Wobei ich jetzt nicht wuesste was dir da an Python fehlt...
    Und Python ist nebenbei bemerkt stark typisiert.

    Ich mag Python sehr. Die Libraries sind etwas strange, aber sonst ganz nett das Ding.



  • Mechanics schrieb:

    Richtige Objektorientierung und stark typisierte Sprachen finde ich einfach wesentlich besser für größere Programme.

    Python ist stark typisiert:

    >>> "2" + 3
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: cannot concatenate 'str' and 'int' objects
    

    Python ist stark typisiert, aber nicht statisch typisiert.



  • wenn die Spezifikation eines Softwareprojektes während der Entwicklung noch im Fluss ist oder rapid prototyping gefragt ist, kann eine Sprache wie python ein echter time saver sein. Selbst erlebt.

    was mir gar nicht gefällt, war, daß sich damals die Sprache noch gewandelt hat, sodaß ein mit python 2.3 entwickeltes Projekt für python 2.5 an zahlreichen Stellen geändert werden mußte (glaube es mußten alle string exceptions in exception Klassen gewandelt werden oder so was in der Richtung, jedenfalls war es nicht die reine Freude)

    ich frage mich allerdings, ob man die Vorteile von python nicth auch mit einem perl mit leicht geglätteter Syntax oder tcl oder einem objektorientierten Aufsatz auf perl etc hätte bekommen können.

    "richtige Objektorientierung" ist keine Frage von statischer oder dynamischer Typisierung, das gibt es mit beidem, obwohl ganz genau genommen eher mit dynamischer.



  • Shade Of Mine schrieb:

    Mechanics schrieb:

    Richtige Objektorientierung

    Boeses Wort.
    Was du sagen wolltest ist: herkoemmliche Objektorientierung. Wobei ich jetzt nicht wuesste was dir da an Python fehlt...

    Du hast Recht. Was ich eigentlich sagen wollte, ich vermisse die dynamische Typisierung normalerweise überhaupt nicht. Statische Typisierung ist mir wesentlich lieber. Und wenn ich ein Problem lösen muss, dann komm ich zu 99% auf einen rein objektorientierten Ansatz. Ich brauche da kein duck typing etc. Und bei meinem Stil und meinen Architekturen bieten sich dynamische Sprachen einfach nicht an, da ist mir eine "bodenständige" statisch typisierte Sprache einfach lieber.
    Dass Python stark typisiert ist seh ich nicht als Vorteil. Wenn schon dynamisch, dann richtig. Python ist mir immer noch viel zu starr und unflexibel. Da gefällt mir ja noch Ruby wesentlich besser.



  • Mechanics schrieb:

    Und wenn ich ein Problem lösen muss, dann komm ich zu 99% auf einen rein objektorientierten Ansatz. Ich brauche da kein duck typing etc.

    Ducktyping kann aber ein OOP Ansatz sein.
    Deine Argumentation macht irgendwie keinen Sinn...

    C++ Templates sind zB ducktyping!



  • Shade Of Mine schrieb:

    Mechanics schrieb:

    Und wenn ich ein Problem lösen muss, dann komm ich zu 99% auf einen rein objektorientierten Ansatz. Ich brauche da kein duck typing etc.

    Ducktyping kann aber ein OOP Ansatz sein.
    Deine Argumentation macht irgendwie keinen Sinn...

    C++ Templates sind zB ducktyping!

    Aber statisch, zur Kompilierzeit. Das kann durchaus ins Konzept passen. Da ist nichts dynamisches, wo man an tausend Stellen aufpassen muss, was genau jetzt passiert, weil jemand was vergessen oder sich vertippt hat.
    Im Grunde sage ich nichts gegen Python. Es gibt Menschen, die mögen dynamisch typisierte Sprachen, und es gibt Menschen, die mögen sie nicht. Ich gehör einfach zu den letzteren.



  • Ich kapier die argumentation einfach nicht. Mal ists gut, mal ists schlecht.



  • Shade Of Mine schrieb:

    Ich kapier die argumentation einfach nicht. Mal ists gut, mal ists schlecht.

    Weil statisches Ducktyping > dynamisches Ducktyping 😮



  • Shade Of Mine schrieb:

    Ich mag Python sehr. Die Libraries sind etwas strange, aber sonst ganz nett das Ding.

    Was waren die größten Projekte die du mit Python gemacht hast? Wieviele Mannmonate arbeit?



  • Zeus schrieb:

    Shade Of Mine schrieb:

    Ich kapier die argumentation einfach nicht. Mal ists gut, mal ists schlecht.

    Weil statisches Ducktyping > dynamisches Ducktyping 😮

    Und genauso ist starke typisierung > starke typisierung.
    verstehe. macht sinn.

    Ich finde es lustig wie die Argumentation sich immer wandelt wenn man neue Informationen in die Diskussion einbringt 😉 Meistens werden nur Argumente gesucht um Sprache A besser darzustellen als Sprache B.

    Dass es dabei aber einfach nur um Konzepte geht - und zB einige Sprachen deshalb the-best-of-both-worlds(tm) habe, wird dann gerne ignoriert. C# hat zB extra dynamische typisierung eingebaut - weil dynamische typisierung super ist. Das "Problem" ist type checking zur Laufzeit. Aber das tut man in sprachen wie C# und Java sowieso oft genug.

    PS: als kleiner Lesestoff: http://www.artima.com/intv/typing.html



  • Shade Of Mine schrieb:

    Zeus schrieb:

    Shade Of Mine schrieb:

    Ich kapier die argumentation einfach nicht. Mal ists gut, mal ists schlecht.

    Weil statisches Ducktyping > dynamisches Ducktyping 😮

    Und genauso ist starke typisierung > starke typisierung.
    verstehe. macht sinn.

    Nein du verstehst nix und dein Post macht ingesamt kein Sinn.



  • Da ist nichts dynamisches, wo man an tausend Stellen aufpassen muss, was genau jetzt passiert, weil jemand was vergessen oder sich vertippt hat.

    daß bei dynamischer Typisierung Typfehler vorkommen können, die erst zur Laufzeit offenbar werden, ist in der Theorie zwar nachteilig, die Frage ist aber, wie groß dieses Problem in der Praxis ist.

    ich habe beruflich in python programmiert und einige Privatprojekte in verschiedenen dynamischen Sprachen, und ich kann mich nach ein paar Stunden der Umgewöhnung (vorher nur C, Pascal, C++) an kaum einen Laufzeit-Typfehler erinnern, obwohl es am ersten Vormittag mit python vermutlich eine handvoll solcher Fehler gegeben hat, an die ich mich nicht mehr erinnere.

    man gewöhnt sich beim Programmieren zweierlei an: 1. vor dem Hinschreiben von bla.foo() zu überlegen, ob bla von einer Klasse ist, die auf foo() antwortet - 2. sprechende Variablen- und Klassennamen, sodaß ein Typfehler wie grundfarbe.anzahl_beine() auch ohne Fehlermeldung vom Compiler ins Auge stechen würde.



  • Shade Of Mine schrieb:

    Zeus schrieb:

    Shade Of Mine schrieb:

    Ich kapier die argumentation einfach nicht. Mal ists gut, mal ists schlecht.

    Weil statisches Ducktyping > dynamisches Ducktyping 😮

    Und genauso ist starke typisierung > starke typisierung.
    verstehe. macht sinn.

    Ich finde es lustig wie die Argumentation sich immer wandelt wenn man neue Informationen in die Diskussion einbringt 😉 Meistens werden nur Argumente gesucht um Sprache A besser darzustellen als Sprache B.

    So ein Quatsch. Irgendwie war doch von anfang an klar, was Mechanics meint, auch wenn er flasche Begriffe wie "richtige Objektorientierung und stark typisierte Sprachen" verwendet hat. Die Argumentation hat sich nie geändert. Bist du auch so "dumm" wenn du mit Kunden redest und bekommst es nicht hin rauszuhören, was sie wollen oder stellst du dich nur hier so?



  • Shade Of Mine schrieb:

    Zeus schrieb:

    Shade Of Mine schrieb:

    Ich kapier die argumentation einfach nicht. Mal ists gut, mal ists schlecht.

    Weil statisches Ducktyping > dynamisches Ducktyping 😮

    Und genauso ist starke typisierung > starke typisierung.
    verstehe. macht sinn.

    Ich finde es lustig wie die Argumentation sich immer wandelt wenn man neue Informationen in die Diskussion einbringt 😉

    Nein. Ich habe den Begriff "starke Typisierung" erst falsch verwendet, weil ich nicht auf meine Wortwahl geachtet habe. Dann kamen Aussagen wie "Python ist doch stark typisiert". Ja, ist es. Es ist dynamisch und stark typisiert. Macht für mich keinen Sinn. Wenn schon, dann stark statisch typisiert, das ist das was ich bevorzuge und was ich die ganze Zeit sagen wollte.
    Aber WENN schon eine dynamische Scriptsprache, und da spricht ja schon mal nichts dagegen, weil natürlich schreibe ich auch immer wieder mal kleinere und mittelgroße Scripte, dann will ich eine wirklich dynamische Sprache haben, mit der ich ein kleines überschaubares Programm elegant hinschreiben kann. Was sollte starke Typisierung denn in dem Kontext für einen Vorteil haben? In dem Fall sorgt es nur für Boilerplate Code.

    @buchstaben: Ich finde, das ist nicht nur in der Theorie ein Problem, das ist auch in der Praxis ein unglaubliches Riesenproblem, das gern totgeschwiegen wird. Ich habe schon in etlichen Firmen sehr viele Probleme gesehen, die Wochen Zeit gekostet haben, und die bei einfachen Compilerüberprüfungen nicht entstanden wären. Und welche Vorteile soll es jetzt genau bringen, diese Überprüfungen wegzulassen? Ich sehe keine. Bei einem Script mit unter 1000 Zeilen kein Problem, aber bei allem was drüber hinausgeht, tut man sicher meiner Meinung nach damit keinen Gefallen.

    Ich will Python nicht schlecht darstellen. Für mich persönlich überwiegen bei dynamischen Scriptsprachen die Nachteile die Vorteile deutlich. Das ist meine subjektive Meinung, wenn jemand was größeres in Python programmieren will, ich halte keinen davon ab.



  • Mechanics schrieb:

    Aber WENN schon eine dynamische Scriptsprache, und da spricht ja schon mal nichts dagegen, weil natürlich schreibe ich auch immer wieder mal kleinere und mittelgroße Scripte, dann will ich eine wirklich dynamische Sprache haben, mit der ich ein kleines überschaubares Programm elegant hinschreiben kann. Was sollte starke Typisierung denn in dem Kontext für einen Vorteil haben? In dem Fall sorgt es nur für Boilerplate Code.

    "wirkliche OOP", "wirkliche dynamische Sprache"
    😃



  • Ich finde Python sehr elegant und viel schöner als andere Sprachen wie ruby oder lua etc.
    Eins stört mich aber , und das ist "Fehler erst bei Laufzeit". Ich verstehe den Vorteil noch nicht ganz.

    zb

    def some_function(x):
    
    ...
    
    x = 123
    some_f:Dnction(x)
    

    Gibt es eine IDE die solche Fehler erkennt ?


Anmelden zum Antworten