[ plus_minus @ 04.06.2016. 20:09 ] @
Radi se dakle o ovome -> The Rust Programming Language

Da li je to Mozillin odgovor na GoLang ili ne, ne znam, ali u pitanju je dakle jedan još uvek novi igrač od strane meni poprilično gotivne ekipe. Sve što Moz. research (ili bilo koji njihov) tim izbaci za raju iz svojih `laboratorija`, meni bude nekako skroz ok. Jednostavno gotivim njihove proizvode. No, da kažemo da Rust nije odgovor na GoLang, jer i nisu namenjeni za iste stvari kako sam pokopčao do sad.

Isto kao i nekada, kada je došlo vreme da se sa ručnog kreiranja markup-a, prebacim na nešto malo ozbiljnije, bacao sam kockice: ASP.NET || PHP. Čitao, istraživao, tražio, gledao .. izbor je pao na PHP. I ne kajem se. Družiću se sa PHP-om, dok ne odapnem. Ja prvi ili PHP. Najverovatnije ću to biti ja. Nebitno.

Isto tako, kao nekada, bacanje kockica malo duže vreme: .. JAVA || C/C++ || Rust.
Izbor je pao na Rust. Odluka donešena pre par dana, izbori gotovi.

Dakle, toliko mnogo sam zainteresovan za ovaj jezik, da ako uskoro ne budem napravio nešto dokumentovano, iskompajlirano i korisno za široke narodne mase u Rust-u, ima d se pojedem živ. :)

Ako je verovati prelepo napisanoj online Rust dokumentaciji, koja je meni kao system language noob-u poprilično razumljiva i prihvatljiva, s' obzirom na to da mi je i sintaksa već jako dobro poznata i razumljiva, onda nema razloga da omanem u svojim namerama. Sve mi se đasvi oko Rust-a .. ali, sve. Ono što me je poprilično ohrabrilo jeste način na koji se pakuje sors. I mislim da je to ključna stvar, glavni `lepak` za novajlije. Rust packaging system/kompajler.

Ali, šta misle o Rust-u oni koji odavno nisu njubovi na ovom polju?

ES populacijo, vi koji imate finog iskustva sa kompajlerima i koji ste mnogo, mnogo ... mnogo, mnogo bitaka sa mem. leakovima (etc.) dobili .. i stigli ste da se poigrate sa `novorođenčetom` (jer, nije da nema baš nešto malo novih jezika u zadnje vreme, ruku na srce), ako vas ne mrzi, vaše mišljenje, ocena, kratka analiza, itd. - više nego dobrodošlo.

Hvala unapred.
[ Au197/79 @ 05.06.2016. 00:19 ] @
Dobar jezik, bar po onome što sam čitao. Recimo Dropbox je radio na novoj platformi koja menja postojeću u pythonu. Prvobitno su krenuli sa GoLangom ali su trošili previše memorije. Onda su se u sred tranzicije prešaltali na Rust i uspeli.
[ plus_minus @ 05.06.2016. 01:28 ] @
Da .. nabasao sam bio i na taj info u međuvremenu ... :) Dosta govori o samom jeziku i o budućnosti koja ga čeka. Takođe i ovo -> Servo, the Parallel Browser Engine Project ..
Mozilijanci se izgleda opet naoštrili da poteraju novog `hulka` i da propisno postave stvari na svoje mesto, baš kao nekada. Ne samo to .. Geany, moj omiljeni i nenadmašni, ima .. :) .. out-of-the-box lexer podršku za Rust.
Ono što mi se takođe jako dopada, samo zbog built-in kompajlera/package managera, IDE praktično nije potreban, već dobar text editor i teraj ... pa ko kako voli, terminal u sklopu gui editora .. ili G/vim i slično tome.
[ Branimir Maksimovic @ 05.06.2016. 13:32 ] @
Ja sam se igrao sa rustom jos od pocetka ali tek od ne davno je postao stable. Jedno par godina sam odustao zbog cestih izmena u jeziku koji su lomili sve sto sam uradio. Komitovao sam i par patcheva u kompajler....
Jezik je prelep, ali pravila su malo rigidna pa ce pocetniku biti malo teze da se navikne ... u svakom slucaju jezik koji obecava, ali jos to nije zavrseno... ne preporucujem za bilo kakav ozbiljan rad jos, samo za igranje...
[ plus_minus @ 05.06.2016. 15:17 ] @
Code:
Komitovao sam i par patcheva u kompajler....


Respect.

Inače, još jedan dokaz da tu gde pametan Srbin umeša prste, to bude ako ne odlično, onda mnogo bolje nego što je bilo.
Možda je to zbog R1A1 gena, ja to ne znam, zaista.

Citat:
Jezik je prelep, ali pravila su malo rigidna pa ce pocetniku biti malo teze da se navikne ...


E, to je ono što meni treba, baš takva pravila. S' obizrom na to da dolazim iz scripting sveta, prihvatanje pravila koja moraju da se poštuju, dublje razmišljanje o sitnicama koje obitavaju mnogo ispod onoga što se dešava na `površini`, neće biti nikakav problem. Jer ja i bez tih takvih pravila, unazad već xxx godina, pišem svoj kod na najkorektniji mogući način u okviru ličnih mogućnosti, gde postoji jedno jasno pravilo u mom development okruženju: error_log fajl sme da ispiše samo kada je server startovan/restartovan/ugašen i ništa više pod milim bogom.
Čak šta više, rigidna pravila, to može da se tretira i kao osveženje, ako uzmemo u obzir šta jedna PHP ili JS skripta sve može da istrpi od strane autora i čak da stigne da na kraju ispiše rezultat na ekranu, to postaje toliko tužno da te potera da napišeš članak o tome kako "Entire IT sucks hard on a Chernobyl level".

Citat:
ne preporucujem za bilo kakav ozbiljan rad jos, samo za igranje...


Taman. I ne verujem da ću napraviti nešto `uBer` dobro za manje od .. godine.. (možda se i potcenjuem previše) ali, kao što napisah - taman (iz mog ugla).

Elem, pre par meseci mi bilo baš onako dosadno.. i ajde da vidimo šta će da se desi, ako uzmemo malo od bash-a, malo od pitona i onda sve ostalo od PHP-a.. sa JS-om.. Može li to da izgleda kao Desktop za linux?
Odgovor: može.

Dakle, pozove se bash skripta, koja unutar sebe ima pitonov kod (kroz bash funkciju) koji je zadužen za kreiranje gtk desktop elementa i pakovanje paškavog (dabome, paškavog) webkit endžina (eg: import sys, gtk,webkit) koji izbacuje generisani html od strane PHP-a sa svojim ebeded serverom.. koji je takođe pozvan, logično, kroz - bash funkciju i sve to uredno i lepo smešeno u singl proces sa svojom dječicom koja se gase i nestaju onda kada se - ugasi, jel' te ..

Koga interesuje, mogu da okačim sors i u kratkim crtama, šta kako, itd.. pa se igrajte.

E sad.. ta ideja me još uvek nije napustila, dakle da napravim novo Linux grafičko okruženje... i možete misliti kakvo bi to njesra bilo sa php-om koji je onako, solidno brz i žilav.. ali .. Javaskripta?!? .... to je sve samo ne dovoljno brzo. 'bem ti ja takav jezik koji je nastao za 10 dana i kojeg sam primoran da čukam zato što potpada pod domen u kome obitavam. (Zašto bre luaJIT nije nekako upakovana umesto te javaskripte <script type="appication/lua">, da mi je znati ?!? Ne može?? Racq moj ne može/nije moglo, al' nema veze.)

Dakle, Rust - savršen kandidat za moju viziju *(jednu od vizija ).
Yet another Linux DE. Primarely.
[ Arnie @ 22.06.2016. 21:23 ] @
Budućnost u IT-u je nešto što se veoma teško može predvideti. Koliko god da je Rust dobar, C i C++ će još dugo dominirati na tržištu jer je jednostavnije naći kvalifikovan kadar, biblioteke, a i mnogi sistemi ih koriste koje dalje treba održavati i sl.

Inače, ASP.NET i PHP se ne mogu porediti jer je prvi čitav web framework koji može da koristi C#, VB.NET i F# dok je PHP skriptni jezik. Što se tiče ASP.NET ne znam da li znaš da je Microsoft objavio .NET Core i da nije više ograničen samo na Windows platformu (predpostavljam da je to bio razlog odabira PHP-a jer isti ni dan danas ne radim pošto mi se sloša od njega).

Interesuje me zbog čega je izbor pao na Rust? Šta to Rust ima što nemaju Java, C i C++ pa si odlučio da kreneš da ga učiš?
[ plus_minus @ 23.06.2016. 00:34 ] @
Znam šta je ASP.NET. I kada se ukombinuje i upotrebi kako treba, to je jedino što može propisno da parira PHP-u danas, zato sam ga i uporedio.
Svestan sam ja mnogo dobro toga da je potrebno više od 30 godina da se zameni sve što je do sad uz pomoć c/c++ napisano.
Pre će pravi nuke war da nas zadesi, nego li zaborav i odustajanje od C/C++. LLVM. I Rust je skockan uz pomoć toga. Baš kao i C/C++.
Šta to Rust ima što nemaju Java, C/C++ .. ? Pa, upravo zato što može isto što i C++, zašto ne Rust .. ? Ovi iz DropBox-a nisu blesavi na kraju krajeva.

