Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[F#] Wie kent het?

Pagina: 1
Acties:
  • 1.538 views sinds 30-01-2008
  • Reageer

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Topicstarter
Via via kwam ik op: http://research.microsoft.com/projects/ilx/fsharp.aspx de beschrijving van een nieuwe taal voor het .net Framework: F#.

Volgens de website is F# het volgende:
F# is a programming language that provides the much sought-after combination of type safety and scripting, with all the advantages of running on a high-quality, well-supported modern runtime system. F# gives you a combination of

interactive scripting like Python,

a mathematical approach to programming like that of MatLab,

the strong type inference and safety of ML,

a cross-compiling compatible core shared with the popular OCaml language,

a performance profile like that of C#,

as many libraries as VisualBasic.NET,

a foundational simplicity with the same roots as Scheme,

the option of a first-class Visual Studio integration,

the experience of a first-class team of language researchers with a track record of delivering high-quality implementations,

the speed of native code execution on the concurrent, portable, and distributed .NET Framework?

The only language to provide a combination like this is F# (pronounced FSharp) - a scripted/functional/imperative/object-oriented programming language that is a fantastic basis for many practical scientific, engineering and web-based programming tasks.
Een all purpose taal dus blijkbaar.
Mijn vraag heeft iemand hier al ervaring mee? Of kan iemand hier iets nuttigs over zeggern?

  • whoami
  • Registratie: December 2000
  • Nu online
Ik had er al eens van gehoord, maar ik heb het nog nooit echt 'gezien', en ik heb het ook nooit gedownload om er iets mee te doen.
Afaik is het eerder een research project ivm functionele talen oid.

https://fgheysels.github.io/


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Een foute reactie ongetwijfeld, maar "me too": ik ken het als concept, maar sowieso zijn functionele talen IMO research projecten. XSLT komt het dichts bij productie rijp, en dat is dan nog op basis van de XML hype. XSLT maakt wel een belangrijk punt duidelijk: functionele talen zijn bruikbaarder naarmate ze domein-specifieker zijn.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Functionele programmeertaal op basis van C# (dacht ik)

Wat is een functionele programmeertaal? Kijk hier..
http://nl.wikipedia.org/wiki/Functionele_programmeertaal

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
MSalters schreef op zaterdag 12 november 2005 @ 02:00:
Een foute reactie ongetwijfeld, maar "me too": ik ken het als concept, maar sowieso zijn functionele talen IMO research projecten. XSLT komt het dichts bij productie rijp, en dat is dan nog op basis van de XML hype. XSLT maakt wel een belangrijk punt duidelijk: functionele talen zijn bruikbaarder naarmate ze domein-specifieker zijn.
Het zijn niet persé research projecten, ze worden gebruikt voor researchprojecten. Best een groot verschil. En Haskell is behoorlijk volwassen, vergis je daar niet in. Het probleem is dat het (volgens mij) vooral op de universiteit wordt gebruikt. Er zijn niet veel mensen die ik ken die erg goed zijn in haskell, maar de mensen die het kunnen die doen er ook echt heel erg zieke dingen mee. The right tool for the right job.

Maar aan Haskell is het mooie dat er echt ontzettend veel fouten worden voorkomen door typechecking, en het fijne van scripttalen vindt ik juist dat er geen (verplichte) typechecking is.

  • misfire
  • Registratie: Maart 2001
  • Laatst online: 12-10-2024
F# is inderdaad een research project en zal dat ook voorlopig blijven. F# is voor MS ook een manier gebleken om wat meer aansluiting te zoeken met de universiteiten. Net als de vele andere research projecten is het verder meer een speeltuin voor nieuwe ideeën en ontwikkelingen.

Microsoft gaat met C# 3 en LINQ wat taalvernieuwingen door te voeren voor de mainstream. Op zich ziet dat er leuk uit, alhoewel de meeste features "handigheidjes" zijn, en niet echt nieuwe mogelijkheden of abstracties bieden.

Ik geloof wel dat er nog flink wat aan de huidige mainstream programmeertalen kan worden verbeterd. De concurrentie-strijd tussen Sun en Microsoft als de taalboeren van dit moment vind ik erg positief. Eindelijk een gezonde druk om dingen te vernieuwen en de talen meer aan te laten sluiten op de meest voorkomende probleemgebieden.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Ik heb er nog nooit van gehoord, maar als ik de codesamples zo zie lijkt het wel op COBOL :X

Professionele website nodig?


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
misfire schreef op zaterdag 12 november 2005 @ 12:53:
Ik geloof wel dat er nog flink wat aan de huidige mainstream programmeertalen kan worden verbeterd. De concurrentie-strijd tussen Sun en Microsoft als de taalboeren van dit moment vind ik erg positief. Eindelijk een gezonde druk om dingen te vernieuwen en de talen meer aan te laten sluiten op de meest voorkomende probleemgebieden.
Ik geloof wel dat dit soort bedrijven zich inderdaad richten op praktische problemen. Het lijkt mij dat veel revolutionaire ideeën niet uit praktisch oogpunt onstaan, maar omdat het kan. En dit soort dingen worden vaak op de universiteit/door individuen gedaan, omdat veel bedrijfen wel resultaat willen zien waar ze geld mee kunnen verdienen (en geef ze eens ongelijk).

Maar heerlijk dat functionele programmeertalen wat meer in de mode raken. Overstappen van een niet-functionele taal naar functionele taal vergt wel even een braintwist, maar het zij zo. Dit houdt wel in dat niet iedere scripter zomaar in haskell/xslt/f# kan gaan programmeren, en dit is natuurlijk wel nadelig voor de ondersteuning in het bedrijfsleven. Hoewel, met xslt gaat het prima.

  • whoami
  • Registratie: December 2000
  • Nu online
Even een gigantische kick :P

Is er ondertussen iemand bezig geweest met F# ? Ik heb het net even gedownloaded & geinstalleerd, en ben nu eens wat tutors enzo aan het opsnorren, maar ik zou wel eens willen weten of er daadwerkelijk al mensen iets 'nuttigs' mee gedaan hebben ?

https://fgheysels.github.io/


Verwijderd

whoami, hebben ze jou nooit geleerd dat je geen 3 jaar oud topic moet kicken, tenzij je zelf een bijdrage aan dat topic kunt geven? :)

  • Teeno
  • Registratie: Juni 2007
  • Laatst online: 12:23
