زبان برنامه نویسی جولیا چیست؟ – هر آنچه باید درباره Julia بدانید
- زبان برنامهنویسی جولیا را به شکلی کامل و دقیق میآموزید.
- با روش نصب و دانلود زبان برنامهنویسی جولیا آشنا میشوید.
- کدنویسی شرطی و استفاده از حلقهها در زبان جولیا را میآموزید.
- نحوه کار با توابع و پکیجها در زبان جولیا را درک میکنید.
- مزایا و نقاط ضعف زبان برنامهنویسی جولیا را به خوبی میشناسید.
- با کاربردهای مختلف علمی و محاسبات موازی در زبان جولیا آشنا میشوید.

زبان برنامه نویسی جولیا چیست؟
تاریخچه جولیا
طراحی جولیا در سال ۲۰۰۹ با هدف ساخت زبان متن باز، با کارایی بالا و مناسب برای محاسبات عددی و علمی، شروع شد.
آموزش اصولی انواع زبان های برنامه نویسی
آموزش اصولی انواع زبانهای برنامه نویسی یکی از نکاتی است که قبل از شروع به یادگیری باید در نظر داشته باشید. اصول این آموزش بعد از انتخاب زبان صحیح، توجه منظم به موارد مهم و پایهای است. زبانهای برنامهنویسی در بعضی از نکات با هم مشترک و در بعضی دیگر اختلاف قابل توجهی دارند. به همین منظور فیلمهای آموزشی مناسبی را در فرادرس تولید کردهایم.

وبسایت فرادرس تلاش کرده که دانشجویان و دانشآموزان هر حوزهای بتوانند از فیلمهای این وبسایت استفاده کرده و نیازهای علمی خود را برآورده کنند. تمام فیلمهای فرادرس با بهترین کیفیت و نظم تهیه و تولید شدهاند. در پایین چند مورد از فیلمهای آموزشی مربوط به زبانهای برنامهنویسی مختلف را معرفی کردهایم. اما در صورت تمایل با کلیک بر روی تصویر زیر میتوانید به صفحه اصلی این مجموعه آموزش هدایت شده و از فیلمهای بیشتری دیدن کنید.
- فیلم آموزش برنامه نویسی جولیا Julia همراه با اصول برنامه نویسی با فرادرس
- فیلم آموزش برنامه نویسی ++C با فرادرس
- فیلم آموزش برنامه نویسی پایتون همراه با مثالهای عملی در Python از فرادرس
- فیلم آموزش پستمن Postman، ابزار تست API با فرادرس
کدنویسی با زبان برنامه نویسی جولیا
جولیا یکی از زبانهای سطح بالا و پویایی است که با هدف فراهم کردن سرعت پردازش زبانهای C و ++C در کنار سادگی استفاده از زبان پایتون طراحی شده. یعنی اینکه توسعهدهندگان میتوانند مسائل را با سرعت بالاتر و کیفیت بیشتری حل کنند.
جولیا برای حل کردن مسائل پیچیده محاسباتی گزینه بسیار خوبی است. بسیاری از کاربران جولیا بر روی کار در حوزههای علمی مانند شیمی، زیست شناسی و یادگیری ماشین متمرکز شدهاند.
- سرعت بالا
- انعطافپذیری
- روند روبه رشد اکوسیستم کتابخانههای تخصصی برای کار بر روی حجم انبوه دادهها
- و غیره
به همین دلیل در این قسمت از مطلب، برای مخاطبین مجله، آموزشهای ابتدایی را به جهت آشنا شدن با کدهای زبان جولیا فراهم کردهایم.
زبان برنامه نویسی جولیا را چگونه دانلود کنیم؟
دو روش اصلی برای اجرای کدهای جولیا وجود دارند که در فهرست زیر معرفی کردهایم.
- اجرای فایلهای کد جولیا با پسوند .jl در IDE-هایی مانند VSCode
- اجرای دستورهای زبان جولیا با استفاده از REPL مخصوص این زبان
نکته: کلمه REPL سرنام عبارتهای «Read Evaluate Print Loop» به معنای «خواندن، ارزیابی، چاپ، حلقه» است. این کلمه به محیطی بومی مختص به کدنویسی این زبان اشاره دارد. در بعضی از زبانهای دیگر نیز به این محیط REPL گفته میشود.
در این مطلب، به صورت عمده از REPL زبان جولیا استفاده میکنیم. اما قبل از استفاده از این محیط کدنویسی باید زبان جولیا را دانلود کنیم.
winget install julia -s msstoreبعد از اینکه جولیا دانلود و نصب شد، میتوان به سادگی آن را اجرا کرد. در نتیجه باید با صفحه زیر روبهرو شویم.

