Lieblingsprogrammiersprache?
-
Ich finde das Lambda-Kalkül sehr geil.
Funktionale oder Logische Sprachen gefallen mir allgemein gut auch wenn ich mich bis jetzt nie intensiv damit beschäftigt habe, d.h. mal ein etwas größeres Programm geschrieben oder so.
Zur Hardwarebeschreibung und -synthese finde ich Esterel ziemlich brauchbar. Könnte früher oder später die Überladenen und zur Synthese teilweise unbrauchbaren Sprachen VHDL und Verilog ablösen ... hoffentlich. Btw kennt jemand Esterel?
C++ ist natürlich mein OOP Favorit aber besonders schön finde ich sie nicht mehr.
-
@Bashar: Wegen des Typsystems das dir da vorschwebt solltest du dir mal Dylan angucken. Ich denke das ist in etwa das, was du meinst.
Warum sollte man seine Zeit mit Scheme und Haskell vergeuden, wenn doch Lisp das Original ist? Hier an der Uni reden alle von Haskell. Gibt's Gründe für die Einarbeitung?
Wieso sollte man sein Zeit mit C++ und Java verschwenden, wenn Fortran doch das Original ist?
Haskell kennt Dinge, die Lisp nicht kennt, wie z.B. Pattern-Matching. Das sind einach ganz andere Sprachen. Warum also nicht angucken?Bezweifle ob das dermassen was geändert hätte .. zum Beispiel gibts für
Visual Studio auch eine Integration von F# (ebenfalls eine Sprache aus dem
Hause Microsoft) .. Wie oft hast du bereits davon gelesen, bzw wieviele
Projekte hast du bereits in dieser Sprache gesehen ?AFAIK arbeitet MS noch an F# und das was da ist, ist nur Beta oder bin ich da falsch informiert. Für die, die noch nichts davon gehört haben: F# ist ein O'Caml-Abkömmling, also ein ML-Dialekt.
-
space schrieb:
Ich finde das Lambda-Kalkül
DEN Lambda-Kalkül, bitte.
-
DrGreenthumb schrieb:
Wie gesagt, C# überzeugt ja nicht durch seine tollen Sprachfeatures sondern dadurch, das Microsoft sagt es ist toll und entsprechend seine ganzen Neuentwicklungen darauf aufbaut.
Das ließe sich sicher etwas neutraler formulieren. Es gibt Leute, die von Sprachfeatures der Sprache C# überzeugt sind, oder sie aus anderen Gründen als Marketing mögen.
Wenn du Lisp-Fan bist aber feststellen musst, dass es nicht Mainstream ist, tut es mir für dich leid, trotzdem finde ich etwas billig, dass alles auf's Marketing zu schieben und daraus schon den Schluss zu ziehen, dass C# eigentlich nur deshalb Erfolg hat (hat es das überhaupt? Mir sind keine Zahlen bekannt, die das belegen).Über Lisp sage ich jetzt lieber nicht zu viel, da ich es kaum kenne. Immerhin bleibt aber die Feststellung, dass es deutlich länger Zeit gehabt hat, sich zu etablieren, was scheinbar nicht so ganz gelungen ist und letztlich kann man das durchaus zumindest mal als groben Hinweis verstehen, dass es in seiner Gesamtheit vielleicht nicht so den Massengeschmack trifft, aus welchen Gründen auch immer und sei es von mir aus, weil die Leute Lisp nicht kapieren.
-
Daniel E. schrieb:
space schrieb:
Ich finde das Lambda-Kalkül
DEN Lambda-Kalkül, bitte.
Kalkül ist maskulinum und neutrum so wie das Wort Barock. Da aber die meisten neutrum verwenden, ist bei mir maskulinum. So hebt man sich von der Masse ab: Ein Hoch auf den Kalkül! Egal ob auf den Matrix-Kalkül, den Lambda-Kalkül oder den Nabla-Kalkül.
-
Optimizer schrieb:
Wenn du Lisp-Fan bist aber feststellen musst, dass es nicht Mainstream ist, tut es mir für dich leid, trotzdem finde ich etwas billig, dass alles auf's Marketing zu schieben und daraus schon den Schluss zu ziehen, dass C# eigentlich nur deshalb Erfolg hat (hat es das überhaupt? Mir sind keine Zahlen bekannt, die das belegen).
Ooch, Lisp steckt eigentlich überall drin, vom Emacs über Playstations bishin zur Software bei der NASA (mW im Hubble-Teleskop; sonst nehmen die ja nur noch ein kastriertes Ada -- C++, C, C#, Java fallen durch jede Sicherheitsklassifizierung).
Über Lisp sage ich jetzt lieber nicht zu viel, da ich es kaum kenne. Immerhin bleibt aber die Feststellung, dass es deutlich länger Zeit gehabt hat, sich zu etablieren, was scheinbar nicht so ganz gelungen ist und letztlich kann man das durchaus zumindest mal als groben Hinweis verstehen, dass es in seiner Gesamtheit vielleicht nicht so den Massengeschmack trifft, aus welchen Gründen auch immer und sei es von mir aus, weil die Leute Lisp nicht kapieren.
Dich hätte ich sehen wollen, als man gerade zu beginn der Neuzeit tausend Jahre alte demokratische Grundgedanken wieder ausgegraben hat: Nein, Demokratie hat den Massengeschmack nicht getroffen, seit tausend Jahren verwendet's kein Schwein mehr und kapieren tut's auch keiner. König rulez!!
Siehstema, das muß nicht unbedingt an der Sprache und deren Fähigkeiten liegen, sondern schlicht an der historischen Entwicklung. Und, sind wir ehrlich, Lisp war für Rechnersysteme um 1960 ein ziemliches Monster (Unix später ja auch) und hat deswegen nur in Nieschensystemen und diversen Inkarnationen überwintert, so daß es heute unüberschaubar viele Dialekte gibt.
-
Über Lisp sage ich jetzt lieber nicht zu viel, da ich es kaum kenne. Immerhin bleibt aber die Feststellung, dass es deutlich länger Zeit gehabt hat, sich zu etablieren, was scheinbar nicht so ganz gelungen ist und letztlich kann man das durchaus zumindest mal als groben Hinweis verstehen, dass es in seiner Gesamtheit vielleicht nicht so den Massengeschmack trifft, aus welchen Gründen auch immer und sei es von mir aus, weil die Leute Lisp nicht kapieren.
C# und Java sind Sprachen für nicht-Programmierer. Da kann man ganz ehrlich sein. Java kam zur richtigen Zeit, als die IT Branche boomte und auf einmal jeder ein Programmierer wurde. Ich kann programmieren bzw. glaube das zumindest. Deswegen kann ich mir Programmiersprachen von einem anderen Standpunkt aussuchen. Bei den meisten Projekten wird das nicht so gemacht. Wir wissen doch alle, wie Buzzwords um sich greifen. Auf einmal ist XML Toll, also baut man um sein proprietäres Binärformat einfach ein <![CDATA[ ... ]]> und schon kann auf der Featureliste "XML" Output stehen. Wenn in dem Branchenblatt eben von .NET gesprochen wird, tanzen die Marketing Leute im Kreis und schon endet man damit mit .NET zu arbeiten.
Deswegen ist es sicher nicht klever, davon auszugehen, dass Lisp nicht gut ist, weil mehr Leute mit VB arbeiten. Und ich wette, dass es (noch) mehr Lisp Code als C# Code gibt. Aber das ist nicht der Punkt. Wenn ich für eine Aufgabe C# gut halte, dann kann ich C# nehmen.
Wie war nochmal der Spruch: "Wenn man nur ein Hammer hat, sieht jedes Problem aus wie ein Nagel".
Natürlich sind das alles Praktikabilitäts Sachen und man kann die Dinge von dem Standpunkt aus sehen, dass ein Programm einfach ein Programm ist. Ob sich das rächt, wenn man ein neues Feature haben will oder man seine Systeme umstellt ist oder wenn in 2 Jahren ein neues Buzzword kommt, ist ja egal...
Vorallem sollte man als Programmierer über seinen Horizont gucken. Als Personalchef würde ich niemanden einstellen, der nur C++, Java und PHP (oder ähnliche Sprachen) kann. Okay, die meisten Personalchefs achten auf andere Dinge und haben keine Ahnung davon (edit: von Programmiersprachen). Aber jemand, der von C Derivat zu C Derivat geschwommen ist, ist sicher kein guter Programmierer.
-
kingruedi schrieb:
Deswegen ist es sicher nicht klever, davon auszugehen, dass Lisp nicht gut ist, weil mehr Leute mit VB arbeiten.
Ich habe explizit hervorheben wollen, dass das keine Wertung gegenüber Lisp sein soll (wie soll ich mir das auch erlauben können). Es kommt ein bisschen so rüber als hätte ich eine Aussage in diese Richtung gemacht, stimmt aber faktisch nicht.
C# und Java sind Sprachen für nicht-Programmierer. Da kann man ganz ehrlich sein.
Ne, so ehrlich bin ich nicht. Die wenigsten wissen, wie komplex die Arbeit mit Java wirklich werden kann, es wird immer der völlig falsche Schluss gezogen, dass nur weil die Sprache selber bewusst einfach ist, dass man nicht programmieren können muss, um damit was auf die Beine stellen zu können. Zu Java gehört ein klitzekleines bisschen mehr dazu, als Objektorientierung und die einfache Syntax zu verstehen. Vielleicht solltest du mal einen Blick in die zugehörigen APIs werfen, insbesondere der J2EE (sehr kurzer Überblick: http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html ), dann würdest du verstehen, dass der Schwierigkeitsgrad der reinen Sprache nicht das Maß aller Dinge ist. Allein nur um JSP richtig gut zu beherschen, kann man schon einige Zeit investieren.
@DrGreenthumb:
Ich habe auf etwas reagiert, was man sehr wohl als negative und sehr ... interessant ... begründete Wertung gegen C# sehen kann. Lisp mag ein schöne Sprache sein, das ist aber eigentlich nicht der Punkt, auf den ich wirklich hinauswollte. Ich will dir ja gar nicht dein Lisp madig machen. Ich frage mich, wie du zu der Feststellung kommst dass C# "nicht durch seine tollen Sprachfeatures überzeugt", sondern nur durch Marketing. Beziehungsweise ich habe da die Theorie, dass es nur nicht fremd genug auf den ersten Blick aussieht. Es gibt mehr als genug Leute, die da inzwischen tiefer eingestiegen sind und gewisse Dinge zu schätzen gelernt haben, im Gegensatz zu anderen, die das nicht sind, aber oberflächlich mal ne Ähnlichkeit zu Java/C++/wasweissich herstellen und sich denken "just another hype". Aber solche seltsamen und unwissenden Aussagen nerven mich.
-
Optimizer schrieb:
Über Lisp sage ich jetzt lieber nicht zu viel, da ich es kaum kenne. Immerhin bleibt aber die Feststellung, dass es deutlich länger Zeit gehabt hat, sich zu etablieren, was scheinbar nicht so ganz gelungen ist und letztlich kann man das durchaus zumindest mal als groben Hinweis verstehen, dass es in seiner Gesamtheit vielleicht nicht so den Massengeschmack trifft, aus welchen Gründen auch immer und sei es von mir aus, weil die Leute Lisp nicht kapieren.
Lisp hat sich schonmal etabliert gehabt. Die 80er waren eigentlich das Goldene Lisp-Jahrzehnt. Es gab damals sogar eigens für Lisp designte CPUs, die sogenannten Lisp-Maschinen. Irgendwann hat man den ganzen KI-Projekten aber die Finanzierung entzogen, vielleicht weil sich die überzogenen Erwartungen nicht bestätigt haben. Lisp ist da mit runtergezogen worden. In den letzten Jahren gibts ein kleines Lisp-Revival, mal sehen, was da noch kommt. Vielleicht wird es am Ende nicht mehr Lisp heißen, aber die Lisp-Features fließen immer mehr in den Mainstream ein: Scriptsprachen haben dynamische Typen, Java und .NET haben Garbage Collection, XML ist eigentlich auch nur eine andere Syntax für verschachtelte Listen ... mal sehen, was da noch kommt.
Mit Lisp nicht kapieren hat das eigentlich nicht viel zu tun. Die Leute kapieren ja auch C++, und Lisp ist um einiges einfacher.
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.
-
Optimizer schrieb:
@DrGreenthumb:
Ich habe auf etwas reagiert, was man sehr wohl als negative und sehr ... interessant ... begründete Wertung gegen C# sehen kann. [...] Ich frage mich, wie du zu der Feststellung kommst dass C# "nicht durch seine tollen Sprachfeatures überzeugt", sondern nur durch Marketing.bin mir jetzt nicht sicher, ob du dich nicht evtl. bei den Namen verlesen hast. Seit deinem letzten Post, hatte ich gar nichts mehr geschrieben.
Ich wollte C# nicht unbedingt schlechtreden, im Vergleich zu Java oder C++ bringt es bestimmt gute Neuerungen. 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.
Oder wie kommt es, dass Leute die Java nicht mit dem Arsch angeguckt haben, auf einmal mit C# programmieren. Sicher nicht weil diejenigen schon in viele Sprachen reingeschaut haben und in C# jetzt die Erfüllung sehen.
-
Ruhollah schrieb:
Lisp ist damit sogar älter als ein Vierteljahrhundert.
Ich weiß, aber seine Blütezeit begann erst später.
Warum sollte man seine Zeit mit Scheme und Haskell vergeuden, wenn doch Lisp das Original ist?
Mit neuen Sprachen vergeudet man nie seine Zeit, meistens sind unterschiedliche Sprachen einfach für unterschiedliche Probleme bzw. unterschiedliche Lösungsansätze gut.
Ich denke, dass Lisp noch eine große Zukunft bevorsteht.
Lisp als Lisp im kommerziellen Sinne wohl eher nicht mehr, es war ja schonmal ganz groß...
Eine Sprache, die so lange überlegt, ohne dass sie sich großartig verbiegen musste, sobald ein neues Paradigma aufkam, muss gut sein. Vor allem hört man immer wieder, dass die Entwicklungszeit bei Lisp-Code besonders gering ist.
Lisp kann noch so toll sein, wenn niemand die Verwendung der Sprache vorantreibt, werden sie auch nicht einfach so mehr Leute verwenden, einfach weil sie gut ist.
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.
-
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.