Verwijderd schreef op donderdag 01 mei 2008 @ 02:45:
whoami, hebben ze jou nooit geleerd dat je geen 3 jaar oud topic moet kicken, tenzij je zelf een bijdrage aan dat topic kunt geven? :)
Maakt eens een keer iemand gebruik van de zoekfunctie.. is het weer niet goed :)

Verwijderd

Wat ik ervan begrepen heb is dat Microsoft op dit moment F# positioneert als een taal waarmee je makkelijker tegen meerdere cores aan kan programmeren, 256core systemen schijnen relatief snel op de markt te komen.

Sterker nog, het idee is dat je geen idee hebt van verschillende cores / multi threading, maar omdat alles paralel wordt uitgevoerd, maakt het wel gebruik van de meerdere cores.

[ Voor 32% gewijzigd door Verwijderd op 01-05-2008 03:09 ]


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 11:43

RayNbow

Kirika <3

Verwijderd schreef op donderdag 01 mei 2008 @ 03:07:
Wat ik ervan begrepen heb is dat Microsoft op dit moment F# positioneert als een taal waarmee je makkelijker tegen meerdere cores aan kan programmeren, 256core systemen schijnen relatief snel op de markt te komen.

Sterker nog, het idee is dat je geen idee hebt van verschillende cores / multi threading, maar omdat alles paralel wordt uitgevoerd, maakt het wel gebruik van de meerdere cores.
Dat zal dan alleen makkelijk lukken als je code voornamelijk puur en referential transparent is. Gezien F# je de mogelijkheid biedt om andere (mogelijk impure) .NET code aan te roepen, zou dit al problemen kunnen geven.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Verwijderd

