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!
- 2188 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
Ebből a szempontból (is) úgy látszik körbe-körbe megyünk.
Gábriel Ákos
- A hozzászóláshoz be kell jelentkezni
Hasonloan: Patterns in Network Architecture: A Return to Fundamentals, John Day
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
É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.
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
pypy?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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/
- A hozzászóláshoz be kell jelentkezni
Hat haj, a masssziv parhuzamos futtatas nem a Go erossege.
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
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…
- A hozzászóláshoz be kell jelentkezni
Jól összeszedett írások köszi.
- A hozzászóláshoz be kell jelentkezni
Rust-nál (már) nem tudsz berozsdásodni...
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Lazán kapcsolódik.
Direkt nem a HWSW cikket linkeltem be, mert az eredetiben sokkal technikai információ van.
Today we are excited to talk about Pingora, a new HTTP proxy we’ve built in-house using Rust that serves over 1 trillion requests a day, boosts our performance, and enables many new features for Cloudflare customers, all while requiring only a third of the CPU and memory resources of our previous proxy infrastructure.
https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connect…
- A hozzászóláshoz be kell jelentkezni
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.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Sub
- A hozzászóláshoz be kell jelentkezni
szintén
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Python eseteben a tipusok hianya teszi a reviewt nehezze.
Pedig nem értem, mit nehéz fejben parse-olni azon, hogy
Dict[Union[int, str], Tuple[str, Dict[Union[int, str], Tuple[str, str]]]]
:)
- A hozzászóláshoz be kell jelentkezni
Ez még egész olvasható a valósághoz képest :D
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Érdekes, hogy https://hup.hu/cikkek/20221230/minden_amit_a_rust_nyelvrol_tudni_szeret… sem mutat IDE használatot, csak szövegszerkesztőben dolgozik.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni