Fórumok
Sziasztok,
kiváncsi volnék személyes tapasztalatokra Rust nyelven leszállított szoftvereket/szolgáltatásokat illetően. Miben van felhasználva, hobbi fejlesztés vagy termék? Megérte Rust-ban dolgozni? Ha igen, miért? Melyik nyelvet váltotta ki?
Érdekelne az is, milyen IDE (integrált fejlesztői környezet) használata vált be Rust-hoz?
Köszönöm!
Hozzászólások
Kísérletképpen egy kis Pythonos API-t váltottam le vele. Sebesség miatt. És kíváncsiság miatt. Memóriában tartott adatok szűrése, összegzése, százezres nagyságrendű tételszám.
Legalább 50x gyorsulás mindenben:
- 50ms helyett <1ms a response time
- Pythonban 10ms a pickle.dump, Rust ugyanebbe a formátumba 0.2ms alatt ment, JSON-nál nem ilyen nagy a különbség
- Flask a teszt gépen 2k dummy kérést szolgált ki egy szálon, Actix Web 70k-t egy szálon (35x) és 300k-t 5 szálon (150x)
Rustban programozni sokkal jobb élmény volt mint vártam. Azt írták hogy nehéz tanulni, és az ownership tényleg szokatlan volt, de alapvetően meglepően könnyen és gyorsan haladtam benne.
Tetszett a szigorú None kezelés. Pythonban ennek a hiánya sok bajt okoz. A type hint-ek és mypy segít, de jobb így hogy a nyelv szerves része.
Úgy általában a szigorú típusosság jó élmény. Korábban Elm-nél éltem át hogy a JavaScript törékenységéhez képest micsoda élmény hogy bízhatok a kódban. Rust ilyen tapasztalat Pythonhoz képest. Jóval bőbeszédűbb a kód, viszont ad egy nagy stabilitás érzést. Python hozzá képest elegánsabb, tömörebb, de kártyavár élmény.
Ebből a szempontból (is) úgy látszik körbe-körbe megyünk.
Gábriel Ákos
Hasonloan: Patterns in Network Architecture: A Return to Fundamentals, John Day
En kotlin-bol jottem, eros c/c++ hatterrel, es elegge szoporoller volt, szo szerint nagyon "utban van" a nyelv. kb. 5-10x produktivabb vagyok java/kotlin alatt. Persze, az ownership a security miatt amugy fontos lenne, de amikor szo sincs security-rol, csak szeretnek egy modult irni, es modulon belul is gyokolni kell az ownership-pel, az nagyon gaz. Pl. graf-ot akartam hasznalni, gondoltam, osszedobok egyet en, de elotte megneztem, milyen lib-ek vannak mar - ott irtak, hogy az ownership modell miatt jobb, ha nem allsz neki magad, mert szoporoller erosen, amit teljesen meg tudtam erteni es meg is fogadtam.
Sajna a java JIT + GC dolgai is erosen szopo kategoria, meg a vacak JVM meg 20-30 evvel a megjelenese utan is tetu lassunak erzodik, de legalabb produktiv benne az ember (... IDEA-val. anelkul kb. osszeomlana a java ecosystem :D ).
JVM -bol jovet meg a teljesitmeny meg a tobbszalusag elonye sem jatszik ugye.
Szumma nem rossz, a c/c++ -nal jobb a rust, de ugyanannyival komplikaltabb is. IMHO kotlin/swift/... uj-generacios nyelvekhez kepest tulbonyolitott, es az extra bonyolultsag nem "terul meg" produktivitasban vagy barhol mashol.
Én is 10x produktívabb vagyok Pythonban. Egyelőre. Nem tudom hogyan változik ez hosszútávon. Pár millió sornyi Python után már ösztönös, csak átfolynak a gondolataim az ujjaimon kódsorokká. Rustnál ez még messze van.
De jó volt ezt olvasni. Köszi!
Kb. 2 hónapja tudatosult bennem, hogy a Pythont váltani fogom Rustra jövő évben. Figyeltem a nyelvet már kb. 4 éve, de mostanában annyi pozitív hír jött, hogy bennem is megfogalmazódott a váltás. Nyilván ebben az is benne van, hogy most már kell a váltás kiégés, unalom ellen.
Említetted a Flask-et. Most már lassan 10 éve tolom. Flask miatt nagyon nehéznek tűnik a váltás. Nagyon szeretem.
Biztos, hogy nem én gonoszoltam le!
Miért a Pythont akarjátok váltani? Igaz, csak a Pythont ismerem közelebbről, de nekem úgy tűnik, a két nyelv nem teljesen ugyanarra való. Nem lehet a teljesítménykritikus részeket Rustban megírni, és azt meghívni Pythonból, ahogy eddig?
Igen, így csináltam korábban Python API, Cython betétekkel. Viszont ahogy sokat mértem és optimalizáltam, azt találtam hogy Python egyszerűen csak dög lassú, 20-30 ms csak az hogy végiglépkedjek egy tízezres listán, és még nem is csináltam műveletet a tételekkel. A cél ennél a rendszernél (első körben) <10ms response time, ami Pythonnal lehetetlen akármit művelek, Rusttal pedig egyszerűen csak adott.
Ha ez a konkrét use case, az úgy érthető, inkább általánosságban gondoltam. Sok helyen olvasok pont a python-->rust irányról, olyan esetben is, aminek elsőre nem látszik az értelme.
pypy?
PyPy átlagosan 5x gyorsabb mint CPython: https://speed.pypy.org/ Ami szenzációs eredmény.
Rust viszont 50x (a témákban amiket mértem).
Amikor néztem PyPy-t utoljára, még nem támogatott sokmindent ami fontos volt nekem. Viszont most úgy látom behozta a lemaradást. Teszek is vele egy kísérletet. Nem baj ha 5x gyorsabb a rendszer, amíg még Pythonban van. Köszi hogy eszembe juttattad.
Igen a futasi sebesseg rohadt sokat szamit. Van ez a rangsor energia felhasznalas szempontjabol is: The 10 most energy efficient programming languages | by Kasper Groes Albin Ludvigsen | Medium. De mindig az a kerdes milyen aron. Ezert szerintem azt is erdemes a szamok melle tenni, hogy pl. hogyan alakul a fejlesztes ideje.
En Go-ban vagyok jartas, es igaz, hogy 2-4X lassabb mint mondjuk Rust vagy C++, de lehet 1/3ad annyi ido alatt elkeszul. Pl Go egyik nagy erossege, hogy kenyelmes csapatban dolgozni vele. Fa-ek egyszeru (nyilvan vannak brainfukk dolgok), rengeteg dologot levesz a vallunkrol (pl. GC, thread kezeles, buffer overflow vedelem), kevesebb idot toltunk review-val, gyorsabban fordul, van beepitett race detector, kod generatorok, es az ide+debugger is eleg jo (itt tuti van mit fejlodni, Javahoz kepes pl).
Van esetleg ezen a teruleten is tapasztalatod, amit megosztanal?
Multi node Kubernetes cluster for local development of Kube components
Igen, Go-t is nézegettem, tetszik az egyszerűsége, de a jelenlegi projektemhez a nyers többszálú sebesség fontos szempont, így szívesen megfizetem az árát fordítási időben és bőbeszédűbb kódban. Pythonban el lehet érni C sebességet Cythonnal, ahhoz képest Go visszalépés lett volna.
Rusttal csapatban dolgozásról nem tudok nyilatkozni mert egyelőre egyedül dolgoztam csak benne.
JetBrains (PyCharm konkrétan) Rust pluginját használom és elégedett vagyok vele: https://www.jetbrains.com/rust/
Hat haj, a masssziv parhuzamos futtatas nem a Go erossege.
Multi node Kubernetes cluster for local development of Kube components
Erős assembley és C háttérrel rendelkezem. Nem látom, miért kéne bármi másra váltanom erre a kis időre, de ez nyilván amiatt a szakterület miatt van, amelyen dolgozom. Miben ad többet a Rust, mint a C?
> Sol omnibus lucet.
A C alatt a C++-ot is értjük?
Mert nekem amúgy a C++ áll kézre és én sem igazán értem, hogy mitől jobb egy Rust. Viszont egyre többen és egyre nagyobb nevek váltanak, így elképzelhető, hogy a divaton kívül valami más is lesz a háttérben.
Írtam programokat más nyelveken is. Van ami semleges számomra, de az ilyen MS közeli nyelveket nagyon utálom mert annyira logikátlan az egész mondjuk egy C-hez képest.
- Indítsd újra a gépet! - Az egészet? - Nem, a felét...
Nekem az a tippem, hogy a legnagyobb "elonye", hogy kevesebb problema legyen junior fejlesztok felvetelevel. A Rust altal adott safety net sok hibat ki tud szurni.
https://bitbucket.org/blog/why-rust
Szerk: Masik velemeny: https://scalac.io/blog/5-reasons-why-rust-is-the-future-rust-functional…
Jól összeszedett írások köszi.
Rust-nál (már) nem tudsz berozsdásodni...
Lesz pár C programozó aki nem fog tudni nem tudomást venni a Rust-ról: https://hup.hu/cikkek/20220921/hivatalos_a_rust_be_lesz_olvasztva_a_6_1-es_linux_kernelbe
Lazán kapcsolódik.
Direkt nem a HWSW cikket linkeltem be, mert az eredetiben sokkal technikai információ van.
https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connect…
Mivel nem egyértelmű, hogy csak fejlesztőket kérdezel-e, mert „személyes tapasztalat”-ot írsz, így leírom nem fejlesztő, linuxos végfelhasználóként, hogy utálom a Rust-ot. Nem a nyelvet magát, mert nem programoztam még benne, hanem mikor Arch AUR-ból vagy clone-ozott git-tárolóból kell forgatnom Rust kódot, az elég lassan fordítgatja a cargo a függőségeket. Ugyanazon a gépen egy C/C++ kód töredék idő alatt lefordul. A Go-t sem szeretem, de az még nem tűnik akkora bloatnak, hogy komolyabban rángjon tőle a szemem.
Pedig gondoltam, hogy beletanulok a Rust-ba, mert nagyon népszerű, de már ez az előzetes tapasztalat elvette minden kedvem tőle. Ha bele is kezdenék, én csak neovim-mel mennék neki, mint minden nyelvnek, amit úgyis használok mindenre. Eleve van hozzá állítólag elég jó Rust language server plugin, amit sokan dicsérnek, meg én eleve vim-mel megyek neki mindennek, mindegy milyen doksi, mekkora kód, stb.. vim és Emacs usereket erről ismered meg, hogy mindent a kedvenc editorukkal csinálnak. Nem csak szövegszerkesztés, meg ide, de sokszor fájlműveletek, terminál multiplexelése, stb. funkciókat is abba pakolnak. Viszont tapasztalatom szerint a legtöbb Rust-feljesztő VSCode-ot használ.
“A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)
Igazabol a CLion jocskan kenyelmesebb (pl. kijelzi a tipusokat lambdakban is, van benne visual debug, tamogat refactor-t), ellenben nem a rust language server-t hasznalja, sajatot csinaltak neki, emiatt elofordul, hogy olyan hibakat jelez, amit a rustc nem, es viszont.
Hozzateszem a java-t semmi se veri IDE supportban. Maga a nyelv nem nagy szam, de olyan massziv IDE supportot meg nem lattam sehol mashol. Kivalo pelda, ha arra kerul a sor, mi is az IDE, vs. text editor. Ezt egy vim usernek nehez elmagyarazni :), de idea -bol 1 hotkey-jel komplett class hierarchia-t lehet refaktorolni, reference lookup-pal meg mindennel. 5 mozdulattal 1 perc alatt teljesen at lehet alakitani a teljes kod strukturat, ugy, hogy az meg mindig fordul es mukodik.
A rust forditasan lehet reszelni, pl. ha 1 cargo-t hasznalsz, akkor 1 package 1 verziojat csak egyszer forditja le. Na persze ha odavagsz egy tokures rendszert neki, akkor mindent 0-rol, igen. A c/c++ is lassu lenne, ha az osszes dep-et le kellene forgatnia, nem lenne szepen osszecsomagolva a /usr/lib -ben neked keszen. Alma-korte esete.
Sub
szintén
Nem akarom ismetelni az online elerheto szamtalan Python/C/C++/Go/Rust osszehasonlitast. Egy dolgot emelnek ki, ami ritkabban kerul elo:
Code review: C++ eseteben mindig nagyon figyelnem kellett, egyszeruen rengeteg lehetoseg van a hibazasra, kulonosen, ha multithreaded a kod. Amikor irod a kodot, lehetoseg van valasztani az ismert, "biztosan" jo megoldast, review soran viszont a prezentalt megoldast kell hitelesiteni - nem konnyu. Python eseteben a tipusok hianya teszi a reviewt nehezze.
Ebbol a szempontbol eros a Rust: annyira szigoru, alapesetben (safe code) rengeteg hibakategoriat kizar a fordito, ami elofordulhatna C++ vagy python eseten.
Pedig nem értem, mit nehéz fejben parse-olni azon, hogy
:)
Ez még egész olvasható a valósághoz képest :D
Nem vagyok programozó, nem írtam benne kódot soha ezt leszögezném. Viszont hobbiból érdekelnek a programozási nyelvek. Egyszer nekiálltam a Rust-nak, tetszett is. Véleményem szerint okosan összerakott nyelv. Viszont a szintaktikája borzalmas. Ebben meg elfogult vagyok és erősen hajlok mindig a Lisp felé. Egyszerűen nekem túl "zajos", ránézésre nem "szép" a kód a Rust-ban.
Érdekes, hogy https://hup.hu/cikkek/20221230/minden_amit_a_rust_nyelvrol_tudni_szeret… sem mutat IDE használatot, csak szövegszerkesztőben dolgozik.
mer' a clion penzes, 8-9 euro / ho. :P na persze csak ha nem tort verziot hasznalsz.
vscode elvileg eleg jo, gyakorlatban meg nem probaltam, 1-2 eve meg egy borzalom volt a clion-hoz kepest.