من دانشجوی فیزیک دانشگاه شیراز در مقطع کارشناسی هستم و پس از تحقیق های فراوان برای انتخاب یک زبان برنامه نویسی، اول زبان پایتون را آموختم اما پس از چند مدت با جولیا آشنا شدم و این زبان به خاطر ویژگی های منحصر به فردش مرا مجذوب خود کرد. از آنجایی که برای زبان جولیا منبع آموزش فارسی کم بود، من تصمیم گرفتم که آموزه های خود را با پارسی زبانان دیگر برای پیشرفت کشورم در میان بگذارم. من برنامه نویسی را با اصول بین المللی برنامه نویسی برایتان به اشتراک خواهم گذاشت ان شاءالله. بنده هیچگونه ادعایی نداشته و ندارم و همواره پذیرای انتقادات و پیشنهادات شما عزیزان همزبان خواهم بود.
لطفا به سایت اصلی بنده مراجعه فرمایید و در قسمت جولیا در منوی بالای سایت آموزش ها را دنبال کنید:)
چرا جولیا؟
جولیا یک زبان برنامه نویسی پویا با سطح بالا و با کارایی بالا برای محاسبات عددی است. این زبان یک کامپایلر پیشرفته، اجرای همزمان موازی، دقت عددی و یک کتابخانه تابع گسترده ریاضی را فراهم می کند. کتابخانه پایه جولیا (که عمدتا در جولیا نوشته شده است) همچنین کتابخانه های متن باز زبان سی و فورترن را برای جبر خطی، تولید عدد تصادفی، پردازش سیگنال و پردازش رشته با هم ترکیب می کند. علاوه بر این، جامعه توسعه دهنده جولیا با تعدادی بسته خارجی از طریق مدیریت بسته های جولیا به سرعت در حال گسترش کتابخانه های این زبان هستند. مهمتر از همه رایگان و متن باز بودن آن با این همه ویژگی است.
جولیا در مقایسه با دیگر زبان های برنامه نویسی؟
ساده ترین راه برای درک برتری زبان جولیا این است که بدانید:
- دارای طیف گسترده ای از بسته های آماری است. مانند زبان R
- آسان یاد بگیرید و آسان برنامه نویسی کنید. مانند زبان پایتون
- سرعت اجرای بالا مشابه آنچه در زبان C و ++C شاهد آن هستیم
اگر هنوز قانع نشده اید، بهتر است به نمودار زیر که زبان های دیگر را با C مقایسه کرده ببینید(اعداد کوچکتر بهترند|کارایی C = 1.0)

خلاصهای از ویژگیهای جولیا
برخی از ویژگیهای برجسته جولیا در کاربرد علوم داده:
-
ارسال چندگانه: ارائه توانایی برای تعریف رفتار تابع در بین بسیاری از ترکیبات با انواع استدلال
- سیستم پویا: الگو برای اسناد، بهینه سازی و ارسال
- کارایی خوب، نزدیکی به زبان های کامپایل شدنی نظیر C
- مدیریت بسته درون-ساخت، کار را آسانتر می کند
- دارای امکانات Meta-Programming به معنای طراحی اپلیکیشن بهتر، سریعتر و با حجم کد کمتر می باشد
- فراخوانی توابع C به طور مستقیم
- فراخوانی توابع پایتون با استفاده از بسته PyCall
- قابلیت قدرتمند خط فرمان مانند برای مدیریت پروسس های دیگر
- طراحی شده برای موازی سازی و محاسبات توزیع شده
- همانقدر که تعاریف داخلی سریع و جمع و جور هستند، تعاریف کاربر هم همینگونه هستند
- تولید خودکار کد کارآمد و ویژه برای انواع استدلال مختلف
- زیبا و گسترش پذیر و قابل ترویج برای داده های عددی و انواع دیگر
- پشتیبانی بدرد بخور از یونیکد که به UTF-8 محدود نمی شود
- مجوز MIT: منبع آزاد و رایگان
نصب جولیا
حالا اگه با تفاسیر بالا میخواهید با این زبان کار آمد فعالیت کنید، با من همراه باشید تا خیلی سریع، راههای کار با زبان جولیا رو بیان کنم:
راه اول: استفاده از juliabox در مرورگرتان
ساده ترین راه همینه که بدون نصب و فقط با استفاده از اکانت گوگل خودتون برید و وارد سایت juliabox بشید و شروع کنید به برنامه نویسی. به همین راحتی:)

