1,052 botángi
1,052 botángi

Esengeli Oyekola Rust mpe Zig? Ɛɛ, Ɛɛ Osengeli

pene Ace — The JS Hater9m2025/04/02
Read on Terminal Reader

Molai mingi; Mpo na kotánga

Valeur ya ba langues ya programmation oyo ebombaka ba détails te.
featured image - Esengeli Oyekola Rust mpe Zig? Ɛɛ, Ɛɛ Osengeli
Ace — The JS Hater HackerNoon profile picture

Minɔkɔ oyo ebimisaka makambo mikemike

Ntango bato mingi babandaka kosala baprogramɛ, babendamaka na minɔkɔ oyo esalaka ete makambo ezala pɛtɛɛ. Python, JavaScript, mpe minoko mosusu ya nivo ya likolo elongolaka makambo ya mobulu ya boyangeli ya mémoire, kobenga ya système, mpe boyokani ya matériel. Abstraction oyo ezali na nguya —etikaka ba débutants basala ba programmes ya tina noki sans ko se bogged down na ba détails ya mise en œuvre.


Kasi ezali na motuya monene na minoko oyo etindaka yo okutana na makambo yango. Minɔkɔ lokola Rust, C, mpe Zig esalaka kaka te ete ozala programmeur ya malamu koleka na minɔkɔ wana ya sikisiki —ekómisaka bososoli na yo mozindo ya ndenge oyo baordinatɛrɛ esalaka mpenza. Bososoli yango esalaka ete ozala malamu mingi na monɔkɔ nyonso oyo osalelaka, ata mpe na minɔkɔ ya lokumu.


Mpo na kolakisa, tozwa likanisi ya « pete » lokola kotanga entrée ya mosaleli mpe kobomba yango na variable, sima kolakisa ndenge nini elingaki kosalema kobanda na minoko ya likolo kino na minoko ya nse. Tokobanda na oyo eleki likolo na bango nionso:

Python ya kosala

 name = input("What is your name?\n") print(name) #Ah, the classic I/O example


Mpo na moyekoli, mituna mpe boyekoli ekoki kozala nini awa? Kobosana te, tozali koluka kaka te ko manivelle code, kasi mpo na kozala mpenza na likanisi ya nini ezali koleka:


  • Variables mpe Mémoire: Tozali na “variables” oyo esimbaka ba données.

  • Mitindo ya ba données mpe mémoire: Tozali na mitindo ya ba données, mpe ba chaînes ezali kaka texte normal. Moyekoli oyo azali na mposa ya koyeba mingi akokaki kutu koyekola na ntina na mitindo mosusu ya ba données na nzela ya indice oyo.

  • Ba Fonctions Calls: Tokoki kobenga ba fonctions na ba arguments pe kobomba ba résultats ya ba fonctions wana na variable.

  • Environnement ya tango ya kosala Ba programmes ya Python ekoki kosalama na kobenga interprète mpe na programme (en supposant que tozali na Python installé; nako poke te ours oyo ezali versioning ya Python, ba dépendances, mpe installation). Yango ekoki komema na découverte na ba langues interprétées vs compilées.


Makambo oyo ezali mabe te; Nakanisi boyebi ya monene na ntina ya ba ordinateur ekouta na mwa '\n' wana na molongo. Koluka mwa moke na likambo oyo elingaki komema na boyebi na ntina ya ASCII, UTF-8, mpe bomonisi ya makomi na ordinateur lokola ba octets. Ekozala mbala mosusu mingi mpo na mobandi, kasi ekopesa bango likanisi ya lolenge nini makomi ekendaka na 0 mpe 1. Ezali mpe na mwa liteya na ntina ya ba interprètes mpe ba compilateurs awa, kasi yango ekosenga kotimola ya monene.

Javascript/Typescript (Node) Ezali ndenge moko na .

 import readline from 'readline/promises'; const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const name = await rl.question('What is your name?\n'); rl.close(); console.log(name); //Oh, js, so horribly wonderful in your ways