Samo jedan od glavnih razloga koji je mene naterao, jeste References and Borrowing . Ownership, borrowing and lifetimes. Dakle, memory safety.
Drugi je recimo match (switch na steroidima).. i mnogo finih zanimljivosti kojih nema drugde, bez kojih može da se `živi`, al' eto.

Lično smatram da Rust ima poprilično lepu budućnost. Mnogo lepšu i vedriju od D jezika, npr.

E sada.. to što je m$ objavio .NET core i da sada i pingvini mogu da se zainteresuju ako žele.. paaa, dal' žele.. ? Sa sve Visual Studiom u GNU/free fazonu koji ima neke čudne opcije u samom GNU/v.studio kompajleru.. hmmm.. -> http://www.elitesecurity.org/t491107-Visual-Studio-kompajler-ubacuje-telemetry-code ... baš, baš zanimljiv period za odluku da .NOT bude pušten s' lanca.

Onoliko koliko je jaka želja prosečnog linux korisnika da instalira spyware 10 i da iz toga koristi Bash shell i da se oseća kao kod kuće, toliko su jake i želja i potreba za opensorsovanim .NOT-om u opensource svetu.

Ne znam zašto ti se sloši od PHP-a, možda si se prezasitio, a možda nisi ni jedan komplet sajt napisao u PHP, a možda si i ti jedan od onih koji su kasno saznali da PHP ima test i za equal, a i za identical, ali ... PHP je toliko lep, bogat i prijateljski nastrojen jezik (svima dostupan uvek i danas već može da se kaže, odavno) da jednostavno nije potrebno komentarisati o istom. Mogu ljudi ili da ga mrze ili da rade u njemu. Jako mali broj ga mrzi. To su uglavnom oni koji ne rade u PHP-u, a hteli bi da koriste html kao prekrivač za spavanje. A svi koji vole svoje jezike, koji takođe mogu da se koriste za http/ftp itd.. a to nije PHP, nego je ruby ili python ili eto, .net fw, jednostavno neka nastave da rade u njima, bez da pljuckaju po PHP iz bilo kog razloga. Glupo je to. Vreme je da se hejt smiri i da se pomiri raja sa tim da je PHP postao ako ne i 100% dominatan u svojoj sferi.

Kao što Rust neće u najskorije vreme da zameni C/C++ i sve silne game endžine i ko zna koliko *byte-ova propratnog koda, tako u najskorije vreme, ni python + ruby kombinovani, po meni, nemaju mnogo šta da traže kao ultimativna rešenja za web projekte ili aplikacije u narednih 10 godina - minimum.
[ Burgos @ 23.06.2016. 07:31 ] @
Rust pratim već nekoliko godina, a napisao sam tokom prethodnih godina (još dok je Rust bio ispod v1.0.0) nekoliko aplikacija koje se i danas koriste u produkciji, a takođe se zabavljam vikendima pišući mali ARM kernel u Rust-u. Pritom živim od i svakodnevno pišem D kod, koji je treći od "nove trojke" (Go, Rust, D).

Nekoliko utisaka:

- Cargo menadžer odličan, bar dok se ne krene sa ne-default targetima i pozivanjem drugih linkera. Onda manjka dokumentacije, ali i dalje radi. Bolji od dub-a (D menadžer), IMHO, kada dođe do dependency resolvinga.
- Ownership/borrowing/lifetimes - ko je imao iskustva sa RC sistemom, npr. u C++-u, ovo dolazi prirodno. Mana je što, da bi sve bilo enforcovano, nekada je potrebno ručno pisati lifetime, što se, bar u mom iskustvu, pokazuje kao viralno. Međutim, najavljeno je da Rust ponovo dobije GC, što donosi sigurno upravljanje memorijom, i trebalo bi da je sasvim u redu za prosečne aplikacije. Moje mišljenje je da jezik mora podržavati RC i GC da bi danas bio konkurentan (pa tako D ekipa trenutno razvija RC, a Rust ekipa GC).
- Hype. Prisustvovao sam nekoliko Rust meetupa u Berlinu, i mišljenja sam da je hype prevelik. Rust se prestavlja kao deus-ex machina (bukvalno se ljudi kunu u njega), uglavnom od ljudi koji zapravo nikada nisu ni imali probleme koje Rust rešava, niti znaju kako se manifestuju, itd. Potpuno drugačije od ljudi u mojoj firmi koji pišemo sistemski softver. Nekad ide na živce, ali utiska sam da je to ipak dobra stvar, znajući da Rust zbog kompleksnosti i ciljanih aplikacija ne može postati novi Node.
- ML uticaj - e to je što je mene privuklo Rustu. Imao sam prilike da pišem ML i, uprkos tome što je značaj istog za sistemski softver blizu 0, svidelo mi se
- Neko je spomenu pre neki dan nepostojanje type level integera. Dakle, nema ništa od Vec<int, 3> - vektora od tri elementa. D i Rust se razdvajaju kada dođe do type polimorfizma. Nisam siguran šta mi se više sviđa. Najviše bi mi se svidela kombinacija.

U svakom slučaju, zabavićeš se mnogo i verovatno će ti se svideti, ako imaš vremena da petljaš :-).

Citat:
Pre će pravi nuke war da nas zadesi, nego li zaborav i odustajanje od C/C++. LLVM. I Rust je skockan uz pomoć toga. Baš kao i C/C++.


http://dlangcomicstrips.tumblr.com/image/146221576112
[ negyxo @ 23.06.2016. 09:41 ] @
Citat:
plus_minus: Znam šta je ASP.NET. I kada se ukombinuje i upotrebi kako treba, to je jedino što može propisno da parira PHP-u danas, zato sam ga i uporedio.


Ne bi da gadim temu ali cisto da neko od mladjih ne bi shvatio ovo kao tacno. Ovo sto si napisao je najobicnija glupost - ne znam u cemu ASP.NET treba da parira PHP-u? Prvo ASP.NET je framework, ne jezik, jezik biras sam (no to je manje vise C#), drugo sam jezik C# i PHP nema smisla porediti, iako C-olik i ima dosta mana C# nije ni priblizno slican PHP-u i paradigme se kompletno razlikuju. Najveca mana C# od newbie web developera je ista ona zbog koje je svojevremeno C++ postao kompleksan i zastareo jezik iz prostog razloga jer se programiranje uci za 2 dana i sve ostalo je bespotreban kompleksan visak. PHP i slicni jezici su, na zalost, jezici brute-force-a, svode se na fizikaliju, umesto da se ide u kontra smeru (thanks MS i ostali, posuknuli pred hype-om i wanabee programerima).
[ plus_minus @ 23.06.2016. 11:30 ] @
^^ Ti ne bi da gadiš temu, ali jesi. A nisi baš lepo ni raspoložen.

Šta je onda Stack Overflow ako je to što sam ja napisao obična glupost? Pitaj mladunčiće (ili svog guru-a) koji `arhitekturišu` u C# i u V.studio zašto im je toliko bitan market share PHP-a .. ?
Pa zato što ih pojede, taj market-share/usage-share/UnameIT-share PHP-a, sve koji hoće da prave nešto za stateless protokol, a da to nije opensource u pozadini.

Šta stack overflow dokazuje? Upravo to što sam napisao. Nije rađen u PHP-u, nego je rađen u `nekim drugim tehnologijama`. Između ostalog .NOT je kod njih u igri..
I dokazaše da šta.. C# `arhitekte` imadu konja za trku.. dobar sistem, veliki skup zajednica, velika mreža dakle, može da se napravi i sa nečim drugim a da to nije omraženi Apache/PHP i da radi kako treba.
I to jako dobro. Eto, `pariranje`. Parirajte onda. Malo pljuc, pljuc, malo sreća što nisi `fizikalac`, pa šta ćeš bolje i lepše od toga? :)

Nemoj biti bukvalista, preleti preko teme kad već ima tek nekoliko postova, pa onda piši.
Ali o Rust-u. Neka to bude primarno, ako je moguće.
[ plus_minus @ 23.06.2016. 11:45 ] @
@Burgos

Dankešen na odgovoru.

Citat:
U svakom slučaju, zabavićeš se mnogo i verovatno će ti se svideti, ako imaš vremena da petljaš .


Imam njuh. Dobar. Kao kuca.
[ negyxo @ 23.06.2016. 12:55 ] @
@plus_minus
Ja se slazem da treba da se pise o Rust-u ako je vec to tema ali onda kreni od sebe, nemoj zato sto si ti pokrenuo temu da pises o drugim stvarima, pogotvo sto si pomesao elementarne stvari (jezik i API) plus sasvim pristrasno "objasnio" kako su drugi donekle dorasli PHP-u, s cim samo demonstriras svoje neznanje. Ukazao sam samo sta nije tacno i to je to. Za dalju raspravu mozemo i na nekoj drugoj temi, nemam nista protiv.