راه دوم: استفاده از یک IDE
در حال حاضر بهترین IDE برای جولیا، Juno هست. اما متأسفانه یکم برای نصبش باید زحمت بکشید.
در سربرگ "نصب Juno" در بالای وبلاگ، به طور کامل و گام به گام طریقه نصبش رو توضیح دادم.
راه سوم: استفاده از command line
اگه شما برنامه نویسی حرفهای هستید و بدون خط فرمان نمیتونید برنامه نویسی رو تصور کنید، بسته خط فرمان جولیا رو از اینجا دانلود کنید.
تعدادی از بستههای مهم جولیا
مجموعهای از 610 بسته جولیا در تاریخ(9 ژوئیه 2015) وجود داشت. اگر شما بستههایی را که در آزمایشات شکست خورده یا آزمایش نشدهاند فیلتر کنید، تنها 381 بسته باقی میماند. در میان اینها، موارد مرتبط با علم داده را فیلتر کردهام که دارای بیش از 15 ستارهاند. نتیجه بستههای زیر هستند:
بسته |
توضیحات |
نسخه |
ستاره |
BackpropNeuralNet | A neural network in Julia | 0.0.3 | 18 |
Bokeh | Bokeh Bindings for Julia | 0.1.0 | 26 |
Boltzmann | Restricted Boltzmann Machines in Julia | 0.1.0 | 19 |
Calculus | Calculus functions in Julia | 0.1.8 | 46 |
Clustering | A Julia package for data clustering | 0.4.0 | 33 |
Convex | A julia package for disciplined convex programming. | 0.0.6 | 108 |
Cpp | Utilities for calling C++ from Julia | 0.1.0 | 18 |
DataArrays | Data structures that allow missing values | 0.2.16 | 21 |
DataFrames | library for working with tabular data in Julia | 0.6.7 | 206 |
DataFramesMeta | Metaprogramming tools for DataFrames | 0.0.1 | 33 |
DataStructures | Julia implementation of Data structures | 0.3.10 | 52 |
DecisionTree | Decision Tree Classifier and Regressor | 0.3.8 | 36 |
Distances | A package for evaluating distances(metrics) between vectors. | 0.2.0 | 21 |
Distributions | A package for probability distributions & associated functions. | 0.7.4 | 101 |
DSP | Filter design, periodograms, window functions, and other digital signal processing functionality | 0.0.8 | 32 |
FunctionalCollections | Functional and and persistent data structures for Julia | 0.1.2 | 34 |
Gadfly | Crafty statistical graphics for Julia. | 0.3.13 | 684 |
GeneticAlgorithms | A lightweight framework for writing genetic algorithms in Julia | 0.0.3 | 86 |
GLM | Generalized linear models in Julia | 0.4.6 | 78 |
GLMNet | Wrapper for fitting Lasso/ElasticNet GLM models using glmnet | 0.0.4 | 23 |
Graphs | Working with graphs in Julia | 0.5.5 | 90 |
HDF5 | Saving and loading Julia variables | 0.4.18 | 65 |
HypothesisTests | Hypothesis tests for Julia | 0.2.9 | 16 |
Images | An image library for Julia | 0.4.39 | 73 |
JuMP | Modeling language for Mathematical Programming (linear, mixed-integer, conic, nonlinear) | 0.9.2 | 162 |
MachineLearning | Julia Machine Learning library | 0.0.3 | 37 |
Mamba | Markov chain Monte Carlo (MCMC) for Bayesian analysis in julia | 0.4.11 | 44 |
Markdown | Markdown parsing for Julia | 0.3.0 | 21 |
Match | Advanced Pattern Matching for Julia | 0.1.3 | 29 |
MixedModels | A Julia package for fitting (statistical) mixed-effects models | 0.3.22 | 41 |
MLBase | A set of functions to support the development of machine learning algorithms | 0.5.1 | 41 |
Mocha | Deep Learning framework for Julia | 0.0.8 | 297 |
MultivariateStats | A Julia package for multivariate statistics & data analysis (e.g. dimension reduction) | 0.2.1 | 21 |
NLopt | Package to call the NLopt nonlinear-optimization library from the Julia language | 0.2.1 | 31 |
OpenStreetMap | Julia OpenStreetMap Package | 0.8.1 | 20 |
Optim | Optimization functions for Julia | 0.4.2 | 116 |
Orchestra | Heterogeneous ensemble learning for Julia. | 0.0.5 | 27 |
PGM | A Julia framework for probabilistic graphical models. | 0.0.1 | 25 |
PyCall | Package to call Python functions from the Julia language | 0.8.1 | 183 |
RCall | Embedded R within Julia | 0.2.1 | 16 |
RDatasets | Julia package for loading many of the data sets available in R | 0.1.2 | 34 |
Regression | Algorithms for regression (e.g. linear / logistic regression) | 0.3.2 | 17 |
Rif | Julia-to-R interface | 0.0.12 | 47 |
StatsBase | Basic statistics for Julia | 0.6.15 | 57 |
StreamStats | Compute statistics over data streams in pure Julia | 0.0.2 | 27 |
TimeSeries | Time series toolkit for Julia | 0.5.10 | 37 |
توسعه بسیار زیادی در زبان و کتابخانه وجود دارد. بنابراین این می تواند خیلی سریع تغییر کند.
توجه کنید که:
- Gadfly به نظر می رسد محبوب ترین بسته است. این شاید به خاطر آنست که به عنوان یک کتابخانه ویترین در تمام محصولات موجود در اکوسیستم استفاده می شود.
- کتابخانه های وابسته به علوم داده بیشتر از برخی از کتابخانه ها بیشتر تکامل یافته اند. Mocha برای یادگیری عمیق، Orchestra برای بهینه سازی و DataFrames یا Distributions در برابر دیگر کتابخانه ها تکامل یافته تر هستند.
چگونه یک بسته را نصب و استفاده کنیم؟
این کار در جولیا به سادگی آب خوردن است! برای نصب/اضافه کردن یک بسته کافیست کد دستوری زیر را بنویسید:
Pkg.add("Gadfly")
این دستور، بسته و وابستگی های آن را برای شما نصب/اضافه میکند.
یکبار که بسته را نصب کردید، با کد زیر می توانید آن را صدا بزنید:
using Gadfly
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.