Longola bososoli ya kala, tótalela nini moyekoli oyo azali na mposa ya koyeba makambo akoki komona na kotalaka kaka code oyo:


  • Input/Output Streams : Tomoni ba références explicites na stdin na stdout. Exploration simple ya oyo elingaki komema na ba flux ya fichier stdin na stdout na ba environnements basés na Unix, mpe peut-être même ba descripteurs ya fichiers mpe ‘nionso ezali fichier’ na ba systèmes Linux.


  • Processus : Komona objet Processus ekoki ko déclencher mutu curieux ayeba ba processus pe azua mua elili ya processus ya exécution pona ba systèmes d’exploitation ya mikolo oyo. Atako bakoki kozwa yango mobimba te, sikoyo bazali na likanisi moko.


  • E/S asynchrone : await mpe Promises elakisaka moyekoli ndenge nini ba ordinateurs esimbaka ba opérations oyo esilaka mbala moko te, mpe peut-être même question na pourquoi e exécuter kaka na ndenge ya semba te (lokola Python). Makambo yango ezali kotinda biso tóyeba makambo etali:


    • Exécution synchrone na asynchrone, E/S non bloquant, mpe peut-être concurrence

    • Bilaka, Molongo ya Microtask, mpe Molongo ya Misala na Node, programmation oyo etambwisami na makambo mpe matomba na yango.


  • Bokeli ya interface pe boyangeli makoki : Bokeli pe bokangami ya interface ememaka moto na mituna pe azua bososoli ya boyangeli makoki, mingi mingi pona ba ressources ya tina lokola ba flux ya E/S.


  • Mots-clés ya déclaration ( let , const ): Yango e carte explicitement te na ba concepts ya mozindo, kasi eteyaka ba bonnes pratiques ya contrôle ya mutabilité.


  • Environnement ya temps d’exécution : Ba programmes JS esalemaka na nzela ya temps d’exécution, Node, Bun, Deno, etc. Mosala ya temps d’exécution ezali ya kopesa V8 (moteur JS) ba fonctionnalités supplémentaires mpo ezala langue complete. Moto akoki mbala mosusu kotuna nini mpenza ba temps d’exécution oyo epesaka na moteur V8, mpe yango elingaki komema na ba implémentations ya E/S async.


Basusu kati na yango, lokola Bilaka mpe Milongo, ezali ba abstractions oyo etali JS na mbala ya liboso, kasi soki moto azwi nsukansuka nzela na ye na Libuv — bibliothèque C oyo esimbaka E/S asynchrone mpo na Node.js - bakoyekola mwa moke na ntina na E/S na ba systèmes d’exploitation.

C-Sharp na likambo

 Console.WriteLine("What is your name?"); string? name = Console.ReadLine(); Console.WriteLine(name); //Surprise!! No public static void Main(string[] args)


Ba suspects ya momesano ya encodage ya ba caractères bazali awa, bien que ba obscures na ReadLine na WriteLine , en plus ya ba oyo, makambo mibale ya ntina ebimi:


  • Typing Static and Explicit Types : Atako inférence ya type ezali eloko ya kokamwa mpo na productivité, nazali kobatela likanisi ete kokoma polele ba types ebongisaka processus ya apprentissage, surtout mpo na ba débutants. Awa, moyekoli akokaki kozwa likanisi na ye ya liboso ya solosolo ya ebongiseli ya bokundoli, mingimingi ntango bazali koluka bantina ya koyebisa polele mitindo ya ba variables. Yango esangisi réservation ya ba octets spécifiques mpo na ba variables mosusu mpe ba erreurs oyo esalemaka tango omeki ko kotisa 64 octets na 32 octets ya mémoire.


  • Mitindo oyo ekoki kozala nula: Bayebi ete ekoki kosalema ete esika ya mémoire ezala na absence ya valeur valide, mpe yango ematisaka lisusu ndenge ya kotala mémoire.


  • Moto oyo azali mpenza na mposa ya koyeba makambo akobanda kotuna — Mpo na nini tosengeli koloba polele mitindo oyo ekoki kozala nullable? Ezali na makambo ya sikisiki oyo euti na kotalela motuya ya pamba lokola motuya oyo ezali nul te na baprogramɛ? Yango ememaka na koyekola mibeko ya kobatela mémoire.


  • Tango ya kosala ya monoko ya momesano(CLR), monoko ya katikati(IL), mpe JIT: Tango ya bolandi ya .NET esalaka ete mosala ya bosangisi ezala polele na kotindaka moyekoli na makasi atonga polele , mpe na nsima asala code.


Ko forcer usager a compiler code na ye epesaka ye nzela ya komona IL oyo esalemi. Yango epesi biso nzela ya kotala na biso ya liboso na assemblage(pseudo-assemblage, de toute façon), instructions, na ba registres. Ezali mpe na makoki ya koyekola na ntina ya compilation Just-In-Time ya CLR soki moyekoli azali ko poke mua mosika na se ya capote.


Atako makanisi yango mazali mpenza na minɔkɔ mosusu, bokeseni ezali ete komonisa yango epai ya mosaleli epesaka bango nzela ya kokɔta mbala moko na mozindo mpe kozwa likanisi na ntina na nini esalemaka mpenza mpo na kotambwisa code.