همراه با نصب جولیا، REPL هم بر روی کامپیوتر نصب میشود.
اصول ابتدایی کدنویسی زبان برنامه نویسی جولیا
متغیرها و انواع در زبان جولیا
در زبان جولیا، متغیرها به صورت پویا نوعدهی میشوند. به این معنا که برنامه نویسان در زمان تعریف متغیر نیازی به مشخص کردن نوع آن ندارند.
در کادر زیر، نمونه تعریف متغیر در زبان جولیا را با روش ساده و تخصیص مستقیم مقدار به متغیر، پیادهسازی کردهایم.
نکته: توجه کنید که در قطعه کدهای استفاده شده، وقتی که عبارت julia> نمایش داده میشود، به معنی نوشتن کدهای جولیا درون REPL است.
نمونه کاری که در بالا انجام دادیم را به همین روش برای متغیرهایی با نوع استرینگ در برنامهنویسی یا سایر انواع متغیرها نیز میتوان انجام داد.
در زمان تعریف متغیر در زبان جولیا، همیشه نام متغیر در سمت چپ مساوی قرار گرفته و مقدار متغیر هم باید در سمت راست این علامت قرار بگیرد. یکی از دیگر کارها ساخت متغیر جدید با استفاده از مقادیر ذخیره شده در سایر متغیرهاست.

برای بررسی نوع تخصیص داده شده به هر متغیر میتوانیم از روش زیر استفاده کنیم.
نکته جالب درباره زبان جولیا این است که انعطافپذیری بالایی در نامگذاری متغیرها وجود دارد. در واقع برنامهنویسان میتوانند حتی از کدهای زیر نیز استفاده کنند.
علاوه بر نام متغیری که به شکل ایموجی تعریف شده، میتوانیم از سایر انواع کاراکترهای Unicode نیز به عنوان نام متغیر استفاده کنیم. چنین آزادی عملی در زمان نمایش نمادهای ریاضی میتواند بسیار مفید باشد. به راحتی و با گذاشتن علامت \ قبل از نام نماد مورد نظر میتوان از هر کاراکتری در Unicode استفاده کرد. در نهایت هم باید دکمه «Tab» را بزنیم.
در کد زیر روش استفاده از این تکنیک را نمایش دادهایم.
تمام سیستم مربوط به متغیرها در زبان جولیا انعطافپذیر است و مجموعه بزرگی از ویژگیها را فراهم میکند. پس نوشتن کدهای جولیا در عین واضح بودن، ساده است.
روش نوشتن عبارت های شرطی در جولیا
در برنامهنویسی بعضی از اوقات برای اجرای مجموعه کدهای خاصی باید برقرار بودن شرط مشخصی را بررسی کنیم. برای مثال، اگر در حال نوشتن برنامهای برای بانک هستیم، احتمالا باید که فقط به شرطی به مشتریها اجازه برداشت پول را بدهیم که میزان مبلغ مورد نظر برای برداشت کمتر یا مساوی میزان مبلغ موجودی حساب آنها باشد.
در کادر زیر، مثال سادهای را درباره استفاده از عبارت شرطی در زبان برنامه نویسی جولیا پیادهسازی کردهایم.
اکنون با بررسی و توضیح کدهای بالا، نگاه دقیقتری به عبارت شرطی if در جولیا خواهیم داشت. زیرا در کادر بالا ممکن است بعضی بخشها با سایر زبانهای برنامه نویسی که قبلا دیدهایم تفاوت داشته باشند.
- در ابتدا برای نشان دادن انتهای خط از علامت : استفاده نکردهایم. همچنین برای محصور کردن عبارت شرطی نیز نیازی به استفاده از پرانتزهای باز و بسته نداریم. البته استفاده از پرانتزهای () برای عبارتهای شرطی نه تنها ممنوع نیست، بلکه به دلیل افزایش خوانایی کدها توصیه هم میشود.
- در انتها هم از آکولادهای باز و بسته {} برای نمایش انتهای بلوک شرطی استفاده نکردهایم. بهجای {} در زبان جولیا از کلمه کلیدی end استفاده میشود.

