#rust

7
11
Wyniki dorocznej ankiety języka Rust

Polacy są w pierwszej dziesiątce użytkowników tego języka!

#technologia #programowanie #rustlang #rust
ef7ce715-2ee8-4cfe-9c26-cdf5206515b3
HolenderskiWafel

Bardziej mni dziwi że Niemcy drudzy, a nie jacyś Chińczycy czy Hindusi

Catharsis

@HolenderskiWafel Zgaduje że Chińczycy nie przesiadują na forach Rusta to pewnie nawet nie wiedzieli o tej ankiecie. Ja np nie miałem o niej pojęcia a od ponad miesiąca się uczę Rusta xD.

Zaloguj się aby komentować

Będąc użytkownikiem Rusta, widzę niekiedy wiadomości, jak to nowy projekt zaczyna używać tego języka czy nowy driver w kernelu jest na niego przepisywany.

Pod każdym znajduje się spora ilość komentarzy pozytywnych/neutralnych jak i pewna część negatywnych głównie pochodzących od użytkowników innych niskopoziomowych języków tj. C czy C++.

Oto niektóre powody szkalowania(często słusznego) języka:

  • Toksyczna społeczność - głównie chodzi o RIR(Rewrite in Rust) - pisane często pod postami o programach nie napisanych w tym języku - głównie przez osoby nie programujące w Rust, tylko myślące że jest to złoty środek na wszystkie bolączki i błędy występujące w programach.

  • Niebezpieczny system pakietów - chodzi głównie o to że można próbować ataku polegającego na podszyciu się pod crates.io i zmienić paczki na ich złośliwe wersje. Według mnie taki atak prawie niemożliwy do wykonania, bo np. Cargo.lock posiada w środku hashe paczek, co uniemożliwia użycie podrobionej wersji paczki.

  • Używanie do wszystkiego obcych zależności - parser cli czy implementacja tls, według niektórych użytkowników powinno to być napisane ręcznie albo przez zrobione przez kopiuj/wklej bezpośrednio do repozytorium. Według mnie to właśnie jest niebezpieczne, bo kopiowanie coś takiego komplikuje proces budowania, wydłuża proces tworzenia aplikacji jak i zwiększa ryzyko błędów/wymusza ciągłą synchronizację(można to łatwo zrobić przy pomocy git submodule, którego jednak niezbyt lubię). Obce pakiety, używane przez setki innych projektów mają zwykle o wiele lepszą jakość, więcej funkcji i mniej błędów niż te ręcznie napisane.

  • Problemy statycznego linkowania - jeśli jakaś zależność np. openssl, będzie miała błąd który będzie naprawiony w nowej wersji, to gdy jest ona dynamicznie linkowana trzeba tylko ją przekompilować a w przypadku rusta całą aplikację - głównie jest to podnoszone przez ludzi zarządzających dystrybucjami, bo wiąże się to ze zwiększonym wysiłkiem.

  • Problemy z pamięcią to tzw. skill issue i dobrzy programiści nie robią ich prawie wcale/mnie się one nie zdarzają choć już kilka lat programuję w C/C++ - setki tysięcy programistów używają C/C++ i naturą ludzką jest popełnianie błędów a te języki pozwalają odstrzelić sobie stopę w najbardziej wymyślny sposób w zupełnie losowym momencie(problemy z pamięcią często objawiają się z opóźnieniem). Wymagają od użytkowników trzymania dużej ilości informacji o kodzie w swojej głowie, co oczywiście nie jest idealne i problemy ze zrozumieniem kodu/jego poprawną zmianą pojawiają się przy zmiany osoby używającej program czy po dłuższej przerwie od danego kawałka kodu. W przeciwieństwie do C i podobnych niskopoziomowych języków, kompilator Rust traktuje użytkowników z dystansem(można powiedzieć że jako debili - ale w pozytywnym tego słowa znaczeniu(jeśli oczywiście takie jest)) i wymusza określony styl i praktyki, no chyba że zmienimy to przez unsafe. Pozwala to zwykłym użytkownikom tworzyć szybko działające programy, bez bania się o wszędzie czychające problemy z pamięcią, jak i przychylniejszym okiem patrzyć na pull requesty, bo szansa na zepsucie kodu jest o wiele mniejsza. Z tego co zauważyłem to programiści C, często uważają się za pewną elitę, bo przecież nie każdy potrafi robić to co oni. Wystarczy zobaczyć https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=memory, by zauważyć że zbyt wiele programów rozwijanych przez bardzo wykwalifikowanych programistów ma problemy z pamięcią i że to raczej nie problem ich zbyt małych umiejętności. No a jeśli to problem zbyt małych umiejętności, to większość programistów powinna unikać jak ognia C skoro jest on przystosowany jedynie dla najbardziej zaawansowanych.

  • Długa kompilacja i biorąca dużo zasobów systemowych - Rust z racji ilości koniecznej weryfikacji wszystkich parametrów, typów, lifetimów etc. bierze o wiele więcej zasobów systemowych i czasu niż c czy np. go, więc do kompilacji lepiej zaopatrzyć się w mocniejszy komputer

  • Brak dostępności na wszystkich platformach gdzie C jest dostępny - C jest chyba najbardziej przenośnym językiem na świecie(w ilości kompilatorów na różne platformy sprzętowe), wiec trudno by z nim konkurować. Rust wspiera najbardziej popularne systemy bazujące na ARM, x86-64 i wielu innych architekturach wspieranych przez llvm, ale obecnie nie ma oficjalnego wsparcia dla alpha, hppa, ia64, m68k czy s390. Problemem dużym to nie jest bo dotyczy zapewne grubo mniej niż 1% wszystkich użytkowników i to tych, którzy pracują na antycznym/mniej popularnym sprzęcie.

  • Jest o wiele trudniejszy niż C/C++ - składniowo na pewno na pierwszy rzut oka nie wygląda zachęcająco, jednak z doświadczenia muszę powiedzieć że programuje się w nim o wiele szybciej niż w powyższych językach, bo nie muszę polegać w wielu przypadkach na sobie, tylko na kompilatorze. C jest dość prosty pod względem składni, ale bardzo trudnym gdy chce się go poprawnie używać, głównie przez to że bezpośrednio operuje się na pamięci. C++ z wersji na wersji próbuje stać się językiem bezpiecznym, jednak ciągnie się za nim szereg funkcji ze starszych wersji i problemów, które po prostu nie mogą zostać naprawione bez gruntownej modyfikacji języka.

  • Rust rozwiązuje tylko problemy z pamięcią a ich nie robię - cóż, jeśli nawet to prawda(w co szczerze wątpie, jeśli używasz C/C++) to przynosi on szereg przydatnych funkcji, tj. ograniczenie wyścigów o dane, ujednolicenie formatowanie kodu(rustfmt), oficjalny system budowania(cargo), wymuszanie obsługi wszystkich sytuacji w match (switch w C/C++), przyjazne komunikaty błędów - bardzo często z kodem który można zrobić kopiuj/wklej i naprawić problem.