Ik heb me wel een tijdje bezig gehouden met het schrijven van programma's in Haskell (waar F# op gebaseerd is). Het werkt opzich wel lekker. Het heeft voordelen tenopzichte van C#, Java etc (lazy programming bijv) maar ook nadelen. Het behoeft iig een complete nieuwe denkwijze in vergelijking met C#.

Naar mijn weten zijn er wenig serieuze toepassingen van deze functionele programmeertalen. Ik weet dat XMonad (een zeer relaxte Linux WM) met Haskell gemaakt is. Verder gebruikt Intel Haskell voor het bewijzen van wiskundige stellingen (waar een functionele taal erg geschikt voor is). Meer voorbeelden kan ik zo niet noemen.

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 11:43

RayNbow

Kirika <3

Verwijderd schreef op donderdag 01 mei 2008 @ 14:03:
Ik heb me wel een tijdje bezig gehouden met het schrijven van programma's in Haskell (waar F# op gebaseerd is).
F# is eigenlijk gebaseerd op OCaml. :)
Naar mijn weten zijn er wenig serieuze toepassingen van deze functionele programmeertalen. Ik weet dat XMonad (een zeer relaxte Linux WM) met Haskell gemaakt is. Verder gebruikt Intel Haskell voor het bewijzen van wiskundige stellingen (waar een functionele taal erg geschikt voor is). Meer voorbeelden kan ik zo niet noemen.
Haskell in Industry

Zie verder ook:
International Conference on Functional Programming
De PDFjes op deze pagina vereisen alleen een ACM account. Ik zal nog zoeken of ik de gratis summary versie kan vinden...

Edit: Ah, eindelijk gevonden. Fourth ACM SIGPLAN Workshop on Commercial Users of Functional Programming, verslag geschreven door Jeremy Gibbons.

Edit 2: Als ik toch bezig ben met linkjes vinden/posten...
Reddit: Coconut: COde CONstructing User Tool - Haskell DSL to produce high performance SIMD-Parallel code (video) (youtube.com)
:)

[ Voor 16% gewijzigd door RayNbow op 01-05-2008 16:27 ]

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Verwijderd schreef op donderdag 01 mei 2008 @ 03:07:
Wat ik ervan begrepen heb is dat Microsoft op dit moment F# positioneert als een taal waarmee je makkelijker tegen meerdere cores aan kan programmeren, 256core systemen schijnen relatief snel op de markt te komen.

Sterker nog, het idee is dat je geen idee hebt van verschillende cores / multi threading, maar omdat alles paralel wordt uitgevoerd, maakt het wel gebruik van de meerdere cores.
Maar F# is impure (i.e. assignment). Ik zie niet in waarom F# programma's daarom makkelijker paralleliseren zijn vergeleken met programma's geschreven in conventionele .net talen.

Bij een functionele taal die pure is kan je in theorie elke subberekening door een andere thread laten uitvoeren. Ik kan me herinneren dat daar ooit experimenten mee gedaan zijn op een honderzoveelcore machine, maar dat de resultaten enorm tegen vielen. Maar daar weet ik de details niet van; ik kan me zo voorstellen dat als je dergelijke multi-threading te naief doet, dat de synchronisatie-overhead je duur komt te staan.
Ik was bij die workshop, maar kan me er niets meer van herinneren :X
Overigens kan je met wat zoekwerk een artikel meestal wel op de website van de auteur terug vinden.

[ Voor 17% gewijzigd door Infinitive op 01-05-2008 22:01 ]

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Ik ben halverwege het boek Expert F# van Apress. Het is makkelijk aan te leren als je ervaring hebt met C# en een functionele taal als Ocaml. Aangezien je toegang hebt tot alle libraries van .Net kun je met F# dezelfde programma's bouwen als met andere .Net talen. Ik ben benieuwd hoe het is om bijvoorbeeld een web-applicatie in F# te bouwen.

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 11:43

RayNbow

Kirika <3

