More Related Content Similar to زبان برنامه نویسی جولیا (20) زبان برنامه نویسی جولیا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
6. Click to edit Master title style
6 6
•
از استفاده امکان ویژگی این که کرد تقسیم مختلف هایهسته بین را پردازشی وظایف آن از استفاده با بتوان تا دارد را امکان این جولیا
جو
از لیا
ماشین یادگیری
ا سازیشبیه تا
را بزرگ هایبررایانه
کندمی فراهم
.
•
MIT
به موسوم نویسیبرنامه هایزبان باشگاه در نویسیبرنامه زبان پویاترین باید را جولیا نویسیبرنامه زبان که کرده اعالم
پتافالپ
خواند
.
زب از گروهی به پتافالپ باشگاه
نویسیبرنامه هایان
کرد عبور ثانیه در فالپ پتا یک پردازشی قدرت از توانمی هاآن از استفاده با که شودمی اطالق
.
سازیشبیه به اقدام جولیا از استفاده با محققان ،شدهارائه اطالعات براساس
۱۸۸
و ستاره میلیون
سوپرکامپیوتر در کهکشان
Cori
است جهان در قدرتمند یابررایانه دهمین که اندکرده
.
از کمتر در سازیشبیه این
۱۵
است شده انجام دقیقه
.
از بیش ،سازیشبیه این در
۶۵۰
پردازشی یهسته هزار
Knights Landing Xeon Phi
پردازشی قدرت آن ینتیجه که ،گرفته قرار استفاده مورد
۱.۵
است بوده پتافالپس
.
•
پرینترهای و خودران خودروهای در آن از استفاده به توانمی جولیا کاربردهای دیگر یجمله از
بعدی سه
یادگی ،ژنتیک ،افزوده واقعیت ،باال دقت با پزشکی لوازم و پزشکی کنار در
و ماشین ری
کرد اشاره ریسک مدیریت
.
•
مسیریابی بهبود ،هواپیما برخورد از جلوگیری سیستم بعدی نسل یتوسعه به باید جولیا از استفاده با یافتهتوسعه هایسیستم یجمله از
اتوبوس
س همچنین و بوستون مدارس
و حرکتی یستم
مسیریابی
ربات
کرد اشاره
.
•
شامل که علمی مهم محاسبات برای توان می جولیا از
Big Data
کرد استفاده است
.
•
کرد استفاده وب نویسی برنامه برای جولیا از توان می ها پکیج کمک با
.
•
پشتیبانی کمک با
ARM
،
گرفت خواهد قرار استفاده مورد اندرویدی هوشمند های تلفن در زودی به جولیا
.
•
.
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
شود نمی محدود
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
را آن
ک داده قرار نویسیبرنامه هایزبان جزو
ه
توسط باالیی بسیار سرعت با
گرف قرار استفاده مورد دهندگانتوسعه
ته
یابدمی گسترش آن از استفاده و
.
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
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
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)
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.
Editor's Notes Vcat=vector