Julia 1.0 - Julia

جوليا 1.0 الوثائق




julia

جوليا 1.0 الوثائق

مرحبًا بك في وثائق جوليا 1.0.

يرجى قراءة منشور مدونة الإصدار للحصول على نظرة عامة على اللغة والعديد من التغييرات منذ Julia v0.6. لاحظ أنه تم إصدار الإصدار 0.7 إلى جانب 1.0 لتوفير مسار ترقية للحزم والرمز الذي يسبق إصدار 1.0. الفرق الوحيد بين 0.7 و 1.0 هو إزالة تحذيرات الإهمال. للحصول على قائمة كاملة بجميع التغييرات منذ 0.6 ، راجع ملاحظات الإصدار للإصدار 0.7

المقدمة

تتطلب الحوسبة العلمية عادةً أعلى أداء ، لكن خبراء المجال انتقلوا إلى حد كبير إلى إبطاء اللغات الديناميكية للعمل اليومي. نعتقد أن هناك العديد من الأسباب الجيدة لتفضيل اللغات الديناميكية لهذه التطبيقات ، ولا نتوقع أن يتضاءل استخدامها. لحسن الحظ ، فإن تقنيات التصميم اللغوي والمترجم اللغوي الحديثة تجعل من الممكن في الغالب القضاء على مفاضلة الأداء وتوفير بيئة واحدة منتجة بدرجة كافية للنماذج الأولية والكفاءة الكافية لنشر تطبيقات كثيفة الأداء. تملأ لغة البرمجة جوليا هذا الدور: إنها لغة ديناميكية مرنة ، مناسبة للحوسبة العلمية والعددية ، مع أداء مشابه للغات التقليدية المطبوعة.

نظرًا لأن مترجم Julia يختلف عن المترجمين الشفويين المستخدمين في لغات مثل Python أو R ، فقد تجد أن أداء Julia غير سهل في البداية. إذا وجدت أن شيئًا ما بطيئًا ، فنحن نوصي بشدة بالقراءة من خلال قسم نصائح الأداء قبل تجربة أي شيء آخر. بمجرد أن تفهم كيف تعمل جوليا ، فمن السهل أن تكتب كودًا يكون أسرع من C.

تتميز Julia بالكتابة الاختيارية والإرسال المتعدد والأداء الجيد ، والتي تم تحقيقها باستخدام الاستنتاج النوعي وتجميع البيانات في الوقت المناسب (JIT) ، الذي تم تنفيذه باستخدام LLVM . إنه نموذج متعدد ، يجمع بين ميزات البرمجة الضرورية والوظيفية والموجهة نحو الكائن. توفر Julia السهولة والتعبير للحوسبة العددية عالية المستوى ، بنفس طريقة اللغات مثل R و MATLAB و Python ، ولكنها تدعم أيضًا البرمجة العامة. لتحقيق ذلك ، تعتمد جوليا على نسب لغات البرمجة الرياضية ، ولكنها تستعير أيضًا الكثير من اللغات الديناميكية الشعبية ، بما في ذلك Lisp و Perl و Python و Lua و Ruby .

أهم مغادرات جوليا من اللغات الديناميكية النموذجية هي:

  • اللغة الأساسية تفرض القليل جدا ؛ جوليا بيز والمكتبة القياسية مكتوبة بلغة جوليا نفسها ، بما في ذلك العمليات البدائية مثل الحساب الصحيح
  • لغة غنية من الأنواع لبناء ووصف الكائنات ، والتي يمكن أيضًا استخدامها اختياريًا لإنشاء تعريفات كتابة
  • القدرة على تحديد سلوك الوظيفة عبر العديد من مجموعات أنواع الوسائط عبر الإرسال المتعدد
  • الإنشاء التلقائي للكود المتخصص الفعال لأنواع الوسائط المختلفة
  • أداء جيد ، مع الاقتراب من اللغات المترجمة بشكل ثابت مثل C

