Vor- und Nachteile diverser Script- und Programmiersprachen



  • Neku schrieb:

    Ich mag OpenSource nicht und ich werde auch keine OpenSource-Programme erstellen, bis mir einer sagen kann was das bringen soll.

    nur so kann deine neue sprache bekannt und eventuell beliebt werden. bei dem wust an programmiersprachen, die es gibt, haste keine andere chance.



  • Blue-Tiger schrieb:

    Neku schrieb:

    Dummie schrieb:

    Hi

    Hi. 😃

    Dummie schrieb:

    Der -- und ++ Operator sollte vorhanden sein als Kommentare eigenen sich:
    ', #, //...

    # ist Preprocessor, ' ist für Strings.
    Die einzigen Kommentar-Ops die ich bisher eingeplant habe: //, /*, #!

    #! ist das Shebang-Zeichen unter Linux, nicht wirklich sinnvoll das als Kommentar zu verwenden 😉 ( http://de.wikipedia.org/wiki/Shebang )

    Ansonsten stellt fuer mich Python das Maß aller Dinge dar, was ich bisher an Programmiersprachen kennen gelernt habe. Das bietet eigentlich auch _nahezu_ alles, was du so aufgelistet hast.
    Allerdings hab ich mir LISP noch nie angeschaut 😉

    Ansonsten haben wir das Thema bereits unter:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-144430.html

    allerdings ists dort ziemlich OT geworden.

    Deswegen erlaube ich ja #! als Kommentar - damit es unter Linux gewohnt verwendet werden kann 😉

    Python hab ich gestern auch entdeckt. Häte nicht gedacht, dass es soetwas schon gibt. Aber Programmiersprachen, in denen man Einrückungen verwenden muss, mag ich nicht - ist wohl Ansichtssache.

    Danke für den Link, werde mir das mal durchlesen.

    mortino schrieb:

    Neku schrieb:

    Ich mag OpenSource nicht und ich werde auch keine OpenSource-Programme erstellen, bis mir einer sagen kann was das bringen soll. Ich kann nicht Monate in ein Projekt investieren für nichts - darunter leidet mein RL schwerst 😞 Wenn es sich aber irgendwie lohnen würde wäre ich wohl dabei 🙂

    hihi ... sitzt du mit Supermandress und Maske vor dem PC oder wie meinst du das mit dem RL? Ich hab schon von Leuten gehört die das Programmieren zu ihrem Beruf gemacht haben 😉
    Aber was ich mich wirklich frage, wenn du nicht an OpenSource interessiert bist, wie sieht denn dann deine Zielgruppe aus für die du diese neue Sprache entwickeln willst. Bisher hört sich das ganze doch eher nach einer Entwicklung an, was dir am besten gefällt. Was wiederum nicht heisst, dass das anderen gefallen muss. Insofern wär doch OpenSource gar nicht mal so dumm oder?

    Naja, wenn man größere Projekte alleine programmiert, dann wird das schon ziemlich zeitintensiv. In der Vergangenheit hab ich teilweise täglich von morgens bis abends programmiert [ausgenommen natürlich Schultage]. Ich hab auch schon Monate mit Reverese Engineering verbracht, was noch länger dauert, da man erstmal von Assembler in C++ übersetzen muss, um dann erst selbst Features coden zu können. Von irgendwas muss ich ja auch leben 😉
    Andere Programmierer frage ich natürlich auch, was sie an einer Programmiersprache bevorzugen und was nicht - so versuche ich einen möglichst guten Mittelweg zu finden. Ich hab die letzten zwei Tage damit verbracht über Namespaces zu diskutieren und bin noch lange nicht fertig 🙂
    OpenSource hat mich bisher [für eigene Projekte] nicht wirklich überzeugt. Ich frage mich inzwischen auch, ob das angefangene Informatikstudium eine so gute Idee war, denn dank OpenSource gibt es ja so ziemlich alles kostenlos.

    @net: Wie gesagt, ich schließe OpenSource nicht aus, aber bevorzuge es aber auch nicht. Ich kann mich jederzeit umentscheiden.



  • Neku schrieb:

    Mir persönlich gefallen z.B. nicht-typgebundene Variablen sehr, so dass man nicht immer darauf achten muss wo man die Variable wie benutzt, dass man nichts überladen muss

    Oh Gott. Damit öffnest du Priogrammierfehler aber alle Tore. Ich weise irrtümlich einer Zählvariabelen eine zeichenkette zu, merke es nicht und suche Stunden lang den Fehler. Da kommt freude auf. Wenn du jetzt auch noch darauf bestehst, dass man Variablen auchnicht deklarieren muss, dann aber guten Nacht.



  • Gast Luckie schrieb:

    Neku schrieb:

    Mir persönlich gefallen z.B. nicht-typgebundene Variablen sehr, so dass man nicht immer darauf achten muss wo man die Variable wie benutzt, dass man nichts überladen muss

    Oh Gott. Damit öffnest du Priogrammierfehler aber alle Tore. Ich weise irrtümlich einer Zählvariabelen eine zeichenkette zu, merke es nicht und suche Stunden lang den Fehler. Da kommt freude auf. Wenn du jetzt auch noch darauf bestehst, dass man Variablen auchnicht deklarieren muss, dann aber guten Nacht.

    naja, strings und nichtstrings trennen wir mal. strings bekommen ein $ an den variablennamen angehängt.
    ich sag nur
    ***** 38911 bytes free *****



  • volkard schrieb:

    ***** 38911 bytes free *****

    stimmt genau. die zahl haste dir aber gut gemerkt...



  • Gast Luckie schrieb:

    Neku schrieb:

    Mir persönlich gefallen z.B. nicht-typgebundene Variablen sehr, so dass man nicht immer darauf achten muss wo man die Variable wie benutzt, dass man nichts überladen muss

    Oh Gott. Damit öffnest du Priogrammierfehler aber alle Tore. Ich weise irrtümlich einer Zählvariabelen eine zeichenkette zu, merke es nicht und suche Stunden lang den Fehler. Da kommt freude auf. Wenn du jetzt auch noch darauf bestehst, dass man Variablen auchnicht deklarieren muss, dann aber guten Nacht.

    Deklarieren muss man auch nicht. Hast du schonmal mit einer solchen Sprache gearbeitet? z.B. LUA? Wenn man damit arbeitet, dann verhält man sich schon beim Programmieren anders uznd achtet auf soetwas. Bei deinem Beispiel etwa wirst du wohl für die Zählvariable ++ verwenden, was bei einem String in einer Exception enden wird.
    Ich überlege aber auch, wie man auf Wunsch möglichst einfach sicherstellen kann, dass eine Variable einen bestimmten Typ hat. Theoretisch könnte man eine Ergänzung zu Casts machen, welche eine Exception wirft, sobald eine Variable nicht beinen bestimmten Typ hat.
    Bei PHP, LUA, Javascript & co funktionieren nicht-typgenubdene Variablen doch wunderbar.

    volkard schrieb:

    Gast Luckie schrieb:

    Neku schrieb:

    Mir persönlich gefallen z.B. nicht-typgebundene Variablen sehr, so dass man nicht immer darauf achten muss wo man die Variable wie benutzt, dass man nichts überladen muss

    Oh Gott. Damit öffnest du Priogrammierfehler aber alle Tore. Ich weise irrtümlich einer Zählvariabelen eine zeichenkette zu, merke es nicht und suche Stunden lang den Fehler. Da kommt freude auf. Wenn du jetzt auch noch darauf bestehst, dass man Variablen auchnicht deklarieren muss, dann aber guten Nacht.

    naja, strings und nichtstrings trennen wir mal. strings bekommen ein $ an den variablennamen angehängt.
    ich sag nur
    ***** 38911 bytes free *****

    Da fehlt mir wohl ne Story - worum geht's?



  • In PHP kann man beihnahe durch alle Typen kreuz und quer casten [von Klassen und Ressourcen mal abgesehen]. int -> array, string -> array, array -> boolean - irgendwas kommt schon dabei raus.

    ich finde eine Sprache sollte nur erlauben was auch Sinnvoll ist.
    wie sinnvoll ist den int -> array ? 123456 -> [1],[2],[3],[4],[5],[6] wer braucht sowas?
    string -> array: ein String ist ja schon ein Array von Chars.
    array -> boolean: 😕 😕



  • Neku schrieb:

    Bei deinem Beispiel etwa wirst du wohl für die Zählvariable ++ verwenden, was bei einem String in einer Exception enden wird.

    keine exceptions, sorg einfach dafür dass ++ immer definiert ist. ein zahl wird um 1 hochgezählt (auch floats, also nicht um 0.00000001 oder sowas). bei zeichenketten zählste das letzte element hoch, ist es 'Z' dann wird's 'A' und es gibt einen überlauf zum vorletzen element. bei struct und arrays zählt ++ alle members hoch usw...

    Neku schrieb:

    Da fehlt mir wohl ne Story - worum geht's?

    commodore basic v2



  • DEvent schrieb:

    In PHP kann man beihnahe durch alle Typen kreuz und quer casten [von Klassen und Ressourcen mal abgesehen]. int -> array, string -> array, array -> boolean - irgendwas kommt schon dabei raus.

    ich finde eine Sprache sollte nur erlauben was auch Sinnvoll ist.
    wie sinnvoll ist den int -> array ? 123456 -> [1],[2],[3],[4],[5],[6] wer braucht sowas?
    string -> array: ein String ist ja schon ein Array von Chars.
    array -> boolean: 😕 😕

    Falsch.
    int -> array erzeugt ein Array, dass den int-Wert als einziges Element hat.
    string -> array macht das Gleiche mit einem String.
    array -> boolean verwende ich recht häufig bei "if (array)".(bool)array)". (bool)array ist FALSE, wenn das Array leer ist, ansonsten TRUE.

    net schrieb:

    Neku schrieb:

    Bei deinem Beispiel etwa wirst du wohl für die Zählvariable ++ verwenden, was bei einem String in einer Exception enden wird.

    keine exceptions, sorg einfach dafür dass ++ immer definiert ist. ein zahl wird um 1 hochgezählt (auch floats, also nicht um 0.00000001 oder sowas). bei zeichenketten zählste das letzte element hoch, ist es 'Z' dann wird's 'A' und es gibt einen überlauf zum vorletzen element. bei struct und arrays zählt ++ alle members hoch usw...

    Neku schrieb:

    Da fehlt mir wohl ne Story - worum geht's?

    commodore basic v2

    Dass Zahlen bei ++ um 1 erhöht werden ist klar. Ob ich Zahlen in Integers ind Floats trenne weiß ich noch nicht. LUA hat z.B. einen einzigen Zahlentyp und ich muss mir noch überlegen, welche Vor- und Nachteile ein solcher Typ hat. Das mit den Strings finde ich ne sehr komische Idee. Exception halte ich hier für angebracht. Wer dennoch einen solchen String möchte, kann ja das String-Objekt ändern oder ein neues davon ableiten. Die Idee für Arrays finde ich interessant.

    Commodore? das war eindeutig vor meiner Zeit 🙂



  • Gast Luckie schrieb:

    Neku schrieb:

    Mir persönlich gefallen z.B. nicht-typgebundene Variablen sehr, so dass man nicht immer darauf achten muss wo man die Variable wie benutzt, dass man nichts überladen muss

    Oh Gott. Damit öffnest du Priogrammierfehler aber alle Tore. Ich weise irrtümlich einer Zählvariabelen eine zeichenkette zu, merke es nicht und suche Stunden lang den Fehler. Da kommt freude auf.

    Die Prüfungen werden von der Compilezeit auf die Laufzeit. Wenn der Fehler auftritt, dann tritt er auf, egal, ob er zur Compilezeit festgestellt wurde oder erst zur Laufzeit und er ist in beiden Fällen gelich leicht oder schwer zu finden. (Solange wir von einer strengen Typisierung ausgehen.)
    Das Problem ist, dass das ganze nur in sehr selten auftretenden Situationen passiert. Das heißt der Fehler bleibt möglicherweise sehr lange unentdeckt.



  • Neku schrieb:

    Deswegen erlaube ich ja #! als Kommentar - damit es unter Linux gewohnt verwendet werden kann 😉

    Ui, ganz schlechte Idee. 👎



  • nman schrieb:

    Neku schrieb:

    Deswegen erlaube ich ja #! als Kommentar - damit es unter Linux gewohnt verwendet werden kann 😉

    Ui, ganz schlechte Idee. 👎

    Jop echt schlechte Idee.

    @Neku: Nee genau andersrum, '#' muss als Kommentar erlaubt sein, damit man '#!' als
    Shebang benutzen kann!

    '#' ist imo sowieso das beste Kommentarzeichen für einzeilige Kommentare.



  • Neku schrieb:

    Das mit den Strings finde ich ne sehr komische Idee. Exception halte ich hier für angebracht.

    dann mach es doch so, dass ein ++ auf einen string ein leerzeichen anhängt.

    btw: exceptions sind eine blöde erfindung. gerade bei scriptsprachen nervt sowas nur denn ein script soll immer laufen, egal wieviele fehler drin sind. mach stattdessen lieber ausgaben nach stderr oder eine debug-konsole. natürlich brauchste auch ne möglichkeit zur laufzeit fehler zu erkennen bzw. zu behandeln aber da gibts ja bessere möglichkeiten z.b globale flags, spezielle rückgabewerte usw.



  • net schrieb:

    aber da gibts ja bessere möglichkeiten z.b globale flags, spezielle rückgabewerte usw.

    Was?
    Das ist doch gerade ein Vorteil von Exceptions, dass ich eben nicht mehr auf den
    Rückgabewert prüfen muss!

    net schrieb:

    denn ein script soll immer laufen, egal wieviele fehler drin sind. mach stattdessen lieber ausgaben nach stderr oder eine debug-konsole

    Also ich will nicht, das mein Script immer läuft. Was soll das für einen Vorteil haben? -
    Egal ob jetzt 2 zeiliges Bash Script oder tausend Zeilen Python Projekt.

    Und Ausgeben nach stderr ersetzen bestimmt keine Exceptions, sondern ergänzen sie.



  • icepacker schrieb:

    Das ist doch gerade ein Vorteil von Exceptions, dass ich eben nicht mehr auf den Rückgabewert prüfen muss!

    exceptions sind für besonders schlimme fehler, wenn ein programm nicht mehr weiterlaufen kann weil richtig was kaputt ist. sie reissen das programm aus seinem gewohnten ablauf, wie eine interrupt routine o.ä. für einfache fehler z.b. wenn irgendeine aktion schief läuft, ist es doch einfacher, irgendeinen status abzufragen.

    icepacker schrieb:

    Also ich will nicht, das mein Script immer läuft. Was soll das für einen Vorteil haben?

    dann führt das script den anderen, möglicherweise korrekten, code noch aus. würde ein script bei einem fehler abbrechen wär das nicht mehr der fall.



  • Das mit dem ++ und den Leerzeichen ist doch eine klasse Idee und noch dazu sehr intuitiv anzuwenden, frag mich echt warum derzeit aktuelle Sprachen das nicht bereits anbieten. Es gibt wohl keine bessere Umsetzung für die Definition der Inkrement Operation ("Erhöhung bzw. Verringerung eines numerischen Wertes", http://de.wikipedia.org/wiki/Inkrement) für den Datentyp String. Ich wär generell dafür mal eine Sprache anzubieten, bei der man eigene, zusätzliche Operatoren entwerfen kann:

    a+``#'.-^^b * 3;
    

    Na, habt ihr erraten, was das macht? Sollte eigentlich offensichtlich sein ..

    Ach ja, ich persönlich verwende Exceptions auch nur in besonders schlimmen Fällen, wie zum Beispiel, wenn die Welt untergeht, für alles andere verwend ich klarerweise Return Codes.



  • unkreativ`` schrieb:

    Das mit dem ++ und den Leerzeichen ist doch eine klasse Idee und noch dazu sehr intuitiv anzuwenden, frag mich echt warum derzeit aktuelle Sprachen das nicht bereits anbieten. Es gibt wohl keine bessere Umsetzung für die Definition der Inkrement Operation ("Erhöhung bzw. Verringerung eines numerischen Wertes", http://de.wikipedia.org/wiki/Inkrement) für den Datentyp String. Ich wär generell dafür mal eine Sprache anzubieten, bei der man eigene, zusätzliche Operatoren entwerfen kann:

    a+``#'.-^^b * 3;
    

    Na, habt ihr erraten, was das macht? Sollte eigentlich offensichtlich sein ..

    Ach ja, ich persönlich verwende Exceptions auch nur in besonders schlimmen Fällen, wie zum Beispiel, wenn die Welt untergeht, für alles andere verwend ich klarerweise Return Codes.

    🤡 👍



  • Ich kann zu dem Thema leider nicht viel mehr als meine Meinung zu PHP einbringen, aber vielleicht hilft es ja ein wenig. 🙂

    Ich programmiere jetzt seit ca. 5 Jahren in PHP und habe das Programmieren vorher mit Pascal gelernt. Das Problem bei PHP ist ganz einfach, dass es sehr leicht dazu führen kann, dass man schlechten Code schreibt. Gerade durch die kreuz-und-quer-konvertierungen von Variablen ist imho es extrem unschön und ich versuche davon loszukommen. Wenn man das ganze noch beruflich macht und Deadlines einzuhalten hat, dann kommt man früher oder später in die Situation, dass es irgendwann 'dirty' wird (Meiner Meinung nach).

    Vielleicht macht es einige Dinge einfacher bzw. schneller zu implementieren, aber die Fehlerquote ist doch schon recht hoch.



  • Wobei PHP nun ohnehin auch nicht gerade eine Sprache ist, an der man sich beim Entwurf einer neuen Sprache orientieren sollte.



  • icepacker schrieb:

    nman schrieb:

    Neku schrieb:

    Deswegen erlaube ich ja #! als Kommentar - damit es unter Linux gewohnt verwendet werden kann 😉

    Ui, ganz schlechte Idee. 👎

    Jop echt schlechte Idee.

    @Neku: Nee genau andersrum, '#' muss als Kommentar erlaubt sein, damit man '#!' als
    Shebang benutzen kann!

    '#' ist imo sowieso das beste Kommentarzeichen für einzeilige Kommentare.

    Aber wie ich oben schon geschrieben habe ist '#' leider schon vergeben, weshalb ich das nicht als Kommentar erlauben kann.

    net schrieb:

    Neku schrieb:

    Das mit den Strings finde ich ne sehr komische Idee. Exception halte ich hier für angebracht.

    dann mach es doch so, dass ein ++ auf einen string ein leerzeichen anhängt.

    btw: exceptions sind eine blöde erfindung. gerade bei scriptsprachen nervt sowas nur denn ein script soll immer laufen, egal wieviele fehler drin sind. mach stattdessen lieber ausgaben nach stderr oder eine debug-konsole. natürlich brauchste auch ne möglichkeit zur laufzeit fehler zu erkennen bzw. zu behandeln aber da gibts ja bessere möglichkeiten z.b globale flags, spezielle rückgabewerte usw.

    ++ auf einen String? Das entzieht sich ja jeglicher Logik :p

    Exceptions sind extrem hilfreich und an diversen Stellen auch nötig. Wenn dein Script eine Funktion aufruft, die nicht existiert, dann gibt es eben eine Exception - das kann man nicht einfach so 'übergehen'. Welche Fehler schweben dir denn vor, die man nur auf stderr sehen soll und bei denen das Script aber noch fortgesetzt werden kann?

    mantiz schrieb:

    Ich kann zu dem Thema leider nicht viel mehr als meine Meinung zu PHP einbringen, aber vielleicht hilft es ja ein wenig. 🙂

    Ich programmiere jetzt seit ca. 5 Jahren in PHP und habe das Programmieren vorher mit Pascal gelernt. Das Problem bei PHP ist ganz einfach, dass es sehr leicht dazu führen kann, dass man schlechten Code schreibt. Gerade durch die kreuz-und-quer-konvertierungen von Variablen ist imho es extrem unschön und ich versuche davon loszukommen. Wenn man das ganze noch beruflich macht und Deadlines einzuhalten hat, dann kommt man früher oder später in die Situation, dass es irgendwann 'dirty' wird (Meiner Meinung nach).

    Vielleicht macht es einige Dinge einfacher bzw. schneller zu implementieren, aber die Fehlerquote ist doch schon recht hoch.

    Schlechten Code kann es in jeder Programmiersprache geben - das hängt vor allem von der Person vor dem Monitor ab.
    In PHP kann man kreuz und quer konvertieren, da hast du recht. Manche der Konvertierungen sind gut, andere weniger.

    Besser stelle ich mir das z.B. folgendermaßen vor:

    implizite Konvertierungen:
    Number -> String
    Boolean -> String
    Null -> String (?)
    Array -> Boolean (false, wenn leer)
    String -> Boolean (false, wenn leer)
    Number -> Boolean (false, wenn 0)
    Null -> Boolean (immer false)

    zusätzliche explizite Konvertierungen:
    String -> Number
    * -> Null

    Wer die Liste fortsetzen kann - nur zu 😉

    Über die Konvertierung "Null -> String" müsste man nachdenken, denn immer wenn ich mit LUA programmiere stoße ich auf das Problem, dass ich umständliche ALle Variablen, die ich (z.B: zum Debuggen) ausgeben möchte, auf Null testen muss: "if bla == nil then bla = 'nil'; end".

    "String -> Boolean" ist jetzt leider nicht mehr so intuitiv wie "String -> Number", da man bei der zweiten Konvertierung den Inhalt des Strings in eine Zahl konvertiert, bei der ersten aber testet man nur, ob der String leer ist.

    So nebenbei: Ist der '+'-Operator als String-Konkatenator ausreichend, oder sollte man diesen Operator lieber den Zahlen vorbehalten?


Anmelden zum Antworten