लर्निंग रस्ट प्रोग्रामिंग यूजिंग जावास्क्रिप्ट: ए बिगिनर्स गाइड

Apr 16 2023
हैलो दुनिया, सब कैसे हैं? मैं एक सॉफ्टवेयर इंजीनियर हूं, जो अपने खाली समय में लिखना पसंद करता है। अक्सर, मैं खुद को एंथोलॉजी के लिए लघु कथाएँ गढ़ते हुए या अपने बुरे सपने से प्रेरित पागल उपन्यासों का आविष्कार करते हुए पाता हूँ।

हैलो दुनिया, सब कैसे हैं? मैं एक सॉफ्टवेयर इंजीनियर हूं, जो अपने खाली समय में लिखना पसंद करता है। अक्सर, मैं खुद को एंथोलॉजी के लिए लघु कथाएँ गढ़ते हुए या अपने बुरे सपने से प्रेरित पागल उपन्यासों का आविष्कार करते हुए पाता हूँ। लेखन और सॉफ्टवेयर विकास के बीच इस संबंध ने मुझे मोमो, लेखकों के लिए एक सॉफ्टवेयर बनाने के लिए प्रेरित किया, जैसा कि मैंने यहां उल्लेख किया है ।

मैंने एक व्यापक वास्तुकला दस्तावेज़ में जो कुछ भी सोच सकता था, उसका मसौदा तैयार करके शुरू किया। पिछले हफ्ते, मैंने बैकएंड के लिए तौरी (रस्ट के साथ) और फ्रंटएंड के लिए रिएक्टजेएस और वाइट का उपयोग करते हुए एक डेस्कटॉप संस्करण पर काम करना शुरू किया। मैंने इस दृष्टिकोण को चुना क्योंकि टौरी पैकेज हल्के, सुरक्षित और ऑपरेटिंग सिस्टम द्वारा बेहतर प्रबंधित हैं। छह साल तक इलेक्ट्रॉन के साथ काम करने के बाद, आखिरकार मुझे एक योग्य प्रतियोगी मिल गया। एकमात्र चुनौती रस्ट में लिखना सीखना है, एक ऐसी भाषा जिसे मैंने पहले कभी नहीं पढ़ा। और यही हम यहां बात करने जा रहे हैं।

पहला प्रभाव

रस्ट फाइल खोलने पर, मैंने खुद को कई कठिन कीवर्ड्स से हैरान पाया। जैसा कि किसी ने कोटलिन, जावा, जावास्क्रिप्ट, पायथन और सी # में अनुभव किया है, मैंने इसकी कार्यक्षमता की जावास्क्रिप्ट से तुलना करके जंग का अध्ययन करने का निर्णय लिया।

1. चर:

जावास्क्रिप्ट में, हमारे पास letपरिवर्तनशील चर और constस्थिरांक के लिए गतिशील चर हैं।

const x = 5; // constant
let y = 8 // mutable

let x = 5; // Immutable
let mut y = 8 // Mutable

रस्ट में एक मजबूत और स्थिर प्रकार की प्रणाली है, जिसके लिए स्पष्ट चर प्रकार की घोषणा की आवश्यकता होती है, जो टाइपस्क्रिप्ट की तुलना में अधिक मजबूत है। सामान्य प्रकारों में पूर्णांक (i32, u32, i64, आदि), फ़्लोटिंग-पॉइंट नंबर (f32, f64), और बूलियन (बूल) शामिल हैं। जावास्क्रिप्ट, टाइपस्क्रिप्ट के साथ भी, गतिशील टाइपिंग का उपयोग करता है और किसी संख्या के प्रकार को निर्दिष्ट करने की आवश्यकता नहीं होती है।

जंग में:

let x: i32 = 6;
let y: f64 = 3.16;
let z: bool = false;

let x = 6; // Number
let y = 3.16; // Number
let z = false; // Boolean

जंग कार्यों को "एफएन" का उपयोग करके परिभाषित किया जाता है, जिसमें रिटर्न प्रकार "->" लिखा जाता है। जावास्क्रिप्ट में, कार्यों को "फ़ंक्शन" के रूप में परिभाषित किया जाता है, और रिटर्न प्रकार निर्दिष्ट करना आवश्यक नहीं है।

जंग में:

fn add(x: i32, y: i32) -> i32 {
  x * y
}

function add(x, y) {
  return x * y;
}

function add(x: number, y: number) {
  return x * y;
}

4. नियंत्रण संरचनाएं

जावास्क्रिप्ट और रस्ट दोनों में समान नियंत्रण संरचनाएं हैं जैसे कि अगर-और, जबकि और लूप के लिए।

जंग में:

if x < y {
  println!("x is less than y");
} else {
  println!("x is greater than or equal to y");
}

while x < 10 {
  println!("x is {}", x);
  x += 1;
}

for i in 0..10 {
  println!("i is {}", i);
}

if (x < y) {
  console.log("x is less than y");
} else {
  console.log("x is greater than or equal to y");
}

while (x < 10) {
  console.log("x is", x);
  x += 1;
}

for (let i = 0; i < 10; i++) {
  console.log("i is", i);
}

जंग "परिणाम" और "विकल्प" प्रकारों का उपयोग करके त्रुटियों को संभालती है। जावास्क्रिप्ट में, एरर हैंडलिंग में आमतौर पर ट्राई-कैच ब्लॉक या एरर-फर्स्ट कॉलबैक शामिल होते हैं।

जंग में:

fn divide(a: f64, b: f64) -> Result<f64, String> {
    if b == 0.0 {
        Err("Cannot divide by zero.".to_string())
    } else {
        Ok(a / b)
    }
}

match divide(10.0, 2.0) {
    Ok(result) => println!("Result is {}", result),
    Err(e) => println!("Error: {}", e),
}

function divide(a, b) {
    if (b === 0) {
        throw new Error("Cannot divide by zero.");
    } else {
        return a / b;
    }
}

try {
    const result = divide(10, 2);
    console.log("Result is", result);
} catch (e) {
    console.log("Error:", e.message);
}

जावास्क्रिप्ट और रस्ट मॉड्यूलर प्रोग्रामिंग का समर्थन करते हैं, अलग-अलग फाइलों के माध्यम से बेहतर कोड संगठन को बढ़ावा देते हैं।

जंग में, यह मानते हुए कि हमारे पास math.rsनिम्नलिखित सामग्री वाली एक फ़ाइल है:

pub fn add(x: i32, y: i32) -> i32 {
    x + y
}

mod math;
use math::add;

fn main() {
    let result = add(5, 10);
    println!("Result is {}", result);
}

export function add(x, y) {
  return x + y;
}

import { add } from ‘./math.js’;

const result = add(5, 10);
console.log("Result is", result);

नींव के रूप में जावास्क्रिप्ट का उपयोग करते हुए मैंने रस्ट में ये मूल बातें सीखी हैं। जैसा कि मैं अधिक जटिल अवधारणाओं को विकसित करना और सीखना जारी रखता हूं, मैं यहां अपनी अंतर्दृष्टि साझा करूंगा। मुझे आशा है कि आपको यह मददगार लगेगा, और अगली बार आपसे मिलूंगा!