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



  • ipsec schrieb:

    Die Aussage mit dem Scheme-Dialekt habe ich auch schon mehrfach gehört, aber immer nur von dir.

    Autoritaetsargumentation: http://norvig.com/python-lisp.html .

    Nur weil man womöglich einige Anweisungen und Konstrukte mehr oder weniger trivial in die andere Sprache übertragen kann, würde ich mich doch hüten, von einem Dialekt zu sprechen.

    Continuations sind nicht trivial. Wenn man Continuation unterstuetzt, dann hat man nicht ganz so viele Moeglichkeiten, das irgendwie zu implementieren.

    Python ist grundlegend objektorientiert, Scheme funktional

    Scheme unterstuetzt auch das, aber als Bibliothek. Wenn du damit dich nicht anfreunden kannst, dann schaue halt auf Lisp.



  • knivil schrieb:

    Python ist grundlegend objektorientiert, Scheme funktional

    Scheme unterstuetzt auch das, aber als Bibliothek. Wenn du damit dich nicht anfreunden kannst, dann schaue halt auf Lisp.

    Es geht doch nicht darum, ob und wie ich in Scheme objektorientiert oder in Python funktional programmieren kann. Auch nicht darum, dass ich (abgesehen von Bibliotheken) die meisten Pythonprogramme relativ einfach in Scheme übersetzen kann. Es geht darum, dass ich mit Python einen objektorientierten Stil verfolge (ich unterteile mein Problem in Klassen mit Methoden, welche voneinander abgeleitet sind etc.) und mit Scheme einen funktionalen. Das sind Unterschiede wie Tag und Nacht, die Frage, was man denn in Python grundsätzlich anders mache, kann man da durchaus mit „alles” beantworten. Das wird auch nicht besser, wenn für Integer und Tupel zufällig die gleiche Syntax benutzt wird.

    Um auf C# - Java zurückzukommen: im Prinzip macht man in C# alles so wie in Java (hier sogar wirklich) - abgesehen natürlich von Bibliotheken. Sogar die Syntax ist fast gleich. Wären die Bibliotheken nicht, könnte man sogar C#-Programme mit minimalem Aufwand (manchmal sogar mit null Aufwand) in Java-Programme umwandeln. Aber deswegen ist C# doch kein Java-Dialekt.



  • Mir geht es nicht um den Programmierstil, sondern um das was unter der Haube steckt. Mein VW wird kein Audi, nur weil ich andere Armaturen einbaue.

    Sogar die Syntax ist fast gleich.

    Du verstehst nicht.



  • Jetzt bin ich verwirrt. Was hat denn das „was unter der Haube steckt“ (was soll das sein?) mit der Dialektfrage zu tun?

    knivil schrieb:

    Sogar die Syntax ist fast gleich.

    Du verstehst nicht.

    Ich verstehe es tatsächlich nicht. Sag doch bitte mal konkret, was du meinst.



  • 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...


Anmelden zum Antworten