Login
Newsletter

Thema: Was ist Ihre bevorzugte Skriptsprache?

21 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
0
Von pvb am Fr, 30. Juli 2010 um 16:55 #

Ich kann doch C/C++
Und dafür habe ich auch eigene und fremde Bibliotheken
Also mache ich auch kleine Progrämmchen in C/C++
Was sollen Scriptsprachen da für Vorteile bringen ?

Ok, ich nutze PHP für Web Sachen und lege mir ab und zu ein paar shell Scripte an.

[
| Versenden | Drucken ]
  • 0
    Von T-Virus am Fr, 30. Juli 2010 um 17:05 #

    Für größere Sachen machen Programme Sinn aber wenn du bestimmte Dateien z.b. suchst und dies häufiger, dann ist ein Shellskript sinnvoller als ein eigenes Programm :/

    [
    | Versenden | Drucken ]
    0
    Von Python am Fr, 30. Juli 2010 um 17:26 #

    Also ich schreib Programme lieber in Python als in C++ wenn es nicht gerade auf Performance ankommt.

    Ganz einfach weil viel Arbeit weg fällt z.B. dank dynamischer Typenverwaltung oder der riesen Lib.

    [
    | Versenden | Drucken ]
    0
    Von dhusfiughdfi am Fr, 30. Juli 2010 um 18:29 #

    >Ich kann doch C/C++
    >Und dafür habe ich auch eigene und fremde Bibliotheken
    >Also mache ich auch kleine Progrämmchen in C/C++
    >Was sollen Scriptsprachen da für Vorteile bringen ?

    Die kleinen Progrämmchen werden viel schneller fertig, da weniger Code nötig ist. Außerdem sind sie viel leichter zu debuggen, da die Speicherverwaltung komplett vom Interpreter übernommen wird. Auch kann man ohne externe Libraries Stacktraces selber produzieren. Eigene alte C/C++-Bibliotheken kannst du mit praktisch allen modernen Skriptsprachen weiterhin ansprechen, wobei eine Portierung auch kein großer Aufwand sein sollte.

    >Ok, ich nutze PHP für Web Sachen und lege mir ab und zu ein paar shell Scripte an.
    Lern Ruby, da hast du die Einfachheit von Shellskripten und die Mächtigkeit von C++... ;-)

    [
    | Versenden | Drucken ]
    • 0
      Von pvb am Fr, 30. Juli 2010 um 18:51 #

      > Die kleinen Progrämmchen werden viel schneller fertig, da weniger Code
      > nötig ist. Außerdem sind sie viel leichter zu debuggen, da die
      > Speicherverwaltung komplett vom Interpreter übernommen wird.

      Das halte ich für ein Gerücht.
      Neben der Beherrschung der Sprache, kommt es im wesentlichen darauf an, die verwendeten Bibliotheken (in und auswendig) zu kennen. Bei mir ist das hauptsächlich Qt und meine eigene Bibliothek.

      Und da habe ich mit C/C++ nun mal mehr Routine.
      Wenn ich jetzt extra für kleine Progrämmchen was anderes nehmen sollte, als bei meiner normalen Entwicklertätigkeit,
      wäre ich bestimmt langsamer.

      [
      | Versenden | Drucken ]
      • 0
        Von Neuer am Fr, 30. Juli 2010 um 20:52 #

        Hallo Du,

        ich habe Qt fast immer nur mit Python benutzt, habe ich da was verpasst?

        Ausserdem kennst Du bestimmt das Konzept des Prototypen? Der wird nach ganz anderen Regeln entwickelt. Ich schreibe Programme in Ada, die ich vorher in Python als Prototyp hatte. Das geht dann natürlich viel langsamer, aber insgesamt viel schneller, weil ich am Anfang vorallem Agilität brauchte.

        Gruss,
        Kay

        [
        | Versenden | Drucken ]
        • 0
          Von Python am Fr, 30. Juli 2010 um 22:01 #

          Vorallem entfällt auch hier wieder mit PyQt sehr viel...

          z.B. entfallen komplett die Header Dateien

          [
          | Versenden | Drucken ]
          • 0
            Von pvb am Sa, 31. Juli 2010 um 09:13 #

            Vieles ist eben Geschmackssache.

            Qt ist in C++ geschrieben und daher ist es meiner Meinung nach am sinnvollsten auch in C++ zu programmieren, wenn man Qt verwenden will.

            Die eigenen Bibliotheken kann ich zwar mit http://swig.org auch für Scriptsprachen nutzbar machen aber ich sehe da noch nicht den Vorteil.
            Eher in Gegenteil sehe ich Nachteile. So zum Beispiel bei mehreren Threads, was zwar in Python unterstützt wird aber von den meisten Scriptsprachen nicht.

            [
            | Versenden | Drucken ]
            • 0
              Von Neuer am Sa, 31. Juli 2010 um 12:45 #

              Hallo Du,

              in Python kannst Du doch auch einfach Prozesse benutzen, die sich ihre Daten teilen. Das ist eh geschickter als Threads, wo Du nicht sauber genug trennst. Guckst Du http://docs.python.org/library/multiprocessing.html das ist neu und sieht eigentlich recht einfach aus, quasi Pythonic.

              Ich habe z.B. Python in einem Projekt XMLRPC ausprobiert, das ist total einfach so z.B. die Engine von der GUI zu trennen. Ratz fatz hast Du den Mehrwert, dass das Starten der GUI überall geht, mehrere gehen, und dass es ausfallen kann.

              Mit Threads in C++ rumzuhünern, ist dagegen kein Spaß und ziemlich zeitaufwendig, wenn Du einen Bug hast.

              Gruss,
              Kay

              [
              | Versenden | Drucken ]
              0
              Von Bolitho am Sa, 31. Juli 2010 um 12:48 #

              Qt ist in C++ geschrieben und daher ist es meiner Meinung nach am sinnvollsten auch in C++ zu programmieren, wenn man Qt verwenden will.

              Wenn dem so wäre, dürften alle Programme unter Linux nur in C geschrieben werden... :huh:

              ergo: Ziemlicher Unsinn diese obige Aussage!

              [
              | Versenden | Drucken ]
        0
        Von feindflug am Fr, 30. Juli 2010 um 21:13 #

        Also ich bin davon abgerückt Anwendungen noch in C zu schreiben. Zum Teil wegen miesen Design/Syntax(bspw. Zeichenketten und ncurses Geraffel) zum anderen wegen den Entwicklungsprozess(Testen & Wartung). Natürlich gibts auch häßliche Seiten bei Python, aber derzeit bin ich mit Python zufriedener.

        [
        | Versenden | Drucken ]
        0
        Von gfhdhnjmjkhf am Sa, 31. Juli 2010 um 13:36 #

        >Das halte ich für ein Gerücht.
        >Neben der Beherrschung der Sprache, kommt es im wesentlichen darauf an, die
        >verwendeten Bibliotheken (in und auswendig) zu kennen. Bei mir ist das
        >hauptsächlich Qt und meine eigene Bibliothek.

        Das wiederum halte ich für ein Gerücht. ;-) Eine Sprache lebt doch gerade davon eine große Menge an Libraries zu haben, damit man nicht bei *jedem* Programm erstmal 20-mal das Rad neu-erfinden muss. Klar hast du deine eigene Bibliothek, aber ich nehme an, dass du auch die andauernd erweitern musst. (Und sowas läuft ja auch nicht immer ohne Fehler ab...)

        Und glaub mir, die Bibliotheken unter C/C++ sind die Schlimmsten. Die meisten kann man intuitiv überhaupt nicht benutzen, da heißt es erstmal Anleitung lesen, Frustration, Anleitung lesen, Googlen, usw..... Unter Ruby dagegen sind Libraries kinderleicht zu installieren ("sudo apt-get install mechanize", im Code: "require 'mechanize'"). Dann kann man die interaktive Rubykonsole starten, und ein bisschen rumspielen. Ob du es glaubst oder nicht, aber viele Libraries kann man ohne Anleitung benutzen. Ich benutze zB die appengine-jruby Libs und die sind nahezu null dokumentiert, trotzdem funktionieren sie perfekt. Einmal in den Code reingeschaut, Funktionsnamen genommen, fertig. Unter C++ muss man gerade bei komplexen Libs wie Qt erst einmal alles mögliche Zeug initialisieren, Pointer weiterreichen usw usf. Oft sind diese Libraries vom Codestyle so invasiv, dass sie ihren Codestyle dem eigenen Code aufzwingen, es sei denn man betreibt gewissen Aufwand und schreibt einen Wrapper drumrum.

        Als früher fast nur C++ benutzt hatte, hatte ich deswegen auch kaum Libraries benutzt. Jetzt kann ich mit Ruby allemöglichen erdenklichen Mini-Projekte in 2-3 Stunden programmieren.

        Wie lange würdest du brauchen um einen Bot zu schreiben, der Freundesnetzwerke bei Facebook ausliest und in eine Datenbank schreibt? Dank Mechanize, Regular Expressions und Datamapper schreib ich dir so ein Teil in 1-2 Stunden!!! (Natürlich auf der Datenbank deiner Wahl!!) Ich wette mit dir, dass du so ein Progg auch ohne Plan von Ruby an einem Tag hinkriegen würdest... Oder letztens musste ich für meinen Chef (unter Zeitdruck) ein Progg schreiben, dass eine Datei Datensätzen in eine Geodatenbank schreibt. Komplett von Scratch hat es ca. 5 Minuten gedauert das Progg zu schreiben, weitere 5 Minuten und es war debugged und lief.

        >Und da habe ich mit C/C++ nun mal mehr Routine.
        >Wenn ich jetzt extra für kleine Progrämmchen was anderes nehmen sollte, als bei
        >meiner normalen Entwicklertätigkeit,
        >wäre ich bestimmt langsamer.
        Schon klar dass du in C/C++ mehr Routine hast, wenn du sonst keine anderen Sprachen benutzt. (PHP zähle ich mal nicht mit, weil man es nur für Webapps benutzen kann.) Aber es ist auch so, dass zB Ruby extrem leicht zu erlernen ist. Guckst du dir einmal ein Tutorial an, schon kannst du loslegen, weil die Befehle ähnlich wie in anderen Sprachen sind. Ruby, Python und Perl sind nicht wie C++. C++ muss mühsam erlernt werden, bis man erstmals in der Lage ist größere sinnvolle Programme zu schreiben. Ruby macht Spaß, immer, man kann direkt loslegen.

        Ich erinnere mich noch an die qualvolle Zeit damals, als ich nichtmal geschafft hatte ein Hello World kompiliert zu kriegen.

        Wenn ich Ruby programmiere oder debugge habe ich das Gefühl die ganze Zeit vorwärts zu kommen und super produktiv zu sein. Kein Rumärgern mit Pointern, Templates & Co. Es gibt nur noch Referenzen, die schlimmstenfalls Null sind, alles ist per default generisch... Wenn du schnell etwas ausprobieren willst, kannst du es schnell in die Ruby-Konsole reinpasten. (Z.B. eine Regular Expression oder um rauszufinden, welche Methoden ein Objekt anbietet...)

        Und nur mal um einen Eindruck der Fähigkeiten von Ruby zu kriegen, hier mal ein kleines TicTacToe-Progg: http://pastebin.org/435841
        halbe Stunde, 45 Zeilen, 1kB... Wie siehts mit der C++-Lösung aus? ;)

        [
        | Versenden | Drucken ]
        • 0
          Von pvb am Sa, 31. Juli 2010 um 14:56 #

          Hier mal unser Projekt:
          http://pvbrowser.org
          Die Server kann man da übrigens auch in Python programmieren.

          Hier die eigene Bibliothek, von der ich gesprochen habe:
          http://pvbrowser.org/pvbrowser/sf/manual/rllib/html/classes.html
          Damit und zusätzlich noch Qt,
          kann ich auch viele kleinere Progrämmchen schnell erstellen.

          [
          | Versenden | Drucken ]
          • 0
            Von arwerk,irdegrt am Sa, 31. Juli 2010 um 15:35 #

            Sicher, aber die Ruby-Lösung ist immer schneller erstellt und weniger Lines Of Codes. Hier mal ein Beispiel aus deiner Lib (http://pvbrowser.org/pvbrowser/sf/manual/rllib/html/rltime_8cpp_source.html):

            00263 t.year = year + time.year;
            00264 t.month = month + time.month;
            00265 t.day = day + time.day;
            00266 t.hour = hour + time.hour;
            00267 t.minute = minute + time.minute;
            00268 t.second = second + time.second;
            00269 t.millisecond = millisecond + time.millisecond;
            00270
            00271 y = t.year;
            00272 if(t.month > 12 || (t.month==12 && t.day==31 && t.hour>=24)) y++;
            00273 m = t.month;
            00274 if(t.month > 12 || (t.month==12 && t.day==31 && t.hour>=24)) m = 1;
            00275
            00276 switch(m)
            00277 {
            00278 case 1: // january
            00279 maxmonth = 31;
            00280 break;
            00281 case 2: // february
            00282 maxmonth = 28;
            00283 if(y%4==0) maxmonth = 29;
            00284 break;
            00285 case 3: // march
            00286 maxmonth = 31;
            00287 break;
            00288 case 4: // april
            00289 maxmonth = 30;
            00290 break;
            00291 case 5: // may
            00292 maxmonth = 31;
            00293 break;
            00294 case 6: // june
            00295 maxmonth = 30;
            00296 break;
            00297 case 7: // july
            00298 maxmonth = 31;
            00299 break;
            00300 case 8: // august
            00301 maxmonth = 31;
            00302 break;
            00303 case 9: // semptember
            00304 maxmonth = 30;
            00305 break;
            00306 case 10: // october
            00307 maxmonth = 31;
            00308 break;
            00309 case 11: // november
            00310 maxmonth = 30;
            00311 break;
            00312 case 12: // december
            00313 maxmonth = 31;
            00314 break;
            00315 default:
            00316 maxmonth = 0;
            00317 break;
            00318 }

            In Ruby wärs:
            ["year","month","day","hour","minute","secound","millisecond"].each{|z| eval "t.#{z} = #{z} + time.#{z}"}
            y = t.year
            if(t.month > 12 || (t.month==12 && t.day==31 && t.hour>=24)) y+=1
            m = t.month
            if(t.month > 12 || (t.month==12 && t.day==31 && t.hour>=24)) m = 1
            maxmonth = if [1,3,5,7,8,10,12].include?(m)
            31 # januar, march, may, july, august, october, december
            elsif m == 2
            (y % 4 == 0) ? 29 : 28 # february
            else
            30
            end
            #Wenn keiner der Monate zutrifft, wird maxmonth nil, womit man sich Abfrage wie "if #(maxmonth == 0) /* Fehler... */" spart, da arithmetische Operationen auf maxmonth #sofort eine Nilexception hevorrufen.


            Das sind 56 Zeilen vs. 12 Zeilen!!!


            Und wäre die Library in Ruby oder Python, könntest du auch von C/C++ aus zugreifen....

            Also wenn du mich fragst, hat C/C++ außerhalb der Systemprogrammierung und speziellen Nischenanwendungen keinen Nutzen mehr.

            [
            | Versenden | Drucken ]
            • 0
              Von pvb am Sa, 31. Juli 2010 um 15:53 #

              Das Innere der Library ist vielleicht länger,
              aber nicht deren Benutzung.

              Außerdem wirst Du an der Library sehen, dass das was mit Automatisierungstechnik zu tun hat. Bei Ruby ist da wahrscheinlich Schluß.

              PS:
              Die Library läuft übrigens nicht nur unter Unixoiden und Windows, sondern sogar unter OpenVMS.

              [
              | Versenden | Drucken ]
              • 0
                Von pvb am Sa, 31. Juli 2010 um 16:05 #

                Eine Anmerkung zur Kürze von Code

                Man kann in fast allen Sprachen Dinge sehr kurz formulieren.
                Besonders bekannt dafür ist Perl.

                Die Lesbarkeit eines Programmes steht aber dann wieder auf einem anderen Blatt.

                Bei ähnlichem Codingstil werden die Programme in fast allen Sprachen ähnlich viele Zeichen verbrauchen.

                [
                | Versenden | Drucken ]
              1
              Von Python am Sa, 31. Juli 2010 um 17:51 #

              Jetzt will ich mal ne A4 mit Code in dem Stil von dir:

              "["year","month","day","hour","minute","secound","millisecond"].each{|z| eval "t.#{z} = #{z} + time.#{z}"}
              y = t.year
              if(t.month > 12 || (t.month==12 && t.day==31 && t.hour>=24)) y+=1
              m = t.month
              if(t.month > 12 || (t.month==12 && t.day==31 && t.hour>=24)) m = 1
              maxmonth = if [1,3,5,7,8,10,12].include?(m)
              31 # januar, march, may, july, august, october, december
              elsif m == 2
              (y % 4 == 0) ? 29 : 28 # february
              else
              30
              end"

              Mal sehen wieviele Ruby Geeks dann diese A4 Seite problemlos checken ohne 10x zu lesen XD

              [
              | Versenden | Drucken ]
              • 0
                Von hefti am So, 1. August 2010 um 17:00 #

                Ja, man braucht lange um eine A4 Seite voll mit Metaprogrammierung zu verstehen, nur kann die eben auch so viel wie 10 Seiten ohne (immer unter Bedingung, dass es sinnvoll eingesetzt wird). 10 Seiten lesen, dauert auch länger als eine zu lesen.

                Das Problem bei Metaprogrammierung wie bei allen "cleveren" Sachen ist, dass es womöglich jemand überhaupt nicht oder falsch versteht. Ich würde daher instance_eval, class_eval oder eval nie ohne Kommentar benutzen, womit es dann natürlich wieder länger wird. ;-)

                [
                | Versenden | Drucken ]
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten