PROGRAMARE
Emiterea de Bani Privați. Pas cu Pas (1)
În primul articol de anul trecut scris pe această temă am realizat o prezentare a platformei financiare descentralizate (blockchainul) Ethereum și a clonelor acestuia, precum și un foarte scurt istoric al instrumentelor financiare folosite de-a lungul timpului în economia de piață. În al doilea articol am expus elementele sintactice fundamentale ale limbajului de programare Solidity, limbajul de referință pentru contracte inteligente înregistrate în blockchain. De asemenea, în aceste prime articole am arătat cum utilizăm un browser pentru a ne conecta la blockchain prin intermediul extensiilor și a librăriilor Web3.
PROGRAMARE
O introducere în Solidity, lingua franca pentru Contractele Inteligente Ethereum
În acest articol, vom prezenta aspectele de bază ale Solidity, unul din limbajele consacrate în dezvoltarea de Smart Contracts (contracte inteligente) în cadrul Ethereum sau a blockchainurilor Ethereum clonate. Teoria și exemplele prezentate în acest articol sunt inspirate cu precădere din două cărți. Prima, “Mastering Ethereum”, este scrisă de doi cercetători britanici: Andreas M. Antonopoulos, un susținător vestit al criptomonedei Bitcoin și Gavin Wood, creatorul limbajului de programare Solidity. A doua carte, “Building Ethereum Dapps”, scrisă de Roberto Infante pentru Manning, este favorita noastră: este ușor de înțeles, deși abordează aspecte complexe legate de Solidity și de ecosistemul Ethereum.
PROGRAMARE
Introducere succintă în lumea Blockchainului Ethereum, DeFi și Web3 Dapps
Povestea noastră începe în secolul al XVII-lea în Olanda, cea mai avansată țară europeană a acelor vremuri. Datorită adoptării religiei reformate în secolul anterior (mai precis teologia calvinistă), care încuraja spiritul pragmatic și inițiativa individuală, și datorită proximității Oceanului Atlantic, care oferea avantajul comerțului maritim, olandezii s-au dezvoltat într-un mod surprinzător. Au fost pionieri ai descoperirilor geografice și au dus un război comercial fenomenal împotriva Spaniei, cea mai puternică țară a perioadei respective, câștigându-și oficial independența de Spania după 80 de ani. Însă cele mai importante descoperiri olandeze, cu cel mai pregnant impact chiar și în ziua de azi, țin de domeniul economic. Olandezii au inventat prima bursă modernă și au descoperit primii că o companie poate fi împărțită în segmente mici numite acțiuni (societate pe acțiuni) care pot fi transferate către altă persoană care astfel devine proprietar și vânzător al unor bucăți mici dintr-o companie. Acea primă companie pe acțiuni a fost și prima mega-corporație, Compania Indiilor Olandeze).
PROGRAMARE
AI și Machine Learning în C#
Un algoritm machine learning (ML) este un program ce folosește inițial cantități mari de date, ca mai apoi să poată face “predicții” despre datele ce vor apărea ulterior în sistem. Un exemplu clasic este algoritmul de clasificare: introducem mii de poze cu câini și pisici în algoritmul AI (Artificial Intelligence), și astfel noi ne “antrenăm” programul. Apoi, când încărcăm o imagine nouă, programul va identifica cu o acuratețe de peste 99% dacă entitatea nouă este un câine sau o pisică.
PROGRAMARE
Programare C# pentru tranzacțiile Bitcoin
În primele două articole am prezentat arhitectura și filozofia criptomonedelor (criptocurrency) în general și Bitcoin în particular. După ce am prezentat detalii legate de implementarea în cadrul unui server distribuit (cu mostre de cod C#), în al treilea articol ne propunem să discutăm despre componenta client a bitcoin sau despre portofelul electronic.
Exemplele pornesc de la aspecte discutate în volumul online “Programming the Blockchain in C#”.
PROGRAMARE
Bitcoin și criptografia
Vom începe articolul de față așa cum l-am început pe precedentul: descriind principiile fundamentale ale cripto-monedei (crypto-currency). Dacă articolul anterior, am explicat componenta "currency (monedă)" a cripto-monedă, acum vom explica partea "crypto".
Acest principiu fundamental se numește criptografie. Se referă la formulele matematice ce pot ascunde informații și la alte formule ce pot interpreta informația ascunsă anterior. Pentru a menține informația simplă, vom împărți aceste formule matematice în trei categorii: simetrice, asimetrice și hashing.
PROGRAMARE
Bitcoin și Blockchain: Introducere teoretică și principii generale
Pentru a discuta și înţelege ce este Bitcoin, trebuie mai întâi să dăm răspuns unei întrebări fundamentale: Ce sunt banii? Ce face ca o monedă, de aur spre exemplu, să fie considerată valoroasă de majoritatea oamenilor? Există câteva proprietăţi clasice ale banilor, enumerate mai jos:
- O moneda este autentică, nu contrafăcută. Acest lucru înseamnă că există doar o singură autoritate care poate tipări bancnotele sau emite monedele. Ceilalți care încearcă să tipărească același tip de bani sunt de obicei pasibili de pedeapsă drastică.
- Banii se pot cheltui doar o singură dată. Pentru banii digitali este mai greu de respectat această proprietate decât pentru monedele clasice sau banii de hârtie. Din fericire, s-a găsit o soluţie la această problemă extrem de grea. O vom explora mai jos și într-unul din numerele următoare ale revistei. (Bitcoin are răspunsul la problema cheltuirii duble.)
MANAGEMENT
Procesul de recrutare din industria de IT
Principalul obiectiv al recrutării IT este găsirea oamenilor cu cele mai bune abilităţi tehnice și cel mai bun raţionament abstract. La drept vorbind, aceste abilităţi tehnice sunt precondiţii OBLIGATORII pentru orice angajare de succes în această industrie.
Concomitent, marii angajatori își orientează strategia de angajare prin căutarea și potrivirea celor mai bune "caractere" cu o funcţie scoasă la concurs. Acest lucru este de înţeles având în vedere că marile companii sunt mult mai stabile decât startupurile, deci marile organizaţii vor pune mai mare accent pe stabilitatea de lungă durată decât de rezultate extraordinare, de scurtă durată. Din aceste motive, personalul corporatist responsabil cu angajarea folosește două abordări.
PROGRAMARE
Introducere în programarea .Net Multithreading (II)
În articolul precedent am explicat ce este execuția multithreading și am descris elementele esențiale ale programării asincrone în .Net, anume interfața IAsyncResult. Am prezentat și o scurtă istorie a evoluției abstractizării programelor multithreading în mediul .Net, începând cu clasa Thread și sfârșind cu designul async-await (async și await ajungând chiar cuvinte rezervate în limbajul C#).
În acest articol vom oferi exemple de sincronizare a firelor de execuție (numite de acum în engleza originală „thread”) din mediul .Net axate pe cele două moduri în care procesorul funcționează pentru orice sistem de operare: modul Utilizator și modul Kernel. Ca de obicei, începem cu definițiile.
PROGRAMARE
O scurtă introducere în programarea .Net Multithreading
Java și .Net sunt sisteme de operare în miniatură care se ocupă de scenarii complexe precum alocare de memorie, cleanup (vezi Garbage Collector) și acces simultan la resurse (.Net/Java Managed Threads). Azi ne vom axa pe subiectul “cu greutate” al multi-threadingului într-un mediu enterprise mare. Deoarece experienţa mea anterioară s-a axat pe .Net, am ales să prezint exemple din C# , dar aceleași concepte, clase și abstracţiuni descrise mai jos au un echivalent aproape identic în Java.
Cele mai importante părţi din orice prezentare sunt definiţiile, deci trebuie să definim threadul. Răspunsul este surprinzător de complex, iar ca o precondiţie trebuie să definim ce este un program de calculator și un proces!
NUMĂRUL 149 - Development with AI
Design contribution