Welche Programmiersprachen haben noch eine große Zukunft vor sich, welche gelten als veraltet?



  • lolor schrieb:

    Ja? Ich brauche in Python immer mehr Zeilen, aber wahrscheinlich bin ich zu schlecht. Mal ein einfaches Beispiel: Lies eine Textdatei ein, erstelle eine map für Buchstaben/Häufigkeit im Text und gib diese sortiert aus. Ich würde gerne ein schönes Python 3 Script dafür sehen. (Sollte ja kein Aufwand sein.)

    Kann kein Python. Aber solche Beispiele haben doch null Aussagekraft.
    Oder was sagt Dir folgendes über C#?

    var map = File.ReadAllText(@"C:\filepath.txt")
                                .ToCharArray()
                                .GroupBy(c => c)
                                .OrderBy(c => c.Key)
                                .ToDictionary(c => c.Key, c => c.Count());
    
    foreach (var item in map.Keys)
        Console.WriteLine(item + " -> " + map[item]);
    


  • lolor schrieb:

    Mal ein einfaches Beispiel: Lies eine Textdatei ein, erstelle eine map für Buchstaben/Häufigkeit im Text und gib diese sortiert aus. Ich würde gerne ein schönes Python 3 Script dafür sehen.

    wie gefällt dir die smalltalk-Implementierung?

    ($a to: $z), ($A to: $Z) do: [ :c | Transcript show: 
    		c asString, ' -> ', 
    		((FileStream oldFileNamed: 'blabla.txt') 
    				contents occurrencesOf: c) asString; cr ].
    

    läßt sich in 1 oder 2 Minuten programmieren.

    - Kenner erkennen sofort, daß es sich hier wohl um ein Programm in einer funktionalen Programmiersprache handeln dürfte, denn es kommt ja ohne eine einzige explizite Variablenzuweisung aus :xmas1:



  • ipsec schrieb:

    knivil schrieb:

    Zeig mir, was Python grundsaetzlich anders macht als Scheme.

    Python ist grundlegend objektorientiert, Scheme funktional. Wie unterschiedlich muss es dann noch sein?

    Python ist sicher kein versteckter Scheme-Dialekt. Aber deine Argumentation passt trotzdem nicht:

    Wo ist Python bitte "grundlegend objektorientiert"? Python bietet Unterstützung für objektorientiertes programmieren. Aber es bietet genauso die Möglichkeit funktional zu programmieren. Scheme bietet zwar von Haus aus keine nette Unterstützung von OOP an. Aber mit einigen Libraries/Dialekten ist OOP dennoch möglich.



  • µ schrieb:

    Kann kein Python. Aber solche Beispiele haben doch null Aussagekraft.

    Es sagt nicht viel aus, aber mich interessiert das weil ich es selbst nicht schön hinbekommen habe. Und damit mein schlechtes Bild von Python sich nicht immer weiter bestätigt, bitte ich jetzt mal unsere Fanboys was Schönes zu basteln, vielleicht werde ich dann ja wieder umgestimmt. 😉



  • Was denn, keine Python Fans hier? 😞



  • Ich habe nichts zu tun und poste mal eine C++ Version. :xmas1:

    int main()
    {
      std::ifstream stream("test2.txt");
      std::string s((std::istreambuf_iterator<char>(stream)), std::istreambuf_iterator<char>());
      std::map<char, unsigned> char_map;
      std::for_each(s.begin(), s.end(), [&] (char c) { char_map[c]++; }); // Da range based for loops ja noch nicht implementiert sind
      for (auto i = char_map.begin(); i != char_map.end(); ++i) // gibt's von allem etwas.
        std::cout << i->first << ": " << i->second << '\n';
    }
    


  • In dem Thread hier wird echt jedes Thema durchgekaut. 🙄

    Zum letzten angesprochenen Thema könnte ich ein Scala und Haskell Programm beisteuern, die zumindest mit Blick auf die Kürze der Programme schwer zu schlagen sind (je 1 Zeile Code).



  • Dieser Thread hatte ein Thema?



  • Antoras schrieb:

    Zum letzten angesprochenen Thema könnte ich ein Scala und Haskell Programm beisteuern, die zumindest mit Blick auf die Kürze der Programme schwer zu schlagen sind (je 1 Zeile Code).

    Codegolfen?

    puts IO.read("test.txt").bytes.inject(Hash.new(0)){|h,i| h[i]+=1;h}.map{|k,v| "'#{k.chr}' -> #{v}"}.sort
    

    Ruby



  • In APL macht man das so (ohne Dateihandling)

    { (∪⍵),¨(+⌿⍵∘.=∪⍵) }input
    

    Leider ist Dateihandling nicht so schön. Daher schaut das ganze dann so aus

    { (∪⍵),¨(+⌿⍵∘.=∪⍵) }{⎕NREAD ⍵ 82(⎕NSIZE ⍵)0}('foo.txt'⎕NTIE 0 32)
    

    edit:
    oh 😞 das Forum ist nicht sehr APL freundlich. Dann eben als paste: http://codepad.org/RVfOhXMR

    edit^2:
    oh, hab übersehen, dass die Ausgabe alphabetisch sortiert sein soll. Also dann so http://codepad.org/Qu4JW3Hu



  • rüdiger schrieb:

    In APL macht man das so (ohne Dateihandling)

    { (∪⍵),¨(+⌿⍵∘.=∪⍵) }input
    

    Leider ist Dateihandling nicht so schön. Daher schaut das ganze dann so aus

    { (∪⍵),¨(+⌿⍵∘.=∪⍵) }{⎕NREAD ⍵ 82(⎕NSIZE ⍵)0}('foo.txt'⎕NTIE 0 32)
    

    edit:
    oh 😞 das Forum ist nicht sehr APL freundlich. Dann eben als paste: http://codepad.org/RVfOhXMR

    edit^2:
    oh, hab übersehen, dass die Ausgabe alphabetisch sortiert sein soll. Also dann so http://codepad.org/Qu4JW3Hu

    Braucht man da eine klingonische Tastatur zum Programmieren?



  • Michael E. schrieb:

    puts IO.read("test.txt").bytes.inject(Hash.new(0)){|h,i| h[i]+=1;h}.map{|k,v| "'#{k.chr}' -> #{v}"}.sort
    

    Ruby
    Codegolfen?

    warum nicht ... hier die optimierte smalltalk-Version in 56 Zeichen + Filename:

    (FileStream fileNamed: 'foo.txt') contents asBag sortedElements
    

    und mit Ausgabe auf Transcript, 20 Zeichen mehr:

    (FileStream fileNamed: 'foo.txt') contents asBag sortedElements printOn: Transcript
    


  • wftftw schrieb:

    Braucht man da eine klingonische Tastatur zum Programmieren?

    http://en.wikipedia.org/wiki/File:APL-keybd2.svg



  • lolor schrieb:

    Ja? Ich brauche in Python immer mehr Zeilen, aber wahrscheinlich bin ich zu schlecht. Mal ein einfaches Beispiel: Lies eine Textdatei ein, erstelle eine map für Buchstaben/Häufigkeit im Text und gib diese sortiert aus. Ich würde gerne ein schönes Python 3 Script dafür sehen. (Sollte ja kein Aufwand sein.)

    Da du es ja mit wenig Zeilen haben wolltest: 😉

    file = open('c:/Dem_lolor_sein_Post.txt', 'r').read()
    print(''.join( (k+' '+str(v)+'\n') for k, v in sorted(dict((c, file.count(c)) for c in file).items(), reverse=True, key=lambda x: x[1])))
    
    48
    e 40
    i 26
    n 20
    h 16
    s 14
    a 13
    r 13
    t 13
    c 12
    l 9
    u 7
    d 6
    b 5
    f 5
    m 5
    . 4
    o 4
    g 3
    p 3
    w 3
    ü 3
    , 2
    B 2
    I 2
    P 2
    S 2
    T 2
    k 2
    y 2
    x 2
    ) 1
    ( 1
    / 1
    3 1
    : 1
    ? 1
    A 1
    H 1
    J 1
    M 1
    L 1
    Z 1
    ä 1
    j 1
    ö 1
    z 1
    


  • ich würde sagen, diese Runde code golfen ging an smalltalk, oder schafft es jmd in < 56 Zeichen (+ Filename) ?

    (FileStream fileNamed: 'foo.txt') contents asBag sortedElements
    


  • oder schafft es jmd in < 56 Zeichen (+ Filename) ?

    Wie sieht die Ausgabe aus? So wie die von Dobi?

    Ansonsten zwei Haskellversionen, die allerdings beispielsweise folgende Ausgabe erzeugen (wenn mittels print ausgegeben):
    fromList [('a',10),('b',13)]
    (Wobei fromList nur in der ersten Version vorkommt)

    Version 1:
    Benötigt noch ein import Data.Map und import Control.Applicative

    fromListWith(+).flip zip(repeat 1)<$>readFile "foo.txt"

    Version 2:
    Benötigt noch import Data.List und wieder import Control.Applicative

    map(\s->(head s,length s)).group.sort<$>readFile "foo.txt"

    Ist natürlich wegen der ganzen weggelassenen Leerzeichen ziemlich hässlich, ist aber etwas kürzer als die Smalltalkversion.

    Edit: Sehe gerade, dass du die Leerzeichen gar nicht mitgezählt hast...



  • deine haskell Version 1 kommt auf 89 Z plus Filename, wenn ich mich nicht verzählt habe.

    die Leerzeichen habe ich bei mir mitgezählt, den Filenamen natürlich nicht (die Anführungszeichen aber schon), denn dessen Länge hat ja mit der Progsprache nichts zu tun.



  • !rr!rr_. schrieb:

    deine haskell Version 1 kommt auf 89 Z plus Filename, wenn ich mich nicht verzählt habe.

    Wie zählst du?

    fromListWith(+).flip zip(repeat 1)<$>readFile ""
    map(\s->(head s,length s)).group.sort<$>readFile ""
    (FileStream fileNamed: '') contents asBag sortedElements
    

    Ich zähle 48, 51, 56.

    Edit: ah, vermutlich hast du die Imports mitgezählt. Würde ich nicht machen, die kann man abhängig von der Umgebung auch anders einbinden.



  • !rr!rr_. schrieb:

    ich würde sagen, diese Runde code golfen ging an smalltalk, oder schafft es jmd in < 56 Zeichen (+ Filename) ?

    (FileStream fileNamed: 'foo.txt') contents asBag sortedElements
    

    Na das kann ich ja nicht auf mir sitzen lassen 😉

    h={};IO.read("foo.txt").chars{|i|h[i]||=0;h[i]+=1};h.sort    # bzw.
    h=Hash.new(0);IO.read("foo.txt").chars{|i|h[i]+=1};h.sort
    


  • ich würde sagen, diese Runde code golfen ging an smalltalk

    ... oder eine von smalltalk inspirierte Sprache, natürlich 😋


Anmelden zum Antworten