NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Lako
Člen
Avatar
Lako:13.2.2017 1:06

Ahoj.
Tak jsem zabředl do učby tohoto progresivního jazyka.
A zajímá mě, kolik zdejšího osazenstva přišlo s F# do styku, případně jej používá...

Jak se vám líbí, jaké je to v porovnání s ostatními jazyky? Používáte ho často?

Na úvod sem přikládám místní statistiku, která shrnuje kolik příspěvků připadá na jedno vlákno u klasických programovacích jazyků, tedy z této stránky
Výsledky:

11.43 Assembler
8.55 C a C++
8.43 .NET (C# a Visual Basic)
8.13 Ostatnà programovacà jazyky
8.11 GameMaker
7.87 Java
7.32 Python
7.31 SQL a databáze
6.82 Delphi (Pascal)
5.20 Petr

(bohužel se to moc nepopasovalo s diakritikou)
Přikládám zdroják obsahující 2 podobná řešení.

#r "..\packages\FSharp.Data.2.3.2\lib\\net40\FSharp.Data.dll"//cesta k Fsharp.Data.dll => nutné pouze pro skriptování
open FSharp.Data

type ItNetworkForumm = HtmlProvider<"http://www.itnetwork.cz/diskuzni-forum-o-programovani">

let klasickeJazyky = ItNetworkForumm.GetSample().Tables.``Programovánà - klasické jazyky``//výběr tabulky

let pomery = klasickeJazyky.Rows |> Seq.map(fun x-> float x.``PřÃspěvků`` / float x.``Vláken``)//spočítáme poměr
    //poměr počtu příspěvků/počet vláken

let jazykyADiskuze = klasickeJazyky.Html.Descendants["a"] //najdi všechny odkazy
                        |> Seq.mapi(fun i q-> if  i % 2 = 1 then Some(q) else None)//každý druhý nebude None
                        |> Seq.choose id    //vyber jenom ty, které nejsou None
                        |> Seq.map (fun c -> c.InnerText()) //vyber text v elementu
                        |> Seq.zip pomery    //zazipuj (vztvoř tuple) s výše vytvořteným poměrem
                        |> Seq.sortByDescending(fun d -> fst d ) // vytřiď to podle prvního prvku v Tuplu
                        |> Seq.iter (fun p -> printf "%.2f \t %s \n" (fst p) (snd p)) //vzhledně vypiš
//řešení 2 : liší se v přístupu a ve výpisu
let jazykyADiskuze2 = klasickeJazyky.Html.Descendants["a"]
                        |> Seq.map (fun x->  x.Descendants["span"] )// najde spany v odkazech
                        |> Seq.choose (fun f-> if  Seq.isEmpty f then None else Some(f |> Seq.head) )//pokud span není, neberem
                        |> Seq.map (fun c -> c.InnerText())
                        |> Seq.zip pomery
                        |> Seq.sortByDescending(fun d -> fst d )
                        |> Seq.map (fun d -> snd d) //vytáhne pouze názvy jazyků (snd jako second z Tuplu)
                        |> printfn "%A" //vypsání celé sekvence

Jsem si jistý, že existuje lepší kód než ten můj. Pokud vás nějaký napadne, neváhejte ho k odpovědi přidat.

Na spoustě místech po internetech čítávám, že F# se může pyšnit skvělou a aktivní komunitou, pojďme jí rozšířit i na tuto síť...

Editováno 13.2.2017 1:07
 
Odpovědět
13.2.2017 1:06
Avatar
Odpovídá na Lako
Miroslav Husťák:25.4.2021 0:02

Ahoj Lako, vydrželo ti to učení F#? Píšeš v něm programy? Také používáš https://fsharpforfunandprofit.com jakožto učebnici? Jelikož mi byla v době lockdownu pozastavena zakázka na neurčito, začal jsem se také věnovat F# (pouze funkcionálnímu programování, ne F# OOP, to považuji za zbytečné). Přestože se mi už povedlo v rámci výuky přepsat jeden svůj program do F#, netroufám si hodnotit tvůj kód. Je škoda, že na ITNetwork asi není moc Fšarpistů, ani fsharping.cz nevypadá příliš aktivní. Ve světě to asi bude jiné, zkusím nějakou LinkedIn group. Na funkcionálním programování vidím jeden obrovský problém, totiž ten, že už po dvou týdnech se mi nechce vracet se k C# a raději bych u funkcionálního programování zůstal navždy..... Seq.initInfinite (fun _ -> Console.ReadKe­y().Key) |> Seq.takeWhile ((<>) ConsoleKey.Do­kudNeumřu) |> Seq.iter (fun _ -> ())

Editováno 25.4.2021 0:03
 
Nahoru Odpovědět
25.4.2021 0:02
Avatar
Lako
Člen
Avatar
Odpovídá na Miroslav Husťák
Lako:16.5.2021 20:56

To už je doba. Částečně ano, dotáhl jsem to do podoby, kdy jsem byl schopen cokoliv vymyslet. Bohužel jsem nenašel vhodný usecase na jazyk. Dneska je to například Blazor, kde se F# zase musí používat oklikou. Navíc se během té doby spousta kouzel z F# přesunula do C# (v poslední verzi například records). Mě se naopak líbí F# tím, že je objektový i funkcionální, můžeš použít to co se hodí.

 
Nahoru Odpovědět
16.5.2021 20:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.