Studie zeigt C als beliebteste Sprache in offenen Projekten



  • u-ser_l schrieb:

    außerdem ist es in Smalltalk kürzer:

    (loop for i from 1 to 10 sum i) 
    (loop for i from 1 to 10 collect i) 
    => 18 Wörter 
    
    (1 to: 10) inject: 0 into: [ :s :i | s + i ].  
    (1 to: 10) collect: [ :i ].   
    => 16 Wörter
    

    die wörter zu zählen, würde ich mal nicht als maß nehmen. ich finde zum beispiel die syntax von Visual Basic in den OOP-sachen schöner als die von C++. da schreibt man alles sehr langatmig aus und kommt auf sehr sehr viele wörter. trotzdem fließt es mir aus den fingern und ich lese es wie einen roman, während bei C++ sowohl beim schreiben als auch beim lesen oft ein ruckeln zu verzeichnen ist.



  • volkard schrieb:

    das ist verdammt schön und elegant. ich hatte mich deshalb damals auch sofort in smalltalk verliebt.

    nanu ? 👍



  • u-ser_l schrieb:

    volkard schrieb:

    das ist verdammt schön und elegant. ich hatte mich deshalb damals auch sofort in smalltalk verliebt.

    nanu ? 👍

    versteh mich nicht falsch. ich liebe smalltalk nicht. ich mag es nichtmal wirklich. wir haben uns auseinandergelebt, sagt man da wohl. ich mag heute C++, aber ich hasse die syntax von C++. ist wohl sowas wie mit einer klugen toleranten fürsorglichen schönen ehefrau, die stinkefüße hat; Inschallah.



  • Nimm Python.



  • u-ser_l schrieb:

    (loop for i from 1 to 10 sum i) 
    (loop for i from 1 to 10 collect i) 
    => 18 Wörter 
    
    (1 to: 10) inject: 0 into: [ :s :i | s + i ].  
    (1 to: 10) collect: [ :i ].   
    => 16 Wörter
    

    aber die ausgabe fehlt oder?

    // scala, mit ausgabe
    List.range(1,11).foreach(print)   // ausgabe: 12345678910
    print (List.range(1,11).foldRight(0)(_+_)) // ausgabe: 55
    

    🙂



  • ;fricky schrieb:

    u-ser_l schrieb:

    (loop for i from 1 to 10 sum i) 
    (loop for i from 1 to 10 collect i) 
    => 18 Wörter 
    
    (1 to: 10) inject: 0 into: [ :s :i | s + i ].  
    (1 to: 10) collect: [ :i ].   
    => 16 Wörter
    

    aber die ausgabe fehlt oder?

    // scala, mit ausgabe
    List.range(1,11).foreach(print)   // ausgabe: 12345678910
    print (List.range(1,11).foldRight(0)(_+_)) // ausgabe: 55
    

    🙂

    Und du meinst C++ wäre kryptisch??



  • 1:10
    sum (1:10)
    


  • C++-Progger, Der wahre schrieb:

    Und du meinst C++ wäre kryptisch??

    naja, *räusper*, zugegeben, das aufsummieren sieht schlimm aus. aber so geht's auch noch:

    print (Array.range(1, 11).reduceLeft(_+_)) // ausgabe: 55
    

    Tim schrieb:

    1:10
    sum (1:10)
    

    auch ohne ausgabe, ne? welche sprache?
    🙂



  • noch was zum raten: wo geht das

    sum of 1 to 10
    

    ^^ausgabe 55. kein scherz, geht wirklich.
    🙂



  • 40 Zeichen und mit Ausgabe 🙂

    seq 10;seq -s ' ' 10|dc -e '?+++++++++p'
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    55
    


  • ;fricky schrieb:

    Tim schrieb:

    1:10
    sum (1:10)
    

    auch ohne ausgabe, ne? welche sprache?

    Matlab, und das gibt aus wenn kein Semikolon am Ende.



  • Rekord 😃

    1+2+...+10 mit 5 Zeichen APL:

    +/[i]i[/i]10
    

    oder mit 6 Zeichen in der Sprache J:

    +/i.11
    


  • kann es jemand mit 4 Zeichen ? 😕



  • Irgendwie am Thema vorbei, mir ging es eigentlich um die Implementierung von DSLs innerhalb einer Sprache und nicht darum wer den Kleinsten hat.


  • Mod

    u-ser_l schrieb:

    kann es jemand mit 4 Zeichen ? 😕

    Wenn du Sprachen in der Art von HQ9+ zulässt, mach ich es dir mit 0 bis 1 Zeichen.



  • ist Forth genügend DSL-fähig ? Denke schon.

    11 1 DO I . LOOP
    0 11 1 DO I + LOOP .
    


  • \newcount\s\s=0\newcount\n\n=1\loop\number\n\ \advance\s by\n\advance\n by1\ifnum\n<10\repeat\number\s\end
    
    1 2 3 4 5 6 7 8 9 10 55
    


  • sum [1..10]
    

    In Haskell (ist auch nur ein modernes Lisp)! Auch ist es nicht schlimm wie in der Lispversion mehr Woerter zu nutzen. Nennt sich literate programming. Die Smalltalkversion wird dem nicht gerecht.



  • knivil schrieb:

    Nennt sich literate programming.

    Der arme Knuth.



  • u-ser_l schrieb:

    ist Forth genügend DSL-fähig ? Denke schon.

    11 1 DO I . LOOP
    0 11 1 DO I + LOOP .
    

    Kann ich nicht beurteilen, dazu müsstest du schon noch ein Beispiel dazulegen wie es aussehen würde, wenn du Forth nutzt und keine in Forth implementierte DSL.

    Bei Common Lisp wäre eine Lisp-Variante:

    (let ((sum 0))
      (dotimes (i 10)
        (incf sum (1+ i)))
      (print sum))
    
    (let ((numbers nil))
      (dotimes (i 10)
        (push (1+ i) numbers))
      (print (nreverse numbers)))
    

    Egal wie man es macht, die loop-Varianten versteht jeder sofort ohne nachzudenken.


Anmelden zum Antworten