Infinitive schreef op donderdag 01 mei 2008 @ 19:28:
Overigens kan je met wat zoekwerk een artikel meestal wel op de website van de auteur terug vinden.
Ik wist dus niets meer af van het artikel, behalve dat het een verslag was van een of andere workshop/conference. :p

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Ik heb er even mee gespeeld, het heeft ook wel een aantal leuke features. Echter zijn wij juist aan het standariseren naar 1 of 2 talen voor elk project. Een ander probleem om het in de praktijk te gebruiken is het feit dat F# nog nieteens een offciele release heeft gehad, ook geeft Microsoft geen garantie op de correcte werking van F#. Wij werken in de wereld van kredieten, aandelen en verzekeringen en stabiele code is een vereiste, F# is dat helaas nog niet.

Daarbij heeft F# de eigenschap nogal snel onleesbaar te worden. Echter de kracht van (o)Caml en haskell achtige talen ligt meestal wel in die 'onleesbare' gedeeltes. Maar persoonlijk verwacht ik niet dat F# snel zijn intrede zal maken in de financiele wereld.

If it isn't broken, fix it until it is..


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 11:43

RayNbow

Kirika <3

Niemand_Anders schreef op vrijdag 02 mei 2008 @ 09:14:
Daarbij heeft F# de eigenschap nogal snel onleesbaar te worden. Echter de kracht van (o)Caml en haskell achtige talen ligt meestal wel in die 'onleesbare' gedeeltes. Maar persoonlijk verwacht ik niet dat F# snel zijn intrede zal maken in de financiele wereld.
Ik ben wel benieuwd naar "het onleesbare" gedeelte. Wat wordt door jou onleesbaar beschouwd (voorbeeldje)? Is het de syntax?