BTW. Sto se tice market-share-a, niko nije gadljiv na pare i ljudi neka rade u cemu hoce ako to donosi pare. Ako krenes vec o tehnickim stvarima da pricas, onda sorry, onda market-share ne igra nikakvu ulogu ali spocitavati drugima da su jedva dorasli nekoj inferiornoj tehnologiji zato sto su hype i pritisak ogromni, to bar na tehnickim diskusijama treba nazvati pravim imenom.
[ plus_minus @ 23.06.2016. 13:55 ] @
Piši onda o rust-u, ako se slažeš i uopšte nemoj da se sekiraš ko je koliko potkovan znanjem. To što sam se ja nadovezao ponovo na PHP, to je zato što ne, maltene ne može .., a da ne prođe neka tema gde neko ne popljuje php, bez obzira dal' se radilo o istom ili ne. Pismenom i ozbiljnom sagovorniku može da bude poprilično jasno ono što sam izneo u prethodnom postu. Ako si pak zavistan od toga da tražiš dlake na jajetu i da se čudom čudiš kada neko upotrebi asp.net na način koji sam ja upotrebio, ja onda ovde objašnjavam nešto wannabe-arhitekti njuboslavu, kome je jako dosadno. Jer je opšte poznata stvar da C, C++, Java, pa čak i Perl.. a kamoli C# bez adekvatnih dodataka (izuzmimo perl), jednostavno ne mogu ništa da urade brže i bolje od `fizikalca`, a hoće da se trkaju. Zaključak je da baš zbog toga, asp.net bez obzira dal' je to framework (neki koji znaju bolje od tebe i mene zajedno, u komunikaciji sa drugima to zovu lib) ili veliki modul/crate, može da se upotrebi kao `stvar` za poređenje.

Što se tiče market share-a, dok sam pisao taj deo, ni na 1ms nisam pomislio na novac, već na čistu - dominaciju.
Što se tiče demonstracije mog neznanja, ko je sudija, ti? I ko si ti, inače? Kako bi se predstavio drugima?
Neko ko uči m$ standarde i pravila lepog ponašanja i izražavanja u AjTi svetu .. ?

Nemoj da odgovaraš/pišeš ništa - ukoliko imaš/nemaš primedbe/pohvale na Rust.
Sve što ti ne godi, imaš pp.

