بيئة العمل
1. بيئة العمل
لغة OCaml متاحة للاستخدام مع أنظمة التشغيل الرئيسية (Linux، macOS، Windows). يمكن الحصول عليها على العنوان التالي:
https://ocaml.org/
يحتوي الموقع على تعليمات تثبيت لهذه الأنظمة. بعد تثبيت
OCaml، ستتمكن من الوصول إلى الأدوات التالية: مفسّر (interpreter)، ocaml؛ ومصرِّفان (compilers)،
ocamlc و ocamlopt؛ ومدير حزم (package manager)، opam. سنقدّم باختصار
هذه الأدوات الأربعة أدناه.
1.1 المصرِّف والمفسّر
يتضمن نظام OCaml مصرِّفين: ocamlc و ocamlopt. يُنشئ الأول
كودًا قابلاً للنقل (portable)، مستقلاً عن بنية الأجهزة؛ ويُنشئ الثاني
كودًا أصليًا (native) أكثر كفاءة (X86، ARM، etc.). يمكنك استخدام أي من هذين الأداتين لـ
ترجمة (compile) البرامج المعطاة في هذا الكتاب. يتضمن النظام أيضًا نسخة تفاعلية،
وهي البرنامج ocaml. هذا مفسّر (interpreter) أو toplevel (البيئة التفاعلية) ينفّذ
حلقة قراءة-تقييم-طباعة (REPL).
1.2 برنامج OCaml أول
نوضّح استخدام هذه الأدوات على مثال برنامج بسيط يعرض رسالة
Hello world! على الشاشة. يمكن كتابته على النحو التالي:
let () = print_string "Hello world!\n"
هذا بحدّ ذاته برنامج كامل. سنتناول تفاصيل مثل هذه البرامج في
الفصل التالي. إذا خُزّن البرنامج في ملف hello.ml، يمكن ترجمته (compile) من داخل
الطرفية[^1]
باستخدام ocamlc، على النحو التالي:
> ocamlc hello.ml
يمكننا ثم تنفيذ الملف (binary) الناتج، a.out، مع النتيجة المتوقعة:
> ./a.out
Hello world!
يمكن إعطاء الملف (binary) اسمًا مختلفًا باستخدام خيار -o للمصرِّف:
> ocamlc -o hello hello.ml
> ./hello
Hello world!
لاستخدام المفسّر، يكفي كتابة الأمر ocaml في الطرفية. يعرض
البرنامج آنذاك مؤشرًا (prompt) على شكل الحرف #، موجِّهًا المستخدم
لإدخال تعبير.
> ocaml
OCaml version 4.14.0
#
لتقييم التعبير، يجب أن ينتهي بفاصلتين منقوطتين ;; تتبعهما
عودة carriage return. تتحقق البيئة التفاعلية (toplevel) من صحة التعبير نحويًا (syntactically) وكونه
مُحدَّد الأنواع (well-typed). ثم تُقيّم التعبير وتعرض النتيجة. لذا،
لعرض رسالة Hello world! على الشاشة، يكفي
كتابة:
> ocaml
OCaml version 4.14.0
# let () = print_string "Hello world!\n";;
Hello world!
#
بالإضافة إلى النتيجة، تعرض البيئة التفاعلية (toplevel) أيضًا النوع (type) المستنتج (inferred) بواسطة OCaml للتعبير المُدخل. على سبيل المثال، إذا أدخلت التعبير الرياضي 1 + 4 × 2، يُرجع المفسّر الاستجابة التالية:
# 1 + 4 * 2;;
- : int = 9
#
يُظهر هذا أن التعبير من نوع int (نوع الأعداد الصحيحة)، وأن
نتيجته هي 9. من الآن فصاعدًا، سنقدّم التعبير المُدخل من قبل المستخدم
واستجابة المفسّر على خلفية رمادية. لذا، تقييم
التعبير السابق سيُقدَّم على النحو التالي:
# 1 + 4 * 2 ;;
- : int = 9
للخروج من البيئة التفاعلية (toplevel)، اكتب الأمر #quit، على النحو التالي:
# #quit;;
>
طريقة أبسط هي الضغط على المفتاحين ctrl و D في آن واحد.
1.3 بيئات البرمجة
كما هو الحال مع العديد من لغات البرمجة الأخرى، يمكنك العمل مع OCaml باستخدام محرر النصوص المفضّل لديك (Emacs، Visual Studio Code، etc.). يمكن تهيئة محرر النصوص لاستخدام تلوين نحو (syntax coloring) خاص بـ OCaml، وإبراز الأخطاء (error highlighting)، وما إلى ذلك.
في هذا النص، سنستخدم الأداة dune لأتمتة عملية الترجمة (compilation). يمكن الحصول على هذه الأداة عبر مدير الحزم opam، ويمكن تثبيتها بكتابة الأمر التالي في الطرفية:
> opam install dune
حل آخر هو استخدام الأداة make. هذا يتطلب كتابة ملف تهيئة (Makefile) خاص بـ OCaml.
بيئات عبر الإنترنت
هناك أيضًا حلول عبر الإنترنت لاستخدام OCaml دون تثبيته على جهازك. مثال واحد هو المفسّر عبر الإنترنت TryOCaml، المتوفر على العنوان التالي:
https://try.ocamlpro.com/
مثال آخر هو موقع الويب
https://replit.com/
الذي يوفر بيئات عبر الإنترنت لعدد من اللغات، ومن بينها OCaml.
1.4 تثبيت مكتبات OCaml
طوّرت مجتمع مستخدمي OCaml عددًا من مكتبات OCaml. أسهل طريقة لتثبيتها هي استخدام مدير الحزم opam. في الفصل التالي، سنستخدم مكتبة رسوميات (graphics)، يمكن تثبيتها على النحو التالي:
> opam install graphics
سنوضح لاحقًا كيفية استخدام هذه المكتبة، وبشكل عام، أي مكتبة تم تثبيتها باستخدام opam.