Czy .NET to szwajcarski scyzoryk?

0

Cześć. Zastanawiam się czy platforma .NET to taki jack of trades, master of none. W backendzie rządzi Java, na froncie Javascript, w mobilnych Kotlin, w grach i rzeczach niskopoziomowych C++ a .NET i C# próbuje ogarnąć wszystkie te dzedziny a jak wiemy jeśli coś jest do wszystkiego to często jest do niczego. Może to trochę przesada, ale czy ta "zachłanność" MS ma sens i przyszłość? Tak jak napisałem, jeśli ktoś chce zrobić zaawansowaną aplikację webową to wybierze Jave, C# też może być, ale jednak Java góruje. Dalej, Czy Blazor ma jakiekolwiek szanse zastąpić JS? Czy ktoś na serio wybierze Xamarina zamiast Kotlina do pisania apki mobilnej?

0

Jsa jakby miało coś zastąpić to byłoby to WebAssembly*, a Blazor to tylko wsparcie dla WebAssembly oraz "framework".

* - moim zdaniem jako kod wynikowy z innych języków np.

(module
  (type (;0;) (func (result i32)))
  (func $test (type 0) (result i32)
    i32.const 42)
  (table (;0;) 1 1 funcref)
  (memory (;0;) 2)
  (global (;0;) (mut i32) (i32.const 66560))
  (export "memory" (memory 0))
  (export "test" (func $test)))

Tak jak napisałem, jeśli ktoś chce zrobić zaawansowaną aplikację webową to wybierze Jave

skąd taka pewność?

2

Każdy język wysokopoziomowy to taki szwajcarski scyzoryk.

Blazor to przede wszystkim framework do pisania SPA (bardzo fajny swoją drogą). Jest więc bardziej konkurencją dla innych frameworków (React, Vue itp.) i w takich kategoriach bym go przede wszystkim postrzegał. Fakt że ogranicza konieczność użycia JS do minimum jest oczywiście ważnym atutem. Ale nie oszukujmy się, pisząc jakąkolwiek większą aplikację prędzej czy później pojawi się konieczność jakiegoś zastosowania JS (chociaż i tak w większości przypadków znajdzie się ktoś kto już to zrobił i napisał do tego bibliotekę)- od tego jest JS interop.

2

Trochę tak jest. Dotnet przez ostatnie lata dostał rzeczy, które na papierze brzmią fajnie, ale w praktyce niewiele dają. Jeżeli jestem dotnetowcem od lat, to wieloplatformowość pewnie nie jest mi potrzebna, bo i tak jestem zżyty z Windowsem. Podobnie z szybkością — fajnie, że w benchmarkach dotnet wymiata, ale zazwyczaj chodzi o to, żeby było wystarczająco szybko, niekoniecznie najszybciej. A co innego dał mi dotnet przez ostatnie lata, co naprawdę przydałoby mi się jako programiście? EF Core, z którym na początku był cyrk, bo nawet group by nie robił na bazie, tylko w pamięci? Razor Pages, które dzielą 80% kodu z MVC i w dużej mierze inaczej rozkładają pliki? Wbudowany DI zamiast używania NInjecta albo wbudowane biblioteki do Jsona zamiast Newtonsoft.Json?

Do tego C# skupia się na rzeczach, które w moim odczuciu są zbędne i tylko zaciemniają sprawę. Nie potrzebuję kolejnego sposobu na napisanie hello worlda albo kolejnej składni do funkcji, albo kolejnego pattern matchingu dla ifa. Wolałbym rzeczy, które pozwoliłyby mi zrobić coś, co wcześniej było niemożliwe albo bardzo trudne, na przykład HKT, możliwość wpięcia się w kompilator jak w lomboku, nowy GC (żebym mógł odpalać joby na sparku z sensowną wydajnością), fibery zamiast korutyn.

Co programista dotneta mógł zrobić w 2015, czego nie mógł w 2010? DLR i async. Co programista dotneta może w 2020, czego nie mógł w 2015? Spany i ref structy. Z mojej perspektywy ostatnie pięć lat jest w dużej mierze stracone, bo argumenty o odpalaniu dotneta na Linuksie kompletnie mnie nie ruszają. Oby przepisanie wszystkiego od zera pozwoliło im znowu się rozpędzić w najbliższych latach, ale pamiętam, że dwa lata temu mówiłem to samo i niewiele się zmieniło.

3

@Afish

Jeżeli jestem dotnetowcem od lat, to wieloplatformowość pewnie nie jest mi potrzebna, bo i tak jestem zżyty z Windowsem.

Tobie może faktycznie nie jest potrzebne, niemniej jednak całości - ekosystemowi już tak i moim zdaniem naiwnym byłoby sugerowanie że cross-platformowy dotnet nie był znaczącym krokiem na przód całości.

Nie potrzebuję kolejnego sposobu na napisanie hello worlda

A to nie jest po prostu krok w kierunku uczynienia C# bardziej REPL?

0
WeiXiao napisał(a):

A to nie jest po prostu krok w kierunku uczynienia C# bardziej REPL?

