andy_m4
Admiral
- Registriert
- Aug. 2015
- Beiträge
- 7.831
SmalltalkBeBur schrieb:Puh, hast du ein Beispiel dafür?
Lisp (aber eher die Scheme-Familie als die Common Lisp-Familie)
:-)
Gut. Lisp ist da fast zu konsistent. Weil auch mathematische Operatoren prefix geschrieben werden. Das bringt zwar Konsistenz aber bricht mit der Gewohnheit, das sowas normalerweise zwischen den Operanden steht.
Ja. Das liegt aber auch daran, das elegante Sprachen auf Hardware treffen die nicht elegant sind.BeBur schrieb:Spätestens bei Sprachen, die effizient kompiliert werden können wird es dünn.
Simples Beispiel: Wenn Du unter C ein Integer hast, weißt Du halt, das passt in ein CPU-Register. Bei einer Sprache die davon wegabstrahiert und stattdessen den Typ "Ganze Zahl" hat, muss das natürlich irgendwie "einpassen" was zwangsläufig "Reibungsverluste" hat.
Man kriegt aber trotzdem ganz respektable Geschwindigkeiten, wenn man genug Optimierung drauf wirft.
Ja. In C++ kloppt man halt alles an Features rein was geht (und was sich zudem "zero-cost" implementieren lässt). Und dann kommt noch das Altlast-Problem hinzu mit all den Kram, den man zwar möglichst nicht mehr verwendet werden soll aber natürlich aus Kompatibilitätsgründen noch drin ist.BeBur schrieb:C++ ist diesbezüglich vermutlich ein schlimmeres Monster als Java.
Mit Rust hat man ja ein Beispiel für eine Sprache, die da ein deutliches besseres Design hat und aber gleichzeitig für die Anwendungsgebiete geeignet ist, die man sonst mit C++ (oder gar C) erledigt hat.
Also ich bin nicht mehr so in der Java-Entwicklung drin, daher sind meine Aussagen vielleicht etwas veraltet. Aber Java zeichnete sich immer dadurch aus, das die ein überschaubares Set an Sprachkonstrukten hatten. Das machte Java einerseits verbose, weil man dann umständlich Sachen bauen musste. Dafür hatte man häufig ein One-way-to-do-it, welches Java-Code gut lesbar machte
Und die waren auch eigentlich immer sehr konservativ, was das hinzufügen neuer Features angeht (man gönnte sich stattdessen lieber komplexe Frameworks ).
btw. Yukihiro Matsumoto ist großer Fan von Lisp und Smalltalk. Die Eigenschaften von Ruby kommen also nicht von ungefähr.BeBur schrieb:
Hab auch mal ne Weile mit Ruby was gemacht.
Bei dynamischen Sprachen hast Du natürlich häufig das Problem, das viele Fehler erst zur Laufzeit auffallen. Da muss man auf ne gute Testabdeckung achten. :-)
Java wurde ja damals schon unter Sun gepusht. Damals, als das WWW aufgekommen ist und man sich auf die Hype-Welle mit drauf gesetzt hat. Und durchaus ja nicht völlig zu Unrecht. Applets waren ja eine frühere Variante davon, was man heute mit WebApps macht.BeBur schrieb:Umfangreiches Marketing von Oracle als diese noch ein zentraler Player waren.