[Ovu poruku je menjao plus_minus dana 23.06.2016. u 15:20 GMT+1]
[ negyxo @ 23.06.2016. 14:04 ] @
Za sada o Rustu mogu samo da citam, ne radim u njemu, generalno programske jezike volim i delimicno radim svakodnevno low-level na kompajlerskom API-u (C#, Roslyn). Sto se tice znanja, ne brigam ja tudju brigu, nego samo zelim da ispravim kada neko nesto kaze netacno kako je to - netacno.
[ plus_minus @ 23.06.2016. 15:07 ] @
Zašto C# ? Zašto ne čist C++ .. ?
Nekako je prirodnije čukati kod u C# na windozi, jel' da? Bolje radno okruženje, bolja podrška, uprošćeno mnogo toga, kontam.
Pitam zato što evo, Objective-C kao da hoće da mre, teraju ga da .. mre.. furaju i viču u korist swift-a uzduž i popreko.

Da li je takva zamena i za C# na vidiku?
Uopšte ne razumem filozofiju korporotokratije (i tako treba i da ostane).

Rust, ako ga skineš za linux, zove se Rust i pravi izvršne fajlove.
Ako ga skineš za M$, zove se Rust i pravi (.exe/.msi) izvršne fajlove.
Ako ga skineš za zatvoreni unix, takođe se zove Rust i pravi izvršne (.app) fajlove.

To je jako lepo. Jel' da? Naravno, nigde ne piše da za xx godina, neće da se pojavi, lupam.. uprošćena i ispolirana `Durbidium` varijanta Rust-a za m$ ili `Aluminium` varijanta za Apple.
Mada, eto.. poenta priče je da C++ može da se radi i u m$, ne mora da se koristi C# i isto tako C++ da se radi u Apple-u.

Zašto ne bi koristio nešto što je alfa i omega i vrlo je živo i ne ide nigde još dugo, dugo vremena?
Zašto bi ja koristio Ubuntu, kada je Debian tu i kada od tog Debiana mogu da napravim šta god poželim?

Sad, dal' ljudi više ne mogu da gledaju u dobro poznatu sintaxu i izgled sourca, te im treba malo osveženja.. to ima logike.

Rust online manual kao i C++ doc., ima svoj Run code opciju za svaki code snippet, takođe kao i ti čitkam s' vremena na vreme i zezam se sa tim.
Instalirao sam ga, ali još uvek ništa konkretno i korisno nisam napisao u istom.
[ Arnie @ 23.06.2016. 16:37 ] @
Ne bih da odem van teme, ali ovo moram da prokomentarišem.

Citat:
Znam šta je ASP.NET. I kada se ukombinuje i upotrebi kako treba, to je jedino što može propisno da parira PHP-u danas, zato sam ga i uporedio.


BS. Pre svega, koliko sam ja shvatio, ti ovde govoriš o PHP-u kao o izvanrednom jeziku samo zato što se koristi na većini web servera u svetu. Na stranu to što na brdovitom Balkanu večito kasnimo za svetom, te priče kako je PHP najbolji odavno više ne piju vodu skoro ni kod koga. PHP ima svoje prednosti i svoje mane kao i svaki jezik, ali je daleko od najboljeg za web razvoj. Facebook je debelo platio time što je koristio PHP u razvoju (Hack i HHVM su stvoreni upravo zbog toga). Da, tada u suštini i nije postojala neka alternativa koja bi priličila takvoj vrsti mreže, pa bi im se i moglo oprostiti. Sada nemaju kud jer bi prepisivanje u drugi jezik koštalo mnogo i ne bi ničemu dovelo.

Citat:
Šta to Rust ima što nemaju Java, C/C++ .. ? Pa, upravo zato što može isto što i C++, zašto ne Rust .. ? Ovi iz DropBox-a nisu blesavi na kraju krajeva.


Dakle to što je Dropbox počeo da koristi Rust znači da svi treba da ga koristimo? Aha, dobro, a jel' znaš i da je Twitter prešao na Scala-u? Nisu valjda ovi iz Twitter-a ludi da vrte RoR, piii! LinkedIn je prešao na Node.js - nisu valjda ludi da koriste metuzalem od jezika kad sve muke može da im reši JavaScript!

Oni koriste Rust zato što im u tom trenutku zadovoljava potrebe. Iz istog razloga WhatsApp koristi Elixir.

Citat:
E sada.. to što je m$ objavio .NET core i da sada i pingvini mogu da se zainteresuju ako žele.. paaa, dal' žele.. ? Sa sve Visual Studiom u GNU/free fazonu koji ima neke čudne opcije u samom GNU/v.studio kompajleru.. hmmm.. -> http://www.elitesecurity.org/t...mpajler-ubacuje-telemetry-code ... baš, baš zanimljiv period za odluku da .NOT bude pušten s' lanca.


Visual Studio Code ne moraš da koristiš ako ne želiš, ja koristim Sublime Text u kom god jeziku da radim i koristiću ga još dugo. A nije ti palo napamet da je taj period baš sad iz razloga što open source tehnologije dominiraju i što se Microsoft bori da zadrži svoje mesto na tržištu? Nije tu reč samo o "pingvinima", već i o Apple korisnicima.

Citat:
Ne znam zašto ti se sloši od PHP-a, možda si se prezasitio, a možda nisi ni jedan komplet sajt napisao u PHP, a možda si i ti jedan od onih koji su kasno saznali da PHP ima test i za equal, a i za identical, ali ... PHP je toliko lep, bogat i prijateljski nastrojen jezik (svima dostupan uvek i danas već može da se kaže, odavno) da jednostavno nije potrebno komentarisati o istom. Mogu ljudi ili da ga mrze ili da rade u njemu. Jako mali broj ga mrzi. To su uglavnom oni koji ne rade u PHP-u, a hteli bi da koriste html kao prekrivač za spavanje. A svi koji vole svoje jezike, koji takođe mogu da se koriste za http/ftp itd.. a to nije PHP, nego je ruby ili python ili eto, .net fw, jednostavno neka nastave da rade u njima, bez da pljuckaju po PHP iz bilo kog razloga. Glupo je to. Vreme je da se hejt smiri i da se pomiri raja sa tim da je PHP postao ako ne i 100% dominatan u svojoj sferi.


Ne znam odakle ti iznese sve ove zaključke iz jedne moje rečenice, no potvrđujem ti da je ovo gore napisano netačno. Radio sam u PHP-u i koristio sam ga duže vreme kao glavni jezik za web razvoj. Korisito sam i (Classic) ASP i ASP.NET (C#), Python (Django), JavaScript (Node.js) i nemam potrebe da se vezujem za neke jezike kao pojedinci jer se radi o običnim alatima koji su tu da se postigne željeni cilj. Razlozi "slošavanja" od PHP-a je što je jezik do verzije 7 bio organski razvijen i nabacan, što sa više od pola dokumentacije koju nađeš na Internetu možeš d.pe da obrišeš jer su je pisali uglavnom wannabe web programeri koji ne znaju ni šta je XSS, SQL Injection, prepared statements i ostalo. PHP zajednica ima odlične programere i ljude koji znaju da iskoriste PHP na najbolji mogući način, ali to i dalje ne pokriva ono ruglo koje nažalost ostavljaju primera radi razni "stručnjaci za WordPress" koji misle da su seniori čim napišu par priključaka i šablona za isti. To što pojedinci ne mogu da se pomire sa činjenicom da njihov omiljeni jezik nije savršen nije problem nas, već njih. PHP 7 ide u lepom pravcu i postaje jedan moderan jezik. Čekam neko vreme da postane više "mainstream" pa ću i njega da ubacim u toolset. Ne znam odakle ti samo ta suluda ideja da je PHP 100% dominantan u svojoj sferi kada se Java i ASP.NET i dalje koriste za enterprise web dev , a skoro svaki startap u Silicijiumskoj dolini kreće sa nekim brzim rešenjem poput Rails-a ili Django-a i kasnije prelazi na tehnologije koje im omogućavaju bolje skaliranje i održavanje.

Citat:
Kao što Rust neće u najskorije vreme da zameni C/C++ i sve silne game endžine i ko zna koliko *byte-ova propratnog koda, tako u najskorije vreme, ni python + ruby kombinovani, po meni, nemaju mnogo šta da traže kao ultimativna rešenja za web projekte ili aplikacije u narednih 10 godina - minimum.


Nijedan jezik nema šta da traži kao ultimativno rešenje za web projekte jer tako nešto ne postoji, bilo da je u pitanju Ruby, Python, Perl, PHP, Java ...
[ negyxo @ 23.06.2016. 17:10 ] @
@plus_minus
Editovao si poruku u medjuvrmenu pa da samo dopunim...

Prvo, ako neko "popljuje" PHP, ne znaci da treba da ides odma djonom pa da udaras na druge, pogotovo sto ocigledno ne znas kako drugi funkcionisu i tacno sta su prednosti a sta mane (kazes da je PHP odlican, valjda ima i mane, znas li bar neke? ja za C# mogu bar 5 sad iz glave da navedem a da nisu sintax related i ostale nebitne stvari). Ako smem da primetim, sve je pocelo kada je korisnik Arnie napisao da mu se slosi od PHP-a, tada iz nekog razloga pocinje rasprava o stvarima o kojima niko nije pisao, kao da te neko licno prozivao.

Citat:

Jer je opšte poznata stvar da C, C++, Java, pa čak i Perl.. a kamoli C# bez adekvatnih dodataka (izuzmimo perl), jednostavno ne mogu ništa da urade brže i bolje od `fizikalca`, a hoće da se trkaju

Prvo, ne znam sta su "adekvatni dodaci", pa za mene izgleda nije opsta stvar. Ako mislis na biblioteke, onda je to sasvim normalno - ako hoces da kazes da je neko u PHP umuljao i gomilu biblioteka u jedan file, onda je to meni code smell jos na samom pocetku, mislim, izmesati biblioteke sa interpreterom i onako sve djuture staviti u jedan file (ovo lupam, posto ne znam sta znaci "adekvatni dodaci").
Drugo, ne postoji nacin da ja tebi objasnim sta znaci fizikalisanje, to sto rekose ljudi pre mene, nije stvar ubedjivanja, nego shvatanja, ti moras da shvatis, da razvijas, da radis, i onda vremenom da skontas zasto. Mislim, podji samo od toga da vecina i krece od javascript i PHP i "kunu" se u njih, to ti onda dosta govori. Naravno nije PHP sam po sebi kriv, ni js, oni nude nesto, ljudi nesto prihvataju i to je to ali ono sto ne mozes razumeti je cena koju placas za tako nesto (ne mislim o novcu, mada se na kraju svede na to), i opet, ponavljam, ne postji nacin da ovo razumes ako ne dodjes sam do zakljucka.

Ja sam liberalan po prirodi, i smatram da svako treba da radi u onome u cemu moze da se snadje, zna najbolje, itd. no ono sto mene dotice je kada zbog nekog glupavog hype-a pocne da ima efekta na mene jos pogotovo kada neko krene da mi boostuje taj hype. Ima nekoliko primera, recimo u onome sto ja radim, XAML, unit-tests, NodeJs itd. apsolutni bshit koji je neko ugurao zato sto je neko tamo skontao da je to cool i da masa radi (za XAML ne znam doduse koji je debilni razlog da se programira u xml-u). Sad, znam da neko moze da kaze, pa OK radi u onome sto zelis - to je sasvim u redu, ali problem nastaje kada polako ponestaje toga, jer pandan je da pises sve isto samo u tvojoj tehnologiji sto je naravno suludo, effort koji ti treba da ulozis je slican onome koji su i drugi timovi ulozili. No za neke, (poput unit testova) nema potrebe ni insistirati na pandadnu, posto je ocito nerazumevanje type systema od onih koji to guraju.
[ plus_minus @ 23.06.2016. 23:03 ] @
Citat:
Arnie: Ne bih da odem van teme, ali ovo moram da prokomentarišem.


Citat:
negyxo: @plus_minus
Editovao si poruku u medjuvrmenu pa da samo dopunim...


Ako (ni)ste otišli sa teme i niste dopunili ono što mislite da treba i što će da bude `bitno i važno` za nepunih mesec dana, dopunjujte.
E, ali kad se ufokusirate na temu, ako vam se čini da je možda zanimljiva, biće još bolje. :=)

@negyxo

Sve mi pominji samo ne nodejs. Taj koji se setio da js treba da nađe mesto i tu, treba mu prebiti i ruke i noge.
[ Shadowed @ 23.06.2016. 23:55 ] @
JS-u nije mesto nigde.
[ Arnie @ 24.06.2016. 00:09 ] @
Postao je hype živi, svuda ga trpaju. Nije problem u čoveku koji je razvio Node, njemu svaka čast.
[ plus_minus @ 24.06.2016. 00:54 ] @
@Arnie

Grešiš. U njemu je problem. Trebao je da nađe načina da progura Lua skriptu kao adekvatnu zamenu za js, pa da proba da to progura kao standard, ali nije.
Dobro je što još uvek ne postoji ... ne znam kako bi to nazvao, js API/lib za pisanje GPU drajvera. :D
[ Burgos @ 24.06.2016. 07:03 ] @
Citat:
plus_minus:
Jer je opšte poznata stvar da C, C++, Java, pa čak i Perl.. a kamoli C# bez adekvatnih dodataka (izuzmimo perl), jednostavno ne mogu ništa da urade brže i bolje od `fizikalca`, a hoće da se trkaju.


Ovo mi nije baš najjasnije, niti mi je opšte poznato, da C ili C++ ne mogu ništa bolje ni brže da urade od PHP-a. Valjda bi onda onda PHP bio implementiran u PHP-u, a ne u C-u? Ili ne bi Facebook napisao hhvm u C++-u, već u PHP-u? Vidi moju sledeću rečenicu.

Citat:
Zašto C# ? Zašto ne čist C++ .. ?


Ta dva programska jezika su dijametralno suprotna, kako u samom jeziku, implementaciji, instrukcijama u koje se prevode, tako i u nameni.

Citat:
Rust, ako ga skineš za linux, zove se Rust i pravi izvršne fajlove.
Ako ga skineš za M$, zove se Rust i pravi (.exe/.msi) izvršne fajlove.
Ako ga skineš za zatvoreni unix, takođe se zove Rust i pravi izvršne (.app) fajlove.


Kao i C, kao i C++, kao i D.

[ plus_minus @ 24.06.2016. 08:31 ] @
Citat:
Ovo mi nije baš najjasnije, niti mi je opšte poznato, da C ili C++ ne mogu ništa bolje ni brže da urade od PHP-a.


Da, .. nisam namerno hteo da ispandem konfuzan. Htedoh da kažem da ne možeš u .html ekstenziji da izvršiš čist C++ kod, dok se sami html očitava, recimo. :) Taj kod zapravo mora da ide kroz <?php ?> tagove. Elem, znam šta se krije, koji kod ide iza svih php f-ja i extenzija, baš zato ga i volim. :)

Zašto ne C++, zašto čist C# ... taj deo postade jasan. Ok.
Hvala.

Citat:
Kao i C, kao i C++, kao i D.


I ne trebaju nikakve raznorazne v. mašine ili nešto posebno i dodatno da bi se čovek vežbao i igrao na non-native platformi, pretpostavljam.
Ako je tako, tako treba i da ostane.
[ Arnie @ 24.06.2016. 11:40 ] @
Citat:
plus_minus:
@Arnie

Grešiš. U njemu je problem. Trebao je da nađe načina da progura Lua skriptu kao adekvatnu zamenu za js, pa da proba da to progura kao standard, ali nije.
Dobro je što još uvek ne postoji ... ne znam kako bi to nazvao, js API/lib za pisanje GPU drajvera. :D


Ma kakvi, trebao je da napiše MVC framework u FORTRAN-u.
[ Branimir Maksimovic @ 23.08.2016. 19:08 ] @
Zaboravio sam da malo popljujem po Rustu:
Pogledajte ovu abominaciju:
http://benchmarksgame.alioth.d...t=nbody&lang=rust&id=1
emfazis na :
Code:

