breadcrumbs_delimiter هوش مصنوعی breadcrumbs_delimiter برنامه نویسی موجو: زبانی جدید برای عصر جدیدی از هوش مصنوعی
هوش مصنوعی

برنامه نویسی موجو: زبانی جدید برای عصر جدیدی از هوش مصنوعی

اردیبهشت 23, 1402 0010

برنامه نویسی Mojo یک زبان برنامه نویسی جدید است که قابلیت استفاده از Python را با عملکرد C ترکیب می کند. این زبان توسط کریس لاتنر، خالق زبان برنامه نویسی Swift و زیرساخت کامپایلر LLVM ایجاد شده است. Mojo به‌گونه‌ای طراحی شده است که یک زبان با کارایی بالا برای توسعه هوش مصنوعی باشد و می‌توان از آن برای نوشتن کدهایی استفاده کرد که روی انواع سخت‌افزار هوش مصنوعی از جمله CPU، GPU و TPU اجرا می‌شود.

برنامه‌نویسی سیستم‌های پایه در موجو

Mojo یک زبان برنامه نویسی سطح بالا است که استفاده و درک آن ساده است. با این حال، تعدادی پسوند دارد که امکان استفاده از آن را برای توسعه سیستم فراهم می کند. این برنامه‌های افزودنی کنترل بیشتری بر مدیریت حافظه، ایمنی نوع و عملکرد فراهم می‌کنند.

اعلام fn یکی از ضروری ترین پیشرفت های برنامه نویسی سیستم Mojo است. یک تابع با یک اعلان fn تعریف می شود، که بلوکی از کد است که ممکن است توسط کد دیگری فراخوانی شود. توابع به سازماندهی کد و قابل استفاده مجدد بیشتر آن کمک می کنند.

اعلام ساختار یکی دیگر از برنامه‌های افزودنی اصلی برنامه‌نویسی سیستم در Mojo است. یک اعلان ساختار یک ساختار داده را مشخص می کند که مجموعه ای از اجزای داده گروه بندی شده است. ممکن است از ساختارهای داده برای ذخیره و سازماندهی اطلاعات استفاده شود.

همچنین زبان برنامه نویسی Mojo: آینده برنامه نویسی هوش مصنوعی..

Mojo همچنین تعدادی پسوند برنامه نویسی سیستم دیگر را نیز ارائه می دهد، مانند:

    اعلان‌های

  • let و var برای اعلان متغیرهای محلی.
  • اعلان‌های

  • const برای اعلان ثابت‌ها.
  • اظهار بیانات برای بررسی خطاها.
  • عبارت‌های

  • if برای اجرای مشروط
  • در حالی که حلقه‌ای برای حلقه زدن روی یک دنباله از مقادیر است
  • حلقه‌های

  • for برای تکرار روی مجموعه‌ای از مقادیر
  • بلوک‌های

  • /گرفتن را برای رسیدگی به خطاها امتحان کنید.

این برنامه‌های افزودنی مجموعه‌ای از ابزارهای قدرتمند را برای برنامه‌نویسی سیستم‌ها در Mojo ارائه می‌کنند. از وب‌سایت ماژولار برای دریافت اطلاعات بیشتر در مورد زبان برنامه‌نویسی mojo.

اجازه و var اعلامیه

از هر دو اعلان let و var می توان برای تعریف متغیرها در برنامه نویسی Mojo استفاده کرد. تفاوت اصلی بین این دو این است که اجازه دهید اعلان ها متغیرهای تغییرناپذیر ایجاد کنند، در حالی که اعلان های var متغیرهای قابل تغییر را ارائه می دهند.

اعلان‌های

let برای تعیین متغیرهایی استفاده می‌شوند که پس از ایجاد نمی‌توان آنها را تغییر داد. برای مثال، کد زیر یک متغیر let به نام my_variable را اعلام می کند و مقدار 10 را به آن اختصاص می دهد:

اجازه دهید my_variable = 10;

مقدار

my_variable را نمی‌توان پس از ایجاد تغییر داد. اگر سعی کنید مقدار my_variable را تغییر دهید، یک خطا دریافت خواهید کرد.

اعلان‌های

Var برای تعیین متغیرهایی استفاده می‌شوند که می‌توان آنها را پس از ایجاد تغییر داد. برای مثال، کد زیر یک متغیر var به نام my_variable را اعلام می‌کند و مقدار 10 را به آن اختصاص می‌دهد:

var my_variable = 10;

مقدار

my_variable  را می توان پس از ایجاد تغییر داد. برای مثال، کد زیر مقدار my_variable را 20 تنظیم می کند:

my_variable = 20;

متغیرهای هر نوع را می‌توان با استفاده از اعلان‌های let و var تعریف کرد. برای مثال کد زیر یک متغیر let از نوع int و یک var متغیر از نوع str را اعلام می‌کند:

