راهنمای فارسی جولیا

من دانشجوی فیزیک دانشگاه شیراز در مقطع کارشناسی هستم و پس از تحقیق های فراوان برای انتخاب یک زبان برنامه نویسی، اول زبان پایتون را آموختم اما پس از چند مدت با جولیا آشنا شدم و این زبان به خاطر ویژگی های منحصر به فردش مرا مجذوب خود کرد. از آنجایی که برای زبان جولیا منبع آموزش فارسی کم بود، من تصمیم گرفتم که آموزه های خود را با پارسی زبانان دیگر برای پیشرفت کشورم در میان بگذارم. من برنامه نویسی را با اصول بین المللی برنامه نویسی برایتان به اشتراک خواهم گذاشت ان شاءالله. بنده هیچگونه ادعایی نداشته و ندارم و همواره پذیرای انتقادات و پیشنهادات شما عزیزان همزبان خواهم بود.

لطفا به سایت اصلی بنده مراجعه فرمایید و در قسمت جولیا در منوی بالای سایت آموزش ها را دنبال کنید:)

چرا جولیا؟

جولیا یک زبان برنامه نویسی پویا با سطح بالا و با کارایی بالا برای محاسبات عددی است. این زبان یک کامپایلر پیشرفته، اجرای همزمان موازی، دقت عددی و یک کتابخانه تابع گسترده ریاضی را فراهم می کند. کتابخانه پایه جولیا (که عمدتا در جولیا نوشته شده است) همچنین کتابخانه های متن باز زبان سی و فورترن را برای جبر خطی، تولید عدد تصادفی، پردازش سیگنال و پردازش رشته با هم ترکیب می کند. علاوه بر این، جامعه توسعه دهنده جولیا با تعدادی بسته خارجی از طریق مدیریت بسته های جولیا به سرعت در حال گسترش کتابخانه های این زبان هستند. مهمتر از همه رایگان و متن باز بودن آن با این همه ویژگی است.


جولیا در مقایسه با دیگر زبان های برنامه نویسی؟

ساده ترین راه برای درک برتری زبان جولیا این است که بدانید:

  • دارای طیف گسترده ای از بسته های آماری است. مانند زبان 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

به همین سادگی :)


اکوسیستم جولیا

جولیا توسط یک جامعه نزدیک از توسعه دهندگان پشتیبانی می شود. در زیر لیستی از این پشتیبان های را می آورم:

  • اخبار جولیا: برای اطلاعیه های مهم مانند نسخه جدید
  • کاربران جولیا: بحث در مورد استفاده از جولیا. کاربران جدید جولیا می توانند سؤالات خود را در اینجا مطرح کنند.
  • julia-stats: لیستی مخصوص با هدف بحث در مورد برنامه های آماری با جولیا. موضوعات مورد علاقه شامل پشتیبانی از DataFrame، مدل سازی GLM و نسل کدهای MCMC برای مدل های Bayesian است.
  • julia-opt: بحث در مورد بهینه سازی عددی در جولیا. این شامل برنامه نویسی ریاضی (خطی، عدد صحیح مخلوط، مخروطی، نیمه قطعی، و غیره)، محدودیت و بدون محدودیت بهینه سازی مبتنی بر شیب و بدون گرادیان و موضوعات مرتبط است.
علاوه بر این، شما همچنین می توانید به juliabloggers.com نگاه کنید. این سایت به نظر می رسد مانند یک اکوسیستم در حال توسعه است.


سخن پایانی

امیدوارم که یک مرور خوبی از این زبان قدرتمند در حال توسعه را به شما ارائه داده باشم. من وقتی اولین بار جولیا را دیدم خیلی هیجان زده بودم و همچنان این زبان را برای پیشرفت های جدید بررسی خواهم کرد ان شاءالله. در مقالات بعدی با من همراه باشید تا داده هایی را که در جولیا موجود است، با رابط کاربری آن با زبان های دیگر آشنا شویم. پایتون و یکی از مطالعات موردی آن را با استفاده از جولیا برای درک قدرتش حل میکنیم.

نظر شما در رابطه با زبان برنامه نویسی جولیا چیست؟ آیا همه شما تصمیم گرفتید که آن را امتحان کنید؟ آیا آینده شما را تحریک می کند :) ؟ لطفا نظرات خود را در زیر ذکر کنید.

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است
نظر دادن تنها برای اعضای بیان ممکن است.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.