/// Pop a mutable reference off the head of a slice, mutating the slice to no
/// longer contain the mutable reference.
fn shift_mut_ref<'a, T>(r: &mut &'a mut [T]) -> Option<&'a mut T> {
    if r.len() == 0 { return None }
    let tmp = std::mem::replace(r, &mut []);
    let (h, t) = tmp.split_at_mut(1);
    *r = t;
    Some(&mut h[0])
}

Zasto je ovo i cemu to? Pa Rust je poprilicno tupav kad je u pitanju borrow checker. Naime ne dozvoljava dve mutable reference na elemente niza iako se radi o dva razlicita elementa.
Ovo moze bez gorepomenutog koda na svu srecu da se izbegne koriscenjem raw pointera ali autor je dosao ko 1/11 da pokaze zasto Rust nije production ready.
Sto se D-a tice, nije mi se svideo od samog start-a (sto je 2000 i neke) jer to je kombinacija Jave i C++-a. GC mislim da nema sta da trazi u jeziku koji bi trebalo da se koristi za sistemsko programiranje.
Osim toga referentni Dkompajler je blagi ocaj u pogledu performansi.
Rust je pametno izbacio GC iz jezika i prilicno sam zadovoljan performansama ali je programirati u ovom jeziku *pain* iz razloga sto nema pointer aritmetiku i null pointer, (koje opet ima) ali ajde nek neko proba naivno
da implementira balansirano stablo i odmah ce uvideti o cemu pricam.

edit:
i da zaboravih. oprezno sa rekurzijom jer nema tail call optimizaciju,
i array bounds check ne moze da se iskljuci, te stoga koriscenje iteratora je preferiran nacin za prolaz kroz niz.
Jezik je u pocetku imao i expanding stekove i green threadove ali sve je to u paketu sa GC-om izbaceno zbog toga sto je uticalo na performanse.

[Ovu poruku je menjao Branimir Maksimovic dana 23.08.2016. u 20:28 GMT+1]
[ Arnie @ 31.08.2016. 21:43 ] @
Da, ima nekih čudnih anomalija, no ipak stremi ka tome da postane production-ready, vidim da par startapova već koriste Iron (Rust web framework).

Od svih jezika za sistemsko programiranje sa kojima sam se susreo, u Rust-u je milina raditi. Jednostavno ne dozvoljava da napraviš glupe greške koje ti se mogu desiti sa C / C++. Jedina mana je što je ekosistem mnogo oskudniji od konkurenata, ali verujem da će se to promeniti za par godina.
[ Branimir Maksimovic @ 31.08.2016. 23:13 ] @
Problem je u tome sto moras da pravis glupe greske kad implementiras stvari. Ako koristis neki lib Rust je ok, ali ako krenes da se bakces sa low level stvarima, Rust je zapravo gori od C/C++-a. Iz iskustva mi treba mnogo vise razmisljanja i vremena da odradim nesto u Rustu nego u C++-u.
Ali kad jednom napravis kod radi iz cuga osim sto mozes da batalis sav safety ako recimo (a moras) koristis raw pointere. Desilo mi se da je varijabla otisla sa steka i nikakvog upozorenja od kompajlera nisam imao :
Code:

        let tmp = CString::new(name).unwrap();
        let s = tmp.as_ptr();


napravi to u :
Code:

        let s = CString::new(name).unwrap().as_ptr();


i imas problem bez ikakvog upozorenja od kompajlera.
Osim toga to sto nema nasledjivanja struktura je pain kada moras da preuzimas kod i podatke. To forsira da stalno koristis pimpl idiom i nema drugih opcija.
To sto nema downcasta iz trait-a je takodje prica za sebe.
Dizajneri Rusta su negde gde je C++ bio 1992 godine i odbacili su gro stvari koje je C++ uveo iz razloga sto je praksa to zahtevala.
Tako da nisam bas siguran da li ce Rust ikada ozbiljno zaziveti.

Da dodam, tu su razni problemi sa time sto kad neko zapuca Fn trait closure kao callback a ti hoces da recimo promenis vrednost captured variable mozes da
se obesis o najblize drvo. Zato libovi zapravo sakrivaju mutability u low level kodu a gornji slojevi su navodno immutable.
Osim toga da bi implementirao renderovanje iz vise thread-ova po istom bufferu moras da se posluzis magijom tj da pravis
ovo:
Code:

#[derive(Clone)]
struct Racy<T>(T);

unsafe impl<T: 'static> Send for Racy<T> {}
...
    let objects = Racy(&objects as *const Objects);
....
         let objects = objects.clone();
         let bytes = Racy(&mut bytes as *mut Vec<u8>);

......
            results.push(std::thread::spawn(move || unsafe {
                let Racy(objects) = objects;
                let Racy(bytes) = bytes;


I svef to samo da bi mogao da drljas po raw bufferu iz vise threadova...
Ima jos mnogo stvari koje mi sad ne padaju na pamet ali mislim da je i ovo dosta....
[ Arnie @ 01.09.2016. 19:28 ] @
Ne sumnjam da je ovo što govoriš tačno, no meni kao osobi koja nije imala baš puno iskustva sa sistemskim programiranjem (jeste da mi je C++ bio prvi jezik i da sam dosta stvari naučio zahvaljujući njemu, ali rano sam se prebacio na web development) Rust dođe kao 1/10 zbog 'svarljive' dokumentacije i izuzetne podrške preko IRC-a i na forumu; koje god pitanje da sam postavio dobio sam vrlo opširan odgovor i gotovo uvek je dostupan neko od razvojnog tima (najviše Stiv Klabnik) da odgovori na pitanja i baš ima strpljenja da ti napiše i primer koda i u detalje objasni neke stvari (doduše, ja većinu stvari skontam iz dokumentacije).

Obzirom da nema neku podršku verovatno ću se prebaciti na neki drugi jezik koji je na stabilnijim nogama i sa kojim mogu više da naučim po pitanju rukovanja memorijom i ostalim konceptima nižeg nivoa, a Rust ću svakako ubuduće koristiti u nekim hobi projektima.

Edit:

Sad baš gledam Stivovu prezentaciju istorije Rust-a. On već na početku navodi da je Rust nastao kao istraživački projekat u sprezi sa Servom; ljudima koji su sa strane to gledali od 2006. izgledalo je kao da Rust dizajneri nemaju pojma šta rade, ali ono što su oni radili celo to vreme je zapravo isprobavanje različitih opcija. Ako bi se opcija pokazala kao dobra bila bi zadržana, u suprotnom bi bila izbačena iz jezika.

Obeležen je i maj 2016. kao datum početka produkcione godine; verovatno su po nekim kriterijumima došli do zaključka da je jezik od tada spreman za korišćenje u produkciji. Verovatno će se dosta toga u budućnosti ispeglati, naročito kad Servo dostigne određenu starost. Još je to mlad projekat, kao i Rust.

[Ovu poruku je menjao Arnie dana 01.09.2016. u 22:42 GMT+1]
[ Branimir Maksimovic @ 02.09.2016. 05:40 ] @
Ne znam cime hoces da se bavis ali tu je Go koji je mnogo stabilniji i prijatniji u odnosu na Rust. Go je iskljucivo mrezni jezik i pisanje mreznog softvera je breeze. Ono sto Go ne moze to je da radi sistemsko programiranje i GUI.
Ja sam pravio neki vraper oko Qt-a ali odlucili su da zabrane da se pointeri u okviru strukture na GC allocated objekte bacaju u C f-je i to je show stoper za bilo kakav vraper oko C gui liba. Koliko vidim to je zaustavilo bilo kakav napor u tom pravcu.
Prednosti Go-a su cist kod i lightning fast kompajliranje ali je usko specijalizovan jezik.
Osim toga imas i D koji je much more usable then Rust. To su ta tri aktuelna sada, i vec navedena.
D ima losije performanse od Rust-a a programiranje bez GC-a je pain, tako da D i nije bas za sistemasenje.
D ima jako dobar interfejs ka C++-u ako ti to nesto znaci.
I dalje C++ je zakon po meni, pogotovo sto su pola fazona iz D-a pokupili u C++11 ;)
[ plus_minus @ 07.09.2016. 23:45 ] @
Biće da si Branimire nažalost u pravu.. Servo u svojoj dev. varijanti neće ni da se iskompajlira do kraja kako treba.
Bar ne kod mene na mašini. Pre neki dan probao i mućak.. nadam se da nema mnogo takvih slučajeva.
Pred sami kraj kompajliranja (koje je onako, soidno trajalo), negde je zabolo, napisa' mi koji je error i mrka kapa.
Nije bilo nikakvih nezavistnosti i neželjenih poruka u toku procesa. Daću mu još jednu šansu za koji dan. Kad izbace Rust 1.12.

No, vredni su to ljudi tamo po mozilla reasearch/dev. team-u.
Biće sve to dobro. Na svakoj mašini. I hope.

Mislim, taj servo i jeste jedna od šansi da se ova debilarija i agonija sa chrome-browser-po-svaku-cenu domnacijom prekine.
Baš kao što je to slučaj bio sa Internet Explorer-om i FF verzijom 1.0.

Ali ono što je još bolesnije u celoj toj priči jeste činjenica da isti ti koji razvijaju retardirani chrome (dobro, ne baš, baš ista ta ekipa, jel' da .. ), finansiraju/doniraju (i to pozamašno) ove koji razvijaju servo...
[ Branimir Maksimovic @ 10.09.2016. 00:55 ] @
Ja kompajliram Rust direktno iz repoa. Par puta nedeljno odradim `git pull` i bez problema iskompajlira. Takodje cargo. Ne znam za servo ali vec duze vreme nisam imao problema sa kompajliranjem u Rustu. Stabilizovali su sad jezik pa nema problema.
Mozda da probas Rust nightly sa servom pogotovo ako je dev verzija?

[OT] Sto se tice Chrome browsera otkacio sam ga cim su izbacili podrsku za NPAPI. Meni je licno Firefox bolje resenje.
[ plus_minus @ 10.09.2016. 02:02 ] @
^^ ja sam bez ff-a sakat i bogalj.

Rust radi i kod mene savršeno, ali, servo - nee htede da se spakuje ...
Probaću ponovo, svakako, ali ne žurim se nigde.
[ plus_minus @ 04.03.2017. 10:08 ] @
Krenuo je rđavi točak preko pitona da se kotrlja... :)
Kako vele, sama implementacija (bez bilo kakvih dodatnih optimizacija, koje su naravno došle kasnije) je ubrzala sve..
Koga interesuje: Fixing Python Performance with Rust
Citat:

After applying the parser to a particularly problematic source map, it showed that parsing with this library alone could cut down the processing time from >20 seconds to <0.5 sec. This meant that even ignoring any optimizations, just replacing Python with Rust could relieve our chokepoint.
[ Branimir Maksimovic @ 04.03.2017. 16:42 ] @
Hm pa nije to neka reklama za Rust. C++ isto to moze da uradi a i bilo koji kompajlirani jezik koji se moze zvati preko C interfejsa ;p
To da je python spor , znamo svi ;)
[ plus_minus @ 04.03.2017. 17:05 ] @
Nije, znam. Al' mi milo 'em drago što sve više i više biraju rđu. :)
A protiv pythona nemam ama baš ič ništa.