Jak widać Rust nie jest złotym środkiem na wszystko ale wprowadza kilka niezłych usprawnień w stosunku do C/C++, jednak jak widać części ludzi nie jest tym przekonana. C/C++ jak widać po np. statystykach na githubie nigdzie się nie wybiera i ciągle miliony linii kodu będą w tych językach pisane, jednak z roku na rok, coraz większe grono języków zaczyna je podgryzać.

#programowanie
#rustlang
#rust
178866a4-d06a-4a8f-b49c-195e1697a9ce
5348b615-36e1-4a23-b735-7a34e7c5cb0c
faf9ce9d-a1b6-48e6-8ba4-97bb88e975b0
adb6cd90-ab8a-4da2-a53b-9147ed684de3
def

Po czym poznasz progrmiaste rusta? Sam ci to powie

Catharsis

@qarmin Ostatnio zacząłem się uczyć Rusta i jako osoba która wcześniej pisała dosłownie wszystko w JS to było ciężko. Na pewno bardzo mi się podoba Cargo i Crates.io bo to dosłownie jest odpowiednik npm i działa niemal identycznie znacząco upraszczając pisanie czegokolwiek.


Kiedy chodziłem do technikum to byłem chyba ostatnim rocznikiem który uczył się na programowaniu C++ (teraz jest python) i o ile uważam, że Rusta uczy mi się dużo lepiej to jednak na pewno nie polecałbym go jako pierwszy język programowania bo znacząco się różni od innych popularnych języków i potem uczenie kolejnych może być utrudnione.


A co do społeczności Rusta to nie wiem może przeglądamy jakieś inne subreddity ale dosłownie jeszcze nie widziałem nigdzie w necie na niego hejtu lol. Na Reddicie wszyscy zawsze pomocni, masę rzeczy się dowiedziałem z odpowiedzi pod postami. Tak samo na różnych forach i stackach. Nawet na r/linux czytałem posty zachwalajace dodawanie kodu Rusta do kernela , nie wiem może przypadek że ominęło mnie to totalnie xD.


A co do wydajności to jako typ przychodzący z JS to xD, dwa światy. Czasem sobie testowo/dla nauki przepisuje jakiś stary kod z JS na Rusta i jaram jak wykonuje się z 50 razy szybciej jednocześnie zużywając ułamek ramu który zużył JS. To chyba moja największa motywacja w nauce Rusta.

qarmin

@Catharsis Przeglądam głównie reddita(nie tylko r/rust, ale też z innych języków np. r/python czy r/go) jak i phoronix i tam niemal zawsze się znajdzie się ktoś kto ma mocne obiekcje co do języka(pewnie część to trolle, ale nie wszyscy).

piotrb

@qarmin Ja bym dodał jeszcze tych co rzucają: „a i tak trzeba wszędzie zrobić unsafe”.

Zaloguj się aby komentować

Od ~5 miesięcy po godzinach tworzyłem sobie nową wersję aplikacji do czyszczenia niepotrzebnych danych z dysku.

Tutaj blogpost opisujący zmiany w niej - https://medium.com/@qarmin/czkawka-7-0-4941b9bdba55

Jednak zapewne większość z was nie wie co to jest.
Program nazywa się Czkawka, Krokiet(krokiet to nazwa nowego gui, który właśnie stworzyłem, czkawka to stara wersja gui i nazwa biblioteki pod spodem) i potrafi znajdować duplikaty plików, puste pliki i foldery, podobne obrazy, widea, pliki muzyczne, niepoprawne symlinki, rozszerzenia, uszkodzone pliki i jest jednym z najszybszych tego rodzaju.

Ja sam często z niego korzystam by wyszukać dwa niemal identyczne memy, różniące się np. rozdzielczością czy znakiem wodnym i usunąć ten w gorszym stanie.

No i dochodzimy do najważniejszego, jaka cena tego badziewia?
Darmo. Licencja MIT/GPL.

Repozytorium - https://github.com/qarmin/czkawka
Pliki do pobrania - https://github.com/qarmin/czkawka/releases

#tworczoscwlasna #programowanie #rust #rustlang
89c79c8a-4ad4-4f8f-b904-3a089d556f4d
Peregrin

@qarmin hej! Pamiętam jak opisywałeś program po raz pierwszy na portalu na w. Super, że projekt dalej żyje i jest rozwijany. Powodzenia na przyszłość!

Marchew

@qarmin 

Klikam randomowy soft z githuba:


Windows Defender

19.02.2024 19:52

Wykryto: Trojan:Win32/Wacatac.B!ml

Stan: Kwarantanna

Szczegóły: Ten program jest niebezpieczny i wykonuje polecenia osoby atakującej.

Dotyczy elementów:

file: C:\Users\xxx\Desktop\windows_krokiet.exe

DexterFromLab

@qarmin czyli jak pobiore 2 takie same filmy, różniące się np nazwą i kodowaniem to mi to rozpozna? I mogę go odpalić z konsoli na serwerze?

Catharsis

@DexterFromLab Tak, oraz rozpoznaje nawet jak filmy mają inną rozdzielczość i długość. Można ustawić "czułość" wykrywania i przy odpowiednio wysokiej to potrafiło mi nawet wykrywać jak film miał w sobie urywek z innego filmu, np to samo intro xd.