دقیقا به همین صورت که از عبارت شرطی if استفاده کردیم، با استفاده از عبارتهای else یا elseif در انتها میتوانیم عبارتهای شرطی بیشتری را هم اضافه کرده و آن را گسترش دهیم.
برای مطالعه بیشتر درباره جریان کنترل برنامه و عبارتهای شرطی میتوانید از مستندات خود جولیا استفاده کنید.
روش استفاده از حلقه ها در زبان جولیا
- حلقه for: این حلقه بر روی تعداد مشخصی از عناصر مانند محدوده دادههای درون ساختار پیمایشپذیری شمارش میکند. این حلقه زمانی مفید است که تعداد تکرارها یا پیمایش مورد نظر را از قبل بدانیم.
- حلقه while: از این حلقه معمولا برای اجرای کدهای مشخص شده تا زمانی استفاده میکنند که شرط خاصی برقرار True باشد. به طور خاص استفاده از حلقه while زمانی مناسب است که تعداد تکرار حلقه را نتوان از قبل تشخصی داد. زمان توقف حلقه نه تنها ربطی به تکرار معینی ندارد، بلکه بر اساس تغییر شرایط خاصی مشخص میشود.
این حلقهها به میزان زیادی شبیه به حلقههای همسان خود در سایر زبانهای برنامه نویسی کار کرده و برای انواع تکرارهای مورد نیاز در برنامه، انعطافپذیری لازم را فراهم میکنند.
طبق قواعد نوشتاری، حلقهها در زبان جولیا بسیار شبیه به ساختار کنترلی if هستند که در بخش بالا بررسی کردیم. در کادر زیر، نمونه کد سادهای را درباره استفاده از حلقهها پیادهسازی کردهایم.
بعد از نگاه به ساختار حلقه for قابل تشخیص است که این حلقه بر روی عناصر درون متغیر greeting پیمایش میکند. با هر قدم در پیمایش- در مورد این آرایه - به کلمه جدیدی برخورده و آن را به متغیر موقتی به نام word اختصاص میدهیم. سپس مقدار این متغیر را در خروجی چاپ میکنیم. با مشاهده ساختار این حلقه میتوان متوجه شباهت آن با عبارت شرطی if شد. مخصوصا اینکه در انتها هم کار حلقه با استفاده از کلمه کلیدی end به پایان میرسد.

تا اینجای کار، حلقههای for را در زبان برنامه نویسی جولیا بررسی کردهایم. از این جا به بعد نوبت به بررسی حلقه while میرسد. البته در ابتدا مثال سادهای را درباره استفاده از حلقه while در زبان برنامه نویسی Julia پیادهسازی کرده و در کادر زیر، نمایش دادهایم.
در مثال بالا، حلقه while به صورتی تنظیم شده که دائما کار خود را ادامه دهد تا زمانی که کاربر کلمه «End» را چاپ کند. اما ساختار این حلقه نیز با توجه به کدهایی که تا به اینجا مشاهده کردهاید باید کمی برایتان آشنا باشد.
روش استفاده از توابع در زبان برنامه نویسی جولیا
توابع با هدف ساخت چندین خط کد متصل و مرتبط به هم ایجاد میشوند. این کدها با هربار فراخوانی نام تابع، اجرا میشوند. در ابتدا مثال سادهای را از تعریف و استفاده تابع در زبان برنامه نویسی Julia کدنویسی کرده و در کادر پایین نمایش دادهایم.
در مثال بالا، فقط یک آرگومان توسط تابع دریافت شده و سپس آن آرگومان را به پیام متنی برای چاپ در کنسول خروجی اضافه کردهایم. اما در جولیا میتوان آرگومان ورودی به غیر از نوع رشته در برنامه نویسی را به این نوع از توابع ارسال کرد.
اکنون در کد بالا، تابع را به صورتی تعریف کردهایم که فقط مقدار با نوع رشته را در ورودی بپذیرد. در کد زیر، این تابع را برای بررسی محدودیت پذیرش نوع رشته در ورودی آزمایش کردهایم.
در کد بالا مشاهده میکنیم که بازهم تابع تعریف شده greetuser آرگومان True را پذیرفته است. در حالی که طبق تعریف تابع فقط باید آرگومانهایی با نوع رشته را میپذیرفت.

