Udemyسایت Udemy با بیش از 37 ساعت محتوای ویدیویی یکی از بهترین سایت های آموزش PHP برای مبتدیان و علاقه مندان به یادگیری PHP شناخته می شود. این دوره آموزشی PHPتوسط ادوین دیاز، توسعه دهنده وب محبوب در Udemy طراحی شده است. این دوره فراتر از مباحث اساسی رفته و به بحرانی ترین موضوعات مانند امنیت، رمزگذاری و جلوگیری از آسیب پذیری های امنیتی نظیر SQL Injection پرداخته می شود. این دوره شامل آموزش MySQL و Ajax نیز می شود که به دانشجویان کمک می کند که چگونه کدهای خود را اصلاح و اشکال زدایی کنند. همچنین، این دوره به آنها نشان می دهد که چگونه از PHP برای ایجاد پروژه های دنیای واقعی استفاده کنند و از قابلیت های این زبان برنامه نویسی در ایجاد وب سایت ها و نرم افزارهای کاربردی بهره مند شوند. بیش از 97000 دانشجو که اکنون در حال مشارکت در این دوره موفق PHP هستند و امتیاز متوسط 4.4 که این دوره دریافت کرده است، نشان دهنده رضایت بالا و ارتقاء کیفیت تدریس و محتوا این دوره است. همچنین، از طریق این دوره، دانشجوها به صورت جامع با اصول و تکنیک های PHP آشنا می شوند. نظرات مثبت و اعتماد دانشجویان نسبت به این دوره نشانگر تأثیرگذاری آن در بهبود مهارت های برنامه نویسی PHP است. Guru99 دوره Guru99 گزینه ای مناسب برای کاربران است که با استفاده از آن، به آموزش های عملی در زمینه PHP دست پیدا خواهید کرند. این دوره به کاربران امکان می دهد که از طریق پروژه هایی مانند ایجاد برنامه نظرسنجی با PHP یا ایجاد برنامه PHP مبتنی بر Ajax، مهارت های خود را در زمینه برنامه نویسی PHP تقویت کنند. در این دوره 7 روزه، علاوه بر ارائه دانش اساسی PHP، تمرینات اولیه و پیشرفته نیز ارائه می شود که به دانشجویان امکان می دهد تا مهارت , ...ادامه مطلب
ایلان ماسک پس از خریداری توییتر تغییراتی زیادی در این برنامه به وجود آورد و اکثر آنها مطابق میل کاربران نبوده است و باعث شده است بسیاری از کاربران به فکر ترک کردن آن و جایگزینی یک برنامه دیگر باشند. در ین بین شرکت متا و مارک زاکنبرگ از این فرصت استفاده کردند و به فکر راه اندازی یک برنامه جدید افتادند. مدتها بود حرف از رونمایی از برنامه رقیب توییتر توسط شرکت متا زده میشد و بالاخره در 15 تیر 1402 از این برنامه رونمایی شد. نام این برنامه تردز threads است که به عوان همراه اینستاگرام شناخته میشود. در واقع میتوان گفت تردز مکمل ترزد است. استقبال کاربران از این برنامه در روزهای نخست فوق العاده بود به طوری که به گفته شرکت متا در 3 بیش از 70 میلیون نفر در threads ثبت نام کردهاند.تردز threads چیست؟ تردز یک نرم افزار متن محور است است. منظورمان از اینکه تردز مکمل اینستاگرام است. اینستاگرام یک برنامه تصویر و ویدیو محور است بیشتر درست برعکس توییتر و تردز. threads سعی کرده است با نداشتن محدودیتهای توییتر مانند محدودیت مشاهده پست از نظر تعداد و … کاربران بیشتری جذب کند. تردز که شباهتهای بیش از اندازهای به توییتر دارد و در واقع رقیب هم هستند یک سری وابستگی به ایستاگرام دارد به طور که بسیاری آن را نام اینستاگرام threads میشناسند که در ادامه بررسی خواهیم کرد. آموزش کار با threads چون برنامه تردز به تازگی رونمایی شده احتمالا برخی از افراد برای کار با آن چالشهایی داشته باشند که در ادامه به آموزش در این زمینه خواهیم پرداخت. ثبت نام در thread تردز یکی از نکات مثبت و جالب در خصوص ابن نرم افزار این است که کاربران اینستا میتوانند با حساب کاربری اینستاگرام ار برنامه تردز است, ...ادامه مطلب
Enums، مخفف enumerations و یک ساختار داده قدرتمند در زبان برنامه نویسی Rust است. Enumهای Rust، بسیار متنوعتر از آنهایی هستند که در بسیاری از زبانهای برنامه نویسی دیگر یافت میشوند و به شما این امکان را میدهند که دادههای پیچیده را با تطبیق الگو و مدیریت خطا، مدل سازی کنید. در این مقاله به اصول اولیهی enums در Rust، موارد استفادهی از آنها و چند مثال کاربردی خواهیم پرداخت. تعریف Enums در Rust Enumها در Rust، با استفاده از کلمهی کلیدی enum و به دنبال آن، نام enumeration تعریف میشوند. هر enum میتواند صفر یا بیشتر، مقادیر مرتبط با انواع دادههای مختلف را داشته باشد. در اینجا یک مثال ساده آورده شدهاست: enum Direction { North, East, South, West, } Rust به enumها اجازه میدهد تا دادههای مرتبطی را داشته باشند و آنها را به ابزاری قدرتمند، برای مدل سازی ساختارهای داده پیچیده، تبدیل میکند. در اینجا یک مثال از یک enum که اشکال مختلفی را نشان میدهد، مشاهده میکنید: enum Shape { Circle(f64), Rectangle(f64, f64), Square(f64), } در این مثال، نوع Circle دارای یک مقدار ورودی برای شعاع است؛ در حالیکه نوع Rectangle دارای دو مقدار ورودی است که نشان دهندهی عرض و ارتفاع است. نوع Square دارای یک مقدار ورودی برای طول ضلع خود است. Patte Matching در Enums ** Patte Matching ** در ادامه مطالب به صورت کامل صحبت خواهد شد . قابلیت Patte Matching به ویژه هنگام کار با enums مفید است. میتوانید از کلمهی کلیدی match برای destructure و مطابقت با انواع enum استفاده کنید که به شما امکان میدهد، کد مختصر و خوانایی را بنویسید. در, ...ادامه مطلب
Control Flow، یکی از جنبههای ضروری هر زبان برنامه نویسی است و Rust نیز از این قاعده مستثنا نیست. Rust، انواع ساختارهای Control Flow را ارائه داده و به توسعه دهندگان اجازه میدهد تا اجرای کد خود را کنترل کنند. در این مقاله در مورد حلقههای if/else، loop، while و for در Rust بحث خواهیم کرد. if/else statement دستور if/else، یک از اصلیترین ساختارهای Control Flow است که تقریباً در تمام زبانهای برنامه نویسی وجود دارد. در Rust، دستور if/else، برای اجرای یک بلوک کد، بر اساس یک شرط معین استفاده میشود. نحو دستور if/else در Rust، به شرح زیر است: if condition { // اجرای دستور اگر شرط درست باشد } else { // اجرای دستور اگر شراط نادرست باشد } fn main() { let x = 5; if x < 10 { println!("x is less than 10"); } else { println!("x is greater than or equal to 10"); } } خروجی x is less than 10 Loop دستور حلقه، برای ایجاد یک حلقهی بینهایت در Rust استفاده میشود. دستور حلقه زمانی مفید است که بخواهیم یک بلوک کد را تا زمانیکه یک شرط خاص برآورده شود، تکرار کنیم. در اینجا syntax حلقه در Rust، آمدهاست: loop { // اجرای کد } fn main() { let mut counter = 0; loop { counter += 1; if counter == 5 { break; } } println!("Counter value: {}", counter); } خروجی Counter value: 5 در مثال بالا، ما یک حلقهی بینهایت را ایجاد کردهایم که مقدار متغیر شمارنده را افزایش میدهد تا به عدد 5 برسد. هنگامیکه مقدار شمارنده 5 شد، از حلقه خارج میشویم. While loop حلقه wh, ...ادامه مطلب
مدیریت حافظه، نقش مهمی را در برنامه نویسی ایفا میکند و بر عملکرد و کارآیی یک برنامه تاثیر میگذارد. این مقاله، مروری را بر سه نوع حافظهی اصلی ارائه میکند: static memory, stack memory, heap . درک تفاوت بین این انواع حافظهها میتواند به شما در بهینه سازی کد و جلوگیری از مشکلات احتمالی، کمک کند. Static Memory حافظهی static برای ذخیرهی باینریهای برنامه، متغیرهای استاتیک و حروف رشتهای (در Rust) استفاده میشود. اندازهی حافظه استاتیک ثابت است و در زمان کامپایل مشخص میشود. حافظهی استاتیک طول عمری برابر با عمر برنامه دارد و مقادیر آن از شروع، تا پایان برنامه، باقی میماند. پاکسازی حافظهی استاتیک به صورت خودکار انجام میشود و با پایان برنامه انجام میشود. مواردی که در حافظه استاتیک قرار میگیرند : Program Binary Static variables String Literals (in Rust) Size : Fixed ( محاسبه در زمان کامپایل ) Lifetime : برابر با طول عمر برنامه پاکسازی : به صورت خودکار ؛ زمانی که برنامه متوقف میشود . Stack Memory حافظهی پشته، مسئول نگهداری آرگومانهای تابع و متغیرهای محلی است. پشته، شامل stack frames است که برای هر فراخوانی تابع در زنجیرهای از فراخوانیهای تابع، ایجاد میشوند (به عنوان مثال، A B را فرا میخواند، B C را فرا میخواند). حافظهی پشته به اندازهی مشخصی در زمان کامپایل نیاز دارد؛ به این معنا که آرگومانها و متغیرهای درون stack frames باید اندازههای از پیش تعیین شدهای داشته باشند. اندازهی پشته، پویا است؛ اما دارای حد بالایی ثابتی است که در هنگام راه اندازی, ...ادامه مطلب
Rust، یک زبان برنامه نویسی است که به دلیل ایمنی و عملکرد مشهور است و مفهوم مالکیت را برای مدیریت مؤثر حافظه معرفی میکند. با رعایت مجموعهای از قوانین زمان کامپایل، توسعه دهندگان Rust میتوانند مشکلات مربوط به حافظه را کاهش داده و کد خود را بهینه کنند. این مقاله، قوانین مالکیت، مشکلاتی را که حل میکند و مثالهای مختلفی را برای نشان دادن کاربرد آن، بررسی میکند. قوانین مالکیت هر مقدار در Rust دارای یک متغیر مرتبط به نام مالک آن است. در هر لحظه فقط یک مالک میتواند وجود داشته باشد. وقتی مالک از scope خارج میشود، مقدار مرتبط حذف میشود. مالکیت در Rust به جلوگیری از چندین مشکل مدیریت حافظه کمک میکند، از جمله: Memory/resource leaks Double free Use after free هر مقدار در Rust دارای یک متغیر مرتبط به نام مالک آن است به مثال زیر توجه کنید: let s1 = String::from("Rust"); در این مورد، s1 یک اشارهگر است که در stack قرار دارد؛ در حالیکه مقدار "Rust" در heap قرار میگیرد. طبق قوانین مالکیت: s1 مالک دادههای ذخیره شدهی در heap است. هنگامیکه s1 از scope خارج شود، دادههای آن نیز پاک میشوند. تلاش برای ارجاع به s1 پس از خارج شدن آن از scope، منجر به خطا میشود؛ زیرا مقدار آن از heap حذف شده و دیگر وجود ندارد. مالکیت منحصر بهفرد (در هر لحظه فقط یک مالک میتواند وجود داشته باشد) اگر برای انتقال s1 به s2 از کد زیر استفاده کنید: let s2 = s1; Rust بهطور خودکار مقدار s1 را به s2 منتقل میکند و اطمینان حاصل میکند که تنها یک مالک در یک زمان حضور دارد. Cl, ...ادامه مطلب
Rust، یک زبان برنامه نویسی سیستمی است که برای ایمنی، همزمانی و عملکرد بهتر طراحی شدهاست. یکی از ویژگیهای کلیدی آن، مفهوم Borrowing است که به توسعه دهندگان اجازه میدهد تا ارجاعاتی را به ارزشها بدون در اختیار گرفتن مالکیت، ایجاد کنند. این مقاله اهمیت قرض گرفتن را در این زبان برنامهنویسی را بررسی میکند. Borrowing در Rust Borrowing عمل ایجاد ارجاع به یک ارزش، بدون در اختیار گرفتن مالکیت است. در Rust، ارجاعات، مشابه اشارهگرهای معمولی هستند؛ اما با قوانین و محدودیتهایی اضافه شدهاند. ویژگیهای اصلی Borrowing عبارتند از: References اشارهگرهایی با قوانین و محدودیتها هستند. References مالکیت ارزشها را نمیگیرند. دلایل Borrowing در Rust چندین دلیل وجود دارند که چرا Borrowing در Rust سودمند است: Performance : به کمک Borrowing، با انتقال ارجاع به یک مقدار بجای clone، عملکرد بهبود بخشیده میشود. به عنوان مثال هنگامیکه یک تابع، دارای پارامتری مانند یک رشته است، انتقال مرجع، کارآمدتر از تکرار مقدار است. Ownership Management : در مواردی که مالکیت، مورد نیاز یا مطلوب نیست، Borrowing یک راه حل ایدهآل است. با عدم مالکیت، یک تابع نباید مسئول تصمیمگیری در مورد زمان پاکسازی یک مقدار باشد. قوانین Borrowing در Rust Rust دو قانون اصلی Borrowing را اعمال میکند: در هر زمان معین، میتوانید یک مرجع قابل تغییر یا هر تعداد مرجع تغییرناپذیر داشته باشید. مراجع باید همیشه معتبر باشند. این قوانین به حل دو مشکل عمده در برنامه نویسی کمک میکنند: Data Races : مشکل Data Races زمانی رخ میدهد که دو رشته سعی میکنند مکان حافظهی یکسانی, ...ادامه مطلب
Rust، زبان برنامه نویسی سیستمی است که برای ایمنی، همزمانی و عملکرد طراحی شدهاست و همین جهت به یک انتخاب محبوب برای توسعهی نرم افزارهای مدرن تبدیل شدهاست. struct یکی از بلوکهای ساختمانی اساسی در Rust ساختار است که مخفف کلمهی 'structure' است. ساختارها، انواع دادههای سفارشی هستند که به توسعه دهندگان اجازه میدهند تا دادههای مرتبط را به شیوهای تمیز و کارآمد، با هم گروه بندی کنند. در این مقاله، قدرت و انعطافپذیری سازهها را در Rust، بررسی میکنیم و یاد میگیریم که چگونه، بهطور مؤثری از آنها در پروژههای Rust خود استفاده کنیم. تعریف struct برای تعریف struct در Rust، از کلمهی کلیدی struct استفاده کنید و به دنبال آن، نام ساختار و فیلدهای آن در براکتهایی باز و بسته محصور میشود. هر فیلد باید یک نام و یک نوع داشته باشد که با : از هم جدا شدهاند. به عنوان مثال در اینجا یک ساختار ساده، نشان دهندهی یک نقطهی دو بعدی است: struct Point { x: f64, y: f64, } نمونه مقدار دهی struct : let point = Point { x: 1.0, y: 2.0 }; دسترسی به فیلدهای struct : برای دسترسی به فیلدهای یک struct ، از علامت نقطه استفاده کنید: let x = point.x; let y = point.y; نمونه های struct قابل تغییر برای ایجاد یک نمونهی قابل تغییر از یک struct ، از کلمهی کلیدی mut استفاده کنید که به شما امکان میدهد تا مقادیر فیلدها را تغییر دهید: let mut point = Point { x: 1.0, y: 2.0 }; point.x = 3.0; point.y = 4.0; Tuple Struct Rust همچنین از ساختارهای tu, ...ادامه مطلب
در Rust، پیاده سازی فانکشنها ( implementation block ) به ما اجازه میدهد تا عملکردی را برای یک type مشخص، تعریف کنیم که ایجاد روشها و توابع مرتبط برای انواع دادههای سفارشیمان را ممکن میسازد. در این مقاله، نحوهی استفاده از implementation block را برای تعریف متدها و توابع مرتبط در Rust، با استفاده از ساختار Product به عنوان مثال، بررسی خواهیم کرد. ابتدا، بیایید یک struct محصول را با فیلدهای زیر تعریف کنیم: struct Product { name: String, price: f32, in_stock: bool, } پیاده سازی اجرای روش محاسبه مالیات فروش برای struct product در ادامه بیایید تابع catalog_sales_tax را به عنوان روشی برای ساختار Product، با استفاده از یک implementation block اضافه کنیم. impl Product { fn calculate_sales_tax(&self) -> f32 { self.price * 0.1 } } در این مثال، از کلمهی کلیدی Self، برای ارجاع به نمونه محصولی که این تابع با آن فراخوانی میشود، استفاده میشود؛ به عبارت دیگر وقتی از Self استفاده میکنید، یعنی دارید خود Product را صدا میزنید و به فیلدهای آن دسترسی دارید. استفاده از متد در تابع اصلی اکنون میتوانیم یک نمونه محصول را ایجاد کنیم و از روش محاسبه مالیات استفاده کنیم: fn main() { let book = Product { name: String::from("Book"), price: 28.85, in_stock: true, }; let sales_tax = book.calculate_sales_tax(); println!("Sales tax: {}", sales_tax); } انواع مختلف Self Immutable borrow (در مواردی استفاده میشود که میخواهید به سادگی از فیلدهای خود بدون تغییر چیزی اس, ...ادامه مطلب
توابع یکی از اجزای اساسی برنامه نویسی Rust هستند. آنها به شما این امکان را میدهند که یک بلوک کد را کپسوله کنید که میتواند بارها و بارها با ورودیهای مختلفی فراخوانی شود. در اینجا یک مثال از یک تابع در Rust آمدهاست: fn main() { println!("The sum of 2 and 3 is {}", sum(2, 3)); } fn sum(a: i32, b: i32) -> i32 { a + b } در این مثال، تابعی را به نام sum تعریف میکنیم که دو آرگومان i32 را میگیرد و مجموع آنها را برمی گرداند. سپس تابع sum را با آرگومانهای 2 و 3 فراخوانی میکنیم و نتیجه را با استفاده از println در کنسول چاپ میکنیم. Function Declaration توابع در Rust با استفاده از کلمهی کلیدی fn و به دنبال آن نام تابع، پارامترها و نوع بازگشت (در صورت وجود) اعلام میشوند. در اینجا دستور کلی برای اعلان یک تابع در Rust آمدهاست: fn function_name(parameter1: type1, parameter2: type2) -> retu_type { // بدنه تابع // استفاده از مقادیر یارگشتی در صورت لزوم } در مثال بالا، تابع sum دو پارامتر، هر دو از نوع i32 را میگیرد و مقدار i32 را برمی گرداند. Function Parameters توابع در Rust میتوانند صفر یا چند پارامتر را داشته باشند. پارامترها در امضای تابع، داخل پرانتز قرار گرفته و با کاما از هم جدا میشوند. در اینجا یک مثال، از یک تابع، با دو پارامتر آورده شدهاست: fn greet(name: &str, age: i32) { println!("Hello, {}! You are {} years old.", name, age); } در این مثال، تابع greet دو پارامتر دارد: a &str (اشاره به یک رشته) و i32 (یک عدد صحیح). در داخل بدنه تابع، از مقادیر پارامترها برای چاپ پیام تبریک استفاده میکنیم. Fun, ...ادامه مطلب
انواع دادهها، جنبهی ضروری هر زبان برنامه نویسی هستند و Rust نیز از این قاعده مستثنا نیست. در Rust از انواع داده برای تعریف نوع دادهای که یک متغیر میتواند نگه دارد استفاده میشود. این مقاله رایجترین انواع داده در Rust را پوشش میدهد، از جمله: Boolean Unsigned int Signed int Floating point numbers Char String types Arrays Tuples Type aliasing Boolean در Rust، نوع داده بولین با کلمه کلیدی bool نشان داده میشود. این نوع داده، فقط میتواند دو مقدار داشته باشد: true یا false و معمولاً در دستورات شرطی و حلقهها برای کنترل جریان یک برنامه استفاده میشود. let is_rust_awesome: bool = true; Unsigned int اعداد صحیح بدون علامت در Rust با کلمه کلیدی u و سپس تعداد بیتهایی که عدد صحیح باید داشته باشد، نشان داده میشوند. به عنوان مثال، u8 یک عدد صحیح بدون علامت 8 بیتی را نشان میدهد. محدودهی یک عدد صحیح بدون علامت از 0 تا 2^n - 1 است که n تعداد بیتها است. let x: u8 = 255; Signed int اعداد صحیح علامتدار در Rust با کلمهی کلیدی i و سپس تعداد بیتهایی که عدد صحیح باید داشته باشد، نشان داده میشوند. به عنوان مثال، i32، یک عدد صحیح علامتدار 32 بیتی را نشان میدهد. محدوده یک عدد صحیح علامتدار از -2^(n-1) تا 2^(n-1) - 1 است که n تعداد بیتها است. let x: i32 = -2147483648; Floating point numbers اعداد ممیز شناور در Rust با کلمات کلیدی f32 یا f64 نشان داده میشوند که به ترتیب مخفف اعداد ممیز شناور 32 بیتی و 64 بیتی هستند. این نوع دادهها برای نم, ...ادامه مطلب
Constants و Statics دو نوع متغیر هستند که در زمان کامپایل تعریف میشوند و در طول اجرای برنامه، دارای مقادیر ثابتی هستند. آنها در قوانین محدوده و نحوهی دسترسی، متفاوت هستند. Constants یک const در Rust، با استفاده از کلمهی کلیدی const تعریف میشود و باید یک نوع annotation داشته باشد. میتوان به آن در زمان کامپایل، یک مقدار را اختصاص داد و در زمان اجرا نمیتوان آن را تغییر داد. در اینجا مثالی از تعریف ثابت آورده شده است: const PI: f32 = 3.14159; در این مثال، PI یک const با نوع f32 (یک عدد ممیز شناور) و مقدار 3.14159 است. constها همیشه inlined هستند؛ به این معنا که کامپایلر هر متغیر const را با مقدار آن در زمان کامپایل، جایگزین میکند. constها را میتوان در هر محدودهای از جمله global scope تعریف کرد؛ اما مجاز به داشتن حالت تغییرپذیر، یا حاوی ارجاع نیستند. این مورد به این دلیل است که آنها تغییر ناپذیر هستند و نمیتوان آنها را در زمان اجرا تغییر داد. با این حال، آنها را میتوان در type annotations استفاده کرد: const STR: &str = "hello, world!"; let mut s = String::from(STR); در این مثال، STR یک const است که شامل یک قطعه رشتهاست و در type annotations متغیر s استفاده میشود. Statics Statics در Rust با استفاده از کلمهی کلیدی static تعریف میشوند و شبیه به constها هستند؛ زیرا در زمان کامپایل تعریف میشوند و در طول اجرای برنامه دارای یک مقدار ثابت هستند. با این حال، آنها میتوانند قابل تغییر و حاوی ارجاع باشند؛ یک مثال: static mut COUNT: i32 = 0; fn main() { unsafe { COUNT += 1; println!("count: {, ...ادامه مطلب
متغیرها، بخش اساسی برنامه نویسی هستند و به توسعه دهندگان اجازه میدهند، دادهها را در برنامههای خود ذخیره و دستکاری کنند. Rust که یک زبان برنامه نویسی سیستمهای مدرن است، دارای مجموعهای غنی از ویژگیها برای کار با متغیرها میباشد. در این آموزش به بررسی ایجاد، تغییرپذیری و Scope متغیرها در Rust و همچنین مفهوم Shadow میپردازیم. ایجاد متغیرها در Rust در Rust، متغیرها را میتوان با استفاده از کلمه کلیدی let و به دنبال آن، نام متغیر و مقدار اختصاص داده شدهی به آن ایجاد کرد. مثلا: let x = 10; این یک متغیر به نام x را با مقدار 10 ایجاد میکند. Rust یک زبان استاتیکی است؛ به این معنا که متغیرها باید با نوع خود در زمان ایجاد، اعلان کنند. مثلا: let x: i32 = 10; این یک متغیر به نام x را با نوع i32 (یک عدد صحیح امضاء شدهی 32 بیتی) و مقدار 10 ایجاد میکند. متغیرهای تغییرپذیر (Mutable) و تغییرناپذیر (Immutable) در Rust در Rust، متغیرها به طور پیش فرض تغییر ناپذیر هستند؛ به این معنا که پس از تخصیص، مقدار آنها قابل تغییر نیست؛ مثلا: let x = 10; x = 20; //compile-time error برای ایجاد یک متغیر قابل تغییر در Rust، از کلمه کلیدی mut استفاده میشود: let mut x = 10; x = 20; متغیرهای تغییرناپذیر در Rust مفید هستند زیرا میتوانند به جلوگیری از خطاهای ناشی از تغییرات ناخواستهی در دادهها کمک کنند. متغیرهای قابل تغییر، برای زمانیکه دادهها نیاز به اصلاح دارند، مانند یک حلقه، مفید هستند. Scope متغیرها در Rust متغیرها در Rust دارای دامنه خاصی هستند که توسط curly braces که بیانیه آنها را احاطه کردهاند، تعریف میشود. مثلا { let x = 10; } // این متغیر خارج از, ...ادامه مطلب
زبان برنامه نویسی Rust چیست؟ Rust یک زبان برنامه نویسی سیستمی است که برای ارائهی عملکرد و کنترل یک زبان سطح پایین و در عین حال ارائه high-level abstractions و تضمین safety، طراحی شدهاست. این یک زبان منبع باز است که در ابتدا توسط موزیلا توسعه داده شد و اکنون توسط جامعهی بزرگی از توسعه دهندگان نگهداری میشود. سینتکس Rust شبیه به ++C است. زبان برنامه نویسی Rust با ارائه memory safety, thread safety, and zero-cost abstractions باعث میشود کمتر مستعد خطاهای برنامه نویسی رایج باشد. فلسفهی این زبان، "Fearless Concurrency" است؛ به این معنا که طراحی شدهاست تا توسعه دهندگان را قادر به نوشتن کدهای همزمان، بدون ترس از ایجاد خطاهای مرتبط با حافظه کند. چرا باید از Rust استفاده کنیم؟ دلیل اصلی محبوبیت Rust در بین توسعه دهندگان، ویژگیهای منحصر به فرد آن است؛ از جمله: Memory Safety: ایمنی حافظه، ویژگی اصلی Rust است. Rust از سیستم ownership و borrowing برای اطمینان از تخصیص و آزادسازی صحیح حافظه استفاده میکند. سیستم ownership، مالکیت منابع را ردیابی میکند؛ در حالیکه سیستم borrowing دسترسی به منابع را برای جلوگیری از چندین مرجع تغییرپذیر، محدود میکند. این باعث میشود، کد Rust قابل اعتمادتر باشد و کمتر مستعد خطاهای مربوط به حافظه، مانند عدم ارجاع اشارهگر تهی و سرریز بافر باشد. Thread Safety: مدیریت thread safety را از طریق ownership و borrowing انجام میدهد. سیستم ownership تضمین میکند که فقط یک رشته میتواند در یک زمان، مالک یک منبع باشد و از data races جلوگیری میکند. سیستم borrowing دسترسی به منابع را محدود میکند تا از چندین مرجع قابل, ...ادامه مطلب
نصب Rust برای نصب rust، متناسب با سیستم عامل خود، ابتدا وارد سایت rustup شوید و فایل دانلود متناسب با سیستم عامل مورد نظرتان را دانلود و نصب کنید. Cargo چیست و چه کاربردی دارد؟ Cargo همراه با زبان برنامه نویسی Rust گنجانده شده، همزمان نصب میشود و برای ایجاد، ساخت و مدیریت پروژههای Rust استفاده میگردد. این یک رابط سطح بالا برای کار با کدهای Rust را ارائه میدهد که شروع به کار با Rust و مدیریت پروژههای خود را برای توسعه دهندگان آسانتر میکند. Cargo سیستم ساخت و package manager مخصوص زبان برنامه نویسی Rust است. ابزاری است که به توسعه دهندگان Rust کمک میکند تا پروژههای خود را با خودکارسازی کارهایی مانند کامپایل کد، مدیریت وابستگیها، اجرای آزمایشها و ایجاد بستههای قابل توزیع، مدیریت کنند. برخی از ویژگیهای Cargo Dependency management: برنامه Cargo میتواند بهطور خودکار وابستگیهای پروژههای Rust را دانلود کرده، بسازد و مدیریت کند. این باعث میشود توسعه دهندگان به راحتی کتابخانهها و ماژولهای جدیدی را به پروژههای خود اضافه کنند. Building and testing: برنامه Cargo میتواند پروژههای Rust را بسازد و testها را به صورت خودکار اجرا کند. همچنین گزینههایی را برای ساختن ساختهای بهینه یا اشکال زدایی فراهم میکند. Packaging: برنامه Cargo میتواند بستههای قابل توزیعی را مانند tarballs یا بستههای باینری را برای پروژههای Rust ایجاد کند. Customization: برنامه Cargo به توسعه دهندگان اجازه میدهد تا فرآیند ساخت برنامهی خود را با تعیین گزینههای ساخت مختلف، در فایل پیکربندی Cargo.toml سفارشی کنند. بهطور کلی Cargo توسعه و مدیریت پرو, ...ادامه مطلب