اجازه دهید my_int = 10;
var my_str = "سلام، دنیا!"؛

struct انواع

در برنامه نویسی Mojo، انواع ساختار نوعی ساختار داده است که ممکن است برای گروه بندی عناصر داده مشابه استفاده شود. به عنوان مثال، برای نشان دادن یک شخص، می‌توانید نوع ساختاری را تعریف کنید که شامل نام، سن و آدرس فرد است.

کلمه کلیدی struct برای تعریف انواع ساختار استفاده می شود. برای مثال، کد زیر یک نوع ساختار به نام Person را تعریف می کند:

struct Person {
  نام: خ.
  سن: int;
  آدرس: str;
}

وقتی یک نوع ساختار ایجاد شد، می‌توانید از کلمه کلیدی جدید برای ایجاد نمونه‌هایی از آن نوع ساختار استفاده کنید. به عنوان مثال، کد زیر یک نمونه ساختار Person را تولید می کند:

let person = new Person("John Doe", 30, "123 Main Street");

از نماد نقطه می توان برای دسترسی به فیلدهای یک نمونه ساختار استفاده کرد. کد زیر، برای مثال، نام نمونه شخص را به دست می‌آورد:

let name = person.name;

همچنین می‌توانید مقادیر فیلدهای یک نمونه ساختار را تغییر دهید. برای مثال، کد زیر سن نمونه شخص را تغییر می دهد:

person.age = 31;

در برنامه نویسی Mojo، انواع ساختار یک ابزار قوی برای سازماندهی داده ها هستند. آنها ممکن است برای ساختن ساختارهای داده پیچیده برای نمایش اشیا و مفاهیم دنیای واقعی استفاده شوند.

بررسی نوع قوی

برنامه نویسی Mojo دارای بررسی قوی نوع است، که تضمین می کند که انواع متغیرها و عبارات در زمان کامپایل اعتبار سنجی می شوند. این باعث کاهش اشتباهات و افزایش قابلیت اطمینان کد می شود.

به عنوان مثال، کد زیر کامپایل نمی شود زیرا انواع متغیرها ناسازگار هستند:

بگذارید x: int = 10;
اجازه دهید y: str = "سلام، دنیا!";

x + y;

کامپایلر یک پیام خطایی ایجاد می کند که می گوید:

خطا: انواع ناسازگار: int + str

هنگام کامپایل کردن کد Mojo، می توان از پرچم -T برای غیرفعال کردن بررسی نوع قوی استفاده کرد. از سوی دیگر، بررسی نوع قوی معمولاً پیشنهاد می‌شود زیرا می‌تواند به بهبود کیفیت کد شما کمک کند.

توابع و روش های بیش از حد بارگذاری شده

توابع بیش از حد بارگذاری شده از یک نام استفاده می کنند اما انواع آرگومان های مختلفی دارند. به عنوان مثال، کد زیر دو تابع add بیش از حد بارگذاری شده را تعریف می کند:

function add(x: int, y: int): int {
  بازگشت x + y;
}

تابع add(x: float, y: float): float {
  بازگشت x + y;
}

کامپایلر تابع صحیح را برای فراخوانی بر اساس انواع آرگومان هایی که ارسال می شود انتخاب می کند. برای مثال، کد زیر اولین تابع add را فراخوانی می کند:

بگذارید sum = add(1, 2);

و کد زیر دومین تابع add را فراخوانی می کند:

بگذارید sum = add(1.0, 2.0);

روش های بیش از حد از نام یکسانی استفاده می کنند اما انواع آرگومان های مختلفی دارند. به عنوان مثال، کد زیر دو روش اضافه بار اضافی را در نوع ساختار Person ارائه می‌کند:

struct Person {
  نام: خ.
  سن: int;
  آدرس: str;

  تابع add(x: int): int {
    این.age + x;
  }

  تابع add(x: float): float {
    این.age + x;
  }
}

کامپایلر روش صحیحی را برای فراخوانی بر اساس انواع آرگومان هایی که ارسال می شود انتخاب می کند. برای مثال، کد زیر اولین روش add را فراخوانی می کند:

let person = new Person("John Doe", 30, "123 Main Street");
let new_age = person.add(1);

و کد زیر روش دوم add را فراخوانی می کند:

let person = new Person("John Doe", 30, "123 Main Street");
let new_age = person.add(1.0);

بارگذاری بیش از حد یک ویژگی قوی است که ممکن است برای بهبود خوانایی و نگهداری کد شما مورد استفاده قرار گیرد. می‌تواند با اطمینان از احضار یک تابع یا روش صحیح برای پارامترهای ارائه شده، به پیشگیری از خطا کمک کند.

fn تعاریف

در برنامه نویسی Mojo، از اعلانات Fn برای تعریف توابع استفاده می شود. آنها شبیه به تعاریف تابع در سایر زبان های برنامه نویسی هستند، اما با چند تفاوت کلیدی.

