Wpis z mikrobloga

Determinizm to masz w RTOSach na odpowiednich, wspierających platformach. Nie w Ruście.


@devopsiarz: Piszesz o czymś zupełnie innym. Rust jako język jest w pełni deterministyczny. Dokładnie wiadomo, gdzie dany zasób zostanie zwolniony i masz gwarantowane że jak program dojdzie do konkretnego miejsca X, to zasób Y będzie już zwolniony. Tej gwarancji nie masz w językach z GC.

Natomiast w językach z GC nie tylko nie wiadomo kiedy rozpocznie się proces sprzątania
to język do bardziej niszowych zastosowań


@Saly: wbrew opiniom, Rust jest językiem ogólnego zastosowania, dzięki braku ryzyka istniejącego C++, można w nim pisać w zasadzie wszystko poza front endem

choćby brakuje mu abstract class/interface i nie jest w ogóle ogarnięty na pracę OO.


@sorek: to akurat chyba bardziej zaleta niż wada - traity istnieją i nie mają wad, które narzuca dziedziczenie
@Krolik:

bo ma całkiem pokaźny runtime - GC i silnik zarządzajacy gorutynami. Nie tylko nie może działać na bare metal, ale też nie może zero-kosztowo wywoływać API systemu tak jak C / C++ / Rust.


