Welche Programmiersprachen haben noch eine große Zukunft vor sich, welche gelten als veraltet?
-
knivil schrieb:
Zeig mir, was Python grundsaetzlich anders macht als Scheme.
Python ist grundlegend objektorientiert, Scheme funktional. Wie unterschiedlich muss es dann noch sein? Die Aussage mit dem Scheme-Dialekt habe ich auch schon mehrfach gehört, aber immer nur von dir. 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. C# kann man auch kaum als Java-Dialekt bezeichnen und das ist dem noch viel ähnlicher als Python Scheme.
-
Püton schrieb:
IhrStinkendenHippies schrieb:
Püton schrieb:
Python hat nicht mal richtige Threads die echt parallel laufen.
Wen juckts? Wenn ich 5k Zeilen C++ durch 1k Zeilen python ersetzen kann und das selbe Resultat hab...
Was hat deine Antwort jetzt mit Threads zu tun?
Genau so wenig wie echte Threads Grundvoraussetzung sind.
-
IhrStinkendenHippies schrieb:
Püton schrieb:
IhrStinkendenHippies schrieb:
Püton schrieb:
Python hat nicht mal richtige Threads die echt parallel laufen.
Wen juckts? Wenn ich 5k Zeilen C++ durch 1k Zeilen python ersetzen kann und das selbe Resultat hab...
Was hat deine Antwort jetzt mit Threads zu tun?
Genau so wenig wie echte Threads Grundvoraussetzung sind.
Wenn man so Kleinkram wie du programmiert schon.
-
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? Die Aussage mit dem Scheme-Dialekt habe ich auch schon mehrfach gehört, aber immer nur von dir. 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. C# kann man auch kaum als Java-Dialekt bezeichnen und das ist dem noch viel ähnlicher als Python Scheme.
knivil hat keine Ahnung was ein Dialekt ist, haben wir schon in anderen Threads festgestellt und er lernt es anscheinend auch nie mehr.
-
Püton schrieb:
IhrStinkendenHippies schrieb:
Püton schrieb:
IhrStinkendenHippies schrieb:
Püton schrieb:
Python hat nicht mal richtige Threads die echt parallel laufen.
Wen juckts? Wenn ich 5k Zeilen C++ durch 1k Zeilen python ersetzen kann und das selbe Resultat hab...
Was hat deine Antwort jetzt mit Threads zu tun?
Genau so wenig wie echte Threads Grundvoraussetzung sind.
Wenn man so Kleinkram wie du programmiert schon.
Python wird sich noch weiter durchsetzen.
Aus dem einfachen Grund weil man man einfacher und schneller das Projekt hinbekommt. Dann braucht man keinen Guru einzustellen, ein 0815-Frickler tut es auch.
-
IhrStinkendenHippies schrieb:
Püton schrieb:
Python hat nicht mal richtige Threads die echt parallel laufen.
Wen juckts? Wenn ich 5k Zeilen C++ durch 1k Zeilen python ersetzen kann und das selbe Resultat hab...
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.)
-
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:
ohdas 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