على الرغم من أن المرء يتحدث أحيانًا عن اللغات الديناميكية باعتبارها "غير مكتوبة" ، فهي بالتأكيد ليست: كل كائن ، سواء كان بدائيًا أو معرفًا من قبل المستخدم ، له نوع. ومع ذلك ، فإن الافتقار إلى تعريفات الكتابة في معظم اللغات الديناميكية يعني أنه لا يمكن للمرء أن يعلم المترجم عن أنواع القيم ، وغالبًا لا يستطيع التحدث صراحة عن الأنواع على الإطلاق. في اللغات الثابتة ، من ناحية أخرى ، بينما يمكن للمرء - ويجب عليه عادةً - إضافة تعليقات توضيحية لأنواع المترجم ، لا توجد أنواع إلا في وقت الترجمة ولا يمكن معالجتها أو التعبير عنها في وقت التشغيل. في جوليا ، الأنواع هي كائنات وقت التشغيل ، ويمكن استخدامها أيضًا لنقل المعلومات إلى المترجم.

على الرغم من أن المبرمج العادي لا يحتاج إلى استخدام الأنواع أو الإرسال المتعدد بشكل صريح ، إلا أنه يمثل الميزات الأساسية الموحدة لجوليا: يتم تعريف الوظائف في مجموعات مختلفة من أنواع الوسائط ، ويتم تطبيقها عن طريق الإرسال إلى تعريف المطابقة الأكثر تحديدًا. يعد هذا النموذج مناسبًا للبرمجة الرياضية ، حيث يكون من غير الطبيعي بالنسبة للوسيطة الأولى "امتلاك" عملية كما هو الحال في الإرسال التقليدي ذي الوجهة الكائن. المشغلون مجرد وظائف برموز خاصة - لتوسيع الإضافة لأنواع البيانات الجديدة المعرفة من قبل المستخدم ، يمكنك تحديد طرق جديدة لوظيفة + . التعليمات البرمجية الموجودة ثم تطبق بسلاسة على أنواع البيانات الجديدة.

جزئيًا بسبب استنتاج نوع وقت التشغيل (مدعومًا بتعليقات توضيحية من النوع الاختياري) ، وجزئيًا بسبب التركيز القوي على الأداء منذ بداية المشروع ، تتجاوز الكفاءة الحسابية لجوليا كفاءة اللغات الديناميكية الأخرى ، بل وحتى منافسيها المترجمة بشكل ثابت اللغات. بالنسبة للمشاكل العددية الكبيرة ، كانت السرعة دائمًا ما زالت ، وربما ستكون دائمًا حاسمة: كمية البيانات التي تتم معالجتها قد تواكبت بسهولة مع قانون مور على مدى العقود الماضية.

تهدف جوليا إلى إنشاء مزيج غير مسبوق من سهولة الاستخدام والقوة والكفاءة بلغة واحدة. بالإضافة إلى ما سبق ، تشمل بعض مزايا جوليا على الأنظمة المماثلة:

  • مصدر حر ومفتوح ( MIT مرخص )
  • أنواع المعرفة من قبل المستخدم هي سريعة وصغيرة مثل المدمج في
  • لا حاجة إلى توجيه رمز الأداء ؛ رمز devectorized بسرعة
  • مصممة للتوازي والحساب الموزعة
  • خيوط "خضراء" خفيفة الوزن ( coroutines )
  • غير مزعجة لكنها قوية نوع النظام
  • التحويلات والترقيات أنيقة وقابلة للتمديد لأنواع رقمية وأنواع أخرى
  • دعم فعال لـ Unicode ، بما في ذلك على سبيل المثال لا الحصر UTF-8
  • استدعاء وظائف C مباشرة (لا حاجة إلى أغلفة أو واجهات برمجة التطبيقات الخاصة)
  • قدرات قوية مثل قذيفة لإدارة العمليات الأخرى
  • يشبه وحدات الماكرو وغيرها من المرافق metaprogram