Ik heb bijvoorbeeld laatst een klein simpel frameworkje gebouwd voor genetische algoritmen in Haskell. Achteraf gezien niet helemaal perfect en generiek genoeg, maar voor mijn toepassing voldeed het. De kern van de code vond ik zelf erg leesbaar:
Haskell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
performGA' :: Int -> EvaluatedPopulation a -> GAlgorithm a -> Gen [EvaluatedPopulation a]
performGA' generation population algorithm@(select, crossover, mutate, evaluate, survive, terminate)
 | terminate generation population = return []
 | otherwise
 = do selected       <-  select population
      offspring'     <-  breed selected
      offspring      <-  sequence (map mutate offspring')
      newpopulation  <-  survive population (evaluate offspring)

      fmap (newpopulation :) (performGA' (generation+1) newpopulation algorithm)

      where 
        breed (x:y:p) =  do (child1,child2) <- (crossover x y)
                            fmap ((child1:) . (child2:)) (breed p)
        breed p       =  return p

Voor mensen die zich afvragen wat algorithm@(select, ...) betekent, dit is name@pattern match syntax. Het derde argument van performGA' is een tupel genaamd algorithm, maar elk onderdeel van de tupel is ook verbonden aan een naam.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Verwijderd

Verwijderd schreef op donderdag 01 mei 2008 @ 14:03:
Ik heb me wel een tijdje bezig gehouden met het schrijven van programma's in Haskell (waar F# op gebaseerd is). Het werkt opzich wel lekker. Het heeft voordelen tenopzichte van C#, Java etc (lazy programming bijv) maar ook nadelen. Het behoeft iig een complete nieuwe denkwijze in vergelijking met C#.

Naar mijn weten zijn er wenig serieuze toepassingen van deze functionele programmeertalen. Ik weet dat XMonad (een zeer relaxte Linux WM) met Haskell gemaakt is. Verder gebruikt Intel Haskell voor het bewijzen van wiskundige stellingen (waar een functionele taal erg geschikt voor is). Meer voorbeelden kan ik zo niet noemen.
F# is niet gebasseerd op Haskell, maar op OCaml zoals al eerder was vermeld!
Ik heb voor de Universiteit als deel van mijn master onderzoek gedaan naar F#.

Qua syntax was het niet echt verassend, aangezien ik wel meer in Haskell (95%) en stukjes OCaml code heb geprogrammeerd.

Wat betreft de compleet andere denkwijze. Hier heb je zeker gelijk. Toen ik voor het eerst na C, C++, Java, C# etc in aanraking kwam met een Functionele taal (Clean) wist ik totaal niet hoe ik ermee overweg moest, geen assignments etc.
Haskell en andere functionele talen vereisen idd een erg compleet andere denkwijze, maar ik ben ervan overtuigd dat deze andere denkwijze, zelf mijn imperative 'skills' heeft verbeterd!

En er zijn wel veel meer dingen in Haskell geprogrammeerd. Op de UU is er een ITér van de ABN geweest die vertelde over hoe hun Haskell gebruikte in verschillende prognose programma's...

Verwijderd

RayNbow schreef op vrijdag 02 mei 2008 @ 13:26:
[...]

Ik ben wel benieuwd naar "het onleesbare" gedeelte. Wat wordt door jou onleesbaar beschouwd (voorbeeldje)? Is het de syntax?

Ik heb bijvoorbeeld laatst een klein simpel frameworkje gebouwd voor genetische algoritmen in Haskell. Achteraf gezien niet helemaal perfect en generiek genoeg, maar voor mijn toepassing voldeed het. De kern van de code vond ik zelf erg leesbaar:
Haskell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
performGA' :: Int -> EvaluatedPopulation a -> GAlgorithm a -> Gen [EvaluatedPopulation a]
performGA' generation population algorithm@(select, crossover, mutate, evaluate, survive, terminate)
 | terminate generation population = return []
 | otherwise
 = do selected       <-  select population
      offspring'     <-  breed selected
      offspring      <-  sequence (map mutate offspring')
      newpopulation  <-  survive population (evaluate offspring)

      fmap (newpopulation :) (performGA' (generation+1) newpopulation algorithm)

      where 
        breed (x:y:p) =  do (child1,child2) <- (crossover x y)
                            fmap ((child1:) . (child2:)) (breed p)
        breed p       =  return p

Voor mensen die zich afvragen wat algorithm@(select, ...) betekent, dit is name@pattern match syntax. Het derde argument van performGA' is een tupel genaamd algorithm, maar elk onderdeel van de tupel is ook verbonden aan een naam.
Hier heb je het wel netjes uitgeprogrammeerd in Haskell. En niet in OCaml of F#.
Mijn eigen ervaring is dat Haskell zoveel 'syntactic sugar' heeft dat de taal er gewoon prachtig uitziet, in tegenstelling tot bijvoorbeeld OCaml en sommige delen van F#

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 11:43

RayNbow

Kirika <3

Verwijderd schreef op vrijdag 02 mei 2008 @ 14:45:
En er zijn wel veel meer dingen in Haskell geprogrammeerd. Op de UU is er een ITér van de ABN geweest die vertelde over hoe hun Haskell gebruikte in verschillende prognose programma's...
Wat details over ABN staan ook in 1 van de pdfjes waarnaar ik gelinkt heb. :)
Verwijderd schreef op vrijdag 02 mei 2008 @ 14:46:
[...]

Hier heb je het wel netjes uitgeprogrammeerd in Haskell. En niet in OCaml of F#.
Mijn eigen ervaring is dat Haskell zoveel 'syntactic sugar' heeft dat de taal er gewoon prachtig uitziet, in tegenstelling tot bijvoorbeeld OCaml en sommige delen van F#
Ik ben niet echt bekend met F#, daarom ben ik ook benieuwd naar voorbeelden in F# wat mensen lelijk o.i.d vinden. :)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Verwijderd

RayNbow schreef op vrijdag 02 mei 2008 @ 15:37:
[...]

Wat details over ABN staan ook in 1 van de pdfjes waarnaar ik gelinkt heb. :)

[...]

Sorry, had nog niet in je PDF'jes gekeken ;)

Ik ben niet echt bekend met F#, daarom ben ik ook benieuwd naar voorbeelden in F# wat mensen lelijk o.i.d vinden. :)
Ik moet vanavond toch mijn paper nog herschrijven, miss dat ik wel wat vergelijkingsvoorbeelden tussen F# en Haskell post. (Trouwens kan ook pas zondag worden...)
Pagina: 1