چیزی که در این بخش مشاهده میشود یکی از قدرتمندترین ویژگیهای زیربنایی زبان برنامه نویسی Julia یعنی «ارسال چندگانه» (Multiple Dispatch) است. جولیا به توسعهدهندگان کمک میکند که توابعی با همان نام و همان تعداد آرگومان ورودی تعریف کنند که انواع مختلفی را بپذیرند. این مسئله به معنای آن است که میتوان توابعی را با اهداف عمومی در کنار نسخههایی از آنها برای نوعهای خاصی تعریف کرده و به صورت همزمان در کنار هم استفاده کنید. ویژگی مورد اشاره به خواناتر شدن کدهای نوشته شده کمک میکند. زیرا برای مدیریت تمام شرایط به صورت یکجا هر تابع فقط نیاز به تمرکز بر روی نوع خاصی از سناریوها دارد.
باید ببینیم که آیا واقعا هر دو تابع را تعریف کردهایم یا نه. این مسئله که جولیا در زمان ارسال مقادیر با نوعها مختلف، نسخه تابع صحیح و مرتبط را انتخاب میکند، توسط روش زیر تایید میشود.
برای انجام اینکار استفاده از تابع درونی methods گزینه مناسبی است. تابع methods اعلام میکند که دو تابع تعریف شده به صورت جدا از هم وجود دارند. تنها تفاوت این دو تابع اینجاست که یکی هر نوع دادهای را میپذیرد و دیگری فقط نوع داده رشته را قبول میکند.
شایان ذکر است از زمانی که نسخه اختصاصیسازی شدهای از تابع را با قابلیت پذیرش فقط نوع رشته تعریف کردهایم، به بعد، هر وقت تابع greetuser را با متغیر ورودی از نوع استرینگ فراخوانی کنیم، نسخه اختصاصیسازی شده تابع فراخوانی خواهد شد. از این به بعد هر زمان که به تابع متغیری با نوع رشته ارسال کنیم، نسخه عمومی آن اجرا نمیشود.
در مرحله بعد به صحبت درباره مقدارهای برگشتی از توابع پرداختهایم.
مقدارهای برگشتی تابع در زبان جولیا
در زبان برنامه نویسی Julia برای برگشت دادن مقدار از تابع، دو گزینه مختلف در مقابل برنامهنویس قرار دارد. هم میتواند از کلمه کلیدی و صریح return استفاده کند، هم میتواند از طریق تبدیل کردن آخرین عبارت درون تابع به مقدار برگشتی، آن را به صورت غیرمستقیم به بیرون از تابع ارسال کند.
در کد زیر روش ارسال مقدار برگشتی به خروجی را نمایش دادهایم.
در مثال بالا، مقدار رشتهای hi از تابع به بیرون برگشت داده شده است. زیرا این مقدار دارای دو شرط مطرح شده در زیر است.
- مقدار hi آخرین عبارت در داخل تعریف تابع است.
- کلمه کلیدی return برای اشاره صریح به مقدار برگشتی در این تابع وجود ندارد.
البته میتوان تابع بالا را به شکل زیر نیز تعریف کرد.
به طورکلی و از نقطه نظر خوانایی کدها، منطقیتر است که از کلمه کلیدی return برای اعلام صریح مقدار برگشتی استفاده کنیم. مخصوصا اینکه شاید افرادی برای مطالعه به کدها رجوع کنند که درباره تکنیک مقدار برگشتی به صورت غیرمستقیم در جولیا مطلع نیستند.

