2009-05-12 2 views
8

Wird F # jemals eine Mainstream-Sprache wie C# sein? Oder wird es eine Nischensprache bleiben? Erwarten Sie, dass Kunden mit Projekten, die in F # ausgeführt werden, zu Ihnen kommen?
Wird ein professioneller Programmierer von F # leben können? Welche Art von Nachfrage prognostizieren Sie für F # -Programmierer?Wird F # jemals eine Mainstream-Sprache wie C# sein? Oder wird es eine Nischensprache bleiben?

Mit freundlichen Grüßen

+7

Dies sollte ein Community-Wiki sein. –

+0

Ich sehe nicht wirklich, wie jemand eine sachkundige, objektive Aussage machen könnte, die diese Frage beantwortet, also stimme ich als subjektiv und argumentativ ab. – mquander

+1

Ich bin nur auf der Suche nach einer Meinung, bevor ich eine Investition in F # mache. Mit so vielen neuen Dingen, die in letzter Zeit aus dem MS-Shop kommen, ist es immer besser, eine zweite Meinung zu bekommen. –

Antwort

13

Es gibt Menschen, die heute von funktionaler Programmierung leben. Beispiele finden Sie in der commercial users of functional programming workshop, die jedes Jahr stattfindet.

Für die erste Version von F # zielt Microsoft auf technische, mathematische, finanzielle und datenverarbeitende Anwendungen (wenn ich mich richtig erinnere). Ob das eine Nische ist oder nicht, hängt von Ihrer Perspektive ab :) aber es scheint ein vernünftiger Markt zu sein.

Dank der hervorragenden .NET Integration von F # können Sie Ihre Projekte zu einem großen Teil mit F # erstellen. Was sollte Ihr Kunde beachten? Wenn Sie einen Wettbewerbsvorteil von diesem in Bezug auf C# -Programmierer bekommen, vielleicht sollten Sie besser hoffen, F # nicht die Hit der Mainstream ...

Schließlich sind sicherlich F # (und Scala) Indikatoren, die zumindest funktionale Programmierung wird "Mainstream" werden. Aber wann wird eine Sprache als Mainstream angesehen? Ich wäre nicht überrascht, wenn es viel mehr Codezeilen in C und COBOL gibt als C#, VB und Java zusammen. Aus der Sicht eines Programmierers ist C# eine Nischensprache. Ich denke, dass Programmiersprachen dank virtueller Maschinen im Allgemeinen immer vielfältiger werden (denke zum Beispiel auch an Ruby, Python und Haskell, die nicht alle kleineren Sprachen wie Clojure, Ioke, ... berücksichtigen).

+2

+1 für Sie, "Wann wird eine Sprache Mainstream betrachtet?": Eine Mainstream-Sprache ist eine, die die meisten Blogs und naiven Tutorials hat. Wir werden Mainstream sein, wenn ich Ihnen eine 5-minütige Demo geben kann, wie Sie eine Unternehmens-Webanwendung erstellen, die nicht auf dem Markt überleben oder sich sogar als Unternehmen qualifizieren wird, aber dennoch so fruchtbar aussieht, dass Sie Zeit und Geld sparen . – ninegrid

0

ich es bis Functional Programming gehen Mainstream geschieht nicht sehen.

+0

Wie kann eine Antwort, die mit einem "I" beginnt, ein CW sein: P naja –

+0

zuerst ist es cw, weil es mehr gelehrte und sachkundige Personen da draußen gibt. Zweitens kann ich nicht behaupten, dass ich eine universelle Regel/Wahrheit oder im Namen anderer sage, dass dieses Ding passieren wird? – TheVillageIdiot

3

Ich kann das nicht sicher beantworten. Sicher ist es sehr subjektiv. Wir können nur abwarten und sehen, was passiert. Aber eins ist sicher. Auch wenn F # eine Minderheitensprache bleibt, werden Ideen und der funktionale Stil der Programmierung nach und nach zu anderen Sprachen hinzugefügt. Sie können nicht sagen, C# 3.0 ist das gleiche wie C# 1.0. Es ist nur eine Frage der Namensähnlichkeit.

