Workflow Tips

إليك بعض النصائح للعمل مع جوليا بكفاءة.

REPL-based workflow

كما تم توضيحه بالفعل في The Julia REPL، يوفر REPL الخاص بـ Julia وظائف غنية تسهل سير العمل التفاعلي بكفاءة. إليك بعض النصائح التي قد تعزز تجربتك في سطر الأوامر.

A basic editor/REPL workflow

تتضمن أبسط سير العمل في جوليا استخدام محرر نصوص بالتزامن مع سطر الأوامر julia.

أنشئ ملفًا، لنقل Tmp.jl، وضمنه

module Tmp

say_hello() = println("Hello!")

# Your other definitions here

end # module

using .Tmp

ثم، في نفس الدليل، ابدأ REPL الخاص بـ Julia (باستخدام الأمر julia). قم بتشغيل الملف الجديد كما يلي:

julia> include("Tmp.jl")

julia> Tmp.say_hello()
Hello!

استكشف الأفكار في REPL. احفظ الأفكار الجيدة في Tmp.jl. لإعادة تحميل الملف بعد تغييره، فقط قم بـ include مرة أخرى.

المفتاح في ما سبق هو أن الشيفرة الخاصة بك محاطة في وحدة. هذا يسمح لك بتحرير تعريفات struct وإزالة الطرق، دون الحاجة إلى إعادة تشغيل جوليا.

(تفسير: لا يمكن تعديل structs بعد التعريف، ولا يمكن حذف الطرق. لكن يمكنك إعادة كتابة تعريف وحدة، وهو ما نفعله عندما نعيد include("Tmp.jl")).

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

Browser-based workflow

هناك بعض الطرق للتفاعل مع جوليا في المتصفح:

  • استخدام دفاتر بلوتو من خلال Pluto.jl
  • استخدام دفاتر Jupyter من خلال IJulia.jl

Revise-based workflows

سواء كنت في REPL أو في IJulia، يمكنك عادةً تحسين تجربة التطوير الخاصة بك باستخدام Revise. من الشائع تكوين Revise ليبدأ كلما تم بدء جوليا، وفقًا للتعليمات في Revise documentation. بمجرد التكوين، سيتتبع Revise التغييرات في الملفات في أي وحدات محملة، وأي ملفات تم تحميلها في REPL باستخدام includet (ولكن ليس مع include العادية)؛ يمكنك بعد ذلك تعديل الملفات وستدخل التغييرات حيز التنفيذ دون إعادة تشغيل جلسة جوليا الخاصة بك. تدفق العمل القياسي مشابه لتدفق العمل القائم على REPL أعلاه، مع التعديلات التالية:

  1. ضع كودك في وحدة ما على مسار التحميل الخاص بك. هناك عدة خيارات لتحقيق ذلك، من بينها خياران موصى بهما:

    • للمشاريع طويلة الأجل، استخدم PkgTemplates:

      using PkgTemplates
      t = Template()
      t("MyPkg")

      سيؤدي هذا إلى إنشاء حزمة فارغة، "MyPkg"، في دليل .julia/dev الخاص بك. لاحظ أن PkgTemplates يتيح لك التحكم في العديد من الخيارات المختلفة من خلال مُنشئ Template الخاص به.

      في الخطوة 2 أدناه، قم بتحرير MyPkg/src/MyPkg.jl لتغيير كود المصدر، و MyPkg/test/runtests.jl للاختبارات.

    • بالنسبة لمشاريع "التخلص منها"، يمكنك تجنب أي حاجة للتنظيف من خلال القيام بعملك في دليلك المؤقت (على سبيل المثال، /tmp).

      انتقل إلى دليلك المؤقت وابدأ تشغيل جوليا، ثم قم بما يلي:

      pkg> generate MyPkg            # type ] to enter pkg mode
      julia> push!(LOAD_PATH, pwd())   # hit backspace to exit pkg mode

      إذا قمت بإعادة تشغيل جلسة Julia الخاصة بك، فسيتعين عليك إعادة إصدار ذلك الأمر الذي يعدل LOAD_PATH.

      في الخطوة 2 أدناه، قم بتحرير MyPkg/src/MyPkg.jl لتغيير كود المصدر، وأنشئ أي ملف اختبار تختاره.

  2. قم بتطوير حزمةك

    قبل تحميل أي كود، تأكد من أنك تقوم بتشغيل Revise: قل using Revise أو اتبع الوثائق الخاصة به لتكوينه للتشغيل تلقائيًا.

    ثم انتقل إلى الدليل الذي يحتوي على ملف الاختبار الخاص بك (المفترض هنا أن يكون "runtests.jl") وقم بما يلي:

    ```julia-repl julia> using MyPkg

    julia> include("runtests.jl") ```

    يمكنك تعديل الكود في MyPkg بشكل تكراري في محرر النصوص الخاص بك وإعادة تشغيل الاختبارات باستخدام include("runtests.jl"). بشكل عام، لا يجب عليك إعادة تشغيل جلسة Julia الخاصة بك لرؤية التغييرات تأخذ مفعولها (مع مراعاة بعض limitations).