Na suka, E/S Ezali Plus Abstrait Awa koleka na JS. Tozali na eloko moko te oyo etali ba flux mpe gestion ya ba ressources.

Golang

Pardon, Gophers, kasi nakoki ko couvrir nionso te, soki te article oyo ekokoma molayi mingi.

Rouille ya koguga

 use std::io; fn main() { println!("What is your name?"); let mut name = String::new(); io::stdin() .read_line(&mut name) .expect("Failed to read line"); println!("{}", name); } //Almost a 1:1 from The Book


Mpo na moyekoli oyo azali na mposa ya koyeba makambo mingi, nini ekokaki kososolama na ntina ya makanisi ya système:


  • Mutabilité explicite : mot clé mut elakisaka ba variables ezali immutable par défaut. Encore, contrôle ya mutabilité ya ba données pona ba avantages na yango nionso.


  • Bosalisi ya mabunga ya polele : .expect() elakisi ete E/S ekoki kozanga mpe etindika kotalela botangi ya mabunga. Yango ezwamaka pene na lokola likambo ya mpamba na minoko ya likolo, mpe moyekoli akoki kososola ete kosala na bisaleli ya mosuni ekoki komema na ebele ya mabunga oyo moto akoki kokanisa te soki bamemaki yango liboso te. Lokola ndakisa, meka kotuna mobongisi ya base de données soki ba disques ezali ya kokoka.


  • Accès direct ya Stream : io::stdin() emonisaka polele interaction na ba ressources ya E/S ya niveau OS. Kaka ndenge ezalaki liboso, yango epesaka nzela na kozinda na mozindo na makanisi ya E/S na OS, bokeseni awa ezali ete makambo ezali mingi koleka ya pamba koleka ndenge ezalaki na JS.


  • Memory Allocation : String::new() elakisaka bokutani na biso ya liboso, atako pseudo-explicit, na tas mpe stack, mibale ya makanisi ya ntina mingi na mémoire. Atako ezali mpenza polele te, epesi ekoki ya elembo ete moyekoli oyo azali na mposa ya koyeba akoki kobanda na pete kotala bokundoli mpe kotuna mituna lokola — “Mpo na nini tozali na mposa ya bitúká ekeseni ya bokundoli?” “libondo yango ezali nini?” bongo na bongo.


  • Ba références & Kodefa : &mut name emonisaka introduction na biso ya liboso ya polele na ba pointeurs . Atako monoko nyonso kino sikawa esaleli ba références na nse ya capote, kobimisa yango liboso mpe na katikati epai ya programmeur epesaka bango nzela ya kobanda kozwa makanisi ya mozindo ya layout ya mémoire. Bayebi ete tokoki kosalela ba données moko na ba régions ebele na kosalelaka kaka ba références, elongo na matomba mpe makama ya approche ya boye.


  • Ba compilateurs, ba Exécutables, na Assemblage: Encore une fois, kosenga polele étape ya kotonga esalaka que moyekoli abanda ko explorer processus ya compilation, kasi mbala oyo, bazali na chance ya komona explorer tii na point ya ba instructions ya assemblage, pe mua moke na oyo etali processus ya exécution ya ba CPUs ya mikolo oyo.


Ata soki ozali malamu na ba abstractions ya niveau ya likolo, komeka na élément moko ya moke na Rust ekoki kongenga mokili mobimba ya comportement ya système oyo etikali kobombama na minoko mosusu. Mingi na yango ezali ya sika te, yango wana mpo na koloba, bokeseni ezali ete awa, ba exposer bango na programmeur, ko obliger bango bakanisa mpe bayekola na ntina na yango. Yango ememaka mpenza mbongo ya likolo mpe mpasi, kasi yango ezwami mbano na bososoli ya mozindo, mpe na ntina na yango, nguya likolo ya makoki ya système.

Zig

 const std = @import("std"); pub fn main() !void { var debugAllocator = std.heap.DebugAllocator(.{}).init; defer std.debug.assert(debugAllocator.deinit() == .ok); const allocator = debugAllocator.allocator(); const stdout = std.io.getStdOut().writer(); const stdin = std.io.getStdIn().reader(); var name = std.ArrayList(u8).init(allocator); defer name.deinit(); try stdout.print("What is your name?\n", .{}); try stdin.streamUntilDelimiter(name.writer(), '\n', null); try stdout.print("{s}\n", .{name.items}); } //lol, the code block doesn't have support for Zig