Piton njima lepo i precizno radi posao i dalje.
A i svima koji ga koriste.
[ Branimir Maksimovic @ 15.12.2017. 21:24 ] @
Nego zaljubio sam se u nim i ekspresivnost koju nudi ;)
Pogle proxy server u 50 linija koda. Prost proxy za zaobilazenje firewallova. Jedan klijent se prijavi (IDENT) a drugi ga potrazi (CONNECT) i onda krene proxyranje nakon potvrde sa "connect" da je uspostavljena konekcija na obe strane ;)

Code:

~/.../examples/nim >>> cat proxy.nim                                                                                                                                                                
import asyncnet, asyncdispatch,tables
import strutils,os
var clients {.threadvar.}: Table[string,seq[AsyncSocket]]
proc session(source,dest:AsyncSocket) {.async.} =
  await source.send("connected\c\L")
  while true:
    let buf = await source.recv(512)
    if buf.len == 0 : break
    await dest.send(buf)
  dest.close
proc connect(name:string,s:AsyncSocket):(bool,AsyncSocket) =
  if name in clients :
    var partner = clients[name].pop
    if clients[name].len == 0 :
      clients.del(name)
    (false,partner)
  else:
    (true,s)

proc ident(name:string,s:AsyncSocket):(bool,AsyncSocket) =
  clients.mgetOrPut(name,newSeq[AsyncSocket]()).add(s)
  (false,s)
proc initCommands():auto=
  result=initTable[string,proc(arg:string,s:AsyncSocket):(bool,ASyncSocket)]()
  result["CONNECT"]=connect
  result["IDENT"]=ident
let commands  = initCommands()
proc processClient(client: AsyncSocket) {.async.} =
    let line = await client.recvLine()
    let cmds = line.splitWhitespace
    if cmds.len<2 :
      close(client)
      return
    let (err,partner) = commands[cmds[0]](cmds[1],client)
    if err :
      await client.send("no such user" & "\c\L")
      client.close
    elif partner != client :
      asyncCheck session(partner,client)
      await session(client,partner)

proc serve() {.async.} =
  clients = initTable[string,seq[AsyncSocket]]()
  var server = newAsyncSocket(buffered=false)
  server.setSockOpt(OptReusePort,true)
  server.bindAddr(Port(parseInt(paramStr(1))))
  server.listen()
  
  while true:
    let client = await server.accept()
    
    asyncCheck processClient(client)

asyncCheck serve()
runForever()


Sto je najveci fazon, ovo ima sasvim dobre performanse ;)
[ Branimir Maksimovic @ 04.04.2018. 04:29 ] @
Kako ide sa Rustom? Resio sam da napisem web server u njemu i open source-ujem ;)
U principu glavna stvar kod Rusta je koristiti Box<_> i Rc<RefCell<_>> umesto raw pointera i referenci. I sve naravno clone. E sad ukoliko treba vise mutable referenci onda mora raw pointer. To nisam nasao kako da izbegnem.
Recimo posto u Rustu nema nasledjivanja, mora da se koristi pimpl non stop, pa recimo pimpl metodi treba baciti baznu strukturu, a u isto vreme pozvati metod tako da dolazi do duple reference.

Recimo:

unsafe { (*self.piml).method(self); }

Ne znam kako da ovo resim bez unsafe zavrzlame. ;(
[ Branimir Maksimovic @ 12.04.2018. 06:01 ] @
Evo dva programceta :
scimark2 u Rustu:
https://github.com/bmaxa/scimark2rust

I implementacija rb,avl i treap stabala, dodacu jos kad budem imao vremena :

https://github.com/bmaxa/trees_rust

Ovo cisto da pokazem pa ako neko ima neki komentar ;)


[ Branimir Maksimovic @ 15.04.2018. 07:48 ] @
E sad, posle 5 godina prvi put sam resio da napravim makro u rust-u ;)
Ne znam zasto sam izbegavao ovaj feature, valjda zato sto izbegavam makroe u C/C++,
ali Rust makroi su potpuno druga stvar.
Elem, posto Rust nema for petlju nego samo for range pelju resio sam da napravim makro koji ce
ovo da omoguci.

Code:

macro_rules! for_loop{
    ((;;$(;$lbl:tt)*)$bl:block)=>{
        $($lbl:)* loop {$bl}
    };
    ((;$cond:expr;$(;$lbl:tt)*)$bl:block)=>{
        $($lbl:)* while $cond {$bl}
    };
    ((;$cond:expr;$inc:expr$(;$lbl:tt)*)$bl:block)=>{
        $($lbl:)* while $cond {
            $bl;
            $inc;
        }
    };
    (($($vars:stmt),*;$cond:expr;$inc:expr$(;$lbl:tt)*)$bl:block) => {{
        $(
            $vars;
        )*
        $($lbl:)* while $cond {
            $bl;
            $inc;
        }
    }};
}