1

Ich kann nicht sehen, funktionale Sprachen als Ganzes Mainstream. Letztlich wird alles, was einer rein menschlichen menschlichen Denkweise fremd ist, niemals zum Mainstream werden.

Funktionelle Programmierung wird jedoch mehr als Nische sein. Seine Vorteile in Bezug auf die Darstellung eines Problems, das über mehrere Prozessoren gelöst werden kann, sind überzeugend. Was ich sehe, sind F # -Bibliotheken für bestimmte Zwecke und/oder F # -Konzepte, die nach C# migrieren.

+0

Wie funktionale Programmierung tödlich für das menschliche Denken ist? Ist es nicht so, wie wir es gewohnt sind? Ich meine, wenn man mit jemandem beginnt, der keine Ahnung hat, was Programmieren ist, wird er oder sie Rekursion und funktionale Art der Lösung von Problemen oder Mutationen und Zustandsänderungen lernen? –

+0

Ich denke, es hängt davon ab, für eine Person ohne Programmiererfahrung könnte ein funktionierendes Paradigma überzeugender sein. Für einen mit Low-Level-Programmiersprache wie C oder Assembly, könnte das funktionale Paradigma zu viel zu tun sein. –

+3

@Mehrdad: Die meisten Leute wissen, wie man eine Tasse Tee macht.Kann das funktional gemacht werden, etwas parallel machen? Vielleicht, aber es ist natürlicher, das Verfahren als Sequenz zu betrachten. Das ist es, was ich mit dem Menschen meine, das Leben ist voll von Sequenzen, nicht von Funktionen. Diejenigen mit einer Grundausbildung in Mathematik mögen sich auf den funktionalen Ansatz einstellen, aber sie repräsentieren nicht die Mehrheit. Ohne eine mathematische Herangehensweise an Probleme ist die funktionale Programmierung schwierig, Punkt. Es gibt genügend Fachkräftemangel, egal ob funktional überlegen ist oder nicht, es wird nicht gut sein, wenn man das Personal nicht bekommt. – AnthonyWJones

-3

In der Geschäftsentwicklung wird es nie passieren. Es ist einfach zu schwer, so dass der durchschnittliche LOB-Entwickler es niemals aufrechterhalten kann. In High-End-Softwareunternehmen könnte es jedoch passieren.

+0

Ich kenne einige C-Programmierer, die denken, C# sei zu hart, und haben ähnliche Argumente gegen die Verwendung von Klassen und Schnittstellen von ihnen gehört. Das LOB-Argument ist falsch. –

+1

"Ich kenne einige ..." klingt für mich wie ein Beweis-Beispiel-Trugschluss. Ich wette, ich habe Recht, wir werden in 10 Jahren sehen. – erikkallen

+1

Natürlich ist es kein Beweis. Wir sind in einer Kristallkugel-Diskussion, kein mathematisches Argument.Ich ärgere mich nur über den "durchschnittlichen Entwickler" -Mythos: Wenn es eine solche Kreatur gibt, hat er/sie sowieso nichts zu sagen - ich nehme an, dass diese durchschnittlichen Programmierer von durchschnittlichen Managern geleitet werden? Sie verwenden also das, was der Manager gestern in der Fachzeitschrift gelesen hat. –

1

Ich bin nicht der Experte, aber ich denke, einer der Vorteile der funktionalen Programmierung ist die relativ schmerzlose Annäherung an Parallelität und Multicore-Verarbeitung. Vor dem Hintergrund der jüngsten Ankündigung von Microsoft in diesem Bereich, nämlich Axum http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx, das ein weiterer Ansatz zur parallelen Programmierung ist, bezweifle ich wirklich, dass F # jemals Mainstream werden wird. Wenn Axum angenommen wird, wird es wahrscheinlich in C# integriert (wie Code Contracts von Lab nach C# 4.0 verschoben) und F # wird nur in sehr spezifischen Domänen verwendet.