Może i tak, tylko tak naprawdę na co to komu? Jak ktoś chciał mieć REPL-a, to już dawno miał, chociażby przez CsScript czy PowerShell (sam tak używam od jakichś siedmiu lat), a są ciekawsze rzeczy do zrobienia. To nie jest tak, że ja mówię, że te rzeczy są niepotrzebne i powinni je wywalić. Ja mówię, że mogli ten czas spędzić na implementowaniu bardziej przydatnych elementów.

0

@Afish

Jak duża część dotneta działa na nie-Windowsach?

Nie znam rzetelnego sposobu na zebranie takich statystyk - no bo jak? appki stoją za reverse proxy i już nie ma jakichś dziwnych pomysłów na HTTP Headery typu POWERED-BY: ASP.NET

Mógłbym się jedynie wypowiadać nt. mnie i ludzi z mojego bubble.

0

@Afish

To istotne, bo jeżeli okazałoby się, że wieloplatformowość nie dała wielu nowych klientów, to jest to para w gwizdek.

To może nie strzelajmy - @krwq ty pewnie będziesz się orientował, jak wygląda sprawa korzystania przez "prawdziwych klientów" z .NET na non-Windows? jak się to zmienia z czasem.

Chociaż trzeba pamiętać że jest to bardziej inwestycja w przyszłość - co Ci z silnego środowiska jeżeli nie działa na tym, na czym siedzą devowie? Linux/MacOS, a przynajmniej taka jest moda

1

@Edelner:

Edelner napisał(a):

Tak jak napisałem, jeśli ktoś chce zrobić zaawansowaną aplikację webową to wybierze Jave, C# też może być, ale jednak Java góruje. Dalej, Czy Blazor ma jakiekolwiek szanse zastąpić JS? Czy ktoś na serio wybierze Xamarina zamiast Kotlina do pisania apki mobilnej?

Tak. Dziesiątki ludzi dziennie tak robią. Z różnych przyczyn. Java nie ma nigdzie 100% rynku. Kotlin nie ma 100% rynku. JS nie ma 100 rynku. Obnihdy zadna technologiq nie bedzi2 miala 100% rynki w swojej niszy.
W swiecie doroalych ludzi nie ma Pani przedszkolanki, która mówi wszystkim w czym mają pisać.

Poważne aplikacja pisze się nawet w php choć to przecież... php. (mam uraz z wersji 3).

.net jest wystarczająco dobry do wielu rzeczy.

4
Edelner napisał(a):

jeśli ktoś chce zrobić zaawansowaną aplikację webową to wybierze Jave

No pewnie ktoś tak zrobi. A ktoś inny wybierze .NET, a jeszcze ktoś inny PHP.
Ja rozumiem, że w jakimś HFT, systemach giełdowych czy streamingowych Java wygrywa ze zrozumiałych względów, ale nie w zaawansowanych aplikacjach webowych, które z powodzeniem od 20 lat powstają w .NET.

Czy ktoś na serio wybierze Xamarina zamiast Kotlina do pisania apki mobilnej?

W Kotlinie można na iOS?

W branży growej też nie siedzę, ale powered by Unity widzę dość często.

Afish napisał(a):

Trochę tak jest. Dotnet przez ostatnie lata dostał rzeczy, które na papierze brzmią fajnie, ale w praktyce niewiele dają. Jeżeli jestem dotnetowcem od lat, to wieloplatformowość pewnie nie jest mi potrzebna, bo i tak jestem zżyty z Windowsem.

Słyszałeś może o takiej firmie jak Amazon? :P
Oni tam maja taką chmurę i sprzedają dostęp do wirtualnych serwerów. Tak się składa, że te z Windowsem są 2-2,5 raza droższe od tych z Linuksem. Więc jak ktoś ma tysiąc takich maszyn i kosztuje go to jakieś ćwierć miliona € miesięcznie, to jak uda mu się zatrudnić programistów niezżytych z Windowsem, to po roku będzie miał 3 mln € na nowy jacht, dwa koenigseegi albo dużo prostytutek nadziewanych kokainą.

Wbudowany DI zamiast używania NInjecta albo wbudowane biblioteki do Jsona zamiast Newtonsoft.Json?

Kopiują pomysły z Javy, nie ma co narzekać, po prostu trzeba nie używać. ;)

Co programista dotneta mógł zrobić w 2015, czego nie mógł w 2010? DLR i async. Co programista dotneta może w 2020, czego nie mógł w 2015? Spany i ref structy. Z mojej perspektywy ostatnie pięć lat jest w dużej mierze stracone, bo argumenty o odpalaniu dotneta na Linuksie kompletnie mnie nie ruszają. Oby przepisanie wszystkiego od zera pozwoliło im znowu się rozpędzić w najbliższych latach, ale pamiętam, że dwa lata temu mówiłem to samo i niewiele się zmieniło.

Ja tam lubię pattern matching i throw expression. Czasem nawet tuple i funkcje lokalne. Tylko tutaj już kładziesz nacisk na C#, a nie .NET, a to temat na inną dyskusję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0