$()* znaci da se stvar unutar zagrada moze ponavljati vise puta ili nijednom.
tt je bilo koji token, block samo mu ime kaze, expr je izraz, a stmt recenica tipa let a = 5`.
Sve makro varijable pocinju sa $var:tip

Dakle ovo je jasno.
Koriscenje izgleda ovako:
Code:

fn main(){
    for_loop!((let mut a=0,let b=10,let mut c=2;a<b;{a+=c;c+=1}){
        println!("{} {} {}",a,b,c);
    });
    for_loop!((let (mut a,b,mut c)=(0,10,2);a<b;{a+=c;c+=1}){
        println!("{} {} {}",a,b,c);
    });
    let (mut a,b,mut c)=(0,10,2);
    for_loop!((;a<b;{a+=c;c+=1}){
        println!("{} {} {}",a,b,c);
    });
    for_loop!((;a>-20;;'outer){
        println!("outer");
        for_loop!((;;){
            println!("{} {} {}",a,b,c);
            if a < 1 { break 'outer}
            a-=c;
            continue 'outer;
        })
    })
}

Znaci pokriva sve slucajeve kao for petlja u C++ + ima opcionu labelu za petlju.
Prilicno sam impresioniram sta sve moze da se izvede preko makroa u Rustu ;)
[ plus_minus @ 15.04.2018. 11:46 ] @
Citat:
Kako ide sa Rustom?


Branimire, nznm jel' ovo retoričko, usputno ili meni postavljeno pitanje, bez obzira, moram da te razočaram. I sebe sam razočarao. :|
Ne ide nikako, zapravo ništa još konkretno nisam ni probao da napišem u Rust-u. A prošlo je godinu dana otkako sam napisao da ću živ da se pojedem ako makar nešto konkretno ne dovedem u završnu, production ready fazu.
Imam RSS feed-ove, nekoliko njih vezano za Rust, ažuriram redovno (sad je beše 1.25) dakle rustup update stable čim se pojavi, ali i dalje sam nemi posmatrač.
Ubilo mi je volju to što 3gm rama i swap od 1.5gb za kompjaliranje serva jednostavno nije bilo dovoljno .. trajalo je bre kao da putujem vozom od Niša do Beograda. Znači, treba brži CPU, brži ram, brži hard, neka aždaja.
Bar za development. Dok za web development (bash,php,js, itd.. ), sasvim dosta. Ne samo to, crk'o mi je i jedan hard od 1TB, koji je hebeno bio namenjen da bude bekap. 3 godine nije izdržao. Taman kad mu je prošla garancija. To me je dosta omelo. A novac mora da ide na drugu stranu... itd, itd. Ovo vezano za kompajliranje, očekivanje izvršnog fajla od 80-100 mb. .. znam, to ne mora da bude glavni okidač za odustajanje, uvek, eto, mogu da se pišu manje stvarčice za vežbu, baš kao par tvojih prethodnih primera. Jednostavno mi se ne da. Nešto me omete. Nešto mora da pruži otpor. Nemam dovoljno koncentracije ili retko, retko kad. Jedino noću da se arčim, al' i to mi više nije tako pogodno kao nekada ..
[ Branimir Maksimovic @ 15.04.2018. 14:19 ] @
Ajoj Rust sporo kompajlira, tako da na slabijoj masini ima da traje. Ja jedino sam Rust kompajliram, od drugih programa osim svojih, naravno tu su dependencies ;)
Sto se tice samog jezika , imam sad dosta iskustva, pa ti mogu pomoci ako negde zapne ;)




[ plus_minus @ 15.04.2018. 15:53 ] @
^^

Ne, nisam zaboravio da si im komitovao par pečeva u kompajler. :)
Hvala.

Elem, rust dokumentacija je savršena ... nego opširno bre!
Tako da .. kada jednoga dana krenem, pa se dobro odomaćim, pa zapne.. neću d smaram ja puno.

Više će to da bude nešto tipa: "Jel' može ovo još da se optimizuje da ne gubim više vremena .. ?" itd ..

Evo za sve koji su zagrejani za Rust.
Video iz 2016. godine.
Dosta toga se promenilo u Rust-u ali, sve je i dalje kompatibilno u video klipu.
Upaliti Closed Captions.

[ Branimir Maksimovic @ 05.02.2020. 14:08 ] @
https://blog.discordapp.com/wh...g-from-go-to-rust-a190bbca2b1f

Code:

Rust is becoming a first class language in a variety of domains. At Discord, we’ve seen success with Rust on the client side and server side. For example, we use it on the client side for our video encoding pipeline for Go Live and on the server side for Elixir NIFs. Most recently, we drastically improved the performance of a service by switching its implementation from Go to Rust. This post explains why it made sense for us to reimplement the service, how it was done, and the resulting performance improvements.
[ dejanet @ 05.02.2020. 19:50 ] @
Kao laiku za ova dva jezika, Go sintaksa mi deluje prihvatljiva, nasuprot Rust-u, koja mi je rogobatna i ruzna. Go takodje ima garbage collector, dok Rust nema.
Hmm, mada eksplicitno oslobadjanje objekata iz memorije deluje krajnje primamljivo, zbog eventualno velikih dobitaka u performansama.

Pitam se da li u realnom svetu programer u Rust-u moze da doaka GC-u Go jezika ?
[ nkrgovic @ 05.02.2020. 20:14 ] @
Koji programer? :)

Ovog Baneta sam gledao kako pise svoje malloc/dealloc rutine, tako da on moze. :) E sad, neki pocetnik - tesko, mada on nece ni Go da radi....

Meni je jedino Rust ruzan.... Realno, ja sam razne stvari gledao, nikad nisam nesto programirao vece od kracih skipti... ali meni Rust po sintaksi lici na Brainfuck. Izvini Bane. :D
[ plus_minus @ 06.02.2020. 01:35 ] @
Citat:
Pitam se da li u realnom svetu programer u Rust-u moze da doaka GC-u Go jezika ?


Da li u realnom svetu programer u Rust-u uopšte i treba da doaka Go-ovom GC-u .. ?

Citat:
Meni je jedino Rust ruzan.... Realno, ja sam razne stvari gledao, nikad nisam nesto programirao vece od kracih skipti... ali meni Rust po sintaksi lici na Brainfuck. Izvini Bane.


Lepše izgleda od
Code (php):

$_SESSION[self::ROOT_BITMASK['blabla']][md5($secret)] = ( ($var !== null) ?
  ((parent::$instance->getEffectiveValue()) ? function(){ return(print_r(get_defined_constants(true)['user'], true)); }):
  new class($name) { public function __construct(&$object) { $object = $this; }});
 


.. itd..

A kad smo kod lepote, meni je bash mnogo gadniji na izgled. if pa fi .. case pa esac ... pa onda kad narokaš pajp za pajpom .. pa ga deklariši pa ga onda pozovi 'al onda mora da ima i $ ..
Obožavam bash, ali je ružan. Gadan na izgled.

A Rust je nekako ... pa nije lep .. ali je intimidirajuć. I to je ono, `opasno`, geekovski skroz.
Što ga čini - ubavim.
[ Branimir Maksimovic @ 06.02.2020. 01:41 ] @
Citat:
dejanet:
Kao laiku za ova dva jezika, Go sintaksa mi deluje prihvatljiva, nasuprot Rust-u, koja mi je rogobatna i ruzna. Go takodje ima garbage collector, dok Rust nema.
Hmm, mada eksplicitno oslobadjanje objekata iz memorije deluje krajnje primamljivo, zbog eventualno velikih dobitaka u performansama.

Pitam se da li u realnom svetu programer u Rust-u moze da doaka GC-u Go jezika ?


Rust je u pocetku imao GC, ali su ga zbog performansi izbacili. Jezik je tvikovan tako da su performanse na prvom mestu.
Sto se tice sintakse pa eto lici na C++ pomalo. U Rustu ces retko eksplicitno oslobadjati zato sto kao i i C++ koristi
RAII. Go je na prvom mestu dizajniran tako da bude jednostavan a ne brz. E sad nije ni Go za bacanje sto se
tice brzine ali je u sko dizajniran tako da je pogodan za mrezno programiranje, dok je Rust vise general purpose.
[ Branimir Maksimovic @ 06.02.2020. 01:51 ] @
Citat:
nkrgovic:
Koji programer? :)

Ovog Baneta sam gledao kako pise svoje malloc/dealloc rutine, tako da on moze. :) E sad, neki pocetnik - tesko, mada on nece ni Go da radi....

Meni je jedino Rust ruzan.... Realno, ja sam razne stvari gledao, nikad nisam nesto programirao vece od kracih skipti... ali meni Rust po sintaksi lici na Brainfuck. Izvini Bane. :D


Lepota je u oku posmatraca :P
Rust je super zato sto je ubacio elemente ML-a tako da funkcionalno programiranje moze da se izvede lepo.
Inace radim Rust od 2013., odmah sam ga video kao zamenu za C++. E sad nervira me ponekad, ali samo
ponekad jer su lomili kod na svakoj sledecoj verziji :P
Mislim imas u ovom threadu moje kritike :P
Ali da jeziko po performansama moze da zameni C++, to je nesto!
[ plus_minus @ 06.02.2020. 01:55 ] @
^^

Ne bi se džaba sva dokazana stackoverflow elita već par godina unazad opredeljivala za Rust kao najomiljeniji jezik.
Svaki godine kada odrade survey, Rust vodi kao `most favored language by community`.
[ Branimir Maksimovic @ 06.02.2020. 02:08 ] @
Rust i D su za razliku od Go-a koji je Google Java i C# koji je MS Java iskreni pokusaji da se napravi
programerska alatka za siroke mase :P
Mislim ne mozes ih reverse inzenjerisati kao sto mozes ove Jave :P
[ plus_minus @ 06.02.2020. 02:15 ] @
nznm ... meni kad neko spomene javu .. pred očima mi mmf i raznorazne bankarske krvopije koje veze sa mnom nemaju .... totalno mi grozno nekako .. virtualna mašina .. odmah ti govori da je teško i tromo .. virus..
s' druge strane moj omiljeni *H* .. pa to mnogo, pa liči na javu kad ga gledaš .. liči i na perl ..

... jednostavno imam poverenje u mozilijance kad je Rust u pitanju pa to ti je.

D jezik .. šta se s' tim jezikom uopšte dešava ? Mnogo malo ljudi priča o istom, nešto se ne forsira puno ... bilo je hype-a o istom .. pa to zatajilo.. ili ja jednostavno (mnogo više nego što mislim da ne znam) baš ne znam ič o tome ?
[ plus_minus @ 06.02.2020. 02:34 ] @
Evo šta veli The computer language benchmarks game i koliko je Rust `zaeban igrač` - a mlad. Adoscelent. "U pubertetu".
Go i ne može da se poredi ..

TEk će da se portuje.
[ Branimir Maksimovic @ 06.02.2020. 02:47 ] @
"D jezik .. šta se s' tim jezikom uopšte dešava ? Mnogo malo ljudi priča o istom, nešto se ne forsira puno ... bilo je hype-a o istom .. pa to zatajilo.. ili ja jednostavno (mnogo više nego što mislim da ne znam) baš ne znam ič o tome ?"

Pa ne znam, D je sad manje interesantan od kako je nastao C++11. Target odience je isto C++, ali kad nije zaziveo prve desetine 2000 ih, tesko da ce sada pored Rust-a koji je pametno
inkorporirao mnoge stvari koje su jednostavno buducnost.
[ nkrgovic @ 06.02.2020. 08:37 ] @
Citat:
Branimir Maksimovic:
Lepota je u oku posmatraca :P
Rust je super zato sto je ubacio elemente ML-a tako da funkcionalno programiranje moze da se izvede lepo.
Inace radim Rust od 2013., odmah sam ga video kao zamenu za C++. E sad nervira me ponekad, ali samo
ponekad jer su lomili kod na svakoj sledecoj verziji :P
Mislim imas u ovom threadu moje kritike :P
Ali da jeziko po performansama moze da zameni C++, to je nesto!

Odustao si od Haskela? :) Mozda bi mogli da odigramo neki Eye of Beholder, nismo odavno? :)

Da se razumemo, nemam nista protiv jezika, i verujem ti naravno vise nego review-ovima sa neta. :)
[ Branimir Maksimovic @ 06.02.2020. 09:05 ] @
"Odustao si od Haskela? :)"

Nisam, Haskell je super, ali ne bih pojekte radio u njemu :P
Mislim odlican je za pisanje naucnih radova ;)
[ dejanet @ 08.02.2020. 06:27 ] @
Ipak, Rust postaje "fensi", sminkerski jezik:

Async-await on stable Rust!
https://blog.rust-lang.org/2019/11/07/Async-await-stable.html

Znaci u drustvu c#, javascripta...

[ Branimir Maksimovic @ 08.02.2020. 06:59 ] @
Tasj async await fazon su ubacili i u C++. Zbog jednostavnijeg rada sa threadovima.
No ja to koristim samo u nim-u, a ovo imam svoje biblioteke koje su oho ho starije od
toga...
[ Branimir Maksimovic @ 03.03.2020. 04:17 ] @
Jel neko probao try ? nov fazon. To koristim neko vreme:

Code:

~/.../examples/rust >>> cat catch.rs                                                                          
#![feature(try_blocks)]
fn main() {
    let a:Result<i32,String> = try {
        ret()?
    };
    println!("{:?}",a);
}
fn ret()->Result<i32,String> {
    Ok(0)
}


Kompajlira se sa --edition=2018 ili u Cargo.toml edition = "2018".

Fora je da je prebacivanje rezultata bilo radjeno sa try! makroom do sada
a eto sad ima syntax sugar zbog ovoga ili onoga.
[ clydefrog @ 01.05.2020. 20:33 ] @
Kako programirati u Rust-u ako dolazis iz OOP sveta?

Normalno, naviknut sam na klase i fale mi klase. Umesto klasa, koristim struct-ove. Pretpostavljam da to nije 1-to-1 zamena za klase i da ih ne bi trebalo tako dozivljavati. Hteo sam da napisem jednu ncurses aplikaciju sa user interface-om, ali nisam uspeo. Zamisilte sledeci Python dizajn:

Code:


# app.py
class App:
    def __init__(self):
        self.user_interface = UserInterface(self)
        self.all_entries = []

# user_interface.py
class UserInterface:
    def __init__(self, app):
        self.app = app
        self.page = Page(self.app)

class Page:
    def __init__(self, app):
        self.app = app
        self.selected = LineCounter(self.app)

class LineCounter:
    def __init__(self, app):
        self.app = app


Dakle, navikao sam da mogu da prosledim sta i gde hocu, kad hocu. U Rust-u to jednostavno nije moguce zbog ciklicnih referenci.

Kako prevesti ovaj dizajn u Rust?

Inace, svidja mi se jezik i hocu da ga naucim.

Javi se, Baneee! :D :D
[ Branimir Maksimovic @ 01.05.2020. 20:45 ] @
Ciklicne reference resavas sa Rc
Code:

pub type PtrValue<T> = Rc<RefCell<T>>;

RefCell ti treba ako hoces da to sto drzis da mozes i vrednost da promenis.
https://doc.rust-lang.org/std/rc/struct.Rc.html

Inace svaka struktura ima impl a mozes da implementiras i neograniceni broj
interfejsa (trait), cak mozes imati i genericku implementaciju za neki interfejs.

edit:
ono sto nema je nasledjivanje. Inace sada se nasledjivanje smatra za evil u modernom
oop-u ;)
[ clydefrog @ 01.05.2020. 21:27 ] @
Bane, hvala sto si se javio.

Ajd' da skratimo primer. Kako proslediti instancu Application-a u UserInterface?

Code:
use std::rc::Rc;
use std::cell::RefCell;

struct Application {
    user_interface: Rc<RefCell<UserInterface>>,
    all_entries: Vec<String>
}

struct UserInterface {
    app: Application,
}

impl Application {
    fn new() -> Self {
        Self {
            user_interface: Rc::new(RefCell::new(UserInterface::new())),
            all_entries: vec!["spam".to_string(), "eggs".to_string()]
        }
    }
}

impl UserInterface {
    fn new() -> Self {
        Self {
            app: ???
        }
    }
}

fn main() {}


[Ovu poruku je menjao clydefrog dana 01.05.2020. u 22:42 GMT+1]
[ Branimir Maksimovic @ 01.05.2020. 22:48 ] @
Evo kako ide:
Code:

~/.../examples/rust >>> cat cyclic.rs                                                                                                                                                                    
use std::rc::Rc;
use std::cell::RefCell;

struct Application {
    user_interface: Option<Rc<RefCell<UserInterface>>>,
    all_entries: Vec<String>
}

struct UserInterface {
    app: Rc<RefCell<Application>>,
}
impl Application {
    fn new() -> Rc<RefCell<Self>> {
        let rc = Self {
            user_interface: None,
            all_entries: vec!["spam".to_string(), "eggs".to_string()]
        };
        let rc = Rc::new(RefCell::new(rc));
        rc.borrow_mut().user_interface = Some(Rc::new(RefCell::new(UserInterface::new(rc.clone()))));
        rc.clone()
    }
    fn run(&self) {
        self.user_interface.as_ref().unwrap().borrow().run();
    }
    fn hi(&self) {
        println!("hi!");
    }
}

impl UserInterface {
    fn new(app:Rc<RefCell<Application>>) -> Self {
        Self {
            app: app.clone()
        }
    }
    fn run(&self) {
        self.app.borrow().hi();
    }
}

fn main() {
    let app = Application::new();
    app.borrow().run();
}

Mislim da je ocigledno, ako treba nesto da se objasni, tu sam.
[ clydefrog @ 02.05.2020. 12:43 ] @
Bane, hvala ti puno.

Nego, nesto mi govori da se ovo ovako ne radi u Rustu i da bi trebalo da zaobidjem ciklicne reference u sirokom luku.

Jel mozes da mi pomognes da struktuiram kod drugacije?

Code:

# app.py


class App:
    def __init__(self):
        self.user_interface = UserInterface(self)
        self.all_entries = []

    def search(self):
        # ovde mi treba pristup self.user_interface
        pass

    def delete_from_history(self, command):
        # ovde mi treba pristup self.user_interface
        pass

    def toggle(self):
        # ovde mi treba pristup self
        pass
    
    def add_to_or_remove_from_favorites(self, command):
           # ovde mi treba pristup self
           pass


def main():
    app = App()
    app.user_interface.populate_screen()

    while True:
        try:
            user_input = app.stdscr.get_wch()
        except curses.error:
            continue

        if user_input == "\x1b": # ESC
            break

# user_interface.py

class UserInterface:
    def __init__(self, app):
        self.app = app
        self.page = Page(self.app)
        self.search_string = ""

    def populate_screen(self):
        # ovde mi treba pristup self.app i page

    def prompt_for_deletion(self, command):
        pass

class EntryCounter:
    def __init__(self, app):
        self.app = app

    def inc(self):
         # ovde mi treba pristup page
         pass

    def dec(self):
         # ovde mi treba pristup page
         pass


class Page:
    def __init__(self, app):
        self.app = app
        self.selected = LineCounter(self.app)

    def inc(self):
         # ovde mi treba pristup self.app
         pass

    def dec(self):
         # ovde mi treba pristup self
         pass

    def total_pages(self):
         # ovde mi treba pristup self.app
         pass

    def get_page_size(self):
         # ovde mi treba pristup self.app
         pass

    def get_page(self):
         # ovde mi treba pristup self.app
         pass
    
    def get_selected(self):
         # ovde mi treba pristup self
         pass



Kako sve ovo organizovati a da ne bude ciklicnih referenci, ili da ih bude minimum ako bas mora?
Inace ovo je suggest box za bash history.
[ Branimir Maksimovic @ 02.05.2020. 13:16 ] @
Pa nema tu sta mnogo filozofije, ovde je u principu problematican app koji se svuda provlaci.
Ako neces ciklicne reference, onda potrebne podatke prosledi u parametrima metoda.
Potrebno je znaci da app ima referencu na ui, a ui na page i to je to.
[ Brodoplovac @ 30.05.2021. 20:48 ] @