NOTE: Na débataki vraiment soki to te ko kotisa ba chaînes 'growable' oyo epesameli na tas to kozala kaka na chaîne 'statique' ya munene mingi, oyo epesameli na stack, mais lokola nasalelaki ba chaînes 'growable' pona exemple nionso mosusu, awa tozali. Mpo na kolimbola na pete, molongo oyo ekoki kokola ekoki kokola na bokotisi ya kobakisa, nzokande molongo ya statique ebongisami — lolenge se moko ya kobakisa bilembo ya sika ezali ya kosala ya sika na elembo ya sika.


Oh garçon, to banda wapi? Soki moyekoli atali code oyo, mbala mosusu akobanga mpe akokima, kasi nini ekokaki koyekola na ntina ya makanisi ya système na kotalaka likambo oyo:


  • Ba allocateurs na Mémoire: Zig esali que toloba polele que tango tosengeli kozua mémoire na tas, esengeli tosakola ba intentions na biso ya kosala yango; oyo ezali mpenza te lokola abstrait mpo na biso lokola na Rust. Awa, emonisami polele. Atako yango ebakisi ba frais ya liboso mingi, etindaka développeur abanda ko explorer stack, heap, mémoire dynamique, syscalls ya OS mpe mpo na nini tosengeli kutu ko allouer explicitement mpe mémoire libre.Oyo elendisaka lisusu compréhension ya développeur ya structure ya mémoire.


  • Bopeto mpe bomonisi ya ba fuites: Ba appels defer explicite mpo na kosukola mémoire mpe ba vérifications ya ba fuites ya mémoire ezali ba points de départ ya malamu mpo na koyekola na miso na yo moko makambo oyo ebimaka na mémoire oyo etambwisami malamu te. Na point oyo, développeur azali suffisamment équipé mpo na kokende vraiment na mozindo na sujet oyo.


  • String, Slices, mpe References: Strings ezali kaka ba pointeurs ya array ya ba valeurs u8 . Yango elongoli mwa ndambo ya nsuka ya abstraction kati na likanisi ya ‘molongo’ ya nivo ya likolo, mpe likanisi ya nivo ya nse ya 'array of bytes'.


  • Accès direct na ba flux ya E/S: Encore, na kosala que biloko oyo emonanaka, développeur a comprendre nini esalemaka tango batangi to bakomi depuis E/S libanda ya programme.


  • Mabunga ya E/S mpe Bosalisi mabunga: Mabenga ya ba dispositif ya E/S — mpe ba syscalls, na monene — ekoki kozanga. Développeur il faut a explorer pe azala conscient ya likambo oyo.

C na C++

Nakanisi ete ozwi likanisi oyo nazali kobimisa awa; ntina ya kobɛta mpunda oyo ekufá te.


Bongo, kuna okeyi. Mosala ya pete na minoko ebele. Nazali na elikya ete ondimisamaki na likanisi na ngai. Kasi, liboso tókende, tólobela mwa makambo polele:

Donc, Kokoma Kaka Kokoma Yango lisusu Na Rouille?

Te, eyano ezali te — kaka te. Nasalaka ba arguments oyo na perspective ya mutu oyo alingi ayeba mingi ndenge ba ordinateurs esalaka pe oyo asengeli ko squeeze nionso libanda ya matériel na yo (okokaki pe kokende assemblage, lokola ba gars likolo na FFMPEG pona yango, soki olingi).


Kasi nini esalemaka ntango ozali malamu na kopesa mbeka mwa efficacité mpo na bolamu ya vitesse ya développement? Est-ce que soki esengeli okoma serveur web ya poids léger na mua logique na mokolo moko to mibale? Nini esalemaka tango ozali développeur ya sika oyo azali kobangisa mingi na C++ na boye ete balingi kobwaka code?


Ezali na ebele ya makambo kuna libanda mpo na yango eloko lokola Go, Elixir, Haskell, to nini ezali kaka malamu. Nasengi kaka que sima na yango, ozua mua temps pe oyekola mua moke na oyo ezali vraiment koleka; esengeli te ozala whiz ya niveau ya nse oyo akoki kokoma asm na pongi na bango, kasi koyeba nini esalemaka na ba ordinateurs ekosalisa yo okoma code ya malamu, ya performance mingi . Mpe ekosalisa yo otika komona ordinatɛrɛ na yo lokola sanduku ya moindo. Nalaki pe ete bokosepela na yango.


Solola na ngai na Twitter .

L O A D I N G
. . . comments & more!

About Author

Ace — The JS Hater HackerNoon profile picture
Ace — The JS Hater@ace2489
Software dev | Web3 with Rust/Solidity | Systems dev with Rust/Zig. Reach me at [email protected]

KOKANGA BA ÉTIQUES

ARTICLE OYO EZALAKI PRESENTE NA...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks