Lieblingsprogrammiersprache?
-
nman schrieb:
...die stampfen jetzt viel lieber was aus dem Boden, bei dem sie mit der Java-Ähnlichkeit kokettieren können und wo dann alle Welt begeistert ist, wenn einzelne Java-Schwächen zumindest ansatzweise ausgemerzt werden.
java hat die schwächen von c++ abgeschafft und c# baut sie wieder ein
-
Bashar schrieb:
BTW hab ich vor ein paar Tagen Nemerle entdeckt, das sieht ganz witzig aus. Eine an ML angelehnte funktionale Sprache mit einer ziemlichen Portion C# (es ist auch eine .NET-Sprache) und Lisp-ähnlichen Makros.
Hast du verstanden, warum die return abgeschafft haben?
Ich schreib statt
[cs]
public void createNewInstance()
{
deleteOld();
createNew();
}private void deleteOld()
{
if( instance == null )
return;... // fetter code
}// ODER:
...
foreach( ...
foreach( ...
return bla; // anstatt 2mal break
...
[/cs]nicht so gern alles in ein fettes if/when/unless
Ein paar Sachen haben aber lecker ausgeschaut, insbesondere so durchdachte Kleinigkeiten wie mit den Casts gefallen mir oder dass standardmäßig alles mehr auf immutable aus ist.
-
net schrieb:
java hat die schwächen von c++ abgeschafft und c# baut sie wieder ein
Autsch, ein Java-mögender Linux-Hasser.
Ich glaub ich mag Dich wirklich nicht.
-
Optimizer schrieb:
Hast du verstanden, warum die return abgeschafft haben?
Nemerle ist funktional, d.h. auf Ausdrücken basierend. return ist eine Anweisung. In Lisp, Haskell, ML usw. benutzt man für sowas auch keine return-Anweisung. Es ist so auch irgendwie natürlicher. In ML schreibst du z.B.
fun square n -> n * n ; wozu dort extra ein return? In rein funktionalen Programmen würde dann jeder Funktionsbody mit return anfangen.[cs]
private void deleteOld()
{
if( instance == null )
return;... // fetter code
}
[/cs]der // fette Code gehört in eine eigene Funktion refactored :p
Das ist einfach der geschmackliche Unterschied von funktional und imperativ. Du schreibst idR keine Anweisungssequenzen, weil diese ohne Seiteneffekte sinnlos sind. Und wenn doch, sieht das eben ein wenig häßlicher aus als in imperativen Sprachen, das liegt in der Natur der Sache und ist meist sogar gewollt.
-
DrGreenthumb schrieb:
Aber die Tatsache das auf einmal jeder zumindest die Sprache mal ausprobiert oder sogar darin programmiert, beruht meiner Meinung nach nur auf dem generellen Hype der darum gemacht wird.
Bestes Beispiel ist ja D. Sicher auch eine tolle Sprache. Aber niemand benutzt D und wird D je benutzen. Dabei sind D und C# sicher nicht zu verschieden.
-
Optimizer schrieb:
Bashar schrieb:
BTW hab ich vor ein paar Tagen Nemerle entdeckt, das sieht ganz witzig aus. Eine an ML angelehnte funktionale Sprache mit einer ziemlichen Portion C# (es ist auch eine .NET-Sprache) und Lisp-ähnlichen Makros.
Hast du verstanden, warum die return abgeschafft haben?
Ich schreib statt
[cs]
public void createNewInstance()
{
deleteOld();
createNew();
}private void deleteOld()
{
if( instance == null )
return;... // fetter code
}// ODER:
...
foreach( ...
foreach( ...
return bla; // anstatt 2mal break
...
[/cs]nicht so gern alles in ein fettes if/when/unless
Ein paar Sachen haben aber lecker ausgeschaut, insbesondere so durchdachte Kleinigkeiten wie mit den Casts gefallen mir oder dass standardmäßig alles mehr auf immutable aus ist.Naja, man erkennt ganz klar, dass du noch nie mit einer funktionalen Sprache gearbeitet hast. In einer rein funktionalen Sprache (wie Haskell, Clean) gibt es keine Seiteneffekte. "Auf immutalbe aus sein" ist deswegen das einzig sinnvolle. Eine Zuweisung wär ein Seiteeffekt. Es gibt also keine Zuweisungen. Eine Anweisung, die nichts zurück gibt hat keinen Sinn, da sie keinen Seiteneffekt verursacht. Demzufolge ist es sinnlos mehrere Anweisungen hintereinander abzuarbeiten. Wenn es aber eh nur einen einzelnen Ausdruck gibt und der zurückgegeben wird, wozu ein 'return'?
DrGreenthumb: Klar, aber Firmen wie MS haben 30 Jahre lang keinen Wert darauf gelegt, sowas wie Lisp für sich zu nutzen, die stampfen jetzt viel lieber was aus dem Boden, bei dem sie mit der Java-Ähnlichkeit kokettieren können und wo dann alle Welt begeistert ist, wenn einzelne Java-Schwächen zumindest ansatzweise ausgemerzt werden.
Lisp ist nunmal keine Sprache für Personalchefs.Warum entwickelt MS denn F#?
Bashar schrieb:
In ML schreibst du z.B.
fun square n -> n * n ;In welchem ML?
SML ist:fun square n = n * n ;
Caml ist:
let square n = n * n ;
Ich weiß, dass es noch so komische kleine ML-Dialekte gibt (hab mal von nem Lazy-ML gehört), aber gibt es wirklich ein großes ML, wo das so ist?
-
Helium, ich bin in der Syntax nicht mehr so fit. Ich hatte zuerst => bis mir wieder einfiel, dass man das bei function benutzt, also "musste" es -> sein
-
Helium schrieb:
Warum entwickelt MS denn F#?
Aus dem gleichen Grund aus dem sie auch J++ hatten; klägliche "Embrace, Extend and Extinguish"-Versuche.