bohužel, vše to jsou korporátní zmetky a zveřejnění v tomhle světě a století moc reálné není.
Však to ale není nic světoborné, drobné procedury a transformace a parsování různých dat, občas drobné analytické výtvory. Povětšinou to nepíší programátoři, ale stážisté a junioři a já jim jen lehce radím, blbuvzdornost je dost důležitá, je rozdíl práci vracet jednou nebo pětkrát :)
Zajímá mě, v čem je ten rozdíl oproti javě, že je ta chybovost o tolik menší? Když mi někdo napíše: přešli jsme z céčka na javu a už nemáme takové problémy s uvolňováním paměti, tak tomu rozumím, ale vím že gc není samo-spásný, že je větší problém lenost a nedisciplina programátorů ... Co je teda ten rozdíl - třeba i subjektivně .-) Dík
Připojil bych se s dovolením k dotazu, konkrétně:
1. Je zajímavé, že se to projevilo na tak malých programech. Dovedu si představit nějaké důvody (imutable proměnné apod., možná i kvalitnější stážisti, kteří jsou vůbec Rust pobrat). Dá se to teda nějak popsat?
2. Předpokládám, že tam zaměstnáváte na tyhle blbinky ucha bez praxe, tudíž nemají nějaké hluboké znalosti knihoven Javy a tak to vyjde nastejno. Kdo ale s tím přišel, že to budete dělat v Rustu a proč?
Díky.
nelze to zobecňovat a nechci pomlouvat ostatní jazyky či rust glorifikovat. Základem je špatný programátor, pokud někdo umí skvěle programovat, je šumák, který jazyk použije a výsledek bude vždy nadstandardní.
Rust hromadu chyb odchytí při kompilaciu. Řada "programátorů" zkouší napsat program do té doby než jim přestane křičet IDE a než jim jde zkompilovat, pak ho často odevzdávají. V javě nebo pythonu těch chyb tímhle procesem prochází víc.
Problém je objektovost, lidé, kteří neznají dobře OOP paradigma, ztrácí se v tom, nerozumí struktuře a chtějí přemýšlet spíše víc funkcionálně, ale haskell či clojure je pro ně už moc. Jde i o závislosti, které musí používat.
Rust má přehlednější dokumentaci (ryze subjektivní) a oproti scale nebo pythonu se v ní lidé méně ztrácí, daleko dříve jsou schopni přijít s řešením.
Přímočařeji se tam řeší závislosti a sdílení datový struktur, lépe se copy-pastuje kód z jiných projektů či od kolegů. V javě skoro nikdo testy nepsal a v rustu si velice rychle zvykli psát testy přímo na konci souboru spolu s kódem, proč ne. Možnost kód napsat v jednom souboru se vším všudy je opět malá přidaná hodnota. Oni si ho pak sdílí emailem a funguje jim to. Napsaný program si většinou spouští přímo z IDE (terminál je vidět zřídkakdy) a u rustu se daleko přehledněji zobrazují chyby a rychleji najdou, co mají špatně, s Javou to končilo konzultacemi se zkušenějším.
Vývoj v korporátní sféře je hodně jiný, na efektivnost a standardy se často kašle, unit testy jsou výjimkou, k aplikacím je vždy support od vendora a on si pohlídá, že běží. Testování výsledné aplikace je jen na očekávané vstupy, důležitá je dokumentace, pokud něco na vstupu přijde jinak, hned se to porovnává s dokumentací a pokud to je špatně, za vše může zdroj a ne vendor. Vše píší neprogramátoři či teoretici.
Tvrdit jak je programování vznešený obor a jak je potřeba vše psát s láskou si můžeme říkat max. mezi sebou. Jakmile člověk uvidí realitu dělníků u vývoj SW, je trochu zhnusený. Já k téhle zoo poskytuji externě konzultace tak, aby se pohlídala technologická kvalita, občas mám nějaký workshop, na jednom jsem ukázal rust a u asi 10 jedinců se chytl a postupně ho začali používat, bylo zajímavé sledovat jak to dopadlo ve srovnání s javou, scalou a pythonem.
A co vás zajímá? Začínáme s Rustem v kombinaci s Pythonem. Datová analytika a NLP. Aktuálně jsme v začátcích, takže nic moc nabídnout nemůžu, ale komunita kolem Rustu by tu vyrůst mohla. Nebo aspoň být v nějakém kontaktu pro budoucnost. Rust nás láká kupodivu tím, že je dost přehledný, na to jak může být low-level a taky (nad)standardním package managerem a build systémem ... na rozdíl od C++ se kterým se tak jako tak musíme v NLP potkávat.
On je fakt že Rust prostě neumožňuje dělat některé věci, které by v jiných jazycích prošly a často se tak i odchytí možná chyba. K tomu pomáhá nejen v přísném hlídání paměti, ale i v takových drobnostech jako nutnost vyčerpat všechny možnosti v match. I když pak občas nenechá zkompilovat věc která by chybu nezpůsobila (což může být zpočátku trošičku otravné), dá se tak snáz odchytit situace kdy by problém nastal.