qarmin

@DexterFromLab Tak i tak


@Catharsis Obecny algorytm wyszukiwania podobnych filmów jest prosty(w sensie prosto go zrozumieć jak działa, ale sama implementacja jest skomplikowana). Korzystam więc z zewnętrznej biblioteki, bo sam chyba nigdy bym tego nie napisał. Ma ona ograniczenie, że testuje jedynie widea dłuższe niż 30 sekund i tylko porównuje te 30 sekund z początku.


Autor tej biblioteki pracuje nad usunięciem limitu minimalnej długości 30 sekund, jednak ciągle max 30 sekund z początku bedzie testowane.


Jeśli interesuje was tylko i wyłącznie kwestia znajdywania podobnych wideo i funkcja w Czkawce nie wystarcza, to polecam również darmowy i open source - https://github.com/0x90d/videoduplicatefinder, sam go czasami używam i działa całkiem dobrze(z tego co kojarzę to tutaj jest chyba tylko wersja GUI).

Zaloguj się aby komentować

Ejejejejej. Pochwalcie się co ciekawego ostatnio znaleźliście na temat #programowanie - jakąś bibliotekę?
Może jakiś fajny AI model co można uruchomić lokalnie?
Może jakiś zajeb%@#% serwis?
Albo coś fajnego self hosted?
Mam wolny wieczór, chętnie o czymś ciekawym poczytam.
#sztucznainteligencja #js #javascript #react #aws #google #python #php #golang #rust #react
Klopsztanga userbar
dotevo

ostatnio sporo siedzę w tematach virtio służbowo, ale chyba to mało dla Ciebie interesujące.

Klopsztanga

@dotevo co uzywasz do wirtualizacji, i jakiego typu to jest wirtualizacja ? Serwerowa czy użytkownikowa ?

dotevo

Aby zrozumieć dlaczego virtio jest fajnym rozwiązaniam trzeba się najpierw zagłębić w to jak w ogóle wygląda postawienie systemu np. Androida na urządzeniu. Każdy telefon jest trochę inny. W inne miejsce może być podpięta pamięć, serial itd. Dlatego zawsze kilka tygodni zajmuje pokonfigurowanie kernela. Potem trzeba napisać HAL, który tłumaczy androidowi jak np. używać GPS. To znów wymaga czasu. Każda aktualizacja androida wymaga dopasowania tego co już jest. Często więc dużo czasu i pieniędzy wymaga takie coś - jest też Treble, ale mniejsza z tym teraz.


Konkluzja jest taka:

Różne systemy operacyjne odpalane na czymś w stylu telefonu. Jest system linux host, który przez virtio przekazuje wszystko do guesta (usb, bt, wifi itd) np. Androida i dzięki temu działa od razu bez zabawy w drivery po stronie androida.


To jest o tyle fajne, że jeśli się przyjmie na szeroką skalę to aktualizacja systemu będzie możliwa na dowolnym urządzeniu. Wymiana systemu na dowony inny używający virtio też nie będzie problemem. Może rynek telefonów zacznoe przypominać rynek PC, gdzie możesz sobie podmoenić system i wszystko śmiga.

radler

@Klopsztanga Ostatnio zacząłem się interesować troche fizyką kwantową i okazuje się, że IBM u siebie na stronie ma darmowe narzędzie do budowy obwodów kwantowych - https://quantum-computing.ibm.com/composer/files/new

Niestety póki co nic z tego nie rozumiem

Klopsztanga

@radler i za szybko nie potestujesz

Zaloguj się aby komentować

#rust #golang #linux
Zbliża się nowy projekt i nie mogę się zdecydować czy wybrać Rust czy iść w Go. Go znam dość powierzchownie. Napisałem kilka małych CLI i jeden hobbistyczny backend. Rust nie znam w ogóle ale przyciąga mnie ten borrow checker. Będzie to projekt sieciowy wiec i latency musi być dość małe oraz memory footprint będzie również ważna częścią projektu. Wiem ze cilium ma liba do eBpf który jest dość dobrze sprawdzony. Czy Rust ma tez jakiś dobry odpowiednik? Projekt będzie działał bardzo blisko kernela linuxowego wiec to tez jest bardzo ważne.
Jakie macie doświadczenia z Rust? Stabilnośc języka i bibliotek? Mam nadzieje ze jest o wiele lepiej niż w Nodeland gdzie 80% to śmieci albo porzucone projekty.
Dzięki 🖖