Oczywiście, że go działa bare metal - polecam sprawdzić projekt TinyGo (to prawie Go, tylko z małymi różnicami: https://tinygo.org/docs/concepts/compiler-internals/differences-from-go/

I Rust też ma runtime, ale mniejszy (chyba, że dorzucisz np. tokio, wtedy już jest spory). Musi
można w nim pisać w zasadzie wszystko poza front endem


@Sachees: na frontendzie też można używać dzięki webassembly i nawet całkiem przyjemnie to wygląda, np. Leptos, Yew ( ͡° ͜ʖ ͡°)
@DK13: cóż, nie próbowałem, próbowałem tylko pisać front do "klasycznych" aplikacji i stan frameworków nie był najlepszy niestety
ale fakt, o webassembly sporo się mówi, tylko nie wiem jak z popularnością tego
Oczywiście, że go działa bare metal - polecam sprawdzić projekt TinyGo


@devopsiarz: na tej zasadzie to Java też działa na bare metal bo były implementacje JVMa na systemy wbudowane. Albo MicroPython. Tylko że to jest mocno naciągane - okupione całkiem sporym kosztem którego normalnie w językach takich jak C/C++/Rust nie ponosisz. Zobacz sobie ile kosztuje głupie wywołanie API systemu z Go a ile z C. Przepaść. Koszt na tyle duży że
@placebo_: Od dwóch lat programuje w ruscie fulltime. Przyszłość wygląda obiecująco. Piszę głównie webserwisy właśnie i jest bardzo spoko. Rust to nie tylko język do niszowych zastosowań.

Co prawda może się nie przebić ponieważ jest zwyczajnie dosyć trudny.
@Krolik

na tej zasadzie to Java też działa na bare metal bo były implementacje JVMa na systemy wbudowane. Albo MicroPython. Tylko że to jest mocno naciągane - okupione całkiem sporym kosztem którego normalnie w językach takich jak C/C++/Rust nie ponosisz. Zobacz sobie ile kosztuje głupie wywołanie API systemu z Go a ile z C. Przepaść. Koszt na tyle duży że praktycznie znika sens aby w ogóle to robić. No ale technicznie oczywiście
@devopsiarz: jest różnica między tym czy coś działa w teorii, a czy nadaje się do użycia na produkcji. W teorii Linux działa jako emulacja w przeglądarce WWW, ale nie chciałbyś na takim Linuksie pracować. Większość tych mikrokontrolerów na tej liście to Arduino czyli zabawka dla hobbystów lub minikomputery jak Raspberry Pi czy Nintendo - trudno to uznać za embedded, na RPi to normalny Python i desktopowa Java działają. Pokaż mi jak
@Krolik: ja mam akurat coś produkcyjnego na rp2040 w TinyGo, nic specjalnie wielkiego, parę czujników i podczerwień na PWM, ale jest. Wcześniej miałem na micropythonie, z którego zmigrowałem. Jednak jak teraz rozumiem, to jest niedozwolone i nie nadaje się na produkcje, bo Ty tak napisałeś? ( ͡° ͜ʖ ͡°)

PS Czasem poskrom swoje ego, bo nim sztuczne satelity kiedyś postrącasz. To, że o czymś przeczytasz w Google,
@devopsiarz: wszystko fajnie i cieszę się że Ci działa, ale jednak masz inną definicje embedded i bare metal niż ja. Coś co ma wystarczającą moc by odpalić Linuksa (albo Cassandrę) to raczej nie jest bare metal, tylko normalny komputer tyle że malutki ( ͡° ͜ʖ ͡°) A o nie nadawaniu się na produkcję to pisałem o Arduino. Arduino just platformą hobbystyczną/edukacyjna, która nie spełnia standardów przemysłowych. Dobre
zystko fajnie i cieszę się że Ci działa, ale jednak masz inną definicje embedded i bare metal niż ja


@Krolik: rozmawiamy o "jest różnica między tym czy coś działa w teorii, a czy nadaje się do użycia na produkcji"

Także jak widać nadaje się, bo działa na produkcji. Więc nie działa w teorii. Proste.

To, że według Krolika się nie nadaje, ma małe znaczenie, chyba, że Krolik to jakiś klient z
@devopsiarz: > Ryzykujesz zwłaszcza w sytuacji, jak jakichś rozwiązań nie widziałeś na oczy, ale już wiesz jak działają, bo posiadłeś wiedzę wszechmędrca technologii.

@devopsiarz: ale to Ty twierdziłeś, że Go działa w embedded, a na poparcie swojej tezy wrzuciłeś projekt, który działa jedynie na zabawkach. Gdzie są te pralki, roboty przemysłowe, sterowniki ogrzewania, zegarki, komputery sterujące silnikami (ECU), routery oparte na Arduino i RPi i zaprogramowane w Go? Jakoś nie
A to, co działa w przemysłówce, w tym w siłowniach jądrowych


@devopsiarz: nie muszę wiedzieć co działa w siłowniach jądrowych aby wiedzieć, że żaden język z GC nie nadaje się do takich zastosowań. W zastosowaniach przemysłowych liczy się absolutna przewidywalność. Nie ma miejsca na "a teraz właśnie włączyło się GC i wrócimy do wykonywania programu za 10 sekund, reaktor wytrzyma". Tak samo nie muszę być specjalistą od lotnictwa żeby wiedzieć że
@Krolik: przypomnę, co napisałeś Ty sam:

(...)bo ma całkiem pokaźny runtime - GC i silnik zarządzajacy gorutynami. Nie tylko nie może działać na bare metal [w sensie Go - dopis mój]


Widzisz tu jakieś swoje wzmianki o pralkach, robotach? Zapomniałeś wspomnieć, że nie działa również w rakietach SpaceX, równie dobrze to będzie pasować do kontekstu, ale liczę, że zaraz się poprawisz.

Po prostu napisałeś wcześniej bzdurę i teraz kombinujesz jak się
@devopsiarz: rozmowa z Tobą wygląda mniej więcej tak: stwierdziłem, że glina nie nadaje się do budowania mostów, Ty na to że po pierwsze nie jestem specjalistą od mostów, więc się nie powinienem wypowiadać na temat mostów, a po drugie w piaskownicy zbudowałeś z gliny most dla mrówek i on się nie zapadł jak przechodziła po nim mrówka i jest to "produkcyjne zastosowanie gliny", więc glina nadaje się do budowania mostów; a
@Krolik:

rozmowa z Tobą wygląda mniej więcej tak: stwierdziłem, że glina nie nadaje się do budowania mostów, Ty na to że po pierwsze nie jestem specjalistą od mostów, więc się nie powinienem wypowiadać na temat mostów, a po drugie w piaskownicy zbudowałeś z gliny most dla mrówek i on się nie zapadł jak przechodziła po nim mrówka i jest to "produkcyjne zastosowanie gliny", więc glina nadaje się do budowania mostów; a