یکی دیگر از ویژگیهای مفید توابع، توانایی فراهم کردن چندین آرگومان به صورت اختیاری است. در ابتدا این روش را با کمک مثال زیر نمایش داده و سپس به بررسی آن پرداختهایم.
در مثال بالا، متغیر response را به عنوان آرگومان اختیاری تعریف کردهایم. بنابراین هم به آن اجازه میدهیم که از رفتار پیشفرض تعریف شده تبعیت کند و هم در زمانهای مورد نیاز، میتوانیم به صورت دستی آن را «بازتعریف» (Override) کنیم. این مثالها فقط نمونه بسیار کوچکی از امکانات و تواناییهای موجود در زمان کار با توابع را در زبان برنامه نویسی جولیا نشان میدهند. برای آموزش دقیقتر میتوانید به مستندات خود جولیا مراجعه کنید.
روش استفاده از پکیج ها در زبان جولیا
سامانه «مدیریت بسته» (Package Manager) و اکوسیستم پکیجها در جولیا یکی از مهمترین ویژگیهای این زبان برنامهنویسی هستند. از این رو برای تعامل با پکیجها دو روش اصلی در جولیا تعریف شدهاند.
- روش اول بر اساس کار با REPL است.
- و روش دوم استفاده از پکیج Pkg است.
از آنجا که استفاده از REPL سادهتر است، بهخصوص برای افراد تازهکار، در این مطلب به بررسی روش استفاده از پکیجها با استفاده از REPL میپردازیم.
بعد از اینکه زبان برنامهنویسی جولیا را در کامپیوتر خود نصب کردیم. از طریق نوشتن [ در REPL به سادگی میتوانیم وارد سامانه مدیریت بستهها یا Package Manager شویم.
بعد از ورود به این سیستم، تصویر فضای کدنویسی به شکل زیر خواهد بود.

اکنون که با موفقیت به سیستم Package Manager وارد شدیم، چندکار رایجی وجود دارند که معمولا انجام میشوند.
- اضافه کردن پیکجهای کاربردی
- حذف پکیجهای درون سیستم
- بررسی پکیجهایی که از قبل یا در حال حاضر بر روی سیستم نصب شدهاند.
برای دیدن همه دستورهای ممکن در REPL، فقط کافیست که از طریق نوشتن ] وارد حالت pkg> شوید، سپس کاراکتر ? را نوشته و دکمه «Enter» را بزنید.
اضافه کردن پیکج های کاربردی به زبان برنامه نویسی جولیا
در این قسمت از مطلب میخواهیم که اضافه کردن پیکجهای کاربردی به زبان برنامه نویسی Julia را بیاموزیم. تصور کنید که پیکج مورد نظر Example.jl نام دارد. بنابراین باید طبق کد نوشته شده در کادر زیر، عمل کنیم.
بعد از زدن کد بالا، خروجی مانند مورد پایین باید به کاربر نشان داده شود.
(@v1.7) pkg> add Example
Updating registry at `~/.julia/registries/General`
Updating git-repo `https://github.com/JuliaRegistries/General.git`
Updating registry at `~/.julia/registries/JuliaPOMDP`
Updating git-repo `https://github.com/JuliaPOMDP/Registry`
Resolving package versions...
Installed Example ─ v0.5.3
Updating `~/.julia/environments/v1.7/Project.toml`
[7876af07] + Example v0.5.3
Updating `~/.julia/environments/v1.7/Manifest.toml`
[7876af07] + Example v0.5.3
Precompiling project...
1 dependency successfully precompiled in 1 seconds (69 already precompiled)
(@v1.7) pkg>با این فرض که همه مراحل را طی میکنید، ادامه مطلب را پی میگیریم و از نمایش خروجیهای اضافی، صرفنظر میکنیم.
روش بررسی وضعیت پکیج ها در زبان جولیا
اکنون فرض میکنیم که پیکیجی را با موفقیت بر روی سیستم خود نصب کردهایم. برای بررسی وجود داشتن این پکیج در Package Manager باید از نوشتن کلمات کلیدی status یا st - به منظور مختصرنویسی - استفاده کنیم. البته این کلمات را فقط در محیط pkg> میتوان نوشتن و بازخورد گرفت.
در کد بالا میتوان مشاهده کرد که دو پکیج مختلف با نامهای Flux و Example به صورت نصب شده در سیستم وجود دارند. این کدها علاوه بر نام پکیجها مسیر فایلی که نسخه راهاندازی شده ما را مدیریت میکند - در این مورد نسخه «Global Julia v1.7» است - را همراه با نسخه پکیجهای نصب شده بر روی سیستم نشان میدهد.
روش حذف پکیج های جولیا
اگر بخواهیم که پکیجهای نصب شده در جولیا را حذف کنیم، برای مثال پکیج Flux ، فقط کافیست که کد remove Flux یا rm - به منظور مختصرنویسی - را تایپ کنیم. در کادر زیر، برای حذف پکیج در جولیا مثال سادهای را کدنویسی کردهایم.
بعد از اجرای دستور بالا، بررسی با استفاده از دستور status، نشان میدهد که عملیات حذف با موفقیت انجام شده است.
اکنون اطلاعات ابتدایی را درباره کار با پکیجها در جولیا بدست آوردهایم. اما با استفاده از محیط پکیج سراسری خود، مرتکب اشتباه بزرگی شدیم.
چگونه از پکیج ها در جولیا استفاده کنیم؟
حالا که روش مدیریت پیکجها در زبان برنامه نویسی Julia را آموختیم باید با روش استفاده از این پکیجها نیز آشنا شویم. برای استفاده از پکیج خاصی، فقط کافی است که عبارت using packageName را بنویسیم.
در کدهای زیر، یکی از بهترین ویژگیهای زبان Julia نسخه ۱٫۷ - که در این مطلب با آن کار میکنیم - را نمایش دادهایم.
اگر به خاطر سپرده باشید در بخش قبلی پیکیج Flux را از سیستم حذف کرده بودیم. اما در کدهای بالا تلاش کردیم تا از آن پکیج حذف شده دوباره استفاده کنیم. به همین دلیل برای وارد کردن این پکیج به محیط کدنویسی دستور using Flux را نوشتیم. چون این پکیج قبلا از سیستم حذف شده بود، REPL این مسئله را عنوان کرد و از ما خواست که فقط با انتخاب سادهای بین گزینههای y یا n در خط آخر - با کد (y/n) [y]: - پکیج را دوباره بر روی سیستم خود نصب کنیم. این ویژگی بسیار ساده و کوچک است، اما کمک زیادی برای صرفهجویی در زمان و دوری کردن از سردرگمی میکند.

