Julia 1.11 Documentation
Welcome to the documentation for Julia 1.11.
يرجى قراءة release notes لمعرفة ما الذي تغير منذ الإصدار الأخير.
The documentation is also available in PDF format: julia-1.11.5.pdf.
Important Links
فيما يلي قائمة غير شاملة من الروابط التي ستكون مفيدة أثناء تعلمك واستخدامك لغة البرمجة جوليا.
- Julia Homepage
- Download Julia
- Discussion forum
- Julia YouTube
- Find Julia Packages
- Learning Resources
- Read and write blogs on Julia
Introduction
لقد تطلب الحوسبة العلمية تقليديًا أعلى أداء، ومع ذلك انتقل خبراء المجال إلى لغات ديناميكية أبطأ للعمل اليومي. نعتقد أن هناك العديد من الأسباب الجيدة لتفضيل اللغات الديناميكية لهذه التطبيقات، ولا نتوقع أن يتناقص استخدامها. لحسن الحظ، تجعل تقنيات تصميم اللغات الحديثة والمترجمات من الممكن القضاء على التبادل في الأداء إلى حد كبير وتوفير بيئة واحدة تكون منتجة بما يكفي للنمذجة وفعالة بما يكفي لنشر التطبيقات التي تتطلب أداءً عاليًا. تملأ لغة البرمجة جوليا هذا الدور: إنها لغة ديناميكية مرنة، مناسبة للحوسبة العلمية والعددية، مع أداء قابل للمقارنة مع اللغات الثابتة التقليدية.
لأن مترجم جوليا مختلف عن المفسرات المستخدمة للغات مثل بايثون أو R، قد تجد أن أداء جوليا غير بديهي في البداية. إذا وجدت أن شيئًا ما بطيء، نوصي بشدة بقراءة قسم Performance Tips قبل تجربة أي شيء آخر. بمجرد أن تفهم كيف تعمل جوليا، سيكون من السهل كتابة كود يكون سريعًا تقريبًا مثل C.
Julia Compared to Other Languages
تتميز جوليا بالكتابة الاختيارية، والتوزيع المتعدد، والأداء الجيد، الذي يتم تحقيقه باستخدام استنتاج النوع وjust-in-time (JIT) compilation (وoptional ahead-of-time compilation)، المنفذة باستخدام LLVM. إنها متعددة الأنماط، تجمع بين ميزات البرمجة الإجرائية، والوظيفية، والبرمجة الكائنية. توفر جوليا سهولة ووضوحًا في الحوسبة العددية عالية المستوى، بنفس الطريقة التي توفرها لغات مثل R وMATLAB وPython، لكنها تدعم أيضًا البرمجة العامة. لتحقيق ذلك، تبني جوليا على سلالة لغات البرمجة الرياضية، لكنها تستعير أيضًا الكثير من اللغات الديناميكية الشائعة، بما في ذلك Lisp، Perl، Python، Lua، وRuby.
أهم الاختلافات بين جوليا واللغات الديناميكية النموذجية هي:
- تفرض اللغة الأساسية القليل جداً؛ تم كتابة قاعدة جوليا والمكتبة القياسية بلغة جوليا نفسها، بما في ذلك العمليات الأولية مثل الحسابات الصحيحة.
- لغة غنية من الأنواع لبناء ووصف الكائنات، يمكن أيضًا استخدامها اختياريًا لإجراء إعلانات الأنواع
- القدرة على تعريف سلوك الدالة عبر العديد من تركيبات أنواع الوسائط من خلال multiple dispatch
- توليد تلقائي لكود فعال ومتخصص لأنواع المعاملات المختلفة
- أداء جيد، يقترب من أداء اللغات المترجمة بشكل ثابت مثل C
على الرغم من أن المرء يتحدث أحيانًا عن اللغات الديناميكية على أنها "غير نوعية"، إلا أنها ليست كذلك بالتأكيد. كل كائن، سواء كان بدائيًا أو معرفًا من قبل المستخدم، له نوع. ومع ذلك، فإن عدم وجود إعلانات نوع في معظم اللغات الديناميكية يعني أنه لا يمكن للمرء إرشاد المترجم حول أنواع القيم، وغالبًا لا يمكن التحدث عن الأنواع بشكل صريح على الإطلاق. من ناحية أخرى، في اللغات الثابتة، بينما يمكن للمرء - وعادة ما يجب - إضافة تعليقات توضيحية للأنواع للمترجم، فإن الأنواع موجودة فقط في وقت الترجمة ولا يمكن التلاعب بها أو التعبير عنها في وقت التشغيل. في جوليا، الأنواع هي نفسها كائنات في وقت التشغيل، ويمكن أيضًا استخدامها لنقل المعلومات إلى المترجم.
What Makes Julia, Julia?
بينما لا يحتاج المبرمج العادي إلى استخدام الأنواع أو التوزيع المتعدد بشكل صريح، فإنها الميزات الموحدة الأساسية في جوليا: يتم تعريف الدوال على مجموعات مختلفة من أنواع المعاملات، وتطبق عن طريق التوزيع إلى التعريف الأكثر تحديدًا. هذا النموذج مناسب جدًا للبرمجة الرياضية، حيث يكون من غير الطبيعي أن "يمتلك" المعامل الأول عملية كما في التوزيع التقليدي القائم على الكائنات. المشغلون هم مجرد دوال بتدوين خاص - لتمديد الجمع إلى أنواع البيانات المعرفة من قبل المستخدم، تقوم بتعريف طرق جديدة لدالة +
. ثم يتم تطبيق الكود الموجود بسلاسة على أنواع البيانات الجديدة.
جزئيًا بسبب استنتاج نوع وقت التشغيل (المعزز بواسطة تعليقات النوع الاختيارية)، وجزئيًا بسبب التركيز القوي على الأداء منذ بداية المشروع، تتجاوز كفاءة جوليّا الحسابية تلك الخاصة باللغات الديناميكية الأخرى، وتتنافس حتى مع تلك الخاصة باللغات المترجمة ثابتة النوع. بالنسبة للمشاكل العددية على نطاق واسع، كانت السرعة دائمًا، ولا تزال، ومن المحتمل أن تظل دائمًا أمرًا حاسمًا: لقد حافظت كمية البيانات المعالجة بسهولة على وتيرة مع قانون مور على مدى العقود الماضية.
Advantages of Julia
تسعى جوليا لإنشاء مزيج غير مسبوق من سهولة الاستخدام، والقوة، والكفاءة في لغة واحدة. بالإضافة إلى ما سبق، تشمل بعض مزايا جوليا مقارنة بالأنظمة المماثلة:
- مجاني ومفتوح المصدر (MIT licensed)
- أنواع المستخدم المعرفة سريعة ومضغوطة مثل الأنواع المدمجة
- لا حاجة لتوجيه الكود من أجل الأداء؛ الكود غير الموجه سريع
- مصمم للتوازي والحوسبة الموزعة
- خيوط "خضراء" خفيفة الوزن (coroutines)
- نظام نوع غير متطفل ولكنه قوي
- تحويلات وترقيات أنيقة وقابلة للتوسيع للأنواع الرقمية وأنواع أخرى
- دعم فعال لـ Unicode، بما في ذلك على سبيل المثال لا الحصر UTF-8
- استدعاء دوال C مباشرة (لا حاجة إلى أغلفة أو واجهات برمجة تطبيقات خاصة)
- قدرات قوية تشبه الصدفة لإدارة العمليات الأخرى
- ماكروهات شبيهة بلغة Lisp وغيرها من تسهيلات البرمجة الميتا