قصيدة لجوليا

من الصعب جدًا التعبير عن كل الحماس الذي صاحب إطلاق البرامج الأولى وتصحيح الأخطاء الأولى باستخدام هذه اللغة. بسيطة وجميلة مثل Python ، تشبه إلى حد ما فورتران ، العمل المريح مع المصفوفات والرسوم البيانية ، بالإضافة إلى القدرة على أداء التحسين والتوازي الشرس حتى بالنسبة للدمى مثل ط زملائي. يمكنك العمل على مستويات مختلفة من التجريد: من البرمجة عالية المستوى مع الكتابة الديناميكية ، يمكنك الانتقال إلى أوامر التجميع ، أي هنا لديك إمكانية الوصول إلى Python وسرعة تنفيذ عدادات Fortran. لا يمكنني التخلص من الشعور بأن Mathcad و Scilab وحتى الله يغفر لي ، C ++ بدأت في التلاشي في قلبي.
تعلمت اللغة عن طريق التعثر عن طريق الخطأ في منشور خابروفي ، وكما يجب على الطالب الذي تأثرت به ، بدأت في البحث عن التوجيه ، ويفضل أن يكون ذلك باللغة الروسية. نظرًا لأن اللغة كانت تتطور باستمرار لمدة ست سنوات ، أصبحت مصادر المعلومات النادرة بالفعل عفا عليها الزمن ، وبدأ الإثارة في الانخفاض. ولكن مع بداية دورة مختبرية جديدة حول نمذجة الظواهر الفيزيائية مع حرية اختيار لغة البرمجة ، كان لا يزال هناك دافع لبدء التعرف على جوليا. بالإضافة إلى ذلك ، في أغسطس ، لغة "إضافة 1.0" .
تم تخطيط المواد الواردة أدناه كمقدمة للغة التي كُتبت بها جميع الأوراق المعملية وجمع دليل التدريب.
جوليا هي لغة برمجة ديناميكية عالية المستوى وعالية الأداء للحسابات الحسابية. الصيغة مشابهة لعائلة matlab ، اللغة مكتوبة في C و C ++ و Scheme ، من الممكن استدعاء مكتبات Sysh
التثبيت
تحت المفسدعلى الموقع الرسمي يمكنك العثور على الأخبار ، دروس الفيديو وتحميل التوزيع. بعد التثبيت ، يمكنك البدء في العمل ، ولكن كل شيء سيحدث في وضع المترجم.
على الموقع https://juliacomputing.com ، تتوفر المنتجات التي تعتمد على هذه اللغة:
- JuliaDB - للعمل مع تحليلات قاعدة البيانات وتحليلات السلاسل الزمنية القائمة على النظام البيئي الغني لـ Julia ، وكذلك مع التزامن المدمج وقابلية التوسع.
- JuliaBOX - قم بتشغيل Julia بدون التثبيت من متصفحك على أجهزة الكمبيوتر المحمولة من Jupyter. شائع في الجامعات وبين المستخدمين المبتدئين. للعمل الكامل ، تحتاج إلى التقدم بطلب للحصول على اشتراك مدفوع. في الوضع الحر ، ستكون بعض الخيارات محدودة ، وتحتاج إلى الانتظار في الطابور للوصول إلى مراكز المعالجة
- JuliaRun - تشغيل تطبيقات Julia في سحابة عامة أو خاصة. نشر الإنتاج القابل للتحجيم لتحليل الوقت الحقيقي والمحاكاة المتوازية على نطاق واسع.
- JuliaFin - للعمل في مجال التمويل. ويشمل جميع الأدوات اللازمة للاختبار الخلفي والتداول: Excel و Bloomberg ونمذجة العقود و JuliaDB.
- JuliaPro - نسخة مجانية للعلماء والباحثين البيانات. التثبيت على Windows أو Mac أو Linux. يتوفر ترخيص تجاري موسع.
حدد الخيار الأخير. في وقت كتابة هذا التقرير ، الإصدار 0.6.4.1 متاح. بعد التسجيل ، سيكون التنزيل المجاني متاحًا. يجب على مستخدمي Windows 7 / Windows Server 2012 أيضًا تثبيت:
بعد تنزيل المثبت ، من الأفضل توفير قيود على الوصول إلى الإنترنت ، وبعد ذلك فقط التحديث ، وإلا سيكتشف الجميع ما هي نسختك غير الصالحة من Windows. هذا التحديث ضروري لمنع حدوث مشاكل مع نظام التحكم في إصدار git ، وإلا فلن يكون من الممكن تنزيل حزم إضافية ، وبدون ذلك سيكون من الصعب.
حسنًا ، استقر كل شيء أخيرًا ، الآن تحت تصرفنا:
- موجه أوامر JuliaPRO - جميع مهارات Yulina مباشرة من المترجم.
- Juno هو بيئة تطوير متكاملة جميلة مع نافذة للرسوم البيانية ومساحة عمل حيث يمكنك عرض محتويات جميع الكائنات
- Jupyter - تطلق جوهر الحوسبة في وحدة التحكم ، ويمكنك تنفيذ التعليمات البرمجية مباشرة في المتصفح. (بالإضافة إلى جوليا ، Python موجودة أيضًا)
دعونا نرى ما يمكن أن تفعله هذه الآلة الحاسبة ... دعم Unicode - يمكنك استخدام الأبجدية السيريلية والهيروغليفية واستدعاء pi بالحرف اليوناني. ولا يمكنك تحديد الضرب بشكل صريح بين الرقم والمتغير (بهذا الترتيب وبدون مسافة):
x = 5+8 2x - 3x + 2x^2 Out: 325
جميع العلامات اللازمة موجودة أيضًا: + = ، * = ، >> = ، إلخ. (علامة ">>" (تحول البت إلى اليمين). علامات المقارنة:> ،> = ، <، <= ، == ،! =. يمكن دمج عدم المساواة في سلاسل:
y = 5 y += 2 4 <= y < 8 Out: true
الأعداد المركبة المتاحة:
(2-1im)*(4+3im) Out: 11 + 2im
ووظائف العمل معهم:
- الحقيقي (ض) هو الجزء الحقيقي ،
- imag (z) هو الجزء التخيلي ،
- conj (z) هو اتحاد معقد ،
- عبس (ض) - وحدة ،
- abs2 (z) هو مربع الوحدة ،
- الزاوية (ع) هي حجة العدد المركب.
يمكنك استخدام أرقام منطقية باستخدام "//" والوظائف المقابلة:
- num (x) - البسط ،
- den (x) - المقام ،
- تعويم (س) - يتحول إلى عشري
x = 4//6+5//7 Out: 29//21 float(x) Out: 1.380952380952381
تمتلك جوليا القدرة على التحكم في التمثيل الداخلي للبيانات:
- typeof (obj) - نوع الكائن
- typemax (obj) هو أقصى عدد من هذا النوع
- typemin (obj) - الحد الأدنى
- eps () - الجهاز صفر
- BigInt هو كل كبير
- BigFloat - نقطة عائمة كبيرة
q = 3 typemax(q) Out: 9223372036854775807 typeof(q) Out: Int64 BigFloat(2.3^45/6) Out: 3.159376405019356000000000000000000000000000000000000000000000000000000000000e+15
وظائف
مجموعة الميزات
- القيمة المطلقة (x) هي معامل العدد ،
- abs2 (x) هو مربع الوحدة ،
- sqrt (x) هو الجذر التربيعي ،
- cbrt (x) هو الجذر التكعيبي ،
- exp (x) هو أس العدد ،
- log (x) هو اللوغاريتم الطبيعي ،
- log10 (x) - اللوغاريتم العشري ،
- log (b، x) هو لوغاريتم x في الأساس b.
بالإضافة إلى المثلثات ، الزائدية ، التهوية ، Bessel وغيرها الكثير.
وظائف مخصصة:
function () # end
تقوم الدالة بإرجاع نتيجة التعبير الأخير (مستخدم Mathcad hiccuped).
function cube(x) x^3 end cube(4) Out: 64
حسنًا ، أو نشير بشكل صريح إلى:
function myabs(x) if x>=0 return x else return -x end end myabs(-12) Out: 12
يمكن جمع القيم المرتجعة في مجموعة:
function cubeandsquare(x) x^3,x^2 end a,b = cubeandsquare(3) print("a = $a, b = $b") Out: a = 27, b = 9
يمكن أن تأخذ الوظائف الصفوف والقيم الافتراضية والكلمات الرئيسية. إذا لم تكن هناك أقواس بعد اسم الوظيفة ، فسيتم اعتبارها متغيرًا ويمكن تعيينها لمتغير آخر أو نقلها إلى الدالة كمعلمة. تدعم جوليا أيضًا النمط الوظيفي لبرامج الكتابة (hello Lisp)
function mysin(t;A=1,?=1,?=0) # - A*sin(?*t + ?) end x1 = mysin(pi) # = 0 x2 = mysin(pi*0.5,A = 2) # x3 = mysin(pi*0.5,? = 0.5) # print("x1 = $x1, x2 = $x2, x3 = $x3") Out: x1 = 1.2246467991473532e-16, x2 = 2.0, x3 = 0.7071067811865475
المصفوفات
كمستخدم Scilab ، لم ألاحظ حتى الاستبدال: يمكنك تحديد مصفوفة باستخدام الوظيفة:
- Array {T} (undef، dims ...) - صفيف من النوع T و dims بعد
- الأصفار (T ، dims ...) - صفيف من الأصفار
- تلك (T ، dims ...) - أو الوحدات
تبدأ الفهرسة بواحدة ، بدلاً من $
- end
، ويتم تحديد جميع العمليات اللازمة للمصفوفات (من أجل إجراء ، على سبيل المثال ، إضافة أو ضرب عنصر ، تحتاج إلى وضع نقطة أمام عامل التشغيل).

(الآن أصبح من الواضح كيفية إدراج الصور ، ولكن حسنًا ...)
الوظائف الأساسية:
- det (A) - احسب المحدد
- أ ' - تبديل المصفوفة
- inv (A) - مصفوفة معكوسة
- الطول (أ) - عدد العناصر
- ndims (A) - عدد الأبعاد
- الحجم (أ) - عدد الأبعاد
- الحجم (أ ، ن) - البعد في اتجاه معين
- نسخة (أ) - إنشاء نسخة من الصفيف
- linspace (بداية ، نهاية ، خطوة) أو
linspace (start: step: end) - إنشاء صفيف أحادي البعد
A = [1 2 3; 6 5 4; 7 8 9] Out: 3?3 Array{Int64,2}: 1 2 3 6 5 4 7 8 9 A[2,1] Out: 6 A[end] Out: 9 size(A) Out: (3, 3)
يمكنك تحديد أجزاء من الصفيف عن طريق تحديد مجموعة من المؤشرات على طول البعد مع علامة ":".
m1 = rand(3,2) m2 = reshape(1:2:11, 3,2) Out: 3?2 Base.ReshapedArray{Int64,2,StepRange{Int64,Int64},Tuple{}}: 1 7 3 9 5 11 m3 = [m1 m2] # ( ) Out: 3?4 Array{Float64,2}: 0.325649 0.701038 1.0 7.0 0.513579 0.620215 3.0 9.0 0.815242 0.805307 5.0 11.0 m5 = [m1; m2] # ( ) Out: 6?2 Array{Float64,2}: 0.325649 0.701038 0.513579 0.620215 0.815242 0.805307 1.0 7.0 3.0 9.0 5.0 11.0 m3[:, 2:4] Out: 3?3 Array{Float64,2}: 0.701038 1.0 7.0 0.620215 3.0 9.0 0.805307 5.0 11.0
استخدمنا هنا rand () ، الذي يُرجع مصفوفة من الأرقام العشوائية لبُعد معين ، ويعيد تشكيل () ، الذي يغير بُعد المصفوفة إلى البعد المحدد.
for a in A
أو
for i in eachindex(A) # i end
أو
for i = 1 : size(A,n) # n - (.. ) # i end
الرسوم البيانية
لاستخدام الرسومات ، تحتاج إلى تنزيل حزمة من المستودع للاختيار من بينها:
- Pkg.add ("قطع الأرض")
- Pkg.add ("PyPlot")
- Pkg.add ("Gadfly")
- Pkg.add ("Winston")
الأكثر شعبية هو Pythonic PyPlot . الوحدات متصلة باستخدام الأمر ، على سبيل المثال:
using PyPlot
ومع ذلك ، دعنا نجرب Gaston باستخدام Gnuplot (تأرجح بشكل منفصل).
تم تحميله بواسطة فريق Gaston.jl
Pkg.add("Gaston")
والحق في النقطة:
using Gaston t = 0:0.01:1 plot(t, sin.(2?*5*t))

plot(t,sin.(2?*5*t),title="A sine wave",xlabel="Time (s)",ylabel="Amplitude",grid="on",linewidth=3,color="blue", yrange="[-1.1:1.1]",marker="ecircle",plotstyle="linespoints",linestyle="-.-")

plot!(t,cos.(2?*5*t),color="red",linewidth=2) #

x = y = -15:0.33:15 surf(x,y,(x,y)->sin.(sqrt.(x.*x+y.*y))./sqrt.(x.*x+y.*y),title="Sombrero",plotstyle="pm3d")

x = y = -15:0.33:15 surf(x,y,(x,y)->sin.(sqrt(x.*x+y.*y))./sqrt.(x.*x+y.*y), title="Edge view of a sombrero",plotstyle="pm3d",gpcom="set view 80,20")

R = [ x+y for x=0:5:120, y=0:5:120] G = [ x+y for x=0:5:120, y=120:-5:0] B = [ x+y for x=120:-5:0, y=0:5:120] Z = zeros(25,25,3) Z[:,:,1] = R Z[:,:,2] = G Z[:,:,3] = B imagesc(Z,title="RGB Image",clim=[10 200])

histogram(rand(1000),bins=15,norm=1,title="Histogram",yrange="[0:1.6]")

y = 1:40 err = Gaston.ErrorCoords(rand(40)) plot(y,err=err,title="Example of error bars",plotstyle="errorbars")

يمكنك إنشاء نوافذ رسومية متعددة (لا تعمل في Jupyter ) باستخدام الأمر h = figure () (فقط أدخل بين المؤامرات). لحفظ الرسم البياني كملف صورة ، استخدم الأوامر
set_filename ("name.png") # إذا لم يكن محددًا ، فسيتم عرضه
printfigure ("png") # save to file، PNG، PDF، SVG and GIF available
المزيد من معلومات حزمة جاستون
الخلاصة
هناك العديد من الحزم الرسومية لكل ذوق وتغطي جميع الاحتياجات تقريبًا. أيضا ، تتطور الحزم الإضافية بقوة وقدرة. هنا لديك الحوسبة الكمومية والمعلوماتية الحيوية ، والتعلم الآلي ، والعديد من المشاكل الملحة مثل الاختلافات والمشتقات .
بشكل عام ، جوليا جميلة وذكية واعدة للغاية ، ومن غير المقبول للغاية تركها دون الاهتمام اللازم.