دو روش مختلف با استفاده از دستورات using و import برای دسترسی به توابع هر پکیج وجود دارد. تفاوت اصلی اینجاست که استفاده از کد دستوری using باعث میشود تمام توابع و عملکردهای تعریف شده در پکیج به صورت خودکار به محیط کار برنامهنویسی وارد شوند. برای درک این موضوع به اضافه شدن فهرست بزرگی از توابع به کدهای جولیا فکر کنید که همگی آماده استفاده هستند. در حالی که کد دستوری import نیز دسترسی مورد نظر به همه توابع را فراهم میکند، اما با این شرط که قبل از نام تابع، نام پکیج را به عنوان پیشوند همراه با یک نقطه به آن اضافه کنید. برای مثال Flux.gradient() کد مربوط به فراخوانی تابع gradient و کلمه Flux هم نشاندهنده نام پکیج است. بین نام پکیج و نام تابع با یک نقطه، فاصلهای قرار گرفته است.
ویژگی های زبان برنامه نویسی جولیا
در این قسمت از مطلب، مزایا و ویژگیهای برتری دهنده به زبان برنامهنویسی جولیا را در کنار نقاط ضعف آن بیان کردهایم تا به شکل بهتری با این زبان آشنا شده و درباره آموزش و استفاده از آن تصمیم بگیرید.
مزایا و ویژگی های برجسته کننده جولیا
با اینکه زبان برنامه نویسی جولیا به عنوان زبانی برای استفادههای عمومی و محاسبات عددی و تکنیکی توسعه داده شده، اما برای استفاده در حوزههای تخصصی مانند علم داده و یادگیری ماشین نیز گزینه بسیار مناسبی است. بعضی از ویژگیهای کلیدی که باعث شدهاند جولیا به انتخاب مناسبی برای کار در این حوزهها تبدیل شود شامل موارد فهرست شده در زیر هستند.
- سیستم نوع دهی خودکار: جولیا دارای سیستمی است که بر اساس آن نوعها به جای تخصیص داده شدن به متغیرها به مقادیر اختصاص داده میشوند. به این معنا که نوع متغیرها در طول زمان اجرای برنامه ممکن است تغییر کند.
- «ارسال چندگانه» (Multiple Dispatch) یا «چندروشی» (Multimethod): نوعی از پلی مورفیسم در برنامه نویسی که امکان استفاده از چندین روش مختلف را برای فراخوانده شدن یک یا چند آرگومان در زمان اجرا فراهم کرده است. این روش برای پیادهسازی مفاهیم شیءگرایی سنتی مانند وراثت و رابطها به کار برده میشود. اما همچنین، در سایر مسائلی مانند ارسال بر اساس نوع آرگومانها نیز قابل استفاده است.
- شباهت به سایر زبانها: کارایی این زبان مانند زبان برنامه نویسی لیسپ است.
- Package Manager: سامانه مدیریت پکیجها به صورت ادغام شده و درونی وجود دارد.
- پشتیبانی از محاسبات موازی: با استفاده از محاسبات موازی و توزیع شده میتواند عملکردهای خود را ارائه دهد.
- کار با شل: فرایندهای این زبان را از درون شل هم میتوان مدیریت کرد.
- انعطافپذیری در انواع: از انواع تعریف شده توسط کاربر هم پشتیبانی میکند.