+0

Axum sieht vielversprechend aus. Es erinnert mich an Embedded-Entwicklung mit einem Message Oriented Realtime Executive (M.O.R.E.) zurück in den späten 80er Jahren Anfang der 90er Jahre. Es zeigt, dass es nichts Neues unter der Sonne gibt. – AnthonyWJones

2

Ich denke nicht, dass F # jemals die Popularität von C# oder anderen imperativen Sprachen erreichen wird, weil die meisten Anwendungen zwingend entworfen sind und die meisten Programmierer auf diese Weise denken.

Aber F # bietet viele sehr interessante Funktionen wie LOP, Compiler Compiler, Berechnungsausdrücke (Async-Workflows), Notierungen, Maßeinheiten.

Viele Probleme können in einer funktionalen Programmiersprache viel besser und prägnanter formuliert werden (schauen Sie sich diese F # -Beispiele mit async {} oder seq {}) an und weil F # ein bisschen Mainstream ist als z. Haskell (es hat das .NET-Framework, das viele Aufgaben vereinfacht und nicht rein funktional ist!), Es wird für viele Programmierer einfacher sein, in die funktionale Programmierung einzusteigen und ihre Vorteile zu erfahren.

Darüber hinaus ist es schwieriger, falschen Code in F # als z. in C, weil Sie eine gute Typprüfung haben, viele starke Typen, die vom Compiler und unveränderlichen Werten betroffen sind - Sie können intuitiv die Korrektheit eines funktionalen Algorithmus beweisen, der oft in einem Imperativ schwer ist. Man denke nur an diesem Code, der die Anzahl der Nullen in einem Array zählen sollte:

int countZeros; 
for (int i = 1; i <= length; i++) { 
    if (data[i] = 0) { 
    countZeros++; 
} 
} 

Diese alle Faktoren, die die Menschen bringen F # zu verwenden. Der Rest ist Marketing (Microsoft sollte eine F # Express Edition in VS2010 haben !!)

+0

Es funktioniert mit der (kostenlosen) VS Shell, das ist also ziemlich nah an einer Express-Edition. –

+0

Ja, aber müssen Sie nicht zuerst eine teure reguläre VS Edition installieren, um die Shell zu benutzen? – Dario

+0

Nein, die Shell ist ein kostenloser Download. Sie können F # heute kostenlos verwenden. siehe http://stackoverflow.com/questions/773642/f-ctp-question – Brian

0

Das Tolle an F # ist die leistungsstarke Kombination von Programmierparadigmen, die es erlaubt. Sie können die meisten Ihrer Programme im funktionalen Stil schreiben - kurz, elegant und frei von Nebenwirkungen (häufige Fehler). Wenn Sie jedoch auf ein Problem stoßen, das Sie nicht funktional lösen können, können Sie einen kurzen Abschnitt des imperativen Codes eingeben, um darüber zu gelangen. Es ist auch sehr einfach, Abschnitte Ihres Codes asynchron zu markieren, und er wird dann parallel ausgeführt, wenn Sie mehrere Kerne/Prozessoren haben. Die Lösung wird viel einfacher sein als ein C# -Aquivalent. Nachdem ich Zeuge eines Demos von einem der Entwickler von F # geworden war, hatte ich den Eindruck, dass es gelungen ist, großartige Features von Python und Erlang zu extrahieren. F # wird wahrscheinlich als .NET-Antwort auf diese beiden Klassen von Sprachen angeboten und könnte schließlich einen vergleichbaren Grad an Mainstream-Akzeptanz erreichen.

0

OTOH, wenn Sie F # nehmen, das ist ein Mainstream-Programmierer an Bord ....

Vermeiden sie eine sich selbst erfüllende Prophezeiung.

Verwandte Themen