SlideShare a Scribd company logo
1 of 58
Click to edit Master title style
1
(julia) ‫برنامه‬ ‫زبان‬
‫نویسی‬
‫جولیا‬
Click to edit Master title style
2 2
.1
‫جولیا‬ ‫زبان‬ ‫معرفی‬ ‫و‬ ‫تاریخچه‬
.2
‫کاربرد‬
.3
‫معایب‬ ‫و‬ ‫مزایا‬
.4
‫زبان‬ ‫های‬ ‫ویژگی‬
.5
‫کلی‬ ‫آمار‬
.6
‫نصب‬ ‫و‬ ‫دانلود‬
.7
‫ها‬ ‫ادیتور‬ ‫معرفی‬
.8
‫سینتکس‬
•
‫متغیر‬
•
‫داده‬ ‫انواع‬
•
‫توابع‬
•
Flow control
(
‫برنامه‬ ‫جریان‬ ‫کنترل‬ ‫برای‬ ‫هایی‬ ‫ساختار‬
)
.9
‫ها‬ ‫کتابخانه‬
.10
‫پروژه‬
.11
‫منابع‬
‫مطالب‬ ‫فهرست‬
:
Click to edit Master title style
3 3
‫جولیا‬ ‫زبان‬ ‫معرفی‬ ‫و‬ ‫تاریخچه‬
Click to edit Master title style
4
‫ماشین‬ ‫یادگیری‬ ‫مانند‬ ‫مباحثی‬ ،‫مرور‬ ‫به‬ ‫جدید‬ ‫هزاره‬ ‫از‬
(Machine Learning)
‫عمیق‬ ‫یادگیری‬ ‫و‬
(Deep Learning)
‫شد‬ ‫مطرح‬ ‫جدی‬ ‫طور‬ ‫به‬
.
‫زبان‬
‫مثل‬ ‫هایی‬
:
Python, R, MATLAB
‫مانند‬ ‫دالیلی‬ ‫به‬ ‫که‬
:
‫کتابخ‬ ‫و‬ ‫توابع‬ ‫وجود‬ ‫و‬ ‫باال‬ ‫بسیار‬ ‫آماری‬ ‫و‬ ‫تحلیلی‬ ‫قدرت‬ ،‫استفاده‬ ‫در‬ ‫راحتی‬ ،‫پویایی‬
‫آماده‬ ‫های‬ ‫انه‬
‫کردند‬ ‫باز‬ ‫جا‬ ‫کاربران‬ ‫میان‬ ‫در‬ ‫مرور‬ ‫به‬ ،‫زیاد‬
.
‫از‬ ‫ها‬ ‫زبان‬ ‫این‬ ‫رویه‬ ‫بی‬ ‫استفاده‬ ‫آن‬ ‫و‬ ‫داشت‬ ‫وجود‬ ‫بزرگی‬ ‫خال‬ ‫همچنان‬ ‫اما‬
RAM
‫زمان‬ ‫مدت‬ ‫و‬ ‫کامپیوتر‬
‫اجرا‬ ‫باالی‬ ‫بسیار‬
(
‫باال‬ ‫اطالعات‬ ‫حجم‬ ‫در‬ ‫خصوص‬ ‫به‬
)
‫بود‬ ،
.
‫مانند‬ ‫هایی‬ ‫زبان‬ ‫از‬ ‫استفاده‬ ‫طرفی‬ ‫از‬
Java
‫و‬
++
C
‫به‬ ‫زنی‬ ‫کد‬ ‫در‬ ‫پایین‬ ‫سرعت‬ ‫دلیل‬ ‫به‬
‫نبود‬ ‫میسر‬ ‫چندان‬ ،‫آن‬ ‫بودن‬ ‫سخت‬ ‫علت‬
.
‫سال‬ ‫در‬
۲۰۰۹
‫دانشگاه‬ ‫در‬ ‫نفر‬ ‫چهار‬
MIT
‫کردند‬ ‫توصیف‬ ‫اینگونه‬ ‫را‬ ‫آن‬ ‫و‬ ‫اختراع‬ ‫را‬ ‫نویسی‬ ‫برنامه‬ ‫زبان‬ ‫یک‬
" :
‫پویایی‬
Ruby
،
‫سینتکس‬
Python
،
‫محاسباتی‬ ‫قدرت‬
R
‫و‬
MATLAB
‫سرعت‬ ‫و‬
C
‫اند‬ ‫شده‬ ‫جمع‬ ‫جولیا‬ ‫زبان‬ ‫در‬
".
‫سال‬ ‫از‬ ‫جولیا‬ ‫نظیر‬ ‫بی‬ ‫رشد‬ ‫و‬ ‫جمله‬ ‫این‬
۲۰۱۲
‫زبان‬ ‫این‬ ‫روی‬ ‫پیش‬ ‫که‬ ‫است‬ ‫روشنی‬ ‫آینده‬ ‫بر‬ ‫گواه‬ ،‫شد‬ ‫منتشر‬ ‫اش‬ ‫نسخه‬ ‫اولین‬ ‫رسمی‬ ‫صورت‬ ‫به‬ ‫که‬
‫است‬
.
4
Click to edit Master title style
5 5
‫ها‬ ‫کاربرد‬
Click to edit Master title style
6 6
•
‫از‬ ‫استفاده‬ ‫امکان‬ ‫ویژگی‬ ‫این‬ ‫که‬ ‫کرد‬ ‫تقسیم‬ ‫مختلف‬ ‫های‬‫هسته‬ ‫بین‬ ‫را‬ ‫پردازشی‬ ‫وظایف‬ ‫آن‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫بتوان‬ ‫تا‬ ‫دارد‬ ‫را‬ ‫امکان‬ ‫این‬ ‫جولیا‬
‫جو‬
‫از‬ ‫لیا‬
‫ماشین‬ ‫یادگیری‬
‫ا‬ ‫سازی‬‫شبیه‬ ‫تا‬
‫را‬ ‫بزرگ‬ ‫های‬‫بررایانه‬
‫کند‬‫می‬ ‫فراهم‬
.
•
MIT
‫به‬ ‫موسوم‬ ‫نویسی‬‫برنامه‬ ‫های‬‫زبان‬ ‫باشگاه‬ ‫در‬ ‫نویسی‬‫برنامه‬ ‫زبان‬ ‫پویاترین‬ ‫باید‬ ‫را‬ ‫جولیا‬ ‫نویسی‬‫برنامه‬ ‫زبان‬ ‫که‬ ‫کرده‬ ‫اعالم‬
‫پتافالپ‬
‫خواند‬
.
‫زب‬ ‫از‬ ‫گروهی‬ ‫به‬ ‫پتافالپ‬ ‫باشگاه‬
‫نویسی‬‫برنامه‬ ‫های‬‫ان‬
‫کرد‬ ‫عبور‬ ‫ثانیه‬ ‫در‬ ‫فالپ‬ ‫پتا‬ ‫یک‬ ‫پردازشی‬ ‫قدرت‬ ‫از‬ ‫توان‬‫می‬ ‫ها‬‫آن‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫شود‬‫می‬ ‫اطالق‬
.
‫سازی‬‫شبیه‬ ‫به‬ ‫اقدام‬ ‫جولیا‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫محققان‬ ،‫شده‬‫ارائه‬ ‫اطالعات‬ ‫براساس‬
۱۸۸
‫و‬ ‫ستاره‬ ‫میلیون‬
‫سوپرکامپیوتر‬ ‫در‬ ‫کهکشان‬
Cori
‫است‬ ‫جهان‬ ‫در‬ ‫قدرتمند‬ ‫ی‬‫ابررایانه‬ ‫دهمین‬ ‫که‬ ‫اند‬‫کرده‬
.
‫از‬ ‫کمتر‬ ‫در‬ ‫سازی‬‫شبیه‬ ‫این‬
۱۵
‫است‬ ‫شده‬ ‫انجام‬ ‫دقیقه‬
.
‫از‬ ‫بیش‬ ،‫سازی‬‫شبیه‬ ‫این‬ ‫در‬
۶۵۰
‫پردازشی‬ ‫ی‬‫هسته‬ ‫هزار‬
Knights Landing Xeon Phi
‫پردازشی‬ ‫قدرت‬ ‫آن‬ ‫ی‬‫نتیجه‬ ‫که‬ ،‫گرفته‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬
۱.۵
‫است‬ ‫بوده‬ ‫پتافالپس‬
.
•
‫پرینترهای‬ ‫و‬ ‫خودران‬ ‫خودروهای‬ ‫در‬ ‫آن‬ ‫از‬ ‫استفاده‬ ‫به‬ ‫توان‬‫می‬ ‫جولیا‬ ‫کاربردهای‬ ‫دیگر‬ ‫ی‬‫جمله‬ ‫از‬
‫بعدی‬ ‫سه‬
‫یادگی‬ ،‫ژنتیک‬ ،‫افزوده‬ ‫واقعیت‬ ،‫باال‬ ‫دقت‬ ‫با‬ ‫پزشکی‬ ‫لوازم‬ ‫و‬ ‫پزشکی‬ ‫کنار‬ ‫در‬
‫و‬ ‫ماشین‬ ‫ری‬
‫کرد‬ ‫اشاره‬ ‫ریسک‬ ‫مدیریت‬
.
•
‫مسیریابی‬ ‫بهبود‬ ،‫هواپیما‬ ‫برخورد‬ ‫از‬ ‫جلوگیری‬ ‫سیستم‬ ‫بعدی‬ ‫نسل‬ ‫ی‬‫توسعه‬ ‫به‬ ‫باید‬ ‫جولیا‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫یافته‬‫توسعه‬ ‫های‬‫سیستم‬ ‫ی‬‫جمله‬ ‫از‬
‫اتوبوس‬
‫س‬ ‫همچنین‬ ‫و‬ ‫بوستون‬ ‫مدارس‬
‫و‬ ‫حرکتی‬ ‫یستم‬
‫مسیریابی‬
‫ربات‬
‫کرد‬ ‫اشاره‬
.
•
‫شامل‬ ‫که‬ ‫علمی‬ ‫مهم‬ ‫محاسبات‬ ‫برای‬ ‫توان‬ ‫می‬ ‫جولیا‬ ‫از‬
Big Data
‫کرد‬ ‫استفاده‬ ‫است‬
.
•
‫کرد‬ ‫استفاده‬ ‫وب‬ ‫نویسی‬ ‫برنامه‬ ‫برای‬ ‫جولیا‬ ‫از‬ ‫توان‬ ‫می‬ ‫ها‬ ‫پکیج‬ ‫کمک‬ ‫با‬
.
•
‫پشتیبانی‬ ‫کمک‬ ‫با‬
ARM
،
‫گرفت‬ ‫خواهد‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫اندرویدی‬ ‫هوشمند‬ ‫های‬ ‫تلفن‬ ‫در‬ ‫زودی‬ ‫به‬ ‫جولیا‬
.
•
.
Click to edit Master title style
7 7
‫معایب‬ ‫و‬ ‫مزایا‬
Click to edit Master title style
8 8
‫مزیت‬
:
‫موقع‬ ‫به‬ ‫گردآوری‬ ‫دلیل‬ ‫به‬ ‫جولیا‬
just-in-time
(JIT)
‫است‬ ‫سریعتر‬ ‫پایتون‬ ‫با‬ ‫مقایسه‬ ‫در‬
.
‫است‬ ‫سازگار‬ ‫بسیار‬ ‫ریاضی‬ ‫محاسبات‬ ‫با‬ ‫جولیا‬
.
‫دهد‬ ‫می‬ ‫اختصاص‬ ‫پایتون‬ ‫مانند‬ ‫خودکار‬ ‫بصورت‬ ‫متغیرها‬ ‫به‬ ‫را‬ ‫حافظه‬ ‫جولیا‬
.
‫است‬ ‫استاتیک‬ ‫و‬ ‫پویا‬ ‫تایپ‬ ‫زبان‬ ‫از‬ ‫ترکیبی‬ ‫جولیا‬
.
‫معایب‬
:
‫عدد‬ ‫از‬ ‫ایندکس‬ ‫جولیا‬ ‫در‬
1
‫از‬ ‫که‬ ‫دیگر‬ ‫زبانهای‬ ‫خالف‬ ‫بر‬ ،،‫شود‬ ‫می‬ ‫شروع‬
0
‫شود‬ ‫می‬ ‫شروع‬
.
‫برنامه‬ ‫بعضی‬ ‫برای‬ ‫است‬ ‫ممکن‬ ‫این‬ ‫و‬
‫ایندکس‬ ‫با‬ ‫چون‬ ‫باشد‬ ‫سخت‬ ‫نویسی‬
0
‫دارند‬ ‫کدنویسی‬ ‫به‬ ‫عادت‬
.
‫است‬ ‫جدید‬ ‫بسیار‬ ، ‫پایتون‬ ‫با‬ ‫مقایسه‬ ‫در‬ ، ‫جولیا‬
.
‫دهند‬ ‫می‬ ‫ترجیح‬ ‫جولیا‬ ‫به‬ ‫را‬ ‫پایتون‬ ‫هنوز‬ ‫مردم‬ ، ‫رو‬ ‫این‬ ‫از‬
.
‫دس‬ ‫قابل‬ ‫ردیفی‬ ‫صورت‬ ‫به‬ ‫پایتون‬ ‫های‬ ‫ماتریس‬ ‫که‬ ‫حالی‬ ‫در‬ ، ‫هستند‬ ‫دسترسی‬ ‫قابل‬ ‫ستونی‬ ‫صورت‬ ‫به‬ ‫جولیا‬ ‫در‬ ‫ها‬ ‫ماتریس‬
‫هستند‬ ‫ترسی‬
.
‫ماتریس‬ ‫از‬ ‫عبور‬ ‫نحوه‬ ‫مورد‬ ‫در‬ ‫گیری‬ ‫تصمیم‬ ‫در‬ ‫تواند‬ ‫می‬ ‫این‬
-
‫حافظه‬ ‫در‬ ‫موثر‬ ‫طور‬ ‫به‬
-
‫کند‬ ‫ایجاد‬ ‫مشکل‬
.
‫جول‬ ‫در‬ ‫ها‬ ‫دیکشنری‬
‫یا‬
‫کند‬ ‫کندتر‬ ‫را‬ ‫اجرا‬ ‫مورد‬ ‫چندین‬ ‫در‬ ‫تواند‬ ‫می‬ ‫که‬ ، ‫شوند‬ ‫می‬ ‫هش‬ ‫پایتون‬ ‫در‬ ‫ها‬ ‫دیکشنری‬ ‫از‬ ‫متفاوت‬
.
Click to edit Master title style
9 9
‫جولیا‬ ‫زبان‬ ‫های‬‫ویژگی‬
Click to edit Master title style
10
•
‫قدرتمندی‬ ‫عین‬ ‫در‬ ‫ساده‬
•
‫امکانات‬ ‫دارای‬
Meta-Programming
‫باشد‬ ‫می‬ ‫کمتر‬ ‫کد‬ ‫حجم‬ ‫با‬ ‫و‬ ‫سریعتر‬ ،‫بهتر‬ ‫اپلیکیشن‬ ‫طراحی‬ ‫معنای‬ ‫به‬
•
‫مختلف‬ ‫ورودی‬ ‫های‬ ‫پارامتر‬ ‫با‬ ‫تابع‬ ‫تعریف‬ ‫مکان‬
(
‫باشد‬ ‫متفاوت‬ ‫آن‬ ‫های‬ ‫پارامتر‬ ‫هرکدام‬ ‫در‬ ‫که‬ ‫شود‬ ‫تعریف‬ ‫بار‬ ‫چندین‬ ‫تابع‬ ‫یک‬
)
•
‫باال‬ ‫عملکرد‬ ‫قدرت‬
•
‫زبان‬ ‫مانند‬
‫لیسپ‬
‫هومویکونیک‬
‫تولید‬ ‫امکان‬ ‫که‬ ،‫روند‬‫می‬ ‫شمار‬‫به‬ ‫برنامه‬ ‫از‬ ‫هایی‬‫داده‬ ‫نیز‬ ‫برنامه‬ ‫کدهای‬ ‫که‬ ‫معنا‬ ‫این‬ ‫به‬ ،‫است‬
•
‫کدهای‬
‫پویا‬ ‫نویسی‬‫برنامه‬
‫دهد‬‫می‬ ‫نویس‬‫برنامه‬ ‫به‬ ‫را‬
.
•
‫جولیا‬ ‫خود‬ ‫داخل‬ ‫در‬ ‫ها‬ ‫پکیج‬ ‫مدیریت‬
•
‫و‬ ‫پایتون‬ ‫توابع‬ ‫مستقیم‬ ‫فراخوانی‬
c
•
‫قوی‬ ‫کنسول‬ ‫محیط‬
•
‫موازی‬ ‫های‬ ‫پردازش‬ ‫برای‬ ‫مناسب‬
•
‫سورس‬ ‫اپن‬
•
‫دیگر‬ ‫انواع‬ ‫و‬ ‫عددی‬ ‫های‬ ‫داده‬ ‫برای‬ ‫ترویج‬ ‫قابل‬ ‫و‬ ‫پذیر‬ ‫گسترش‬ ‫و‬ ‫زیبا‬
•
‫به‬ ‫که‬ ‫یونیکد‬ ‫از‬ ‫بخور‬ ‫بدرد‬ ‫پشتیبانی‬
UTF-8
‫شود‬ ‫نمی‬ ‫محدود‬
Click to edit Master title style
1111
‫کلی‬ ‫آمار‬
Click to edit Master title style
12
‫ها‬ ‫زبان‬ ‫سایر‬ ‫با‬ ‫مقایسه‬ ‫در‬ ‫جولیا‬ ‫عملکرد‬
‫الگور‬ ، ‫پی‬ ‫عدد‬ ‫مجموع‬ ، ‫صحیح‬ ‫عدد‬ ‫تجزیه‬ ، ‫ناچی‬ ‫فیبو‬ ‫دنباله‬ ‫محاسبه‬ ‫مثل‬ ‫هایی‬ ‫کد‬ ‫زیر‬ ‫جدول‬ ‫در‬
‫یتم‬
‫و‬ ‫سازی‬ ‫مرتب‬
...
‫های‬ ‫زبان‬ ‫در‬
C, Fortran, Julia, Python, Matlab/Octave, R, JavaScript, Java,
Lua, Go, Mathematica.
‫هر‬ ‫اجرای‬ ‫زمان‬ ‫که‬ ‫اند‬ ‫شده‬ ‫اجرا‬ ‫ای‬ ‫هسته‬ ‫تک‬ ‫یو‬ ‫پی‬ ‫سی‬ ‫با‬ ‫سیستم‬ ‫یک‬ ‫روی‬
‫است‬ ‫عددی‬ ‫محاسبات‬ ‫در‬ ‫جولیا‬ ‫باالی‬ ‫قدرت‬ ‫کننده‬ ‫مشخص‬ ‫زیر‬ ‫جدول‬ ‫در‬ ‫زبان‬ ‫هر‬ ‫در‬ ‫کد‬
.
Click to edit Master title style
1313
‫نویسی‬ ‫برنامه‬ ‫برنامه‬ ‫های‬ ‫زبان‬ ‫ترین‬ ‫رایج‬
Click to edit Master title style
14
‫نویسان‬ ‫برنامه‬ ‫مندی‬ ‫عالقه‬ ‫درصد‬
14
Click to edit Master title style
15
‫سال‬ ‫در‬ ‫درامدشان‬ ‫میزان‬ ‫حسب‬ ‫بر‬ ‫نویسی‬ ‫برنامه‬ ‫های‬ ‫زبان‬
2020
15
Click to edit Master title style
16
‫جولیا‬ ‫پیشرفت‬ ‫سریع‬ ‫و‬ ‫صعودی‬ ‫سیر‬
16
‫بین‬ ‫جایی‬ ‫هنوز‬ ‫جولیا‬ ‫هرچند‬
۱۰
‫زبان‬
‫دو‬ ‫اما‬ ،‫ندارد‬ ‫جهان‬ ‫محبوب‬ ‫نویسی‬‫برنامه‬
‫بندی‬‫رده‬
RedMonk
‫و‬
TIOBE
‫را‬ ‫آن‬
‫ک‬ ‫داده‬ ‫قرار‬ ‫نویسی‬‫برنامه‬ ‫های‬‫زبان‬ ‫جزو‬
‫ه‬
‫توسط‬ ‫باالیی‬ ‫بسیار‬ ‫سرعت‬ ‫با‬
‫گرف‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫دهندگان‬‫توسعه‬
‫ته‬
‫یابد‬‫می‬ ‫گسترش‬ ‫آن‬ ‫از‬ ‫استفاده‬ ‫و‬
.
Click to edit Master title style
1717
‫نصب‬ ‫و‬ ‫دانلود‬
Click to edit Master title style
1818
‫سایت‬ ‫به‬
https://julialang.org/downloads/
‫می‬ ‫مراجعه‬
‫ر‬ ‫مربوطه‬ ‫نسخه‬ ‫خود‬ ‫سیستم‬ ‫معماری‬ ‫به‬ ‫توجه‬ ‫با‬ ‫و‬ ‫کنیم‬
‫ا‬
‫کنیم‬ ‫می‬ ‫دانلود‬
.
‫د‬ ‫های‬ ‫ادیتور‬ ‫یا‬ ‫جولیا‬ ‫خود‬ ‫کنسول‬ ‫از‬ ‫میتوانید‬ ‫سپس‬ ‫و‬
‫یگری‬
‫بشوید‬ ‫جولیا‬ ‫نویسی‬ ‫برنامه‬ ‫محیط‬ ‫وارد‬ ‫کد‬ ‫اس‬ ‫وی‬ ‫مثل‬
.
‫از‬ ‫اگر‬
vscode
‫اکستنشن‬ ‫توانید‬ ‫می‬ ‫کنید‬ ‫می‬ ‫استفاده‬
Julia
‫کنید‬ ‫استفاده‬ ‫آن‬ ‫امکاناتی‬ ‫از‬ ‫و‬ ‫کنید‬ ‫دانلود‬ ‫را‬
.
Click to edit Master title style
1919
‫جولیا‬ ‫نویسی‬ ‫برنامه‬ ‫زبان‬ ‫برای‬ ‫ها‬ ‫ادیتور‬ ‫معرفی‬
Juno
Vs code
Jupyter
Emacs
Vim
Sublime text
Click to edit Master title style
20
Juno
20
Juno
‫است‬ ‫جولیا‬ ‫زبان‬ ‫برای‬ ‫رایگان‬ ‫و‬ ‫قدرتمند‬ ‫محیط‬ ‫یک‬
.
‫برسند‬ ‫نتیجه‬ ‫به‬ ‫سریعتر‬ ‫و‬ ‫بسازند‬ ‫بهتری‬ ‫افزار‬ ‫نرم‬ ‫بیشتری‬ ‫سرعت‬ ‫با‬ ‫توانند‬ ‫می‬ ‫متخصص‬ ‫و‬ ‫مبتدی‬ ‫افراد‬
.
‫دارد‬ ‫قصد‬ ‫جونو‬
‫دهد‬ ‫جلوه‬ ‫پویا‬ ‫و‬ ‫کننده‬ ‫سرگرم‬ ‫را‬ ‫آن‬ ‫و‬ ‫کرده‬ ‫خارج‬ ‫نویسی‬ ‫برنامه‬ ‫از‬ ‫را‬ ‫گمان‬ ‫و‬ ‫حدس‬ ‫و‬ ‫ناامیدی‬ ، ‫زنده‬ ً‫ال‬‫کام‬ ‫محیط‬ ‫یک‬ ‫با‬
.
‫است‬ ‫عالی‬ ‫نیز‬ ‫ای‬ ‫حرفه‬ ‫کاربران‬ ‫برای‬
.
Juno
‫روی‬ ‫بر‬
Atom
‫مکان‬ ‫چندین‬ ‫مانند‬ ‫قدرت‬ ‫های‬ ‫ویژگی‬ ‫دارای‬ ‫و‬ ‫است‬ ‫زیبا‬ ‫ای‬ ‫چهره‬ ‫دارای‬ ‫همچنین‬ ‫و‬ ‫قدرتمند‬ ‫ویرایشگر‬ ‫یک‬ ‫که‬ ‫معنی‬ ‫این‬ ‫به‬ ، ‫است‬ ‫شده‬ ‫ساخته‬
‫کلید‬ ‫صفحه‬ ‫و‬ ‫فازی‬ ‫های‬ ‫فایل‬ ‫یافتن‬ ، ‫نما‬
Vim
‫است‬
.
‫است‬ ‫ها‬‫داده‬ ‫آماری‬ ‫تحلیل‬ ‫و‬ ‫کاوی‬ ‫داده‬ ‫برای‬ ‫تعاملی‬ ‫و‬ ‫سورس‬ ‫اپن‬ ‫پلتفرمی‬
.
‫معادالت‬ ،‫کد‬ ‫سورس‬ ‫حاوی‬ ‫است‬ ‫ممکن‬ ‫که‬ ‫را‬ ‫خود‬ ‫نظر‬ ‫مد‬ ‫مستندات‬ ‫تا‬ ‫دهد‬‫می‬ ‫قرار‬ ‫نویسان‬ ‫برنامه‬ ‫اختیار‬ ‫در‬ ‫را‬ ‫امکانی‬ ‫اپلیکیشن‬ ‫وب‬ ‫این‬
‫بگذارند‬ ‫اشتراک‬ ‫به‬ ‫هاب‬ ‫گیت‬ ‫و‬ ‫دراپباکس‬ ،‫ایمیل‬ ‫طریق‬ ‫از‬ ‫کاربران‬ ‫سایر‬ ‫با‬ ‫و‬ ‫کرده‬ ‫ایجاد‬ ‫را‬ ‫باشند‬ ‫متن‬ ‫و‬ ‫آمار‬ ‫نمایش‬ ،‫ریاضیاتی‬
.
Jupyter
Click to edit Master title style
2121
‫زبان‬ ‫سینتکس‬
Click to edit Master title style
22
22
‫گزاری‬ ‫کامنت‬
‫خط‬ ‫یک‬ ‫برای‬
:
# Single line comment
‫خط‬ ‫چند‬ ‫برای‬
:
#= Multi line comments =#
‫کنسول‬ ‫در‬ ‫چیزی‬ ‫چاپ‬ ‫برای‬
:
julia> for i in 1:3
print("hi")
end
Hihihi
------------------------------------------------
julia> for i in 1:3
println("hi")
end
hi
hi
hi
‫عدد‬ ‫به‬ ‫رشته‬ ‫تبدیل‬
# parsing the string to integer
print(typeof(parse(Int64, a)))
julia> a="2"
"2"
julia> print(typeof(parse(Int64, a)))
Int64
j
Click to edit Master title style
23
‫ها‬ ‫متغیر‬
Click to edit Master title style
24
‫تعریف‬
:
‫کنید‬ ‫ذخیره‬ ‫بعدی‬ ‫های‬ ‫استفاده‬ ‫برای‬ ‫را‬ ‫مقداری‬ ‫باشد‬ ‫الزم‬ ‫که‬ ‫است‬ ‫مفید‬ ‫هنگامی‬ ‫و‬ ‫است‬ ‫مقدار‬ ‫یک‬ ‫با‬ ‫مرتبط‬ ‫نام‬ ‫یک‬ ‫حقیقت‬ ‫در‬ ،‫متغیر‬ ‫یک‬
.
24
julia> δ = 0.00001
1.0e-5
julia> 안녕하세요 = "Hello"
"Hello"
‫کاراک‬ ‫تمام‬ ‫از‬ ‫توان‬ ‫می‬ ‫ها‬ ‫متغیر‬ ‫گذاری‬ ‫نام‬ ‫برای‬
‫تر‬
‫یونیکد‬ ‫های‬
( UTF-8)
‫کرد‬ ‫استفاده‬
:
julia> x = 1.0
1.0
julia> y = -3
-3
julia> Z = "My string"
"My string“
julia> customary_phrase = "Hello world!"
"Hello world!"
‫منعطف‬ ‫بسیار‬ ‫ها‬ ‫متغیر‬ ‫گذاری‬ ‫نام‬ ‫برای‬ ‫جولیا‬ ‫قواعد‬
‫هستند‬
.
‫بزرگ‬ ‫و‬ ‫کوچک‬ ‫حروف‬ ‫به‬ ‫حساس‬ ‫ها‬ ‫متغیر‬ ‫نام‬
‫نیست‬
.
Click to edit Master title style
25
25
‫یک‬ ‫تایپ‬ ‫با‬ ‫توانید‬ ‫می‬
Backslash
‫نام‬ ‫سپس‬ ‫و‬
LaTeX
‫یک‬
‫فشردن‬ ‫و‬ ‫نماد‬
Tab
‫کنید‬ ‫تایپ‬ ‫را‬ ‫ریاضی‬ ‫های‬ ‫نماد‬
.
α "alpha“
γ "gamma"
π "pi"
‫ها‬ ‫متغیر‬ ‫برای‬ ‫مجاز‬ ‫اسامی‬
‫حرف‬ ‫یک‬ ‫با‬ ‫باید‬ ‫ها‬ ‫متغیر‬ ‫اسامی‬
(a-z,A-Z)
‫یا‬
_
‫بزرگت‬ ‫یونیکد‬ ‫های‬ ‫کاراکتر‬ ‫مجموعه‬ ‫یا‬
‫ر‬
‫از‬
00
A0
‫شود‬ ‫آغار‬
.
‫شامل‬ ‫توانند‬ ‫می‬ ‫اسم‬ ‫حروف‬ ‫باقی‬
!
‫باشد‬ ‫یونیکد‬ ‫های‬ ‫کاراکتر‬ ‫دیگر‬ ‫و‬ ‫ارقام‬ ‫و‬
.
‫از‬
keyword
‫کرد‬ ‫استفاده‬ ‫متغیر‬ ‫نام‬ ‫عنوان‬ ‫به‬ ‫تواند‬ ‫نمی‬
:
julia> else = false
ERROR: syntax: unexpected "else“
julia> try = "No“
ERROR: syntax: unexpected "="
Click to edit Master title style
26
26
‫ن‬ ‫های‬ ‫برنامه‬ ‫شدن‬ ‫استاندارد‬ ‫و‬ ‫یکدست‬ ‫منظور‬ ‫به‬ ‫است‬ ‫بهتر‬ ،‫ندارد‬ ‫ها‬ ‫متغیر‬ ‫نام‬ ‫مورد‬ ‫در‬ ‫چندانی‬ ‫گیری‬ ‫سخت‬ ‫جولیا‬ ‫اینکه‬ ‫رغم‬ ‫علی‬
‫شده‬ ‫وشته‬
‫کنید‬ ‫تبعیت‬ ‫زیر‬ ‫های‬ ‫قرارداد‬ ‫و‬ ‫قواعد‬ ‫از‬ ‫ها‬ ‫آن‬ ‫گذاری‬ ‫نام‬ ‫در‬
:
‫باشد‬ ‫کوچک‬ ‫حروف‬ ‫با‬ ‫ها‬ ‫متغیر‬ ‫نام‬
.
‫با‬ ‫تواند‬ ‫می‬ ‫کلمات‬ ‫جداسازی‬
_
‫نباشد‬ ‫خوانا‬ ‫متغیر‬ ‫نام‬ ‫آن‬ ‫بدون‬ ‫اینکه‬ ‫مگر‬ ‫کرد‬ ‫اجتناب‬ ‫آن‬ ‫از‬ ‫استفاده‬ ‫از‬ ‫است‬ ‫بهتر‬ ‫اما‬ ،‫شود‬ ‫انجام‬
.
‫نام‬
Type
‫و‬ ‫ها‬
Module
‫از‬ ‫استفاده‬ ‫جای‬ ‫به‬ ‫و‬ ‫شده‬ ‫آغاز‬ ‫بزرگ‬ ‫حرف‬ ‫یک‬ ‫با‬ ‫باید‬ ‫ها‬
_
‫شیوه‬ ‫به‬ ‫کلمات‬ ‫جداسازی‬
Camel Case
‫شود‬ ‫انجام‬
.
‫بدون‬ ‫و‬ ‫کوچک‬ ‫حروف‬ ‫از‬ ‫متشکل‬ ‫باید‬ ‫ها‬ ‫ماکرو‬ ‫و‬ ‫توابع‬ ‫نام‬
_
‫باشد‬
.
‫با‬ ‫باید‬ ‫کنند‬ ‫می‬ ‫عوض‬ ‫را‬ ‫خود‬ ‫ورودی‬ ‫که‬ ‫توابعی‬ ‫نام‬
!
‫یابد‬ ‫پایان‬
.
‫اوقات‬ ‫گاهی‬ ‫توابع‬ ‫این‬
mutating
‫یا‬ ‫و‬
in-place
‫عالوه‬ ‫که‬ ‫چرا‬ ‫شوند‬ ‫می‬ ‫نامیده‬
‫کنند‬ ‫می‬ ‫عوض‬ ‫هم‬ ‫را‬ ‫خود‬ ‫های‬ ‫ورودی‬ ،‫مقدار‬ ‫یک‬ ‫بازگرداندن‬ ‫بر‬
.
‫گذاری‬ ‫نام‬ ‫های‬ ‫قرارداد‬
Pkg.add("TensorFlow")
Click to edit Master title style
27
Data type ‫داده‬ ‫انواع‬
1. Scalar type (‫اسکالر‬ ‫)انواع‬
Int64, Float64, Char (e.g. x = 'a'), String (e.g. x="abc") and Bool -
1. Strings
2. Arrays (lists)
3. Tuples
4. NamedTuple
5. Dictionaries
6. Sets
Click to edit Master title style
28
28
‫برای‬
char
‫برای‬ ‫و‬ ‫کوتیشن‬ ‫سینگل‬ ‫از‬
string
‫میکنیم‬ ‫استفاده‬ ‫کوتیشن‬ ‫دابل‬ ‫از‬
‫ها‬ ‫رشته‬
julia> split("helo world")
2-element Vector{SubString{String}}:
"helo"
"world"
------------------
join([s1,s2], "")
-------------------------
julia> replace("plz toSearch me", "toSearch" => "toReplace")
"plz toReplace me“
---------------------------------
Concat ‫کردن‬ ‫متصل‬ ‫یا‬
2
‫رشته‬
:
julia> print("S"*"eee")
Seee
julia> print(2*"eee")
ERROR: MethodError: no method matching *(::Int64, ::String)
Int
‫و‬
float
‫کرد‬ ‫تبدیل‬ ‫رشته‬ ‫به‬ ‫نمیتوان‬ ‫را‬
Click to edit Master title style
29
29
‫باشد‬ ‫آسان‬ ‫آنها‬ ‫به‬ ‫دسترسی‬ ‫و‬ ‫بوده‬ ‫مجموعه‬ ‫یک‬ ‫به‬ ‫متعلق‬ ‫که‬ ‫نماییم‬ ‫ذخیره‬ ‫ای‬ ‫گونه‬ ‫به‬ ‫را‬ ‫ها‬ ‫داده‬ ‫از‬ ‫تعدادی‬ ‫است‬ ‫الزم‬ ‫گاهی‬
.
‫آرایه‬
‫باشند‬ ‫بعدی‬ ‫چند‬ ‫توانند‬ ‫می‬ ‫ها‬
.
‫آرایه‬ ‫ایجاد‬ ‫مختلف‬ ‫های‬ ‫راه‬
:
‫ها‬ ‫آرایه‬
‫خالی‬ ‫آرایه‬ ‫ایجاد‬ ‫برای‬
:
a = []
‫آن‬ ‫در‬ ‫که‬ ‫آرایه‬ ‫یک‬ ‫ایجاد‬ ‫برای‬
5
‫باشد‬ ‫صفر‬ ‫المنت‬
:
a=zeros(5)
‫بعدی‬ ‫یک‬ ‫آرایه‬
:
a = [1;2;3] or a=[1,2,3]
3-element Vector{Int64}
‫داشت‬ ‫را‬ ‫ها‬ ‫داده‬ ‫مختلف‬ ‫انواع‬ ‫توان‬ ‫می‬ ‫ها‬ ‫آرایه‬ ‫در‬
x = [10, "foo", false]
‫کنید‬ ‫اولیه‬ ‫دهی‬ ‫مقدار‬ ‫ها‬ ‫دامنه‬ ‫و‬ ‫مقادیر‬ ‫از‬ ‫ترکیبی‬ ‫با‬ ‫را‬ ‫آرایه‬ ‫یک‬ ‫توانید‬ ‫می‬
y=[2015; 2025 : 2030; 2100]
‫یا‬
y=vcat(2015, 2025:2030, 2100)
Click to edit Master title style
3030
‫بعدی‬ ‫دو‬ ‫های‬ ‫ارایه‬
‫را‬
matrix
‫کنیم‬ ‫تعریف‬ ‫توانیم‬ ‫می‬ ‫صورت‬ ‫دو‬ ‫به‬ ‫و‬ ‫میگویم‬
:
a = [[1,2,3] [4,5,6]]
julia> hcat(3, 2)
1×2 Matrix{Int64}:
3 2
-----------------------------
a = [1 4; 2 5; 3 6]
vcat((2,3),(4,8))
2-element Vector{Tuple{Int64,
Int64}}:
(2, 3)
(4, 8)
----------------

3×2 Matrix{Int64}:
1 4
2 5
3 6
‫کنید‬ ‫دقت‬ ‫ها‬ ‫تفاوت‬ ‫این‬ ‫به‬
:
a = [[1,2,3],[4,5,6]]
‫با‬ ‫بعدی‬ ‫یک‬ ‫آرایه‬ ‫یک‬
2
‫باشند‬ ‫بردارمی‬ ‫یک‬ ‫کدام‬ ‫هر‬ ‫که‬ ‫است‬ ‫المان‬
a = [[1,2,3] [4,5,6]]
‫ارایه‬ ‫یک‬
2
‫است‬ ‫بعدی‬
(
‫با‬ ‫ماتریس‬ ‫یک‬ ‫یا‬
2
‫ستون‬
)
‫که‬
3
‫دارد‬ ‫المان‬
Click to edit Master title style
3131
‫دارند‬ ‫مختلفی‬ ‫های‬ ‫متد‬ ‫بعدی‬ ‫چند‬ ‫های‬ ‫ارایه‬
:
Ndims(s)
:
‫تابع‬ ‫اسم‬
ndim
‫مخفف‬
number of dimensions
‫است‬
‫تعداد‬ ‫معنی‬ ‫به‬
‫ابعاد‬
(e.g. 2 for a Matrix)
Length(A)
:
‫ارایه‬ ‫در‬ ‫ها‬ ‫المان‬ ‫تعداد‬
Eltype(A)
:
‫میگوید‬ ‫را‬ ‫ها‬ ‫المان‬ ‫نوع‬
A = [5, 10, 15, 20]
julia> ndims(A)
1
julia> length(A)
4
julia> eltype(A)
Int64
--------------
julia> a=[2,"s"]
2-element Vector{Any}:
2
"s"
julia> eltype(a)
Any
Click to edit Master title style
3232
‫توابع‬
‫کار‬
‫با‬
‫آرایه‬
push!(a,b)
‫تابع‬ ‫مثل‬
append
‫کند‬ ‫می‬ ‫عمل‬ ‫پایتون‬
.
Append!(a,b)
‫اگر‬
b
‫مقدار‬ ‫یک‬
scalar
‫باشد‬
push!
‫و‬
append!
‫است‬ ‫یکسان‬
.
‫توجه‬
‫شود‬ ‫می‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫لیست‬ ‫صورت‬ ‫به‬ ‫رشته‬ ‫یک‬ ‫که‬ ‫باشید‬ ‫داشته‬
!
‫تابع‬ ‫همانند‬
Extend
‫است‬ ‫پایتون‬
.
Pop!(a)
:
‫کند‬ ‫می‬ ‫حذف‬ ‫اخر‬ ‫از‬ ‫را‬ ‫المان‬
‫میگرداند‬ ‫بر‬ ‫را‬ ‫اول‬ ‫المان‬:popfirst!(a)
:
‫کند‬ ‫می‬ ‫حذف‬ ‫دلخواه‬ ‫موقعیت‬ ‫در‬ ‫را‬ ‫عنصر‬ ‫یک‬ deleteat!(a, pos)
:
‫میکند‬ ‫اضافه‬ ‫ارایه‬ ‫اول‬ ‫به‬ ‫را‬ ‫المان‬ pushfirst!(a,b)
‫کند‬ ‫می‬ ‫مرتب‬ ‫را‬ ‫ارایه‬
. :sort(a)
‫کند‬ ‫می‬ ‫برعکس‬ ‫را‬ ‫آرایه‬
. :a[end:-1:1]
julia> a=[1,2,3]
julia> push!(a,4)
4-element Vector{Int64}:
1
2
3
4
julia> pushfirst!(a,10)
4-element Vector{Int64}:
10
1
2
3
julia> append!(a,"a,b")
7-element Vector{Int64}:
1
2
3
97
44
98
Click to edit Master title style
3333
Tuples
# Creating an empty tuple
tupl1 = ()
println(isempty(tupl1))
# Creating a tuple with similar values
tupl2 = (1, 2, 4, 5)
tupl2 = 1, 2, 4, 5
println(tupl2)
# Creating a tuple with mixed values
tupl3 = (1, 2, 3, "Hello Geeks")
println(tupl3(
‫ک‬ ‫زمانی‬ ‫برای‬ ‫کنید‬ ‫متغیرانتصاب‬ ‫دو‬ ‫به‬ ‫را‬ ‫ها‬ ‫تاپل‬ ‫توانید‬ ‫می‬
‫ه‬
‫بر‬ ‫را‬ ‫مختلفی‬ ‫های‬ ‫مقدار‬ ‫که‬ ‫تابعی‬ ‫از‬ ‫را‬ ‫ها‬ ‫داده‬ ‫میخواهید‬
‫کنید‬ ‫آوری‬ ‫جمع‬ ‫میگرداند‬
var1, var2 = (x,y)
‫هستند‬ ‫تغییر‬ ‫قابل‬ ‫غیر‬ ‫برنامه‬ ‫روند‬ ‫در‬ ‫که‬ ‫ها‬ ‫داده‬ ‫از‬ ‫لیستی‬ ‫یک‬ ‫خواهید‬ ‫می‬ ‫اگر‬
‫کنید‬ ‫استفاده‬ ‫ها‬ ‫تاپل‬ ‫از‬ ‫باشید‬ ‫داشته‬
Click to edit Master title style
3434
NamedTuples
NamedTuple
‫نوعی‬
Tuple
‫محل‬ ‫در‬ ‫توان‬ ‫می‬ ‫را‬ ‫عناصر‬ ‫که‬ ‫است‬
‫نیز‬ ‫مقدار‬ ‫یک‬ ‫نام‬ ‫با‬ ‫بلکه‬ ، ‫آن‬ ‫شاخص‬ ‫مقدار‬ ‫با‬ ‫تنها‬ ‫نه‬ ‫حافظه‬
‫کرد‬ ‫فراخوانی‬
.
‫در‬ ‫مقدار‬ ‫هر‬
NamedTuple
‫به‬ ‫منحصر‬ ‫مقدار‬ ‫یک‬ ‫با‬
‫شد‬ ‫نوشته‬ ‫مقدار‬ ‫آن‬ ‫برای‬ ‫نمادی‬ ‫عنوان‬ ‫به‬ ‫که‬ ‫شود‬ ‫می‬ ‫داده‬ ‫نشان‬ ‫فرد‬
‫ه‬
‫است‬
.
Tuple_name = (name1 = value, name2 = value2, ....)
# Creating an empty tuple
tupl1 = ()
println(isempty(tupl1))
# Creating a NamedTuple with mixed values
tupl3 = (a = 1, b = 2, c = "Hello Geeks")
julia> println(tupl3[2])
2
Click to edit Master title style
3535
‫ها‬ ‫دیکشنری‬
‫جفت‬ ‫صورت‬ ‫به‬ ‫آن‬ ‫متناظر‬ ‫مقدار‬ ‫به‬ ‫را‬ ‫است‬ ‫کلید‬ ‫یک‬ ‫دارای‬ ‫که‬ ‫عنصر‬ ‫یک‬ ‫توانیم‬ ‫می‬ ‫ها‬ ‫دیکشنری‬ ‫در‬
«
‫کلید‬
:
‫مقدار‬
»
‫دهی‬ ‫نگاشت‬
‫م‬
.
‫در‬
‫هستند‬ ‫نیز‬ ‫تکرار‬ ‫قابل‬ ‫و‬ ‫باشند‬ ‫ای‬‫داده‬ ‫نوع‬ ‫هر‬ ‫از‬ ‫توانند‬‫می‬ ‫مقادیر‬ ‫که‬ ‫حالی‬
‫تغییر‬ ‫قابل‬ ‫غیر‬ ‫نوع‬ ‫یک‬ ‫از‬ ‫باید‬ ‫کلیدها‬ ،
(
‫با‬ ‫تاپل‬ ‫یا‬ ‫عدد‬ ،‫رشته‬
‫تغییر‬ ‫قابل‬ ‫غیر‬ ‫عنصر‬
)
‫باشند‬ ‫یکتا‬ ‫و‬
.
Dictionary_name = Dict(“key1” => value1, “key2” =>
value2, …)
‫دیتا‬ ‫از‬ ‫خالی‬ ‫دیکشنری‬ ‫یک‬ ‫تعریف‬
:
mydict = Dict()
julia> Dict2 = Dict("a" => 1, "b" => 2, "c" => 3)
Dict{String, Int64} with 3 entries:
"c" => 3
"b" => 2
"a" => 1
Click to edit Master title style
36
‫بین‬ ‫تفاوت‬
dictinary
‫و‬
NamedTuple
36
Namedtuple
‫قابل‬ ‫غیر‬ ‫های‬ ‫داده‬ ‫هابرای‬
‫است‬ ‫پذیر‬ ‫تغییر‬ ‫های‬ ‫داده‬ ‫برای‬ ‫ها‬ ‫دیکشنری‬ ‫ولی‬ ‫است‬ ‫تغییر‬
.
‫ه‬ ‫دیکشنری‬
‫که‬ ‫حالی‬ ‫در‬ ‫شود‬ ‫ذخیره‬ ‫آن‬ ‫در‬ ‫ها‬ ‫داده‬ ‫از‬ ‫مختلفی‬ ‫انواع‬ ‫اگر‬ ‫هستند‬ ‫ناپایدار‬ ‫ا‬
namedtyple
‫می‬ ‫پایدار‬ ‫هم‬ ‫شرایط‬ ‫این‬ ‫با‬ ‫ها‬
‫مانند‬
.
d = Dict(:k1=>"v1", :k2=>2) # Dict{Symbol,Any}
nt = (k1="v1", k2=2,)# NamedTuple{(:k1, :k2),Tuple{String,Int64}}
Click to edit Master title style
37
‫ها‬ ‫دیکشنری‬ ‫با‬ ‫کار‬ ‫برای‬ ‫مفید‬ ‫تابع‬ ‫تا‬ ‫چند‬
:
37
a = Dict("a"=>1, "b"=>2, "c"=>3);
julia> haskey(a,"b")
True
julia> delete!(a,"a")
Dict{String, Int64} with 2 entries:
"c" => 3
"b" => 2
‫دیفالت‬ ‫مقدار‬ ‫نبود‬ ‫اگر‬ ‫و‬ ‫گرداند‬ ‫برمی‬ ‫را‬ ‫کلید‬ ‫خود‬ ‫بود‬ ‫دیکشنری‬ ‫در‬ ‫کلید‬ ‫اگر‬
‫را‬
get!(collection, key, default)
julia> D = Dict("a"=>5, "b"=>10, "c"=>15);
julia> println(getkey(D, "a", 1))
a
julia> println(getkey(D, "e", 5))
5
‫دیکشنر‬ ‫به‬ ‫مقدار‬ ‫و‬ ‫کلید‬ ‫جفت‬ ‫یک‬ ‫کردن‬ ‫اضافه‬
mydict[akey] = avalue
julia> D = Dict("a"=>5, "b"=>10, "c"=>15);
julia> D["d"]=2
2
julia> D
Dict{String, Int64} with 4 entries:
"c" => 15
"b" => 10
"a" => 5
"d" => 2
Click to edit Master title style
3838
‫و‬ ‫مرتب‬ ‫غیر‬ ‫مقادیر‬ ‫از‬ ‫هایی‬ ‫مجموعه‬ ‫نمایش‬ ‫برای‬ ‫ها‬ ‫مجموعه‬ ‫از‬
‫شود‬ ‫می‬ ‫استفاده‬ ‫فرد‬ ‫به‬ ‫منحصر‬
.
Sets
# Creating an empty set
Set1 = Set()
println("Empty Set: ", Set1)
# Creating a set with Integer values
Set2 = Set([1, 2, 3, 4, 5, 2, 4, 6])
println(Set2)
# Creating a set with mixed datatypes
Set3 = Set([1, 2, 3, "Hello",
"Geeks"])
println(Set3)
Click to edit Master title style
39
‫توابع‬
Click to edit Master title style
40
‫آرگومان‬ ‫مقادیر‬ ‫از‬ ‫زیادی‬ ‫تعداد‬ ‫که‬ ‫است‬ ‫شی‬ ‫یک‬ ‫تابع‬ ‫یک‬ ، ‫جولیا‬ ‫در‬
‫کند‬ ‫می‬ ‫ترسیم‬ ‫بازگشتی‬ ‫مقدار‬ ‫یک‬ ‫به‬ ‫را‬
.
40
julia> function f(x,y)
x + y
end
---
julia> f(x,y) = x + y
# f (generic function with 1 method)
julia> f(2,3)
5
julia> g = f;
julia> g(2,3)
5
F
‫دیگری‬ ‫مقدار‬ ‫به‬ ‫تواند‬ ‫می‬ ‫و‬ ، ‫دارد‬ ‫اشاره‬ ‫تابع‬ ‫شی‬ ‫به‬ ، ‫پرانتز‬ ‫بدون‬
‫شود‬ ‫داده‬ ‫ارجاع‬
:
‫کرد‬ ‫استفاده‬ ‫توابع‬ ‫نام‬ ‫عنوان‬ ‫به‬ ‫توان‬ ‫می‬ ‫هم‬ ‫ها‬ ‫یونیکد‬ ‫از‬
julia> ∑(x,y) = x + y
∑ (generic function with 1 method)
julia> ∑(2, 3)
5
Click to edit Master title style
41
‫جریان‬ ‫کنترل‬ ‫برای‬ ‫را‬ ‫مختلفی‬ ‫های‬ ‫ساختار‬ ‫جولیا‬
‫دهد‬ ‫می‬ ‫ارائه‬ ‫برنامه‬
•
‫ترکیبی‬ ‫عبارات‬
(compound expressions)
•
‫شرطی‬ ‫دستورات‬
•
‫ای‬ ‫زنجیره‬ ‫های‬ ‫مقایسه‬ ‫و‬ ‫منطقی‬ ‫عملیات‬
•
‫ها‬ ‫حلقه‬
•
‫خطاها‬ ‫کنترل‬
Click to edit Master title style
42
42
‫دارد‬ ‫خودش‬ ‫در‬ ‫ترتیبی‬ ‫و‬ ‫نظم‬ ‫با‬ ‫را‬ ‫عبارت‬ ‫چندین‬ ‫که‬ ‫باشیم‬ ‫داشته‬ ‫عبارت‬ ‫یک‬ ‫توانیم‬ ‫می‬ ‫کار‬ ‫راحتی‬ ‫برای‬
‫کنیم‬ ‫جدا‬ ‫را‬ ‫ها‬ ‫آن‬ ‫ویرگول‬ ‫نقطه‬ ‫با‬ ‫باید‬ ‫بنویسیم‬ ‫خط‬ ‫یک‬ ‫توی‬ ‫بخواهیم‬ ‫را‬ ‫عبارات‬ ‫اگر‬
.
julia> z = begin
x = 1
y = 2
x + y
end
3
--------
julia> z = (x = 1; y = 2; x + y)
3
julia> begin x = 1; y = 2; x + y end
3
------
julia> (x = 1; y = 2; x + y)
3
‫ترکیبی‬ ‫عبارات‬
Click to edit Master title style
4343
‫ها‬ ‫آن‬ ‫بولی‬ ‫مقدار‬ ‫اساس‬ ‫بر‬ ‫کد‬ ‫از‬ ‫هایی‬ ‫بخش‬ ‫تا‬ ‫دهد‬ ‫می‬ ‫اجازه‬ ‫شرطی‬ ‫ساختار‬
,
‫نشود‬ ‫ارزیابی‬ ‫یا‬ ‫شود‬ ‫ارزیابی‬
.
if x < y
println("x is less than y")
elseif x > y
println("x is greater than y")
else
println("x is equal to y")
end
a ? b : c
julia> x = 1; y = 2;
julia> println(x < y ? "less than" : "not less than")
less than
‫شرطی‬ ‫دستورات‬
‫تایی‬ ‫سه‬ ‫شرطی‬ ‫عملگر‬
:
‫عبارات‬ ‫این‬
3
‫به‬ ‫شبیه‬ ‫بسیار‬ ‫عملوندی‬
‫دستور‬
if
‫کنند‬ ‫می‬ ‫عمل‬
Click to edit Master title style
44
44
‫برای‬ ‫زبان‬ ‫این‬ ‫در‬
AND
‫عملگر‬
&&
‫که‬ ‫است‬ ‫صورت‬ ‫این‬ ‫به‬ ‫که‬ ‫داریم‬ ‫را‬
a && b
،
‫اگر‬
a
‫و‬
b
‫جفتشان‬
true
‫بود‬
true
‫در‬ ‫و‬
‫غیراینصورت‬
false
‫شود‬‫می‬
.
‫برای‬ ‫همچنین‬
OR
‫عملگر‬
||
‫که‬ ‫است‬ ‫صورت‬ ‫این‬ ‫به‬ ‫که‬ ‫داریم‬ ‫را‬
a || b
،
‫اگر‬
a
‫و‬
b
‫کدام‬ ‫هیچ‬
true
‫نبودند‬
false
‫در‬ ‫و‬
‫غیراینصورت‬
true
‫شود‬‫می‬
.
julia> t(x) = (println(x); true)
t (generic function with 1 method)
julia> f(x) = (println(x); false)
f (generic function with 1 method)
julia> t(1) && t(2)
1
2
true
‫منطقی‬ ‫های‬ ‫عملگر‬
Click to edit Master title style
45
45
‫حلقه‬
while
‫داخل‬ ‫دستورات‬ ‫باشد‬ ‫برقرار‬ ‫شرط‬ ‫که‬ ‫زمانی‬ ‫تا‬
‫وقتی‬ ‫و‬ ‫کند‬ ‫می‬ ‫اجرا‬ ‫را‬ ‫حلقه‬
false
‫میاد‬ ‫بیرون‬ ‫حلقه‬ ‫از‬ ‫شد‬
.
julia> i = 1;
julia> while i <= 5
println(i)
global i += 1
end
1
2
3
4
5
‫حلقه‬
for
‫باشد‬ ‫برقرار‬ ‫شرط‬ ‫که‬ ‫زمانی‬ ‫تا‬ ‫دستورات‬ ‫تکرار‬ ‫برای‬
.
‫دستور‬ ‫به‬ ‫اگر‬ ‫حلقه‬ ‫یک‬ ‫در‬
break
‫شویم‬‫می‬ ‫خارج‬ ‫حلقه‬ ‫از‬ ‫برسیم‬
julia> for j = 1:1000
println(j)
if j >= 5
Break
end
end
1
2
3
4
5
‫حلقه‬
while
julia> for s ∈ ["foo","bar","baz"]
println(s)
end
foo
bar
baz
Click to edit Master title style
46
46
•
‫وقتی‬
‫که‬
‫برنامه‬
‫شما‬
‫در‬
‫اثر‬
‫رخ‬
‫دادن‬
Exception
‫متوقف‬
‫شود‬
‫کدهای‬
‫باقی‬
‫مانده‬
‫در‬
‫برنامه‬
‫نمی‬
‫توانند‬
‫اجرا‬
‫شوند‬
.
•
‫اگر‬
‫ما‬
‫بخواهیم‬
‫مدیریت‬
‫کنیم‬
‫این‬
‫خطاها‬
‫رو‬
‫ا‬‫ال‬‫او‬
‫باید‬
‫از‬
‫متوق‬
‫ف‬
‫شدن‬
‫برنامه‬
‫جلوگیری‬
‫کنیم‬
‫بعد‬
‫برای‬
‫حل‬
‫این‬
‫مشکل‬
،
‫عملیا‬
‫ت‬
‫الزم‬
‫را‬
‫انجام‬
‫دهیم‬
.
•
‫برای‬
‫این‬
‫کار‬
‫و‬
‫جلوگیری‬
‫از‬
‫خطاهای‬
‫زمان‬
‫اجرا‬
‫از‬
‫دستور‬
try
catch
‫استفاده‬
‫می‬
‫کنیم‬
.
•
‫قسمت‬
‫هایی‬
‫را‬
‫که‬
‫احتمال‬
‫می‬
‫دهیم‬
‫که‬
‫خطایی‬
‫رخ‬
‫بده‬
‫را‬
‫در‬
‫بلوک‬
try
‫می‬
‫نویسیم‬
.
•
‫روند‬
‫مدیریت‬
‫کردن‬
‫خطاهای‬
try
‫در‬
‫بلوک‬
‫های‬
catch
‫صورت‬
‫می‬
‫گیرد‬
.
•
‫ی‬
‫ک‬
‫بلوک‬
‫دیگری‬
‫وجود‬
‫دارد‬
‫که‬
‫آن‬
Finally
‫می‬
‫باشد‬
.
‫چه‬
‫خطا‬
‫رخ‬
‫بده‬
‫چه‬
‫رخ‬
‫ندهد‬
‫این‬
‫بلوک‬
‫اجرا‬
‫می‬
‫شود‬
Try { // ‫شوند‬ ‫می‬ ‫خطا‬ ‫باعث‬ ‫که‬ ‫دستوراتی‬. }
Catch( the symbol as a neme for exception)
{ // ‫شوند‬ ‫اجرا‬ ‫باید‬ ‫خطا‬ ‫بروز‬ ‫از‬ ‫بعد‬ ‫که‬ ‫دستوراتی‬. }
julia> try sqrt("ten")
catch e
println("You should have entered a numeric value")
end
You should have entered a numeric value
-----
f = open("file")
try # operate on file f
finally close(f)
end
‫خطا‬ ‫کنترل‬
Error Handeling
Click to edit Master title style
4747
‫ها‬ ‫کتابخانه‬
‫و‬ ‫کرده‬ ‫باز‬ ‫رو‬ ‫جولیا‬ ‫کنسول‬ ‫باید‬ ‫ای‬ ‫کتابخانه‬ ‫هر‬ ‫نصب‬ ‫برای‬
"
]
"
‫هر‬ ‫سپس‬ ‫کنیم‬ ‫تایپ‬ ‫را‬
‫با‬ ‫را‬ ‫میخواهیم‬ ‫که‬ ‫پکیجی‬
add
‫کنیم‬ ‫می‬ ‫اضافه‬
.
(@v1.6) pkg> add flux
julia> VERSION
v"1.6.1"
Click to edit Master title style
48
‫عمیق‬ ‫یادگیری‬ ‫برای‬ ‫ای‬ ‫کتابخانه‬
: Flux.jl
48
‫سازندگان‬ ‫کنید‬ ‫کار‬ ‫ها‬ ‫الیه‬ ‫و‬ ‫ها‬ ‫مدل‬ ‫و‬ ‫عصبی‬ ‫های‬ ‫شبکه‬ ‫با‬ ‫میخواهید‬ ‫اگر‬
‫دهند‬ ‫می‬ ‫پیشنهاد‬ ‫شما‬ ‫به‬ ‫را‬ ‫فالکس‬ ‫جولیا‬
.
‫ج‬ ‫در‬ ‫جولیا‬ ‫زبان‬ ‫های‬ ‫توانایی‬ ‫تمام‬ ‫از‬ ‫دهد‬ ‫می‬ ‫را‬ ‫امکان‬ ‫این‬ ‫شما‬ ‫به‬ ‫اما‬ ، ‫است‬ ‫شده‬ ‫تعبیه‬ ‫مفید‬ ‫ابزارهای‬ ‫از‬ ‫بسیاری‬ ‫فالکس‬ ‫در‬
‫ایی‬
‫کنید‬ ‫استفاده‬ ‫دارید‬ ‫نیاز‬ ‫که‬
.
‫کنیم‬ ‫می‬ ‫دنبال‬ ‫را‬ ‫اساسی‬ ‫اصل‬ ‫چند‬ ‫ما‬
:
•
‫بدیهی‬ ‫کار‬ ‫انجام‬
.
Flux
‫دارای‬
API
‫مانند‬ ‫هایی‬ ‫ویژگی‬ ‫برای‬ ‫مشخصی‬ ‫ا‬‫ا‬‫صریح‬
regularisation
‫یا‬
embeddings
‫است‬
.
‫دهد‬ ‫می‬ ‫جواب‬ ‫هم‬ ‫ریاضی‬ ‫فرم‬ ‫نوشتن‬ ، ‫درعوض‬
-
‫است‬ ‫سریع‬ ‫و‬
.
•
‫بنویسید‬ ‫را‬ ‫فالکس‬ ‫میتوانید‬ ‫هم‬ ‫خودتان‬ ‫شما‬
.
‫از‬ ، ‫موارد‬ ‫این‬ ‫همه‬
LSTM
‫های‬ ‫هسته‬ ‫تا‬ ‫گرفته‬ ‫ها‬
GPU
،
‫جولیا‬ ‫ی‬ ‫ساده‬ ‫کدهای‬
‫هستند‬
.
‫کنید‬ ‫مراجعه‬ ‫منبع‬ ‫به‬ ‫که‬ ‫است‬ ‫الزم‬ ، ‫دارید‬ ‫شک‬ ‫اگر‬
.
‫آن‬ ‫های‬ ‫کد‬ ‫توانید‬ ‫می‬ ، ‫دارید‬ ‫نیاز‬ ‫تری‬ ‫متفاوت‬ ‫چیز‬ ‫به‬ ‫اگر‬
‫ایجاد‬ ‫را‬
‫کنید‬ ‫اضافه‬ ‫و‬
.
•
‫کنید‬ ‫بازی‬ ‫خوب‬ ‫دیگران‬ ‫با‬
.
Flux
‫به‬ ‫دیفرانسیل‬ ‫معادالت‬ ‫های‬ ‫کننده‬ ‫حل‬ ‫تا‬ ‫تصاویر‬ ‫و‬ ‫ها‬ ‫فریم‬ ‫دیتا‬ ‫از‬ ‫جولیا‬ ‫های‬ ‫کتابخانه‬ ‫با‬
‫خوبی‬
‫های‬ ‫مدل‬ ‫که‬ ‫کنید‬ ‫ایجاد‬ ‫را‬ ‫ای‬ ‫پیچیده‬ ‫های‬ ‫داده‬ ‫پردازش‬ ‫لوله‬ ‫خطوط‬ ‫راحتی‬ ‫به‬ ‫توانید‬ ‫می‬ ‫بنابراین‬ ، ‫کند‬ ‫می‬ ‫کار‬
Flux
‫ادغام‬ ‫را‬
‫کند‬
.
Click to edit Master title style
49
TensorFlow.jl
49
«
‫تنسورفلو‬
»
(
TensorFlow)
،
‫و‬ ‫رایگان‬ ‫کتابخانه‬ ‫یک‬
«
‫باز‬‫متن‬
»
(
Open Source)
‫برای‬
«
‫داده‬ ‫جریان‬ ‫نویسی‬‫برنامه‬
»
(
Dataflow Programming)
‫و‬
«
‫متمایزگر‬ ‫نویسی‬‫برنامه‬
»
(
Differentiable Programming)
،
‫است‬ ‫وظایف‬ ‫از‬ ‫وسیعی‬ ‫طیف‬ ‫انجام‬ ‫جهت‬
.
‫برای‬ ‫ای‬‫کتابخانه‬ ،‫تنسورفلو‬
«
‫نمادین‬ ‫ریاضیات‬
»
(
Symbolic Math)
‫در‬ ‫گوناگونی‬ ‫کاربردهای‬ ‫و‬ ‫شود‬‫می‬ ‫محسوب‬
«
‫ماشین‬ ‫یادگیری‬
»
(
Machine Learning)
‫به‬ ‫توان‬‫می‬ ‫جمله‬ ‫آن‬ ‫از‬ ‫که‬ ‫دارد‬
‫سازی‬‫پیاده‬
«
‫عصبی‬ ‫های‬‫شبکه‬
»
(
Neural Networks)
‫کرد‬ ‫اشاره‬
.
‫تیم‬ ‫توسط‬ ‫کتابخانه‬ ‫این‬
«
‫برین‬ ‫گوگل‬
»
(
Google Brain)
،
‫گوگل‬ ‫داخلی‬ ‫مصارف‬ ‫برای‬
‫سال‬ ‫نوامبر‬ ‫نهم‬ ‫در‬ ‫ولی‬ ‫بود؛‬ ‫شده‬ ‫داده‬ ‫توسعه‬
۲۰۱۵
‫گواهینامه‬ ‫با‬
«
‫آپاچی‬
۲.۰
‫باز‬‫متن‬
»
‫شد‬ ‫منتشر‬
.
‫هم‬ ‫گوگل‬ ‫در‬ ،‫تنسورفلو‬ ‫کتابخانه‬ ،‫حاضر‬ ‫حال‬ ‫در‬
‫گیرد‬‫می‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫عملیاتی‬ ‫های‬‫پروژه‬ ‫هم‬ ‫و‬ ‫تحقیقاتی‬ ‫های‬‫پروژه‬ ‫برای‬
.
‫دارای‬ ‫تنسورفلو‬ ‫کتابخانه‬
«
‫ثالث‬ ‫شخص‬ ‫های‬‫بسته‬
»
Third Party Packages
‫برای‬
Julia
،
R
،
Scala
،
Crystal
‫است‬
.
Click to edit Master title style
50
50
‫پروژه‬
‫سازی‬ ‫پیاده‬
Linear Regression
‫در‬
Julia
Click to edit Master title style
51
‫مسئله‬ ‫توضیح‬
51
‫کنیم‬ ‫سازی‬ ‫پیاده‬ ‫پیشبینی‬ ‫برای‬ ‫را‬ ‫ماشین‬ ‫یادگیری‬ ‫کارآمد‬ ‫اما‬ ‫ساده‬ ‫های‬ ‫مدل‬ ‫از‬ ‫یکی‬ ‫خواهیم‬ ‫می‬ ‫پروژه‬ ‫این‬ ‫در‬
.
‫کانگ‬ ‫اطالعات‬ ‫حاوی‬ ‫دیتاست‬ ‫یک‬ ‫از‬
‫های‬ ‫ورو‬
‫کنیم‬ ‫می‬ ‫استفاده‬ ‫خاکستری‬
.
‫ستون‬ ‫دو‬ ‫حاوی‬ ‫ها‬ ‫داده‬ ‫این‬
X
‫و‬
Y
‫است‬
.
‫متر‬ ‫میلی‬ ‫به‬ ‫ها‬ ‫کانگورو‬ ‫بینی‬ ‫عرض‬ ‫و‬ ‫طول‬ ‫ی‬‫دهنده‬ ‫نشان‬ ‫ترتیب‬ ‫به‬ ‫متغیر‬ ‫دو‬ ‫این‬
‫هستند‬
.
‫برای‬ ‫مذکور‬ ‫های‬ ‫داده‬ ‫حاوی‬ ‫فایل‬ ‫این‬
۴۵
‫است‬ ‫کانگورو‬
.
‫ما‬ ‫هدف‬
‫بین‬ ‫خطی‬ ‫ی‬‫رابطه‬ ‫یک‬ ‫کشف‬
Y
‫و‬
X
‫است‬
.
‫بینی‬ ‫عرض‬ ‫توانیم‬ ‫می‬ ‫رابطه‬ ‫این‬ ‫کشف‬ ‫با‬
‫کنیم‬ ‫پیشبینی‬ ‫طولش‬ ‫اساس‬ ‫بر‬ ‫را‬ ‫ها‬ ‫کانگورو‬ ‫این‬
.
‫اصال‬ ‫که‬ ‫است‬ ‫این‬ ‫شود‬ ‫می‬ ‫مطرح‬ ‫که‬ ‫پرسشی‬ ‫اولین‬
Linear Regression
‫این‬ ‫به‬ ‫پاسخ‬ ‫برای‬ ‫است؟‬ ‫استفاده‬ ‫قابل‬ ‫ها‬ ‫داده‬ ‫این‬ ‫برای‬
‫بین‬ ‫خطی‬ ‫ای‬ ‫رابطه‬ ‫آیا‬ ‫که‬ ‫کنیم‬ ‫بررسی‬ ‫است‬ ‫الزم‬ ‫پرسش‬
X
‫و‬
Y
‫نه‬ ‫یا‬ ‫دارد‬ ‫وجود‬
.
‫نمودار‬ ‫رسم‬ ‫موضوع‬ ‫این‬ ‫بررسی‬ ‫برای‬ ‫روش‬ ‫یک‬
‫پراکندگی‬
X
‫و‬
Y
‫است‬
.
‫قالب‬ ‫در‬ ‫را‬ ‫آن‬ ‫آسانتر‬ ‫استفاده‬ ‫برای‬ ‫و‬ ‫دانلود‬ ‫را‬ ‫دیتاست‬ ‫ابتدا‬
csv
‫میکنیم‬ ‫ذخیره‬
.
‫های‬ ‫پکیج‬ ‫از‬ ‫یکی‬
Julia
‫که‬
‫کند‬ ‫می‬ ‫تسهیل‬ ‫را‬ ‫ها‬ ‫داده‬ ‫با‬ ‫کار‬
DataFrames
‫است‬
.
‫نوع‬ ‫از‬ ‫که‬ ‫دیتاست‬ ‫فایل‬ ‫خواندن‬ ‫برای‬ ‫همچنین‬
CSV
‫پکیج‬ ‫از‬ ‫است‬
CSV
‫استفاده‬
‫کنیم‬ ‫می‬
.
‫میکنیم‬ ‫نصب‬ ‫را‬ ‫ها‬ ‫پکیج‬ ‫این‬ ‫ابتدا‬
:
‫خطی‬ ‫ی‬‫رابطه‬ ‫یک‬ ‫وجود‬ ‫بررسی‬
using Pkg
Pkg.add("DataFrames")
Pkg.add("CSV")
Click to edit Master title style
52
‫پکیج‬ ‫از‬ ‫استفاده‬ ‫با‬
CSV
‫کنیم‬ ‫می‬ ‫فراخوانی‬ ‫را‬ ‫دیتاست‬ ‫فایل‬
:
52
using CSV
data = CSV.read(“gray_kangaro.csv“,DataFrame)
‫از‬ ‫توانیم‬ ‫می‬ ‫دیتاست‬ ‫این‬ ‫های‬ ‫ستون‬ ‫به‬ ‫دسترسی‬ ‫برای‬
data.X
‫یا‬
data.Y
‫آرایه‬ ‫نوع‬ ‫از‬ ‫ها‬ ‫آن‬ ‫خروجی‬ ‫که‬ ‫کنیم‬ ‫استفاده‬
‫زبان‬ ‫های‬
Julia
‫است‬
.
‫برای‬
‫نمودار‬ ‫رسم‬
‫در‬
Julia
‫پکیج‬ ‫از‬ ‫میتوانیم‬
Plots
‫کنیم‬ ‫استفاده‬
.
‫دیگر‬ ‫پکیج‬ ‫تعدادی‬ ‫از‬ ‫پکیج‬ ‫این‬
‫به‬
‫عنوان‬
Backend
‫کند‬ ‫استفاده‬ ‫نمودار‬ ‫رسم‬ ‫برای‬
.
‫و‬ ‫پکیج‬ ‫این‬ ‫ابتدا‬
pyplot
‫عنوان‬ ‫به‬ ‫را‬
Backend
‫نصب‬ ‫نمودار‬ ‫رسم‬ ‫برای‬
‫کنیم‬ ‫می‬
:
Pkg.add("Plots")
Pkg.add("PyPlot")
Click to edit Master title style
53
‫و‬ ‫فراخوانی‬ ‫را‬ ‫پکیج‬ ‫این‬ ‫اکنون‬
plotly
‫بعنوان‬ ‫را‬
Backend
‫میکنیم‬ ‫انتخاب‬ ‫نمودار‬ ‫رسم‬
:
53
using Plots
pyplot(size = (300,300), legend = false)
‫تابع‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫اکنون‬
scatter
‫پراکندگی‬ ‫نمودار‬
X
‫و‬
Y
‫میکنیم‬ ‫رسم‬ ‫را‬
:
scatter(data.X, data.Y)
‫بین‬ ‫ی‬‫رابطه‬ ‫کردن‬ ‫مدل‬ ‫گفت‬ ‫توان‬ ‫می‬ ‫شکل‬ ‫این‬ ‫از‬
X
‫و‬
Y
‫و‬ ‫نیست‬ ‫غیرمنطقی‬
‫کنیم‬ ‫رسم‬ ‫را‬ ‫ها‬ ‫نقطه‬ ‫خط‬ ‫یک‬ ‫صورت‬ ‫به‬ ‫توانیم‬ ‫می‬
.
Click to edit Master title style
54
‫ضرایب‬ ‫محاسبه‬
Linear Regression
54
‫بین‬ ‫ی‬‫رابطه‬ ‫رسیدیم‬ ‫نتیجه‬ ‫این‬ ‫به‬ ‫که‬ ‫اکنون‬
X
‫و‬
Y
‫را‬ ‫خط‬ ‫این‬ ‫بایستی‬ ،‫بزیم‬ ‫تخمین‬ ‫خط‬ ‫یک‬ ‫با‬ ‫را‬
‫آوریم‬ ‫بدست‬
.
‫است‬ ‫خط‬ ‫این‬ ‫های‬ ‫پارامتر‬ ‫محاسبه‬ ‫ما‬ ‫هدف‬ ‫دیگر‬ ‫عبارت‬ ‫به‬
.
y~p1x+p2
‫کنیم‬ ‫بیان‬ ‫ماتریسی‬ ‫ی‬‫معادله‬ ‫یه‬ ‫قالب‬ ‫در‬ ‫را‬ ‫مسئله‬ ‫این‬ ‫توانیم‬ ‫می‬
:
‫کنیم‬ ‫می‬ ‫گذاری‬ ‫نام‬ ‫صورت‬ ‫بدین‬ ‫اختصار‬ ‫به‬ ‫را‬ ‫باال‬ ‫های‬ ‫ماتریس‬
:
Ap=y
‫بردار‬ ‫که‬
p
‫میکنیم‬ ‫محاسبه‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫را‬
:
Click to edit Master title style
55
‫ماتریس‬ ‫ابتدا‬
A
‫کنیم‬ ‫می‬ ‫محاسبه‬ ‫را‬
.
‫ماتریس‬ ‫این‬ ‫اول‬ ‫ستون‬
1
‫است‬
.
‫تابع‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میتوانیم‬
hcat
‫بردار‬ ‫یک‬
1
‫با‬
6
‫ماتریس‬ ‫به‬ ‫افقی‬ ‫صورت‬ ‫به‬ ‫را‬ ‫عنصر‬
data.X
‫الحاق‬
‫کنیم‬
55
‫کتابخانه‬ ‫از‬ ‫ماتریس‬ ‫وارون‬ ‫و‬ ‫ترانهاده‬ ‫ی‬‫محاسبه‬ ‫برای‬
LinearAlgebra
‫کنیم‬ ‫می‬ ‫استفاده‬
.
‫از‬ ‫جزیی‬ ‫هم‬ ‫کتابخانه‬ ‫این‬
Standard Library
‫جولیا‬ ‫زبان‬
‫است‬
.
A = hcat(ones(length(data.X), 1), data.X)
using LinearAlgebra
AT = transpose(A)
p = inv(AT*A)*AT*data.Y
‫بردار‬ ،‫کد‬ ‫این‬ ‫اجرای‬ ‫از‬ ‫بعد‬
p
‫آید‬ ‫می‬ ‫بدست‬ ‫زیر‬ ‫صورت‬ ‫به‬
:
2-element Vector{Float64}:
11.945698879433053
0.3559903951470271
Click to edit Master title style
56
‫آمده‬ ‫بدست‬ ‫خط‬ ‫رسم‬
‫کنیم‬ ‫رسم‬ ‫را‬ ‫آن‬ ‫توانیم‬ ‫می‬ ،‫آوردیم‬ ‫بدست‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫خط‬ ‫های‬ ‫پارامتر‬ ‫که‬ ‫حال‬
.
‫که‬ ‫کنید‬ ‫توجه‬
Ap
‫های‬ ‫داده‬ ‫برای‬ ‫مدل‬ ‫این‬ ‫توسط‬ ‫شده‬ ‫بینی‬ ‫پیش‬ ‫مقادیر‬ ‫ی‬‫دهنده‬ ‫نشان‬
‫است‬ ‫دیتاست‬
.
‫تابع‬ ‫از‬ ‫خط‬ ‫رسم‬ ‫برای‬ ‫توانیم‬ ‫می‬
plot
‫کنیم‬ ‫استفاده‬
.
‫رسم‬ ‫نو‬ ‫از‬ ‫را‬ ‫نمودار‬ ‫تابع‬ ‫این‬ ‫اما‬
‫کند‬ ‫می‬
.
‫تابع‬ ‫از‬ ‫توانیم‬ ‫می‬ ‫آن‬ ‫جای‬ ‫به‬
plot!
‫کنیم‬ ‫استفاده‬
.
‫کند‬ ‫می‬ ‫رسم‬ ‫قبلی‬ ‫نمودار‬ ‫روی‬ ‫بر‬ ‫را‬ ‫نمودار‬ ‫تابع‬ ‫این‬
.
56
scatter(data.X, data.Y)
plot!(data.X, A*p)
julia> println(A*p)
[228.74384952397259,
235.8636574269131,
232.65974387058986,
212.72428174235634,
241.55950374926556,
187.44896368691744]
Click to edit Master title style
57
‫منابع‬
57
https://julialang.org/downloads/
https://www.julia-vscode.org/docs/dev/gettingstarted/
https://julialang.org/blog/2012/02/why-we-created-julia/
https://faradars.org/courses/fvjla9805-julia-programming-language
https://fa.wikipedia.org/wiki/%D8%AC%D9%88%D9%84%DB%8C%D8%A7
https://programming.tosinso.com/fa/articles/41920/%D8%AC%D9%88%D9%84%DB%8C%D8%A7-
%DA%86%DB%8C%D8%B3%D8%AA%D8%9F-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-
%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-
%D9%86%D9%88%DB%8C%D8%B3%DB%8C-Julia
https://www.zoomit.ir/tech/286282-julia-next-big-programming-language/
https://www.youtube.com/watch?v=n2MwJ1guGVQ
https://syl1.gitbook.io/julia-language-a-concise-tutorial/
https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-wanted
https://juliair.github.io/examples/linear-regression.html
https://www.geeksforgeeks.org/namedtuple-in-
julia/#:~:text=NamedTuple%20is%20a%20type%20of,a%20symbol%20for%20that%20value.
Click to edit Master title style
58

More Related Content

Similar to زبان برنامه نویسی جولیا

Java how to_program 1
Java how to_program 1Java how to_program 1
Java how to_program 1
M Nemati
 
اچ تی ام ال 5 و ویژگی های آن
اچ تی ام ال 5 و ویژگی های آناچ تی ام ال 5 و ویژگی های آن
اچ تی ام ال 5 و ویژگی های آن
Ali Ghaeni
 

Similar to زبان برنامه نویسی جولیا (20)

مقدمه ای بر F#
مقدمه ای بر F#مقدمه ای بر F#
مقدمه ای بر F#
 
About Programming - persion.pptx
About Programming - persion.pptxAbout Programming - persion.pptx
About Programming - persion.pptx
 
Java programming languages
Java programming languagesJava programming languages
Java programming languages
 
Java how to_program 1
Java how to_program 1Java how to_program 1
Java how to_program 1
 
اچ تی ام ال 5 و ویژگی های آن
اچ تی ام ال 5 و ویژگی های آناچ تی ام ال 5 و ویژگی های آن
اچ تی ام ال 5 و ویژگی های آن
 
News
NewsNews
News
 
مهاجرت به متن باز در شرکت توزیع برق مشهد
مهاجرت به متن باز در شرکت توزیع برق مشهدمهاجرت به متن باز در شرکت توزیع برق مشهد
مهاجرت به متن باز در شرکت توزیع برق مشهد
 
IranOUG_Oracle_Multitenant
IranOUG_Oracle_MultitenantIranOUG_Oracle_Multitenant
IranOUG_Oracle_Multitenant
 
introduction to Web 2.0
introduction to Web 2.0 introduction to Web 2.0
introduction to Web 2.0
 
OpenGL
OpenGLOpenGL
OpenGL
 
Machine & Assembly Language - Chapter 1
Machine & Assembly Language - Chapter 1Machine & Assembly Language - Chapter 1
Machine & Assembly Language - Chapter 1
 
چرا نود.جی اس؟
چرا نود.جی اس؟چرا نود.جی اس؟
چرا نود.جی اس؟
 
طرح چارچوب متن باز تولید نرم افزار
طرح چارچوب  متن باز تولید نرم افزار طرح چارچوب  متن باز تولید نرم افزار
طرح چارچوب متن باز تولید نرم افزار
 
نگاهی کوتاه به 8 سرویس وبلاگدهی برتر ایرانی
نگاهی کوتاه به 8 سرویس وبلاگدهی برتر ایرانینگاهی کوتاه به 8 سرویس وبلاگدهی برتر ایرانی
نگاهی کوتاه به 8 سرویس وبلاگدهی برتر ایرانی
 
Lug
LugLug
Lug
 
لیبره‌آفیس
لیبره‌آفیسلیبره‌آفیس
لیبره‌آفیس
 
لیبره‌آفیس
لیبره‌آفیسلیبره‌آفیس
لیبره‌آفیس
 
Java script
Java scriptJava script
Java script
 
ویژگی های HTML5
ویژگی های HTML5ویژگی های HTML5
ویژگی های HTML5
 
لیبره‌آفیس
لیبره‌آفیسلیبره‌آفیس
لیبره‌آفیس
 

زبان برنامه نویسی جولیا

  • 1. Click to edit Master title style 1 (julia) ‫برنامه‬ ‫زبان‬ ‫نویسی‬ ‫جولیا‬
  • 2. Click to edit Master title style 2 2 .1 ‫جولیا‬ ‫زبان‬ ‫معرفی‬ ‫و‬ ‫تاریخچه‬ .2 ‫کاربرد‬ .3 ‫معایب‬ ‫و‬ ‫مزایا‬ .4 ‫زبان‬ ‫های‬ ‫ویژگی‬ .5 ‫کلی‬ ‫آمار‬ .6 ‫نصب‬ ‫و‬ ‫دانلود‬ .7 ‫ها‬ ‫ادیتور‬ ‫معرفی‬ .8 ‫سینتکس‬ • ‫متغیر‬ • ‫داده‬ ‫انواع‬ • ‫توابع‬ • Flow control ( ‫برنامه‬ ‫جریان‬ ‫کنترل‬ ‫برای‬ ‫هایی‬ ‫ساختار‬ ) .9 ‫ها‬ ‫کتابخانه‬ .10 ‫پروژه‬ .11 ‫منابع‬ ‫مطالب‬ ‫فهرست‬ :
  • 3. Click to edit Master title style 3 3 ‫جولیا‬ ‫زبان‬ ‫معرفی‬ ‫و‬ ‫تاریخچه‬
  • 4. Click to edit Master title style 4 ‫ماشین‬ ‫یادگیری‬ ‫مانند‬ ‫مباحثی‬ ،‫مرور‬ ‫به‬ ‫جدید‬ ‫هزاره‬ ‫از‬ (Machine Learning) ‫عمیق‬ ‫یادگیری‬ ‫و‬ (Deep Learning) ‫شد‬ ‫مطرح‬ ‫جدی‬ ‫طور‬ ‫به‬ . ‫زبان‬ ‫مثل‬ ‫هایی‬ : Python, R, MATLAB ‫مانند‬ ‫دالیلی‬ ‫به‬ ‫که‬ : ‫کتابخ‬ ‫و‬ ‫توابع‬ ‫وجود‬ ‫و‬ ‫باال‬ ‫بسیار‬ ‫آماری‬ ‫و‬ ‫تحلیلی‬ ‫قدرت‬ ،‫استفاده‬ ‫در‬ ‫راحتی‬ ،‫پویایی‬ ‫آماده‬ ‫های‬ ‫انه‬ ‫کردند‬ ‫باز‬ ‫جا‬ ‫کاربران‬ ‫میان‬ ‫در‬ ‫مرور‬ ‫به‬ ،‫زیاد‬ . ‫از‬ ‫ها‬ ‫زبان‬ ‫این‬ ‫رویه‬ ‫بی‬ ‫استفاده‬ ‫آن‬ ‫و‬ ‫داشت‬ ‫وجود‬ ‫بزرگی‬ ‫خال‬ ‫همچنان‬ ‫اما‬ RAM ‫زمان‬ ‫مدت‬ ‫و‬ ‫کامپیوتر‬ ‫اجرا‬ ‫باالی‬ ‫بسیار‬ ( ‫باال‬ ‫اطالعات‬ ‫حجم‬ ‫در‬ ‫خصوص‬ ‫به‬ ) ‫بود‬ ، . ‫مانند‬ ‫هایی‬ ‫زبان‬ ‫از‬ ‫استفاده‬ ‫طرفی‬ ‫از‬ Java ‫و‬ ++ C ‫به‬ ‫زنی‬ ‫کد‬ ‫در‬ ‫پایین‬ ‫سرعت‬ ‫دلیل‬ ‫به‬ ‫نبود‬ ‫میسر‬ ‫چندان‬ ،‫آن‬ ‫بودن‬ ‫سخت‬ ‫علت‬ . ‫سال‬ ‫در‬ ۲۰۰۹ ‫دانشگاه‬ ‫در‬ ‫نفر‬ ‫چهار‬ MIT ‫کردند‬ ‫توصیف‬ ‫اینگونه‬ ‫را‬ ‫آن‬ ‫و‬ ‫اختراع‬ ‫را‬ ‫نویسی‬ ‫برنامه‬ ‫زبان‬ ‫یک‬ " : ‫پویایی‬ Ruby ، ‫سینتکس‬ Python ، ‫محاسباتی‬ ‫قدرت‬ R ‫و‬ MATLAB ‫سرعت‬ ‫و‬ C ‫اند‬ ‫شده‬ ‫جمع‬ ‫جولیا‬ ‫زبان‬ ‫در‬ ". ‫سال‬ ‫از‬ ‫جولیا‬ ‫نظیر‬ ‫بی‬ ‫رشد‬ ‫و‬ ‫جمله‬ ‫این‬ ۲۰۱۲ ‫زبان‬ ‫این‬ ‫روی‬ ‫پیش‬ ‫که‬ ‫است‬ ‫روشنی‬ ‫آینده‬ ‫بر‬ ‫گواه‬ ،‫شد‬ ‫منتشر‬ ‫اش‬ ‫نسخه‬ ‫اولین‬ ‫رسمی‬ ‫صورت‬ ‫به‬ ‫که‬ ‫است‬ . 4
  • 5. Click to edit Master title style 5 5 ‫ها‬ ‫کاربرد‬
  • 6. Click to edit Master title style 6 6 • ‫از‬ ‫استفاده‬ ‫امکان‬ ‫ویژگی‬ ‫این‬ ‫که‬ ‫کرد‬ ‫تقسیم‬ ‫مختلف‬ ‫های‬‫هسته‬ ‫بین‬ ‫را‬ ‫پردازشی‬ ‫وظایف‬ ‫آن‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫بتوان‬ ‫تا‬ ‫دارد‬ ‫را‬ ‫امکان‬ ‫این‬ ‫جولیا‬ ‫جو‬ ‫از‬ ‫لیا‬ ‫ماشین‬ ‫یادگیری‬ ‫ا‬ ‫سازی‬‫شبیه‬ ‫تا‬ ‫را‬ ‫بزرگ‬ ‫های‬‫بررایانه‬ ‫کند‬‫می‬ ‫فراهم‬ . • MIT ‫به‬ ‫موسوم‬ ‫نویسی‬‫برنامه‬ ‫های‬‫زبان‬ ‫باشگاه‬ ‫در‬ ‫نویسی‬‫برنامه‬ ‫زبان‬ ‫پویاترین‬ ‫باید‬ ‫را‬ ‫جولیا‬ ‫نویسی‬‫برنامه‬ ‫زبان‬ ‫که‬ ‫کرده‬ ‫اعالم‬ ‫پتافالپ‬ ‫خواند‬ . ‫زب‬ ‫از‬ ‫گروهی‬ ‫به‬ ‫پتافالپ‬ ‫باشگاه‬ ‫نویسی‬‫برنامه‬ ‫های‬‫ان‬ ‫کرد‬ ‫عبور‬ ‫ثانیه‬ ‫در‬ ‫فالپ‬ ‫پتا‬ ‫یک‬ ‫پردازشی‬ ‫قدرت‬ ‫از‬ ‫توان‬‫می‬ ‫ها‬‫آن‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫شود‬‫می‬ ‫اطالق‬ . ‫سازی‬‫شبیه‬ ‫به‬ ‫اقدام‬ ‫جولیا‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫محققان‬ ،‫شده‬‫ارائه‬ ‫اطالعات‬ ‫براساس‬ ۱۸۸ ‫و‬ ‫ستاره‬ ‫میلیون‬ ‫سوپرکامپیوتر‬ ‫در‬ ‫کهکشان‬ Cori ‫است‬ ‫جهان‬ ‫در‬ ‫قدرتمند‬ ‫ی‬‫ابررایانه‬ ‫دهمین‬ ‫که‬ ‫اند‬‫کرده‬ . ‫از‬ ‫کمتر‬ ‫در‬ ‫سازی‬‫شبیه‬ ‫این‬ ۱۵ ‫است‬ ‫شده‬ ‫انجام‬ ‫دقیقه‬ . ‫از‬ ‫بیش‬ ،‫سازی‬‫شبیه‬ ‫این‬ ‫در‬ ۶۵۰ ‫پردازشی‬ ‫ی‬‫هسته‬ ‫هزار‬ Knights Landing Xeon Phi ‫پردازشی‬ ‫قدرت‬ ‫آن‬ ‫ی‬‫نتیجه‬ ‫که‬ ،‫گرفته‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ۱.۵ ‫است‬ ‫بوده‬ ‫پتافالپس‬ . • ‫پرینترهای‬ ‫و‬ ‫خودران‬ ‫خودروهای‬ ‫در‬ ‫آن‬ ‫از‬ ‫استفاده‬ ‫به‬ ‫توان‬‫می‬ ‫جولیا‬ ‫کاربردهای‬ ‫دیگر‬ ‫ی‬‫جمله‬ ‫از‬ ‫بعدی‬ ‫سه‬ ‫یادگی‬ ،‫ژنتیک‬ ،‫افزوده‬ ‫واقعیت‬ ،‫باال‬ ‫دقت‬ ‫با‬ ‫پزشکی‬ ‫لوازم‬ ‫و‬ ‫پزشکی‬ ‫کنار‬ ‫در‬ ‫و‬ ‫ماشین‬ ‫ری‬ ‫کرد‬ ‫اشاره‬ ‫ریسک‬ ‫مدیریت‬ . • ‫مسیریابی‬ ‫بهبود‬ ،‫هواپیما‬ ‫برخورد‬ ‫از‬ ‫جلوگیری‬ ‫سیستم‬ ‫بعدی‬ ‫نسل‬ ‫ی‬‫توسعه‬ ‫به‬ ‫باید‬ ‫جولیا‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫یافته‬‫توسعه‬ ‫های‬‫سیستم‬ ‫ی‬‫جمله‬ ‫از‬ ‫اتوبوس‬ ‫س‬ ‫همچنین‬ ‫و‬ ‫بوستون‬ ‫مدارس‬ ‫و‬ ‫حرکتی‬ ‫یستم‬ ‫مسیریابی‬ ‫ربات‬ ‫کرد‬ ‫اشاره‬ . • ‫شامل‬ ‫که‬ ‫علمی‬ ‫مهم‬ ‫محاسبات‬ ‫برای‬ ‫توان‬ ‫می‬ ‫جولیا‬ ‫از‬ Big Data ‫کرد‬ ‫استفاده‬ ‫است‬ . • ‫کرد‬ ‫استفاده‬ ‫وب‬ ‫نویسی‬ ‫برنامه‬ ‫برای‬ ‫جولیا‬ ‫از‬ ‫توان‬ ‫می‬ ‫ها‬ ‫پکیج‬ ‫کمک‬ ‫با‬ . • ‫پشتیبانی‬ ‫کمک‬ ‫با‬ ARM ، ‫گرفت‬ ‫خواهد‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫اندرویدی‬ ‫هوشمند‬ ‫های‬ ‫تلفن‬ ‫در‬ ‫زودی‬ ‫به‬ ‫جولیا‬ . • .
  • 7. Click to edit Master title style 7 7 ‫معایب‬ ‫و‬ ‫مزایا‬
  • 8. Click to edit Master title style 8 8 ‫مزیت‬ : ‫موقع‬ ‫به‬ ‫گردآوری‬ ‫دلیل‬ ‫به‬ ‫جولیا‬ just-in-time (JIT) ‫است‬ ‫سریعتر‬ ‫پایتون‬ ‫با‬ ‫مقایسه‬ ‫در‬ . ‫است‬ ‫سازگار‬ ‫بسیار‬ ‫ریاضی‬ ‫محاسبات‬ ‫با‬ ‫جولیا‬ . ‫دهد‬ ‫می‬ ‫اختصاص‬ ‫پایتون‬ ‫مانند‬ ‫خودکار‬ ‫بصورت‬ ‫متغیرها‬ ‫به‬ ‫را‬ ‫حافظه‬ ‫جولیا‬ . ‫است‬ ‫استاتیک‬ ‫و‬ ‫پویا‬ ‫تایپ‬ ‫زبان‬ ‫از‬ ‫ترکیبی‬ ‫جولیا‬ . ‫معایب‬ : ‫عدد‬ ‫از‬ ‫ایندکس‬ ‫جولیا‬ ‫در‬ 1 ‫از‬ ‫که‬ ‫دیگر‬ ‫زبانهای‬ ‫خالف‬ ‫بر‬ ،،‫شود‬ ‫می‬ ‫شروع‬ 0 ‫شود‬ ‫می‬ ‫شروع‬ . ‫برنامه‬ ‫بعضی‬ ‫برای‬ ‫است‬ ‫ممکن‬ ‫این‬ ‫و‬ ‫ایندکس‬ ‫با‬ ‫چون‬ ‫باشد‬ ‫سخت‬ ‫نویسی‬ 0 ‫دارند‬ ‫کدنویسی‬ ‫به‬ ‫عادت‬ . ‫است‬ ‫جدید‬ ‫بسیار‬ ، ‫پایتون‬ ‫با‬ ‫مقایسه‬ ‫در‬ ، ‫جولیا‬ . ‫دهند‬ ‫می‬ ‫ترجیح‬ ‫جولیا‬ ‫به‬ ‫را‬ ‫پایتون‬ ‫هنوز‬ ‫مردم‬ ، ‫رو‬ ‫این‬ ‫از‬ . ‫دس‬ ‫قابل‬ ‫ردیفی‬ ‫صورت‬ ‫به‬ ‫پایتون‬ ‫های‬ ‫ماتریس‬ ‫که‬ ‫حالی‬ ‫در‬ ، ‫هستند‬ ‫دسترسی‬ ‫قابل‬ ‫ستونی‬ ‫صورت‬ ‫به‬ ‫جولیا‬ ‫در‬ ‫ها‬ ‫ماتریس‬ ‫هستند‬ ‫ترسی‬ . ‫ماتریس‬ ‫از‬ ‫عبور‬ ‫نحوه‬ ‫مورد‬ ‫در‬ ‫گیری‬ ‫تصمیم‬ ‫در‬ ‫تواند‬ ‫می‬ ‫این‬ - ‫حافظه‬ ‫در‬ ‫موثر‬ ‫طور‬ ‫به‬ - ‫کند‬ ‫ایجاد‬ ‫مشکل‬ . ‫جول‬ ‫در‬ ‫ها‬ ‫دیکشنری‬ ‫یا‬ ‫کند‬ ‫کندتر‬ ‫را‬ ‫اجرا‬ ‫مورد‬ ‫چندین‬ ‫در‬ ‫تواند‬ ‫می‬ ‫که‬ ، ‫شوند‬ ‫می‬ ‫هش‬ ‫پایتون‬ ‫در‬ ‫ها‬ ‫دیکشنری‬ ‫از‬ ‫متفاوت‬ .
  • 9. Click to edit Master title style 9 9 ‫جولیا‬ ‫زبان‬ ‫های‬‫ویژگی‬
  • 10. Click to edit Master title style 10 • ‫قدرتمندی‬ ‫عین‬ ‫در‬ ‫ساده‬ • ‫امکانات‬ ‫دارای‬ Meta-Programming ‫باشد‬ ‫می‬ ‫کمتر‬ ‫کد‬ ‫حجم‬ ‫با‬ ‫و‬ ‫سریعتر‬ ،‫بهتر‬ ‫اپلیکیشن‬ ‫طراحی‬ ‫معنای‬ ‫به‬ • ‫مختلف‬ ‫ورودی‬ ‫های‬ ‫پارامتر‬ ‫با‬ ‫تابع‬ ‫تعریف‬ ‫مکان‬ ( ‫باشد‬ ‫متفاوت‬ ‫آن‬ ‫های‬ ‫پارامتر‬ ‫هرکدام‬ ‫در‬ ‫که‬ ‫شود‬ ‫تعریف‬ ‫بار‬ ‫چندین‬ ‫تابع‬ ‫یک‬ ) • ‫باال‬ ‫عملکرد‬ ‫قدرت‬ • ‫زبان‬ ‫مانند‬ ‫لیسپ‬ ‫هومویکونیک‬ ‫تولید‬ ‫امکان‬ ‫که‬ ،‫روند‬‫می‬ ‫شمار‬‫به‬ ‫برنامه‬ ‫از‬ ‫هایی‬‫داده‬ ‫نیز‬ ‫برنامه‬ ‫کدهای‬ ‫که‬ ‫معنا‬ ‫این‬ ‫به‬ ،‫است‬ • ‫کدهای‬ ‫پویا‬ ‫نویسی‬‫برنامه‬ ‫دهد‬‫می‬ ‫نویس‬‫برنامه‬ ‫به‬ ‫را‬ . • ‫جولیا‬ ‫خود‬ ‫داخل‬ ‫در‬ ‫ها‬ ‫پکیج‬ ‫مدیریت‬ • ‫و‬ ‫پایتون‬ ‫توابع‬ ‫مستقیم‬ ‫فراخوانی‬ c • ‫قوی‬ ‫کنسول‬ ‫محیط‬ • ‫موازی‬ ‫های‬ ‫پردازش‬ ‫برای‬ ‫مناسب‬ • ‫سورس‬ ‫اپن‬ • ‫دیگر‬ ‫انواع‬ ‫و‬ ‫عددی‬ ‫های‬ ‫داده‬ ‫برای‬ ‫ترویج‬ ‫قابل‬ ‫و‬ ‫پذیر‬ ‫گسترش‬ ‫و‬ ‫زیبا‬ • ‫به‬ ‫که‬ ‫یونیکد‬ ‫از‬ ‫بخور‬ ‫بدرد‬ ‫پشتیبانی‬ UTF-8 ‫شود‬ ‫نمی‬ ‫محدود‬
  • 11. Click to edit Master title style 1111 ‫کلی‬ ‫آمار‬
  • 12. Click to edit Master title style 12 ‫ها‬ ‫زبان‬ ‫سایر‬ ‫با‬ ‫مقایسه‬ ‫در‬ ‫جولیا‬ ‫عملکرد‬ ‫الگور‬ ، ‫پی‬ ‫عدد‬ ‫مجموع‬ ، ‫صحیح‬ ‫عدد‬ ‫تجزیه‬ ، ‫ناچی‬ ‫فیبو‬ ‫دنباله‬ ‫محاسبه‬ ‫مثل‬ ‫هایی‬ ‫کد‬ ‫زیر‬ ‫جدول‬ ‫در‬ ‫یتم‬ ‫و‬ ‫سازی‬ ‫مرتب‬ ... ‫های‬ ‫زبان‬ ‫در‬ C, Fortran, Julia, Python, Matlab/Octave, R, JavaScript, Java, Lua, Go, Mathematica. ‫هر‬ ‫اجرای‬ ‫زمان‬ ‫که‬ ‫اند‬ ‫شده‬ ‫اجرا‬ ‫ای‬ ‫هسته‬ ‫تک‬ ‫یو‬ ‫پی‬ ‫سی‬ ‫با‬ ‫سیستم‬ ‫یک‬ ‫روی‬ ‫است‬ ‫عددی‬ ‫محاسبات‬ ‫در‬ ‫جولیا‬ ‫باالی‬ ‫قدرت‬ ‫کننده‬ ‫مشخص‬ ‫زیر‬ ‫جدول‬ ‫در‬ ‫زبان‬ ‫هر‬ ‫در‬ ‫کد‬ .
  • 13. Click to edit Master title style 1313 ‫نویسی‬ ‫برنامه‬ ‫برنامه‬ ‫های‬ ‫زبان‬ ‫ترین‬ ‫رایج‬
  • 14. Click to edit Master title style 14 ‫نویسان‬ ‫برنامه‬ ‫مندی‬ ‫عالقه‬ ‫درصد‬ 14
  • 15. Click to edit Master title style 15 ‫سال‬ ‫در‬ ‫درامدشان‬ ‫میزان‬ ‫حسب‬ ‫بر‬ ‫نویسی‬ ‫برنامه‬ ‫های‬ ‫زبان‬ 2020 15
  • 16. Click to edit Master title style 16 ‫جولیا‬ ‫پیشرفت‬ ‫سریع‬ ‫و‬ ‫صعودی‬ ‫سیر‬ 16 ‫بین‬ ‫جایی‬ ‫هنوز‬ ‫جولیا‬ ‫هرچند‬ ۱۰ ‫زبان‬ ‫دو‬ ‫اما‬ ،‫ندارد‬ ‫جهان‬ ‫محبوب‬ ‫نویسی‬‫برنامه‬ ‫بندی‬‫رده‬ RedMonk ‫و‬ TIOBE ‫را‬ ‫آن‬ ‫ک‬ ‫داده‬ ‫قرار‬ ‫نویسی‬‫برنامه‬ ‫های‬‫زبان‬ ‫جزو‬ ‫ه‬ ‫توسط‬ ‫باالیی‬ ‫بسیار‬ ‫سرعت‬ ‫با‬ ‫گرف‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫دهندگان‬‫توسعه‬ ‫ته‬ ‫یابد‬‫می‬ ‫گسترش‬ ‫آن‬ ‫از‬ ‫استفاده‬ ‫و‬ .
  • 17. Click to edit Master title style 1717 ‫نصب‬ ‫و‬ ‫دانلود‬
  • 18. Click to edit Master title style 1818 ‫سایت‬ ‫به‬ https://julialang.org/downloads/ ‫می‬ ‫مراجعه‬ ‫ر‬ ‫مربوطه‬ ‫نسخه‬ ‫خود‬ ‫سیستم‬ ‫معماری‬ ‫به‬ ‫توجه‬ ‫با‬ ‫و‬ ‫کنیم‬ ‫ا‬ ‫کنیم‬ ‫می‬ ‫دانلود‬ . ‫د‬ ‫های‬ ‫ادیتور‬ ‫یا‬ ‫جولیا‬ ‫خود‬ ‫کنسول‬ ‫از‬ ‫میتوانید‬ ‫سپس‬ ‫و‬ ‫یگری‬ ‫بشوید‬ ‫جولیا‬ ‫نویسی‬ ‫برنامه‬ ‫محیط‬ ‫وارد‬ ‫کد‬ ‫اس‬ ‫وی‬ ‫مثل‬ . ‫از‬ ‫اگر‬ vscode ‫اکستنشن‬ ‫توانید‬ ‫می‬ ‫کنید‬ ‫می‬ ‫استفاده‬ Julia ‫کنید‬ ‫استفاده‬ ‫آن‬ ‫امکاناتی‬ ‫از‬ ‫و‬ ‫کنید‬ ‫دانلود‬ ‫را‬ .
  • 19. Click to edit Master title style 1919 ‫جولیا‬ ‫نویسی‬ ‫برنامه‬ ‫زبان‬ ‫برای‬ ‫ها‬ ‫ادیتور‬ ‫معرفی‬ Juno Vs code Jupyter Emacs Vim Sublime text
  • 20. Click to edit Master title style 20 Juno 20 Juno ‫است‬ ‫جولیا‬ ‫زبان‬ ‫برای‬ ‫رایگان‬ ‫و‬ ‫قدرتمند‬ ‫محیط‬ ‫یک‬ . ‫برسند‬ ‫نتیجه‬ ‫به‬ ‫سریعتر‬ ‫و‬ ‫بسازند‬ ‫بهتری‬ ‫افزار‬ ‫نرم‬ ‫بیشتری‬ ‫سرعت‬ ‫با‬ ‫توانند‬ ‫می‬ ‫متخصص‬ ‫و‬ ‫مبتدی‬ ‫افراد‬ . ‫دارد‬ ‫قصد‬ ‫جونو‬ ‫دهد‬ ‫جلوه‬ ‫پویا‬ ‫و‬ ‫کننده‬ ‫سرگرم‬ ‫را‬ ‫آن‬ ‫و‬ ‫کرده‬ ‫خارج‬ ‫نویسی‬ ‫برنامه‬ ‫از‬ ‫را‬ ‫گمان‬ ‫و‬ ‫حدس‬ ‫و‬ ‫ناامیدی‬ ، ‫زنده‬ ً‫ال‬‫کام‬ ‫محیط‬ ‫یک‬ ‫با‬ . ‫است‬ ‫عالی‬ ‫نیز‬ ‫ای‬ ‫حرفه‬ ‫کاربران‬ ‫برای‬ . Juno ‫روی‬ ‫بر‬ Atom ‫مکان‬ ‫چندین‬ ‫مانند‬ ‫قدرت‬ ‫های‬ ‫ویژگی‬ ‫دارای‬ ‫و‬ ‫است‬ ‫زیبا‬ ‫ای‬ ‫چهره‬ ‫دارای‬ ‫همچنین‬ ‫و‬ ‫قدرتمند‬ ‫ویرایشگر‬ ‫یک‬ ‫که‬ ‫معنی‬ ‫این‬ ‫به‬ ، ‫است‬ ‫شده‬ ‫ساخته‬ ‫کلید‬ ‫صفحه‬ ‫و‬ ‫فازی‬ ‫های‬ ‫فایل‬ ‫یافتن‬ ، ‫نما‬ Vim ‫است‬ . ‫است‬ ‫ها‬‫داده‬ ‫آماری‬ ‫تحلیل‬ ‫و‬ ‫کاوی‬ ‫داده‬ ‫برای‬ ‫تعاملی‬ ‫و‬ ‫سورس‬ ‫اپن‬ ‫پلتفرمی‬ . ‫معادالت‬ ،‫کد‬ ‫سورس‬ ‫حاوی‬ ‫است‬ ‫ممکن‬ ‫که‬ ‫را‬ ‫خود‬ ‫نظر‬ ‫مد‬ ‫مستندات‬ ‫تا‬ ‫دهد‬‫می‬ ‫قرار‬ ‫نویسان‬ ‫برنامه‬ ‫اختیار‬ ‫در‬ ‫را‬ ‫امکانی‬ ‫اپلیکیشن‬ ‫وب‬ ‫این‬ ‫بگذارند‬ ‫اشتراک‬ ‫به‬ ‫هاب‬ ‫گیت‬ ‫و‬ ‫دراپباکس‬ ،‫ایمیل‬ ‫طریق‬ ‫از‬ ‫کاربران‬ ‫سایر‬ ‫با‬ ‫و‬ ‫کرده‬ ‫ایجاد‬ ‫را‬ ‫باشند‬ ‫متن‬ ‫و‬ ‫آمار‬ ‫نمایش‬ ،‫ریاضیاتی‬ . Jupyter
  • 21. Click to edit Master title style 2121 ‫زبان‬ ‫سینتکس‬
  • 22. Click to edit Master title style 22 22 ‫گزاری‬ ‫کامنت‬ ‫خط‬ ‫یک‬ ‫برای‬ : # Single line comment ‫خط‬ ‫چند‬ ‫برای‬ : #= Multi line comments =# ‫کنسول‬ ‫در‬ ‫چیزی‬ ‫چاپ‬ ‫برای‬ : julia> for i in 1:3 print("hi") end Hihihi ------------------------------------------------ julia> for i in 1:3 println("hi") end hi hi hi ‫عدد‬ ‫به‬ ‫رشته‬ ‫تبدیل‬ # parsing the string to integer print(typeof(parse(Int64, a))) julia> a="2" "2" julia> print(typeof(parse(Int64, a))) Int64 j
  • 23. Click to edit Master title style 23 ‫ها‬ ‫متغیر‬
  • 24. Click to edit Master title style 24 ‫تعریف‬ : ‫کنید‬ ‫ذخیره‬ ‫بعدی‬ ‫های‬ ‫استفاده‬ ‫برای‬ ‫را‬ ‫مقداری‬ ‫باشد‬ ‫الزم‬ ‫که‬ ‫است‬ ‫مفید‬ ‫هنگامی‬ ‫و‬ ‫است‬ ‫مقدار‬ ‫یک‬ ‫با‬ ‫مرتبط‬ ‫نام‬ ‫یک‬ ‫حقیقت‬ ‫در‬ ،‫متغیر‬ ‫یک‬ . 24 julia> δ = 0.00001 1.0e-5 julia> 안녕하세요 = "Hello" "Hello" ‫کاراک‬ ‫تمام‬ ‫از‬ ‫توان‬ ‫می‬ ‫ها‬ ‫متغیر‬ ‫گذاری‬ ‫نام‬ ‫برای‬ ‫تر‬ ‫یونیکد‬ ‫های‬ ( UTF-8) ‫کرد‬ ‫استفاده‬ : julia> x = 1.0 1.0 julia> y = -3 -3 julia> Z = "My string" "My string“ julia> customary_phrase = "Hello world!" "Hello world!" ‫منعطف‬ ‫بسیار‬ ‫ها‬ ‫متغیر‬ ‫گذاری‬ ‫نام‬ ‫برای‬ ‫جولیا‬ ‫قواعد‬ ‫هستند‬ . ‫بزرگ‬ ‫و‬ ‫کوچک‬ ‫حروف‬ ‫به‬ ‫حساس‬ ‫ها‬ ‫متغیر‬ ‫نام‬ ‫نیست‬ .
  • 25. Click to edit Master title style 25 25 ‫یک‬ ‫تایپ‬ ‫با‬ ‫توانید‬ ‫می‬ Backslash ‫نام‬ ‫سپس‬ ‫و‬ LaTeX ‫یک‬ ‫فشردن‬ ‫و‬ ‫نماد‬ Tab ‫کنید‬ ‫تایپ‬ ‫را‬ ‫ریاضی‬ ‫های‬ ‫نماد‬ . α "alpha“ γ "gamma" π "pi" ‫ها‬ ‫متغیر‬ ‫برای‬ ‫مجاز‬ ‫اسامی‬ ‫حرف‬ ‫یک‬ ‫با‬ ‫باید‬ ‫ها‬ ‫متغیر‬ ‫اسامی‬ (a-z,A-Z) ‫یا‬ _ ‫بزرگت‬ ‫یونیکد‬ ‫های‬ ‫کاراکتر‬ ‫مجموعه‬ ‫یا‬ ‫ر‬ ‫از‬ 00 A0 ‫شود‬ ‫آغار‬ . ‫شامل‬ ‫توانند‬ ‫می‬ ‫اسم‬ ‫حروف‬ ‫باقی‬ ! ‫باشد‬ ‫یونیکد‬ ‫های‬ ‫کاراکتر‬ ‫دیگر‬ ‫و‬ ‫ارقام‬ ‫و‬ . ‫از‬ keyword ‫کرد‬ ‫استفاده‬ ‫متغیر‬ ‫نام‬ ‫عنوان‬ ‫به‬ ‫تواند‬ ‫نمی‬ : julia> else = false ERROR: syntax: unexpected "else“ julia> try = "No“ ERROR: syntax: unexpected "="
  • 26. Click to edit Master title style 26 26 ‫ن‬ ‫های‬ ‫برنامه‬ ‫شدن‬ ‫استاندارد‬ ‫و‬ ‫یکدست‬ ‫منظور‬ ‫به‬ ‫است‬ ‫بهتر‬ ،‫ندارد‬ ‫ها‬ ‫متغیر‬ ‫نام‬ ‫مورد‬ ‫در‬ ‫چندانی‬ ‫گیری‬ ‫سخت‬ ‫جولیا‬ ‫اینکه‬ ‫رغم‬ ‫علی‬ ‫شده‬ ‫وشته‬ ‫کنید‬ ‫تبعیت‬ ‫زیر‬ ‫های‬ ‫قرارداد‬ ‫و‬ ‫قواعد‬ ‫از‬ ‫ها‬ ‫آن‬ ‫گذاری‬ ‫نام‬ ‫در‬ : ‫باشد‬ ‫کوچک‬ ‫حروف‬ ‫با‬ ‫ها‬ ‫متغیر‬ ‫نام‬ . ‫با‬ ‫تواند‬ ‫می‬ ‫کلمات‬ ‫جداسازی‬ _ ‫نباشد‬ ‫خوانا‬ ‫متغیر‬ ‫نام‬ ‫آن‬ ‫بدون‬ ‫اینکه‬ ‫مگر‬ ‫کرد‬ ‫اجتناب‬ ‫آن‬ ‫از‬ ‫استفاده‬ ‫از‬ ‫است‬ ‫بهتر‬ ‫اما‬ ،‫شود‬ ‫انجام‬ . ‫نام‬ Type ‫و‬ ‫ها‬ Module ‫از‬ ‫استفاده‬ ‫جای‬ ‫به‬ ‫و‬ ‫شده‬ ‫آغاز‬ ‫بزرگ‬ ‫حرف‬ ‫یک‬ ‫با‬ ‫باید‬ ‫ها‬ _ ‫شیوه‬ ‫به‬ ‫کلمات‬ ‫جداسازی‬ Camel Case ‫شود‬ ‫انجام‬ . ‫بدون‬ ‫و‬ ‫کوچک‬ ‫حروف‬ ‫از‬ ‫متشکل‬ ‫باید‬ ‫ها‬ ‫ماکرو‬ ‫و‬ ‫توابع‬ ‫نام‬ _ ‫باشد‬ . ‫با‬ ‫باید‬ ‫کنند‬ ‫می‬ ‫عوض‬ ‫را‬ ‫خود‬ ‫ورودی‬ ‫که‬ ‫توابعی‬ ‫نام‬ ! ‫یابد‬ ‫پایان‬ . ‫اوقات‬ ‫گاهی‬ ‫توابع‬ ‫این‬ mutating ‫یا‬ ‫و‬ in-place ‫عالوه‬ ‫که‬ ‫چرا‬ ‫شوند‬ ‫می‬ ‫نامیده‬ ‫کنند‬ ‫می‬ ‫عوض‬ ‫هم‬ ‫را‬ ‫خود‬ ‫های‬ ‫ورودی‬ ،‫مقدار‬ ‫یک‬ ‫بازگرداندن‬ ‫بر‬ . ‫گذاری‬ ‫نام‬ ‫های‬ ‫قرارداد‬ Pkg.add("TensorFlow")
  • 27. Click to edit Master title style 27 Data type ‫داده‬ ‫انواع‬ 1. Scalar type (‫اسکالر‬ ‫)انواع‬ Int64, Float64, Char (e.g. x = 'a'), String (e.g. x="abc") and Bool - 1. Strings 2. Arrays (lists) 3. Tuples 4. NamedTuple 5. Dictionaries 6. Sets
  • 28. Click to edit Master title style 28 28 ‫برای‬ char ‫برای‬ ‫و‬ ‫کوتیشن‬ ‫سینگل‬ ‫از‬ string ‫میکنیم‬ ‫استفاده‬ ‫کوتیشن‬ ‫دابل‬ ‫از‬ ‫ها‬ ‫رشته‬ julia> split("helo world") 2-element Vector{SubString{String}}: "helo" "world" ------------------ join([s1,s2], "") ------------------------- julia> replace("plz toSearch me", "toSearch" => "toReplace") "plz toReplace me“ --------------------------------- Concat ‫کردن‬ ‫متصل‬ ‫یا‬ 2 ‫رشته‬ : julia> print("S"*"eee") Seee julia> print(2*"eee") ERROR: MethodError: no method matching *(::Int64, ::String) Int ‫و‬ float ‫کرد‬ ‫تبدیل‬ ‫رشته‬ ‫به‬ ‫نمیتوان‬ ‫را‬
  • 29. Click to edit Master title style 29 29 ‫باشد‬ ‫آسان‬ ‫آنها‬ ‫به‬ ‫دسترسی‬ ‫و‬ ‫بوده‬ ‫مجموعه‬ ‫یک‬ ‫به‬ ‫متعلق‬ ‫که‬ ‫نماییم‬ ‫ذخیره‬ ‫ای‬ ‫گونه‬ ‫به‬ ‫را‬ ‫ها‬ ‫داده‬ ‫از‬ ‫تعدادی‬ ‫است‬ ‫الزم‬ ‫گاهی‬ . ‫آرایه‬ ‫باشند‬ ‫بعدی‬ ‫چند‬ ‫توانند‬ ‫می‬ ‫ها‬ . ‫آرایه‬ ‫ایجاد‬ ‫مختلف‬ ‫های‬ ‫راه‬ : ‫ها‬ ‫آرایه‬ ‫خالی‬ ‫آرایه‬ ‫ایجاد‬ ‫برای‬ : a = [] ‫آن‬ ‫در‬ ‫که‬ ‫آرایه‬ ‫یک‬ ‫ایجاد‬ ‫برای‬ 5 ‫باشد‬ ‫صفر‬ ‫المنت‬ : a=zeros(5) ‫بعدی‬ ‫یک‬ ‫آرایه‬ : a = [1;2;3] or a=[1,2,3] 3-element Vector{Int64} ‫داشت‬ ‫را‬ ‫ها‬ ‫داده‬ ‫مختلف‬ ‫انواع‬ ‫توان‬ ‫می‬ ‫ها‬ ‫آرایه‬ ‫در‬ x = [10, "foo", false] ‫کنید‬ ‫اولیه‬ ‫دهی‬ ‫مقدار‬ ‫ها‬ ‫دامنه‬ ‫و‬ ‫مقادیر‬ ‫از‬ ‫ترکیبی‬ ‫با‬ ‫را‬ ‫آرایه‬ ‫یک‬ ‫توانید‬ ‫می‬ y=[2015; 2025 : 2030; 2100] ‫یا‬ y=vcat(2015, 2025:2030, 2100)
  • 30. Click to edit Master title style 3030 ‫بعدی‬ ‫دو‬ ‫های‬ ‫ارایه‬ ‫را‬ matrix ‫کنیم‬ ‫تعریف‬ ‫توانیم‬ ‫می‬ ‫صورت‬ ‫دو‬ ‫به‬ ‫و‬ ‫میگویم‬ : a = [[1,2,3] [4,5,6]] julia> hcat(3, 2) 1×2 Matrix{Int64}: 3 2 ----------------------------- a = [1 4; 2 5; 3 6] vcat((2,3),(4,8)) 2-element Vector{Tuple{Int64, Int64}}: (2, 3) (4, 8) ----------------  3×2 Matrix{Int64}: 1 4 2 5 3 6 ‫کنید‬ ‫دقت‬ ‫ها‬ ‫تفاوت‬ ‫این‬ ‫به‬ : a = [[1,2,3],[4,5,6]] ‫با‬ ‫بعدی‬ ‫یک‬ ‫آرایه‬ ‫یک‬ 2 ‫باشند‬ ‫بردارمی‬ ‫یک‬ ‫کدام‬ ‫هر‬ ‫که‬ ‫است‬ ‫المان‬ a = [[1,2,3] [4,5,6]] ‫ارایه‬ ‫یک‬ 2 ‫است‬ ‫بعدی‬ ( ‫با‬ ‫ماتریس‬ ‫یک‬ ‫یا‬ 2 ‫ستون‬ ) ‫که‬ 3 ‫دارد‬ ‫المان‬
  • 31. Click to edit Master title style 3131 ‫دارند‬ ‫مختلفی‬ ‫های‬ ‫متد‬ ‫بعدی‬ ‫چند‬ ‫های‬ ‫ارایه‬ : Ndims(s) : ‫تابع‬ ‫اسم‬ ndim ‫مخفف‬ number of dimensions ‫است‬ ‫تعداد‬ ‫معنی‬ ‫به‬ ‫ابعاد‬ (e.g. 2 for a Matrix) Length(A) : ‫ارایه‬ ‫در‬ ‫ها‬ ‫المان‬ ‫تعداد‬ Eltype(A) : ‫میگوید‬ ‫را‬ ‫ها‬ ‫المان‬ ‫نوع‬ A = [5, 10, 15, 20] julia> ndims(A) 1 julia> length(A) 4 julia> eltype(A) Int64 -------------- julia> a=[2,"s"] 2-element Vector{Any}: 2 "s" julia> eltype(a) Any
  • 32. Click to edit Master title style 3232 ‫توابع‬ ‫کار‬ ‫با‬ ‫آرایه‬ push!(a,b) ‫تابع‬ ‫مثل‬ append ‫کند‬ ‫می‬ ‫عمل‬ ‫پایتون‬ . Append!(a,b) ‫اگر‬ b ‫مقدار‬ ‫یک‬ scalar ‫باشد‬ push! ‫و‬ append! ‫است‬ ‫یکسان‬ . ‫توجه‬ ‫شود‬ ‫می‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫لیست‬ ‫صورت‬ ‫به‬ ‫رشته‬ ‫یک‬ ‫که‬ ‫باشید‬ ‫داشته‬ ! ‫تابع‬ ‫همانند‬ Extend ‫است‬ ‫پایتون‬ . Pop!(a) : ‫کند‬ ‫می‬ ‫حذف‬ ‫اخر‬ ‫از‬ ‫را‬ ‫المان‬ ‫میگرداند‬ ‫بر‬ ‫را‬ ‫اول‬ ‫المان‬:popfirst!(a) : ‫کند‬ ‫می‬ ‫حذف‬ ‫دلخواه‬ ‫موقعیت‬ ‫در‬ ‫را‬ ‫عنصر‬ ‫یک‬ deleteat!(a, pos) : ‫میکند‬ ‫اضافه‬ ‫ارایه‬ ‫اول‬ ‫به‬ ‫را‬ ‫المان‬ pushfirst!(a,b) ‫کند‬ ‫می‬ ‫مرتب‬ ‫را‬ ‫ارایه‬ . :sort(a) ‫کند‬ ‫می‬ ‫برعکس‬ ‫را‬ ‫آرایه‬ . :a[end:-1:1] julia> a=[1,2,3] julia> push!(a,4) 4-element Vector{Int64}: 1 2 3 4 julia> pushfirst!(a,10) 4-element Vector{Int64}: 10 1 2 3 julia> append!(a,"a,b") 7-element Vector{Int64}: 1 2 3 97 44 98
  • 33. Click to edit Master title style 3333 Tuples # Creating an empty tuple tupl1 = () println(isempty(tupl1)) # Creating a tuple with similar values tupl2 = (1, 2, 4, 5) tupl2 = 1, 2, 4, 5 println(tupl2) # Creating a tuple with mixed values tupl3 = (1, 2, 3, "Hello Geeks") println(tupl3( ‫ک‬ ‫زمانی‬ ‫برای‬ ‫کنید‬ ‫متغیرانتصاب‬ ‫دو‬ ‫به‬ ‫را‬ ‫ها‬ ‫تاپل‬ ‫توانید‬ ‫می‬ ‫ه‬ ‫بر‬ ‫را‬ ‫مختلفی‬ ‫های‬ ‫مقدار‬ ‫که‬ ‫تابعی‬ ‫از‬ ‫را‬ ‫ها‬ ‫داده‬ ‫میخواهید‬ ‫کنید‬ ‫آوری‬ ‫جمع‬ ‫میگرداند‬ var1, var2 = (x,y) ‫هستند‬ ‫تغییر‬ ‫قابل‬ ‫غیر‬ ‫برنامه‬ ‫روند‬ ‫در‬ ‫که‬ ‫ها‬ ‫داده‬ ‫از‬ ‫لیستی‬ ‫یک‬ ‫خواهید‬ ‫می‬ ‫اگر‬ ‫کنید‬ ‫استفاده‬ ‫ها‬ ‫تاپل‬ ‫از‬ ‫باشید‬ ‫داشته‬
  • 34. Click to edit Master title style 3434 NamedTuples NamedTuple ‫نوعی‬ Tuple ‫محل‬ ‫در‬ ‫توان‬ ‫می‬ ‫را‬ ‫عناصر‬ ‫که‬ ‫است‬ ‫نیز‬ ‫مقدار‬ ‫یک‬ ‫نام‬ ‫با‬ ‫بلکه‬ ، ‫آن‬ ‫شاخص‬ ‫مقدار‬ ‫با‬ ‫تنها‬ ‫نه‬ ‫حافظه‬ ‫کرد‬ ‫فراخوانی‬ . ‫در‬ ‫مقدار‬ ‫هر‬ NamedTuple ‫به‬ ‫منحصر‬ ‫مقدار‬ ‫یک‬ ‫با‬ ‫شد‬ ‫نوشته‬ ‫مقدار‬ ‫آن‬ ‫برای‬ ‫نمادی‬ ‫عنوان‬ ‫به‬ ‫که‬ ‫شود‬ ‫می‬ ‫داده‬ ‫نشان‬ ‫فرد‬ ‫ه‬ ‫است‬ . Tuple_name = (name1 = value, name2 = value2, ....) # Creating an empty tuple tupl1 = () println(isempty(tupl1)) # Creating a NamedTuple with mixed values tupl3 = (a = 1, b = 2, c = "Hello Geeks") julia> println(tupl3[2]) 2
  • 35. Click to edit Master title style 3535 ‫ها‬ ‫دیکشنری‬ ‫جفت‬ ‫صورت‬ ‫به‬ ‫آن‬ ‫متناظر‬ ‫مقدار‬ ‫به‬ ‫را‬ ‫است‬ ‫کلید‬ ‫یک‬ ‫دارای‬ ‫که‬ ‫عنصر‬ ‫یک‬ ‫توانیم‬ ‫می‬ ‫ها‬ ‫دیکشنری‬ ‫در‬ « ‫کلید‬ : ‫مقدار‬ » ‫دهی‬ ‫نگاشت‬ ‫م‬ . ‫در‬ ‫هستند‬ ‫نیز‬ ‫تکرار‬ ‫قابل‬ ‫و‬ ‫باشند‬ ‫ای‬‫داده‬ ‫نوع‬ ‫هر‬ ‫از‬ ‫توانند‬‫می‬ ‫مقادیر‬ ‫که‬ ‫حالی‬ ‫تغییر‬ ‫قابل‬ ‫غیر‬ ‫نوع‬ ‫یک‬ ‫از‬ ‫باید‬ ‫کلیدها‬ ، ( ‫با‬ ‫تاپل‬ ‫یا‬ ‫عدد‬ ،‫رشته‬ ‫تغییر‬ ‫قابل‬ ‫غیر‬ ‫عنصر‬ ) ‫باشند‬ ‫یکتا‬ ‫و‬ . Dictionary_name = Dict(“key1” => value1, “key2” => value2, …) ‫دیتا‬ ‫از‬ ‫خالی‬ ‫دیکشنری‬ ‫یک‬ ‫تعریف‬ : mydict = Dict() julia> Dict2 = Dict("a" => 1, "b" => 2, "c" => 3) Dict{String, Int64} with 3 entries: "c" => 3 "b" => 2 "a" => 1
  • 36. Click to edit Master title style 36 ‫بین‬ ‫تفاوت‬ dictinary ‫و‬ NamedTuple 36 Namedtuple ‫قابل‬ ‫غیر‬ ‫های‬ ‫داده‬ ‫هابرای‬ ‫است‬ ‫پذیر‬ ‫تغییر‬ ‫های‬ ‫داده‬ ‫برای‬ ‫ها‬ ‫دیکشنری‬ ‫ولی‬ ‫است‬ ‫تغییر‬ . ‫ه‬ ‫دیکشنری‬ ‫که‬ ‫حالی‬ ‫در‬ ‫شود‬ ‫ذخیره‬ ‫آن‬ ‫در‬ ‫ها‬ ‫داده‬ ‫از‬ ‫مختلفی‬ ‫انواع‬ ‫اگر‬ ‫هستند‬ ‫ناپایدار‬ ‫ا‬ namedtyple ‫می‬ ‫پایدار‬ ‫هم‬ ‫شرایط‬ ‫این‬ ‫با‬ ‫ها‬ ‫مانند‬ . d = Dict(:k1=>"v1", :k2=>2) # Dict{Symbol,Any} nt = (k1="v1", k2=2,)# NamedTuple{(:k1, :k2),Tuple{String,Int64}}
  • 37. Click to edit Master title style 37 ‫ها‬ ‫دیکشنری‬ ‫با‬ ‫کار‬ ‫برای‬ ‫مفید‬ ‫تابع‬ ‫تا‬ ‫چند‬ : 37 a = Dict("a"=>1, "b"=>2, "c"=>3); julia> haskey(a,"b") True julia> delete!(a,"a") Dict{String, Int64} with 2 entries: "c" => 3 "b" => 2 ‫دیفالت‬ ‫مقدار‬ ‫نبود‬ ‫اگر‬ ‫و‬ ‫گرداند‬ ‫برمی‬ ‫را‬ ‫کلید‬ ‫خود‬ ‫بود‬ ‫دیکشنری‬ ‫در‬ ‫کلید‬ ‫اگر‬ ‫را‬ get!(collection, key, default) julia> D = Dict("a"=>5, "b"=>10, "c"=>15); julia> println(getkey(D, "a", 1)) a julia> println(getkey(D, "e", 5)) 5 ‫دیکشنر‬ ‫به‬ ‫مقدار‬ ‫و‬ ‫کلید‬ ‫جفت‬ ‫یک‬ ‫کردن‬ ‫اضافه‬ mydict[akey] = avalue julia> D = Dict("a"=>5, "b"=>10, "c"=>15); julia> D["d"]=2 2 julia> D Dict{String, Int64} with 4 entries: "c" => 15 "b" => 10 "a" => 5 "d" => 2
  • 38. Click to edit Master title style 3838 ‫و‬ ‫مرتب‬ ‫غیر‬ ‫مقادیر‬ ‫از‬ ‫هایی‬ ‫مجموعه‬ ‫نمایش‬ ‫برای‬ ‫ها‬ ‫مجموعه‬ ‫از‬ ‫شود‬ ‫می‬ ‫استفاده‬ ‫فرد‬ ‫به‬ ‫منحصر‬ . Sets # Creating an empty set Set1 = Set() println("Empty Set: ", Set1) # Creating a set with Integer values Set2 = Set([1, 2, 3, 4, 5, 2, 4, 6]) println(Set2) # Creating a set with mixed datatypes Set3 = Set([1, 2, 3, "Hello", "Geeks"]) println(Set3)
  • 39. Click to edit Master title style 39 ‫توابع‬
  • 40. Click to edit Master title style 40 ‫آرگومان‬ ‫مقادیر‬ ‫از‬ ‫زیادی‬ ‫تعداد‬ ‫که‬ ‫است‬ ‫شی‬ ‫یک‬ ‫تابع‬ ‫یک‬ ، ‫جولیا‬ ‫در‬ ‫کند‬ ‫می‬ ‫ترسیم‬ ‫بازگشتی‬ ‫مقدار‬ ‫یک‬ ‫به‬ ‫را‬ . 40 julia> function f(x,y) x + y end --- julia> f(x,y) = x + y # f (generic function with 1 method) julia> f(2,3) 5 julia> g = f; julia> g(2,3) 5 F ‫دیگری‬ ‫مقدار‬ ‫به‬ ‫تواند‬ ‫می‬ ‫و‬ ، ‫دارد‬ ‫اشاره‬ ‫تابع‬ ‫شی‬ ‫به‬ ، ‫پرانتز‬ ‫بدون‬ ‫شود‬ ‫داده‬ ‫ارجاع‬ : ‫کرد‬ ‫استفاده‬ ‫توابع‬ ‫نام‬ ‫عنوان‬ ‫به‬ ‫توان‬ ‫می‬ ‫هم‬ ‫ها‬ ‫یونیکد‬ ‫از‬ julia> ∑(x,y) = x + y ∑ (generic function with 1 method) julia> ∑(2, 3) 5
  • 41. Click to edit Master title style 41 ‫جریان‬ ‫کنترل‬ ‫برای‬ ‫را‬ ‫مختلفی‬ ‫های‬ ‫ساختار‬ ‫جولیا‬ ‫دهد‬ ‫می‬ ‫ارائه‬ ‫برنامه‬ • ‫ترکیبی‬ ‫عبارات‬ (compound expressions) • ‫شرطی‬ ‫دستورات‬ • ‫ای‬ ‫زنجیره‬ ‫های‬ ‫مقایسه‬ ‫و‬ ‫منطقی‬ ‫عملیات‬ • ‫ها‬ ‫حلقه‬ • ‫خطاها‬ ‫کنترل‬
  • 42. Click to edit Master title style 42 42 ‫دارد‬ ‫خودش‬ ‫در‬ ‫ترتیبی‬ ‫و‬ ‫نظم‬ ‫با‬ ‫را‬ ‫عبارت‬ ‫چندین‬ ‫که‬ ‫باشیم‬ ‫داشته‬ ‫عبارت‬ ‫یک‬ ‫توانیم‬ ‫می‬ ‫کار‬ ‫راحتی‬ ‫برای‬ ‫کنیم‬ ‫جدا‬ ‫را‬ ‫ها‬ ‫آن‬ ‫ویرگول‬ ‫نقطه‬ ‫با‬ ‫باید‬ ‫بنویسیم‬ ‫خط‬ ‫یک‬ ‫توی‬ ‫بخواهیم‬ ‫را‬ ‫عبارات‬ ‫اگر‬ . julia> z = begin x = 1 y = 2 x + y end 3 -------- julia> z = (x = 1; y = 2; x + y) 3 julia> begin x = 1; y = 2; x + y end 3 ------ julia> (x = 1; y = 2; x + y) 3 ‫ترکیبی‬ ‫عبارات‬
  • 43. Click to edit Master title style 4343 ‫ها‬ ‫آن‬ ‫بولی‬ ‫مقدار‬ ‫اساس‬ ‫بر‬ ‫کد‬ ‫از‬ ‫هایی‬ ‫بخش‬ ‫تا‬ ‫دهد‬ ‫می‬ ‫اجازه‬ ‫شرطی‬ ‫ساختار‬ , ‫نشود‬ ‫ارزیابی‬ ‫یا‬ ‫شود‬ ‫ارزیابی‬ . if x < y println("x is less than y") elseif x > y println("x is greater than y") else println("x is equal to y") end a ? b : c julia> x = 1; y = 2; julia> println(x < y ? "less than" : "not less than") less than ‫شرطی‬ ‫دستورات‬ ‫تایی‬ ‫سه‬ ‫شرطی‬ ‫عملگر‬ : ‫عبارات‬ ‫این‬ 3 ‫به‬ ‫شبیه‬ ‫بسیار‬ ‫عملوندی‬ ‫دستور‬ if ‫کنند‬ ‫می‬ ‫عمل‬
  • 44. Click to edit Master title style 44 44 ‫برای‬ ‫زبان‬ ‫این‬ ‫در‬ AND ‫عملگر‬ && ‫که‬ ‫است‬ ‫صورت‬ ‫این‬ ‫به‬ ‫که‬ ‫داریم‬ ‫را‬ a && b ، ‫اگر‬ a ‫و‬ b ‫جفتشان‬ true ‫بود‬ true ‫در‬ ‫و‬ ‫غیراینصورت‬ false ‫شود‬‫می‬ . ‫برای‬ ‫همچنین‬ OR ‫عملگر‬ || ‫که‬ ‫است‬ ‫صورت‬ ‫این‬ ‫به‬ ‫که‬ ‫داریم‬ ‫را‬ a || b ، ‫اگر‬ a ‫و‬ b ‫کدام‬ ‫هیچ‬ true ‫نبودند‬ false ‫در‬ ‫و‬ ‫غیراینصورت‬ true ‫شود‬‫می‬ . julia> t(x) = (println(x); true) t (generic function with 1 method) julia> f(x) = (println(x); false) f (generic function with 1 method) julia> t(1) && t(2) 1 2 true ‫منطقی‬ ‫های‬ ‫عملگر‬
  • 45. Click to edit Master title style 45 45 ‫حلقه‬ while ‫داخل‬ ‫دستورات‬ ‫باشد‬ ‫برقرار‬ ‫شرط‬ ‫که‬ ‫زمانی‬ ‫تا‬ ‫وقتی‬ ‫و‬ ‫کند‬ ‫می‬ ‫اجرا‬ ‫را‬ ‫حلقه‬ false ‫میاد‬ ‫بیرون‬ ‫حلقه‬ ‫از‬ ‫شد‬ . julia> i = 1; julia> while i <= 5 println(i) global i += 1 end 1 2 3 4 5 ‫حلقه‬ for ‫باشد‬ ‫برقرار‬ ‫شرط‬ ‫که‬ ‫زمانی‬ ‫تا‬ ‫دستورات‬ ‫تکرار‬ ‫برای‬ . ‫دستور‬ ‫به‬ ‫اگر‬ ‫حلقه‬ ‫یک‬ ‫در‬ break ‫شویم‬‫می‬ ‫خارج‬ ‫حلقه‬ ‫از‬ ‫برسیم‬ julia> for j = 1:1000 println(j) if j >= 5 Break end end 1 2 3 4 5 ‫حلقه‬ while julia> for s ∈ ["foo","bar","baz"] println(s) end foo bar baz
  • 46. Click to edit Master title style 46 46 • ‫وقتی‬ ‫که‬ ‫برنامه‬ ‫شما‬ ‫در‬ ‫اثر‬ ‫رخ‬ ‫دادن‬ Exception ‫متوقف‬ ‫شود‬ ‫کدهای‬ ‫باقی‬ ‫مانده‬ ‫در‬ ‫برنامه‬ ‫نمی‬ ‫توانند‬ ‫اجرا‬ ‫شوند‬ . • ‫اگر‬ ‫ما‬ ‫بخواهیم‬ ‫مدیریت‬ ‫کنیم‬ ‫این‬ ‫خطاها‬ ‫رو‬ ‫ا‬‫ال‬‫او‬ ‫باید‬ ‫از‬ ‫متوق‬ ‫ف‬ ‫شدن‬ ‫برنامه‬ ‫جلوگیری‬ ‫کنیم‬ ‫بعد‬ ‫برای‬ ‫حل‬ ‫این‬ ‫مشکل‬ ، ‫عملیا‬ ‫ت‬ ‫الزم‬ ‫را‬ ‫انجام‬ ‫دهیم‬ . • ‫برای‬ ‫این‬ ‫کار‬ ‫و‬ ‫جلوگیری‬ ‫از‬ ‫خطاهای‬ ‫زمان‬ ‫اجرا‬ ‫از‬ ‫دستور‬ try catch ‫استفاده‬ ‫می‬ ‫کنیم‬ . • ‫قسمت‬ ‫هایی‬ ‫را‬ ‫که‬ ‫احتمال‬ ‫می‬ ‫دهیم‬ ‫که‬ ‫خطایی‬ ‫رخ‬ ‫بده‬ ‫را‬ ‫در‬ ‫بلوک‬ try ‫می‬ ‫نویسیم‬ . • ‫روند‬ ‫مدیریت‬ ‫کردن‬ ‫خطاهای‬ try ‫در‬ ‫بلوک‬ ‫های‬ catch ‫صورت‬ ‫می‬ ‫گیرد‬ . • ‫ی‬ ‫ک‬ ‫بلوک‬ ‫دیگری‬ ‫وجود‬ ‫دارد‬ ‫که‬ ‫آن‬ Finally ‫می‬ ‫باشد‬ . ‫چه‬ ‫خطا‬ ‫رخ‬ ‫بده‬ ‫چه‬ ‫رخ‬ ‫ندهد‬ ‫این‬ ‫بلوک‬ ‫اجرا‬ ‫می‬ ‫شود‬ Try { // ‫شوند‬ ‫می‬ ‫خطا‬ ‫باعث‬ ‫که‬ ‫دستوراتی‬. } Catch( the symbol as a neme for exception) { // ‫شوند‬ ‫اجرا‬ ‫باید‬ ‫خطا‬ ‫بروز‬ ‫از‬ ‫بعد‬ ‫که‬ ‫دستوراتی‬. } julia> try sqrt("ten") catch e println("You should have entered a numeric value") end You should have entered a numeric value ----- f = open("file") try # operate on file f finally close(f) end ‫خطا‬ ‫کنترل‬ Error Handeling
  • 47. Click to edit Master title style 4747 ‫ها‬ ‫کتابخانه‬ ‫و‬ ‫کرده‬ ‫باز‬ ‫رو‬ ‫جولیا‬ ‫کنسول‬ ‫باید‬ ‫ای‬ ‫کتابخانه‬ ‫هر‬ ‫نصب‬ ‫برای‬ " ] " ‫هر‬ ‫سپس‬ ‫کنیم‬ ‫تایپ‬ ‫را‬ ‫با‬ ‫را‬ ‫میخواهیم‬ ‫که‬ ‫پکیجی‬ add ‫کنیم‬ ‫می‬ ‫اضافه‬ . (@v1.6) pkg> add flux julia> VERSION v"1.6.1"
  • 48. Click to edit Master title style 48 ‫عمیق‬ ‫یادگیری‬ ‫برای‬ ‫ای‬ ‫کتابخانه‬ : Flux.jl 48 ‫سازندگان‬ ‫کنید‬ ‫کار‬ ‫ها‬ ‫الیه‬ ‫و‬ ‫ها‬ ‫مدل‬ ‫و‬ ‫عصبی‬ ‫های‬ ‫شبکه‬ ‫با‬ ‫میخواهید‬ ‫اگر‬ ‫دهند‬ ‫می‬ ‫پیشنهاد‬ ‫شما‬ ‫به‬ ‫را‬ ‫فالکس‬ ‫جولیا‬ . ‫ج‬ ‫در‬ ‫جولیا‬ ‫زبان‬ ‫های‬ ‫توانایی‬ ‫تمام‬ ‫از‬ ‫دهد‬ ‫می‬ ‫را‬ ‫امکان‬ ‫این‬ ‫شما‬ ‫به‬ ‫اما‬ ، ‫است‬ ‫شده‬ ‫تعبیه‬ ‫مفید‬ ‫ابزارهای‬ ‫از‬ ‫بسیاری‬ ‫فالکس‬ ‫در‬ ‫ایی‬ ‫کنید‬ ‫استفاده‬ ‫دارید‬ ‫نیاز‬ ‫که‬ . ‫کنیم‬ ‫می‬ ‫دنبال‬ ‫را‬ ‫اساسی‬ ‫اصل‬ ‫چند‬ ‫ما‬ : • ‫بدیهی‬ ‫کار‬ ‫انجام‬ . Flux ‫دارای‬ API ‫مانند‬ ‫هایی‬ ‫ویژگی‬ ‫برای‬ ‫مشخصی‬ ‫ا‬‫ا‬‫صریح‬ regularisation ‫یا‬ embeddings ‫است‬ . ‫دهد‬ ‫می‬ ‫جواب‬ ‫هم‬ ‫ریاضی‬ ‫فرم‬ ‫نوشتن‬ ، ‫درعوض‬ - ‫است‬ ‫سریع‬ ‫و‬ . • ‫بنویسید‬ ‫را‬ ‫فالکس‬ ‫میتوانید‬ ‫هم‬ ‫خودتان‬ ‫شما‬ . ‫از‬ ، ‫موارد‬ ‫این‬ ‫همه‬ LSTM ‫های‬ ‫هسته‬ ‫تا‬ ‫گرفته‬ ‫ها‬ GPU ، ‫جولیا‬ ‫ی‬ ‫ساده‬ ‫کدهای‬ ‫هستند‬ . ‫کنید‬ ‫مراجعه‬ ‫منبع‬ ‫به‬ ‫که‬ ‫است‬ ‫الزم‬ ، ‫دارید‬ ‫شک‬ ‫اگر‬ . ‫آن‬ ‫های‬ ‫کد‬ ‫توانید‬ ‫می‬ ، ‫دارید‬ ‫نیاز‬ ‫تری‬ ‫متفاوت‬ ‫چیز‬ ‫به‬ ‫اگر‬ ‫ایجاد‬ ‫را‬ ‫کنید‬ ‫اضافه‬ ‫و‬ . • ‫کنید‬ ‫بازی‬ ‫خوب‬ ‫دیگران‬ ‫با‬ . Flux ‫به‬ ‫دیفرانسیل‬ ‫معادالت‬ ‫های‬ ‫کننده‬ ‫حل‬ ‫تا‬ ‫تصاویر‬ ‫و‬ ‫ها‬ ‫فریم‬ ‫دیتا‬ ‫از‬ ‫جولیا‬ ‫های‬ ‫کتابخانه‬ ‫با‬ ‫خوبی‬ ‫های‬ ‫مدل‬ ‫که‬ ‫کنید‬ ‫ایجاد‬ ‫را‬ ‫ای‬ ‫پیچیده‬ ‫های‬ ‫داده‬ ‫پردازش‬ ‫لوله‬ ‫خطوط‬ ‫راحتی‬ ‫به‬ ‫توانید‬ ‫می‬ ‫بنابراین‬ ، ‫کند‬ ‫می‬ ‫کار‬ Flux ‫ادغام‬ ‫را‬ ‫کند‬ .
  • 49. Click to edit Master title style 49 TensorFlow.jl 49 « ‫تنسورفلو‬ » ( TensorFlow) ، ‫و‬ ‫رایگان‬ ‫کتابخانه‬ ‫یک‬ « ‫باز‬‫متن‬ » ( Open Source) ‫برای‬ « ‫داده‬ ‫جریان‬ ‫نویسی‬‫برنامه‬ » ( Dataflow Programming) ‫و‬ « ‫متمایزگر‬ ‫نویسی‬‫برنامه‬ » ( Differentiable Programming) ، ‫است‬ ‫وظایف‬ ‫از‬ ‫وسیعی‬ ‫طیف‬ ‫انجام‬ ‫جهت‬ . ‫برای‬ ‫ای‬‫کتابخانه‬ ،‫تنسورفلو‬ « ‫نمادین‬ ‫ریاضیات‬ » ( Symbolic Math) ‫در‬ ‫گوناگونی‬ ‫کاربردهای‬ ‫و‬ ‫شود‬‫می‬ ‫محسوب‬ « ‫ماشین‬ ‫یادگیری‬ » ( Machine Learning) ‫به‬ ‫توان‬‫می‬ ‫جمله‬ ‫آن‬ ‫از‬ ‫که‬ ‫دارد‬ ‫سازی‬‫پیاده‬ « ‫عصبی‬ ‫های‬‫شبکه‬ » ( Neural Networks) ‫کرد‬ ‫اشاره‬ . ‫تیم‬ ‫توسط‬ ‫کتابخانه‬ ‫این‬ « ‫برین‬ ‫گوگل‬ » ( Google Brain) ، ‫گوگل‬ ‫داخلی‬ ‫مصارف‬ ‫برای‬ ‫سال‬ ‫نوامبر‬ ‫نهم‬ ‫در‬ ‫ولی‬ ‫بود؛‬ ‫شده‬ ‫داده‬ ‫توسعه‬ ۲۰۱۵ ‫گواهینامه‬ ‫با‬ « ‫آپاچی‬ ۲.۰ ‫باز‬‫متن‬ » ‫شد‬ ‫منتشر‬ . ‫هم‬ ‫گوگل‬ ‫در‬ ،‫تنسورفلو‬ ‫کتابخانه‬ ،‫حاضر‬ ‫حال‬ ‫در‬ ‫گیرد‬‫می‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫عملیاتی‬ ‫های‬‫پروژه‬ ‫هم‬ ‫و‬ ‫تحقیقاتی‬ ‫های‬‫پروژه‬ ‫برای‬ . ‫دارای‬ ‫تنسورفلو‬ ‫کتابخانه‬ « ‫ثالث‬ ‫شخص‬ ‫های‬‫بسته‬ » Third Party Packages ‫برای‬ Julia ، R ، Scala ، Crystal ‫است‬ .
  • 50. Click to edit Master title style 50 50 ‫پروژه‬ ‫سازی‬ ‫پیاده‬ Linear Regression ‫در‬ Julia
  • 51. Click to edit Master title style 51 ‫مسئله‬ ‫توضیح‬ 51 ‫کنیم‬ ‫سازی‬ ‫پیاده‬ ‫پیشبینی‬ ‫برای‬ ‫را‬ ‫ماشین‬ ‫یادگیری‬ ‫کارآمد‬ ‫اما‬ ‫ساده‬ ‫های‬ ‫مدل‬ ‫از‬ ‫یکی‬ ‫خواهیم‬ ‫می‬ ‫پروژه‬ ‫این‬ ‫در‬ . ‫کانگ‬ ‫اطالعات‬ ‫حاوی‬ ‫دیتاست‬ ‫یک‬ ‫از‬ ‫های‬ ‫ورو‬ ‫کنیم‬ ‫می‬ ‫استفاده‬ ‫خاکستری‬ . ‫ستون‬ ‫دو‬ ‫حاوی‬ ‫ها‬ ‫داده‬ ‫این‬ X ‫و‬ Y ‫است‬ . ‫متر‬ ‫میلی‬ ‫به‬ ‫ها‬ ‫کانگورو‬ ‫بینی‬ ‫عرض‬ ‫و‬ ‫طول‬ ‫ی‬‫دهنده‬ ‫نشان‬ ‫ترتیب‬ ‫به‬ ‫متغیر‬ ‫دو‬ ‫این‬ ‫هستند‬ . ‫برای‬ ‫مذکور‬ ‫های‬ ‫داده‬ ‫حاوی‬ ‫فایل‬ ‫این‬ ۴۵ ‫است‬ ‫کانگورو‬ . ‫ما‬ ‫هدف‬ ‫بین‬ ‫خطی‬ ‫ی‬‫رابطه‬ ‫یک‬ ‫کشف‬ Y ‫و‬ X ‫است‬ . ‫بینی‬ ‫عرض‬ ‫توانیم‬ ‫می‬ ‫رابطه‬ ‫این‬ ‫کشف‬ ‫با‬ ‫کنیم‬ ‫پیشبینی‬ ‫طولش‬ ‫اساس‬ ‫بر‬ ‫را‬ ‫ها‬ ‫کانگورو‬ ‫این‬ . ‫اصال‬ ‫که‬ ‫است‬ ‫این‬ ‫شود‬ ‫می‬ ‫مطرح‬ ‫که‬ ‫پرسشی‬ ‫اولین‬ Linear Regression ‫این‬ ‫به‬ ‫پاسخ‬ ‫برای‬ ‫است؟‬ ‫استفاده‬ ‫قابل‬ ‫ها‬ ‫داده‬ ‫این‬ ‫برای‬ ‫بین‬ ‫خطی‬ ‫ای‬ ‫رابطه‬ ‫آیا‬ ‫که‬ ‫کنیم‬ ‫بررسی‬ ‫است‬ ‫الزم‬ ‫پرسش‬ X ‫و‬ Y ‫نه‬ ‫یا‬ ‫دارد‬ ‫وجود‬ . ‫نمودار‬ ‫رسم‬ ‫موضوع‬ ‫این‬ ‫بررسی‬ ‫برای‬ ‫روش‬ ‫یک‬ ‫پراکندگی‬ X ‫و‬ Y ‫است‬ . ‫قالب‬ ‫در‬ ‫را‬ ‫آن‬ ‫آسانتر‬ ‫استفاده‬ ‫برای‬ ‫و‬ ‫دانلود‬ ‫را‬ ‫دیتاست‬ ‫ابتدا‬ csv ‫میکنیم‬ ‫ذخیره‬ . ‫های‬ ‫پکیج‬ ‫از‬ ‫یکی‬ Julia ‫که‬ ‫کند‬ ‫می‬ ‫تسهیل‬ ‫را‬ ‫ها‬ ‫داده‬ ‫با‬ ‫کار‬ DataFrames ‫است‬ . ‫نوع‬ ‫از‬ ‫که‬ ‫دیتاست‬ ‫فایل‬ ‫خواندن‬ ‫برای‬ ‫همچنین‬ CSV ‫پکیج‬ ‫از‬ ‫است‬ CSV ‫استفاده‬ ‫کنیم‬ ‫می‬ . ‫میکنیم‬ ‫نصب‬ ‫را‬ ‫ها‬ ‫پکیج‬ ‫این‬ ‫ابتدا‬ : ‫خطی‬ ‫ی‬‫رابطه‬ ‫یک‬ ‫وجود‬ ‫بررسی‬ using Pkg Pkg.add("DataFrames") Pkg.add("CSV")
  • 52. Click to edit Master title style 52 ‫پکیج‬ ‫از‬ ‫استفاده‬ ‫با‬ CSV ‫کنیم‬ ‫می‬ ‫فراخوانی‬ ‫را‬ ‫دیتاست‬ ‫فایل‬ : 52 using CSV data = CSV.read(“gray_kangaro.csv“,DataFrame) ‫از‬ ‫توانیم‬ ‫می‬ ‫دیتاست‬ ‫این‬ ‫های‬ ‫ستون‬ ‫به‬ ‫دسترسی‬ ‫برای‬ data.X ‫یا‬ data.Y ‫آرایه‬ ‫نوع‬ ‫از‬ ‫ها‬ ‫آن‬ ‫خروجی‬ ‫که‬ ‫کنیم‬ ‫استفاده‬ ‫زبان‬ ‫های‬ Julia ‫است‬ . ‫برای‬ ‫نمودار‬ ‫رسم‬ ‫در‬ Julia ‫پکیج‬ ‫از‬ ‫میتوانیم‬ Plots ‫کنیم‬ ‫استفاده‬ . ‫دیگر‬ ‫پکیج‬ ‫تعدادی‬ ‫از‬ ‫پکیج‬ ‫این‬ ‫به‬ ‫عنوان‬ Backend ‫کند‬ ‫استفاده‬ ‫نمودار‬ ‫رسم‬ ‫برای‬ . ‫و‬ ‫پکیج‬ ‫این‬ ‫ابتدا‬ pyplot ‫عنوان‬ ‫به‬ ‫را‬ Backend ‫نصب‬ ‫نمودار‬ ‫رسم‬ ‫برای‬ ‫کنیم‬ ‫می‬ : Pkg.add("Plots") Pkg.add("PyPlot")
  • 53. Click to edit Master title style 53 ‫و‬ ‫فراخوانی‬ ‫را‬ ‫پکیج‬ ‫این‬ ‫اکنون‬ plotly ‫بعنوان‬ ‫را‬ Backend ‫میکنیم‬ ‫انتخاب‬ ‫نمودار‬ ‫رسم‬ : 53 using Plots pyplot(size = (300,300), legend = false) ‫تابع‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫اکنون‬ scatter ‫پراکندگی‬ ‫نمودار‬ X ‫و‬ Y ‫میکنیم‬ ‫رسم‬ ‫را‬ : scatter(data.X, data.Y) ‫بین‬ ‫ی‬‫رابطه‬ ‫کردن‬ ‫مدل‬ ‫گفت‬ ‫توان‬ ‫می‬ ‫شکل‬ ‫این‬ ‫از‬ X ‫و‬ Y ‫و‬ ‫نیست‬ ‫غیرمنطقی‬ ‫کنیم‬ ‫رسم‬ ‫را‬ ‫ها‬ ‫نقطه‬ ‫خط‬ ‫یک‬ ‫صورت‬ ‫به‬ ‫توانیم‬ ‫می‬ .
  • 54. Click to edit Master title style 54 ‫ضرایب‬ ‫محاسبه‬ Linear Regression 54 ‫بین‬ ‫ی‬‫رابطه‬ ‫رسیدیم‬ ‫نتیجه‬ ‫این‬ ‫به‬ ‫که‬ ‫اکنون‬ X ‫و‬ Y ‫را‬ ‫خط‬ ‫این‬ ‫بایستی‬ ،‫بزیم‬ ‫تخمین‬ ‫خط‬ ‫یک‬ ‫با‬ ‫را‬ ‫آوریم‬ ‫بدست‬ . ‫است‬ ‫خط‬ ‫این‬ ‫های‬ ‫پارامتر‬ ‫محاسبه‬ ‫ما‬ ‫هدف‬ ‫دیگر‬ ‫عبارت‬ ‫به‬ . y~p1x+p2 ‫کنیم‬ ‫بیان‬ ‫ماتریسی‬ ‫ی‬‫معادله‬ ‫یه‬ ‫قالب‬ ‫در‬ ‫را‬ ‫مسئله‬ ‫این‬ ‫توانیم‬ ‫می‬ : ‫کنیم‬ ‫می‬ ‫گذاری‬ ‫نام‬ ‫صورت‬ ‫بدین‬ ‫اختصار‬ ‫به‬ ‫را‬ ‫باال‬ ‫های‬ ‫ماتریس‬ : Ap=y ‫بردار‬ ‫که‬ p ‫میکنیم‬ ‫محاسبه‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫را‬ :
  • 55. Click to edit Master title style 55 ‫ماتریس‬ ‫ابتدا‬ A ‫کنیم‬ ‫می‬ ‫محاسبه‬ ‫را‬ . ‫ماتریس‬ ‫این‬ ‫اول‬ ‫ستون‬ 1 ‫است‬ . ‫تابع‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫میتوانیم‬ hcat ‫بردار‬ ‫یک‬ 1 ‫با‬ 6 ‫ماتریس‬ ‫به‬ ‫افقی‬ ‫صورت‬ ‫به‬ ‫را‬ ‫عنصر‬ data.X ‫الحاق‬ ‫کنیم‬ 55 ‫کتابخانه‬ ‫از‬ ‫ماتریس‬ ‫وارون‬ ‫و‬ ‫ترانهاده‬ ‫ی‬‫محاسبه‬ ‫برای‬ LinearAlgebra ‫کنیم‬ ‫می‬ ‫استفاده‬ . ‫از‬ ‫جزیی‬ ‫هم‬ ‫کتابخانه‬ ‫این‬ Standard Library ‫جولیا‬ ‫زبان‬ ‫است‬ . A = hcat(ones(length(data.X), 1), data.X) using LinearAlgebra AT = transpose(A) p = inv(AT*A)*AT*data.Y ‫بردار‬ ،‫کد‬ ‫این‬ ‫اجرای‬ ‫از‬ ‫بعد‬ p ‫آید‬ ‫می‬ ‫بدست‬ ‫زیر‬ ‫صورت‬ ‫به‬ : 2-element Vector{Float64}: 11.945698879433053 0.3559903951470271
  • 56. Click to edit Master title style 56 ‫آمده‬ ‫بدست‬ ‫خط‬ ‫رسم‬ ‫کنیم‬ ‫رسم‬ ‫را‬ ‫آن‬ ‫توانیم‬ ‫می‬ ،‫آوردیم‬ ‫بدست‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫خط‬ ‫های‬ ‫پارامتر‬ ‫که‬ ‫حال‬ . ‫که‬ ‫کنید‬ ‫توجه‬ Ap ‫های‬ ‫داده‬ ‫برای‬ ‫مدل‬ ‫این‬ ‫توسط‬ ‫شده‬ ‫بینی‬ ‫پیش‬ ‫مقادیر‬ ‫ی‬‫دهنده‬ ‫نشان‬ ‫است‬ ‫دیتاست‬ . ‫تابع‬ ‫از‬ ‫خط‬ ‫رسم‬ ‫برای‬ ‫توانیم‬ ‫می‬ plot ‫کنیم‬ ‫استفاده‬ . ‫رسم‬ ‫نو‬ ‫از‬ ‫را‬ ‫نمودار‬ ‫تابع‬ ‫این‬ ‫اما‬ ‫کند‬ ‫می‬ . ‫تابع‬ ‫از‬ ‫توانیم‬ ‫می‬ ‫آن‬ ‫جای‬ ‫به‬ plot! ‫کنیم‬ ‫استفاده‬ . ‫کند‬ ‫می‬ ‫رسم‬ ‫قبلی‬ ‫نمودار‬ ‫روی‬ ‫بر‬ ‫را‬ ‫نمودار‬ ‫تابع‬ ‫این‬ . 56 scatter(data.X, data.Y) plot!(data.X, A*p) julia> println(A*p) [228.74384952397259, 235.8636574269131, 232.65974387058986, 212.72428174235634, 241.55950374926556, 187.44896368691744]
  • 57. Click to edit Master title style 57 ‫منابع‬ 57 https://julialang.org/downloads/ https://www.julia-vscode.org/docs/dev/gettingstarted/ https://julialang.org/blog/2012/02/why-we-created-julia/ https://faradars.org/courses/fvjla9805-julia-programming-language https://fa.wikipedia.org/wiki/%D8%AC%D9%88%D9%84%DB%8C%D8%A7 https://programming.tosinso.com/fa/articles/41920/%D8%AC%D9%88%D9%84%DB%8C%D8%A7- %DA%86%DB%8C%D8%B3%D8%AA%D8%9F-%D9%85%D8%B9%D8%B1%D9%81%DB%8C- %D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87- %D9%86%D9%88%DB%8C%D8%B3%DB%8C-Julia https://www.zoomit.ir/tech/286282-julia-next-big-programming-language/ https://www.youtube.com/watch?v=n2MwJ1guGVQ https://syl1.gitbook.io/julia-language-a-concise-tutorial/ https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-wanted https://juliair.github.io/examples/linear-regression.html https://www.geeksforgeeks.org/namedtuple-in- julia/#:~:text=NamedTuple%20is%20a%20type%20of,a%20symbol%20for%20that%20value.
  • 58. Click to edit Master title style 58

Editor's Notes

  1. Vcat=vector