اولین تفاوت این است که تعاریف fn ممکن است برای تعریف توابع عادی و همچنین متدها استفاده شود. توابع منظم آنهایی هستند که به کلاس خاصی تعلق ندارند، در حالی که متدها آنهایی هستند که متعلق به کلاس خاصی هستند. برای مثال، کد زیر یک تابع عادی به نام add را تعریف می کند:

fn add(x: int, y: int): int {
  بازگشت x + y;
}

و کد زیر روشی به نام add در نوع ساختار Person تعریف می‌کند:

struct Person {
  نام: خ.
  سن: int;
  آدرس: str;

  fn add(x: int): int {
    این.age + x;
  }
}

تفاوت دوم این است که توابع با پارامترهای پیش فرض را می توان با استفاده از اعلانات fn تعریف کرد. آرگومان های پیش فرض دارای یک مقدار پیش فرض هستند که در صورت عدم ارائه آرگومان استفاده می شود. برای مثال، کد زیر تابعی به نام print_name را با آرگومان پیش‌فرض برای پارامتر name ارائه می‌کند:

fn print_name(name: str = "John Doe") {
  چاپ (نام)؛
}

با یا بدون پارامتر name، می توان این تابع را فراخوانی کرد. اگر آرگومان name وارد نشود، از مقدار پیش‌فرض “John Doe” استفاده می‌شود.

تفاوت نهایی این است که توابع با پارامترهای متغیر را می‌توان با استفاده از اعلان‌های fn تعریف کرد. برای مثال، کد زیر تابعی به نام print_numbers را با آرگومان متغیر برای پارامتر numbers تعریف می کند:

fn print_numbers(numbers: ...int) {
  برای عدد در اعداد {
    چاپ (تعداد)؛
  }
}

این تابع هر تعداد از اعداد صحیح را به عنوان پارامتر می پذیرد. برای مثال، کد زیر متد print_numbers را با دو آرگومان number فراخوانی می کند:

print_numbers(1, 2);

تعاریف Fn ابزار قوی برای تعریف توابع در برنامه نویسی Mojo هستند. آنها ممکن است برای تعریف توابع، روش ها، توابع معمولی با پارامترهای پیش فرض و متغیرها استفاده شوند.

روش های ویژه __copyinit__ و __moveinit__ 

هنگامی که اشیا کپی یا جابجا می شوند، از رویه های ویژه copyinit و moveinit برای مقداردهی اولیه آنها استفاده می شود.

هنگامی که یک شی کپی می شود، روش copyinit فراخوانی می شود. هنگامی که یک شی جابجا می شود، متد moveinit فراخوانی می شود.

بعد از فراخوانی متد init، متدهای copyinit و moveinit فراخوانی می شوند.

روش‌های copyinit و moveinit را می‌توان برای مقداردهی اولیه فیلدهای شی یا انجام فعالیت‌های اضافی هنگام کپی کردن یا جابجایی شی مورد استفاده قرار داد.

به عنوان مثال، کد زیر یک کلاس Person را با name تعریف می کند:

فرد کلاس {
  نام: خ.

  سازنده (نام: خیابان) {
    this.name = نام;
  }

  __copyinit__(سایر: شخص) {
    this.name = other.name;
  }

  __moveinit__(سایر: شخص) {
    this.name = other.name;
    other.name = "";
  }
}

فیلد نام از شی دیگر از طریق روش copyinit به شی فعلی کپی می شود. متد moveinit قبل از تنظیم فیلد name شیء other ، فیلد name را از other به شی فعلی کپی می کند. به یک رشته خالی.

کد زیر دو شی Person ایجاد می کند و یکی را روی دیگری کپی می کند:

let person1 = new Person("John Doe");
let person2 = new Person(person1);

فیلد نام شی person2 مانند قسمت name شی person1

خواهد بود.

کد زیر دو شی Person ایجاد می کند و یکی را به دیگری منتقل می کند:

let person1 = new Person("John Doe");
let person2 = new Person(move(person1));

فیلد نام شی person2 مانند فیلد name شی person1 و name خواهد بود. فیلد person1 خالی خواهد بود.

روش های ویژه copyinit و moveinit برای مقداردهی اولیه اشیاء در هنگام کپی یا جابجایی آنها مفید است. می توان از آنها برای تضمین مقداردهی اولیه اشیاء و انجام اقدامات اضافی استفاده کرد که باید هنگام کپی یا انتقال اشیا انجام شوند.

این مقاله برای کمک به یادگیری برنامه نویسی Mojo است. ما اطمینان داریم که برای شما مفید بوده است. لطفاً نظرات و انتقادات خود را در بخش نظرات زیر به اشتراک بگذارید.

به این نوشته امتیاز بدهید!

افراد نیوز

افراد نیوز

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  • ×