- مدیریت غیرهمزمان: دارای رابطی است که برای مدیریت غیرهمزمان عملیات ورودی و خروجی به کار برده میشود.
- Logging: جولیا دارای ماژولی به نام «Logging» است. این ماژول به توسعهدهندگان کمک میکند که گزارشات اتفاقات، خطاها و فرایندهای جاری در کدها را ذخیره کنند.
- Profiling: جولیا دارای ماژولی به نام «Profiling» است. این ماژول ابزاری است که از طریق افزایش کارایی به توسعهدهندگان برای بهینهسازی کدها کمک میکند. ماژول «Profiling» هر خط کد را دنبال کرده و زمان مورد نیاز برای انجام هر فرایند را اندازهگیری میکند. در نتیجه موفق به شناسایی مشکلات احتمالی و عوامل موثر در کارکرد ضعیف برنامه میشود.
نقاط ضعف زبان برنامه نویسی جولیا
با اینکه ویژگیهای زیادی در این زبان برنامهنویسی پیادهسازی شدهاند. اما لازم است که قبل از کار با جولیا نسبت به بعضی از کمبودها در جولیا نیز مطلع باشیم.
- ادغام جولیا با سایر زبانهای برنامهنویسی مشکل است. در نتیجه اجرای برنامه با کندی روبهرو شده و کدها برای اجرا به فضای ذخیرهسازی بیشتری در حافظه نیاز خواهند داشت. کدهای نوشته شده در جولیا، باید فقط توسط مفسر زبان برنامهنویسی جولیا اجرا شود. این مسئله منجر به کندی عملکرد در زمان اجرا میشود.
- همچنین این زبان گزینه مناسبی برای توسعه برنامههای موبایل یا اپلیکیشنهای تحت وب نیست. با اینکه میتوان جولیا را برای اسکریپتنویسی در سمت سرور به کار برد، اما به صورت کلی برای انجام این دسته از وظایف زبانهای برنامهنویسی بهتری نیز مانند پایتون، روبی و زبان PHP وجود دارند.
- از آنجا که جولیا نسبتا زبان تازهای است، هنوز در این زبان باگهایی وجود دارند که باید برطرف شوند. به دلیل وجود این باگها شاید در بعضی از کدها رفتار مورد نظر مشاهده نشده یا رفتارهای غیرمنتظرهای روی دهند. اگرچه تیم توسعه جولیا به صورت فعالی در حال کار برای برطرف کردن این مشکلات هستند. اما به هرحال این فرایند زمانبر و طولانیست.
- اکوسیستم برنامهنویسی زبان جولیا را نمیتوان با زبانهایی مانند پایتون یا زبان برنامه نویسی R مقایسه کرد. زبان R به بیش از ۱۸۰۰۰ پکیجی که برای استفاده کاربران خود در دسترس قرارداده، میبالد. در حالی که جولیا چیزی در حدود ۷۴۰۰ پکیج را برای استفاده کاربران فراهم کرده است. البته هرچه که زبان با محبوبیت و مقبولیت بیشتری در بین توسعهدهندگان روبهرو شود، این عدد هم رشد خواهد کرد. اما فعلا نسبت به سایر زبانهای برنامهنویسی همرده خود عقبمانده است.
- اگر در حال کار در زمینه خاصی باشیم، احتمالا لازم است که پکیجهای جولیا مورد نیاز خود را تولید کرده یا فقط به آموزش و استفاده از زبان R بسنده کنیم. زیرا کتابخانههای جا افتاده و مناسبی برای استفاده از ابزار و منابع در این زبان تعبیه شدهاند.
علی رغم نقاط ضعفی که در فهرست بالا شمردهایم، جولیا زبان برنامهنویسی قدرتمندی است که پتانسیل بالایی برای انجام کارهای بزرگ دارد. فرایند آموزش استفاده از این زبان برای برنامهنویسان با تجربه ساده است و همراه با خود ویژگیهای زیادی را برای انجام مسائل علمی ارائه میدهد.
فیلم های آموزش پروژه محور برنامه نویسی در فرادرس
بهترین راه برای درک زبان برنامه نویسی جولیا بررسی فیلمهای آموزشی پروژهمحور است. مهمتر از همه اینکه برای آموزش بهتر باید پروژههای نزدیک به دنیای واقعی را انتخاب کنیم. این پروژههای هدفمند کمک میکنند که مطالب آموزشی درون ذهن دانشجویان نهادینه شده و روش ارتباط تکنولوژیهای مختلف با یکدیگر را نیز تجربه کنند. در این بخش به معرفی چند مورد از فیلمهای پروژهمحوری پرداختهایم که یا توسط زبان جولیا یا توسط زبانهای برنامهنویسی دیگر پیادهسازی و اجرا میشوند.
- فیلم آموزش رایگان زبان برنامه نویسی جولیا Julia همراه با پروژه عملی در فرادرس
- فیلم آموزش پروژه محور یونیتی درباره ساخت بازی ماشین دو بعدی در Unity با فرادرس
- فیلم آموزش پروژه محور اندروید درباره ساخت بازی مگس مزاحم با فرادرس
- فیلم آموزش پروژه محور لاراول درباره ساخت فروشگاه اینترنتی در Laravel | با فرادرس
- فیلم آموزش پروژه محور سی شارپ C# درباره ساخت برنامه دانلودگر با فرادرس
در صورت تمایل بر روی تصویر زیر کلیک کرده و از فیلمهای آموزشی بیشتری دیدن کنید.