Zaloguj się aby komentować

To ja gdy wkręciłem się w #rust #heheszki
9790bce0-156c-4205-b743-0a5fc0489117
Wikariush

@Rusty always is bigger fish

monk3i

@elo Tak i jest całkiem popularna, top 10 w steam, na wykopie była odwieczna wojna że tag #rust jest dla gry, a nie programowania, ale pierwsi zajęli gracze, tutaj natomiast pierwsi zaczęli od języka rust, ale pewnie i tak będą dwa różne tematy pod jednym tagiem.


@Wikariush gdzie tam grasz?

Wikariush

@monk3i za mało czasu mam na officiale, więc wolne wieczory spędzam na zmodowanych. Jak masz pytania to pytaj na "priv" (czuje się jakbym sprzedawał pierdoły na Facebook marketplace) xD

Zaloguj się aby komentować

Przeglądałem ankietę zorganizowaną przez Stack Overflow w tym roku i zaciekawiły mnie wyniki na temat najbardziej lubianych języków wśród grupy 71467 osób. Ciekawy jestem czy ten język jest faktycznie aż tak lubiany i dlaczego. No i jak sprawuje się w świecie "embedded".
8a94ea75-756d-43c7-bb26-7233f7b0035d
warzone

@Femto dzięki za komentarz.

Miałem kiedyś okazję pracować w miejscu, gdzie stosowano C++ razem z minimalistycznymi bibliotekami standardowymi, ale nieraz się pamięć przepełniała.


Nawet nie chce mi się wyobrażać kiepskiej architektury w Ruście. Chyba bym się od razu zwolnił.


C dobry jak witamina.

inskpektor

@Femto O, fajnie że się podzieliłeś doświadczeniem. Też kiedyś hobbystycznie próbowałem rust ale było to 6-7 lat temu. Jednak pamiętam że, że tak powiem 'pobawienie' się tym językiem było już trudne bo kompilator łapał za gardło :). Od tego czasu pewnie sporo się zmieniło na lepsze.

Femto

@warzone Zarówno C jak i C++ to języki konstruowane według zasad "nie płacisz za to z czego nie korzystasz". To znaczy, że z jednej strony są bardzo wydajne (nie robią nic ponad to o co je poprosisz), a z drugiej możesz sobie stworzyć pusty pointer i wskazuje on na losowy adres pamięci. Inicjalizacja takiego pointera przez kompilator to praca której nie wszyscy potrzebują i tyle .


Z C++ w embedded jest problem jak z piłami łańcuchowymi. Ekstremalnie skutecznie przecinają zarówno drewno jak i kończyny. Nieprzeszkolony operator szybko się potnie przez co łatwo powiedzieć, że "ręczna piła dużo lepsza bo jeszcze nic sobie nią nie uciąłem".


Niestety ani uczelnie ani podręczniki nie skupiają się na np. tym jak malloc/new, free/delete, biblioteka standardowa itp. działają pod maską i niemal wszyscy jesteśmy tymi nieprzeszkolonymi operatorami. Śledzenie pamięci i jej fragmentacji mogłoby zjeść pół miejsca na kod w takim MCU z 32kB flesha i często free() nawet nie jest zaimplementowane...


Ja mam zasady które stosuje po kolei w zależności od konieczności:

  • alokuj tylko statycznie (95% przypadków)

  • jak się nie da alokuj dynamicznie ale dokładnie RAZ (np. w zależności od konfiguracji urządzenia jeden bufor może być większy, a drugi mniejszy. Alokuje je na starcie i nie ruszam.

  • alokuj dynamicznie chunki ale tylko o jednej z 1..n znanej wielkości. Wtedy sensownie łatwo jest zaimplementować śledzenie fragmentacji. Koszty testów takiego oprogramowania to od razu x2 albo x3.

Zaloguj się aby komentować