Tak když koukám na F# tak cítím silnej zápach Visual Basicu nemůžu si pomoct
Visual Basic a F#? Nič iné ich nespája, len že sú .NET jazyky.
Když to porovnám se Scalou, Rustem, nebo i tím starým Haskellem, tak je C# takovej ubožáček konzervativní.
Problém je, keď porovnávame športové auto s rodinným autom. Úlohou rodinného auta je mať priestor, kam sa všetky decká zmestia, aby bolo bezpečné a odolné. Nie aby jazdilo rýchlo a bolo elegantné.
C# je podľa mňa výborný business jazyk. A porovnávať ho treba s podobnými business jazykmi, do ktorých by som osobne zahrnul Javu, C++ a asi aj Kotlin. Ja napríkad veľmi kvitujem v posledných verziách C# automatické importy, koniec nutnosti odsadzovania pri menných priestoroch, rekordy (ktoré aj fungujú) a hlavne top-level statements, teda možnosť tvoriť kód bez nutnosti public classs/static void Main. Každým rokom prídu nejaké vychytávky, chlapci sa fakt snažia.
var xs = new List<string>();
Ja to takto tiež preferujem.
Revenue[] revenues =
{
new (1, "Q1", 2340),
new (2, "Q1", 1200),
new (3, "Q1", 980),
new (4, "Q2", 340),
new (5, "Q2", 780),
new (6, "Q3", 2010),
new (7, "Q3", 3370),
new (8, "Q4", 540),
};
var res = from revenue in revenues
group revenue by revenue.Quarter
into g
where g.Count() == 2
select new { Quarter = g.Key, Total = g.Sum(c => c.Amount) };
foreach (var line in res)
{
Console.WriteLine(line);
}
record Revenue(int Id, string Quarter, int Amount);
To new má pekné uplatnenie pri tvorbe objektov v kolekciách, tak ušetrí dosť zbytočného opakovania.
Spolu s LINQ a rekordami je moderný C# fakt príjemný.