اکوسیستم و پکیج های جولیا
با توجه به نقاط ضعفی که در بخش قبلی درباره جولیا مطرح شدند، چرا باید از جولیا استفاده کنیم؟ مسئله اینجاست که این زبان به منظور استفاده در چندین اکوسیستم مختلف، طراحی شده و چند کاربرد اصلی دارد.
در این بخش از مطلب به بررسی حوزههای تخصصی فعالیت جولیا پرداخته و علت گرایش به استفاده از آن را بیان میکنیم.
مصورسازی
اهداف عمومی
با استفاده از جولیا، برنامهنویسان میتوانند کارهای مختلفی مانند موارد فهرست شده در پایین را انجام دهند.
- ساخت اپلیکیشنهای مستقل
- ساخت رابط کاربری برای اپلیکیشنهای تحت وب یا برنامههای بومی
- خواندن و استفاده از دادهها از انواع پایگاههای داده
- استفاده از ابزارهایی مانند «PackageComplier» برای ساخت فایلهای اجرایی
- توسعهدهندگان جولیا پکیج «HTTP.jl» را برای بارگذاری سرورهای اینترنتی به کار میبرند.
- جولیا همچنین برای برقراری ارتباط با زبانهای برنامهنویسی مانند جاوا، پایتون، C و ++C و R دارای رابطهای مخصوصی است.
به دلیل وجود تواناییهای بالا جولیا در پروژههای متنوعی قابل استفاده است.
علم داده
در جولیا ابزارهایی مانند «DataFrames.jl» و «CSV.jl» برای کاربرانی فراهم شده که میخواهند بر روی مجموعه دادههای بزرگ پردازش کرده و با پایگاههای داده مختلف کار کنند. تمام نتایج بدست آمده به دلیل تحلیل و کار بر روی دادهها را میتوان با کمک پکیج JuliaGraphs به تصویر کشید.
نکته: جولیا میتواند با طیف وسیعی از پایگاههای داده کار کند. بنابراین به گزینه بسیار مناسبی برای استفاده در تمام مسائل مربوط به علم داده تبدیل شده است.
یادگیری ماشین
- «یادگیری عمیق» (Deep Learning)
- «مدلهای از پیش آموزش داده شده» (Pre-Trained Models) با توانایی پردازش وظایف معمولی
- و چند مورد از بهترین موارد برای «برنامهنویسی احتمالی» (Probabilistic Programming)

موقعیتهای شغلی مربوط به یادگیری ماشین، اغلب نیازمند به داشتن حداقل دانش پایه درباره زبان جولیا یا سایر زبانهای برنامهنویسی همسان با آن هستند.
حوزه های علمی
یکی از نقاط قوت زبان برنامه نویسی جولیا در پردازش معادلات دیفرانسیل و انجام سایر محاسبات علمی است. به عنوان مثال، پکیج «DifferentialEquations.jl» یکی از گزینههای بسیار خوبی است که به صورت خودکار برای حل انواع مسائل، بهترین الگوریتمها را انتخاب میکند. به عنوان مثال دیگر میتوان به پیکیج «Optim.jl» اشاره کرد. این پکیج دارای رابطهایی برای کار با «روشهای غیرخطی بهینهسازی» (Nonlinear Optimization Methods) است.
محاسبات موازی
اجرای برنامهنویسی موازی یکی از اهداف اصلی در کدنویسی با زبان جولیا است. این زبان به صورت ذاتی دارای توانایی توزیع محاسبات بر روی چندین پردازندهی مختلف است. همچنین جولیا به صورت درونی از «رابط ارسال پیام» (Message Passing Interface) پشتیبانی میکند. یکی دیگر از تواناییهای جولیا پشتیبانی از موازی کردن اجرای فرایندها در GPU است. این توانایی در سایر زبانهای برنامهنویسی رایج نیست.
جمعبندی
زبان برنامه نویسی جولیا یکی از زبانهای بسیار جدید و مدرن است که با هدف کنار هم قراردادن سرعت زبانهای C و ++C در کنار عملکرد و سادهگی استفاده پایتون به وجود آمده است.
در این مطلب از مجله فرادرس با زبان برنامه نویسی Julia آشنا شده و مسائل ابتدایی مربوط به روش کدنویسی با آن را فراگرفتیم. این زبان یکی از زبانهای آیندهدار بخصوص در حوزه هوش مصنوعی است. بنابراین توصیه میشود افراد فعال یا علاقهمند به این حوزه مهارت خود را در بهکارگیری این زبان افزایش دهند.
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید













