Nowy “Programista” (#74) jest już dostępny w wersji elektronicznej, a na papierze ma być w przyszłym tygodniu. Znajduje się w nim mój artykuł: Rust z perskeptywy programisty C++. Serdecznie zapraszam do lektury i liczę na feedback; najchętniej pozytywny 😉
Ledwo odpisałem Ci o Ruście, a tu nowy programista. 😀
Na początek, z ciekawości:
1. Z jakiego IDE/Edytora korzystałeś?
2. Arch to Twój domyślny system?[jakie DE?]
Zgadzam się z w 100% z restrykcjami – walka z kompilatorem na początku to wielka wojna. Ciekawe czy Rust w przyszłości wyjdzie szerzej na produkcję.
Artykuł jak zwykle na poziomie, liczę, że będzie więcej od Ciebie na temat Rusta, bo imo to taki must have dla Ciebie.
3 ostatnie wydania były ze mną, teraz chwila przerwy 🙂
1. Sublime Text.
2. Arch to mój domyślny Linuks, ale korzystam z setupu zbliżonego do tego Gynvaela (swoją drogą, od pewnego czasu noszę się z zamiarem opisania mojego setupu).
Tak więc mam maszynę z Windowsem, a na niej VM-kę z Archem, z którym łączę się przez SMB (dostęp do plików)/ssh (komendy)/x forwarding (okienka). Dzięki temu mam UI Windowsowe, do którego jestem przyzwyczajony, natywne Windowsowe aplikacje (w tym Sublime Text), ale mogę “jak natywnie” korzystać z systemu plików wirtualizowanego Linuksa (podpięty jako dysk Z). Dzięki temu mogę też korzystać z pełnego wsparcia dla montowania różnych systemów plików:
– podczas pracy z różnymi obrazami dysków/plików, mogę taki dysk podpiąć za pomocą odpowiedniej komendy mount, i widzieć to w Windowsie
– podczas pracy zawodowej mogę podpiąć za pomocą sshfs dysk “pracowy” i korzystać z niego jak z lokalnego, jednocześnie nie trzymając lokalnie żadnych plików objętych NDA.
To ostatnie, i fuse w ogóle, nie jest wspierane przez Windows Subsystem For Linux, uprzedzając pytanie.
Co do wyboru linuksa: kiedyś pracowałem na Gentoo, ale sobie odpuściłem. Specjalnych zysków nie widziałem (ok, miałem 1.2MB kernel, który bootował się tylko na tej konkretnej maszynie bo wszystko inne miał wycięte, ale poza bragging rights wiele mi to nie dawało). Może 1-2-5% wydajności? Na pewno nie dość, aby spędzać godziny na kompilacji, naprawie zależności, itd. Arch podoba mi się swoim podejściem do nowych release’ów (jeśli twórca uważa, że coś jest stable, to my też i znajdziesz to w repo bez czekania kilku miesięcy) i purytańskim domyślnym configiem (wszystko ustawiasz sam, praktycznie nic samo Ci się nie włącza). W Ubuntu czekanie na nowe gcc ze wsparciem C++XY trwało miesiącami, w Archu były to dni.
Trochę brakowało mi wstępu dlaczego Rust może być lepszym wyborem niż np. Go, czyli np. że ma FFI z C, wątki 1:1 (chociaż są biblioteki do green threading), compile-time zarządzanie życiem obiektów i referencji z opcjonalnym Rc/Arc, optymalizowane elementy programowania funkcyjnego (iteratory, enumy), możliwość wyłączenia libstd albo napisania własnego alokatora, wiecznie narzekający kompilator itd.
Dzięki za feedback! To była moja pierwsza styczność z tym językiem i opisałem to co najbardziej rzuciło mi się w oczy. W C++ jestem bardzo przyzwyczajony do tego, że przy poprawnym stosowaniu zasad czas życia obiektów jest również problemem dawno rozwiązanym (czyli rule of zero/three/five), więc nie było to dla mnie zaskoczenie – choć wymuszenie tego na poziomie języka jest bardzo przyjemne.
Jeśli pojawią się następne artykuły to na pewno wezmę Twój komentarz pod uwagę 🙂