2 السمات الرئيسية للغة المخطط: العودية. لغة البرمجة المخططة

30.03.2019

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

معلومات مختصرة

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

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

بناءً على المفاهيم الموصوفة، ظهرت لغة المخطط، والتي بقيت حتى يومنا هذا مع تعديلات طفيفة.

بناء الجملة

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

    بين قوسين مستديرة. يجب أن يتضمنها أي تعبير كامل. وهذا يخيف أولئك الذين يرون الكود لأول مرة، ولكن بعد ذلك لا يسبب صعوبات في الممارسة العملية.

    لا توجد أحرف خدمة إضافية. يكفي بين قوسين. بالمناسبة، الفاصلة المنقوطة تفصل التعليقات عن الكود.

    بناء هياكل من نوع "كائن الحركة". يبدو هذا غير عادي في لغة البرمجة، ولكن عند ترجمته إلى اللغة الطبيعية يكون مفهومًا تمامًا.

خلاف ذلك، من وجهة نظر بناء الجملة، فهي لغة برمجة كلاسيكية مبسطة. ألقِ نظرة على مثال بسيط لحساب العوامل:

(تعريف (مضروب ن)
(إذا (= ن 0)
1
(*ن(مضروب(-n1)))))

كما ترون، بصرف النظر عن ترتيب التسجيل وعدد كبير من الأقواس، لا يوجد شيء غير عادي.

أين يتم استخدامه؟

تتم دراسة المخطط في المدارس والجامعات الأمريكية. وبمساعدتها، يتعلم الطلاب أساسيات البرمجة الإجرائية والوظيفية. لن تتمكن من القيام بهذه الخدعة بأي لغة أساسية أخرى.

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

  • كمية كبيرة من التعليمات البرمجية؛
  • صعوبة في تصحيح الأخطاء وإيجاد الأخطاء؛
  • الافتقار إلى المزايا الوظيفية مقارنة بـ Common Lisp وHaskell وClojure وما إلى ذلك.

بشكل عام، كسب المال باستخدام لغة المخطط يمثل مشكلة كبيرة.

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

الآفاق

على الرغم من حقيقة أن Scheme وجد نفسه في مجال التعليم فقط، إلا أنه تم تضمينه في أعلى 50 تصنيفًا لـ TIOBE. ولكن هناك اتجاه سلبي - تفقد اللغة 0.05٪ من شعبيتها كل عام. ويرجع ذلك إلى ظهور منافسين مناسبين للبرمجة الوظيفية، ولديهم إمكانيات أكبر للتطبيق في الحياة، وبسيطون في نفس الوقت.

وبالتالي، هناك احتمال كبير أن تختفي اللغة من الرادار خلال 5 إلى 10 سنوات، وسيحل مكانها بعض الخدش. ولكن قبل أن يحدث ذلك، دعونا نأخذ بضع دقائق من حياتنا للتعرف على Scheme. مع تاريخها الممتد لـ 47 عامًا، فهي تستحق ذلك.

تتمتع لغة المخطط تقليديًا بدعم جيد إلى حد ما لـ Emacs. يتم توفير هذا الدعم من خلال مجموعة من الحزم التي يمكنها العمل مع كل من التطبيقات العشوائية لهذه اللغة ( وضع المخطط, commuscheme, الدجال)، ودعم تطبيقات محددة فقط ( xscheme, نظام تحديد المواقع, وضع النحل, مناورة). عادةً ما يكون الدعم الخاص بالتنفيذ أكثر شمولاً إلى حد ما من الحزم التي تدعم كافة عمليات التنفيذ.

تحاول هذه المقالة تغطية جميع مشكلات دعم البرمجة في Scheme، وتتحدث أولاً عن الأشياء المشتركة بين جميع التطبيقات، وبعد ذلك فقط تتناول الحزم التي تنفذ الدعم لإصدارات معينة من اللغة.

وضع المخطط

وضع المخططالمرفق مع توزيعات Emacs هو تعديل وضع اللثغةللعمل مع التعليمات البرمجية المصدر في لغة المخطط. تنفذ هذه الحزمة الوظائف التالية:

  • تسليط الضوء على تركيب
  • المسافة الفارغة
  • تسليط الضوء على الأقواس المقترنة

على القاعدة وضع المخططتم إنشاء العديد من الحزم الأخرى - وأخرى تعمل على توسيع وظائفها عن طريق إضافة وظائف لتنفيذ التعليمات البرمجية مباشرة من مخزن Emacs المؤقت، وما إلى ذلك. من الأشياء.

يتم تمكين هذا الوضع تلقائيًا للملفات التي تستخدم الامتدادات القياسية لملفات مصدر النظام - .scm، و.ss، وما إلى ذلك. لتمكين هذا الوضع لملفات أخرى، قم بإضافة التعليمة البرمجية التالية إلى ملف التهيئة الخاص بك (استبدال .scm بالملحق المطلوب):

(إضافة إلى القائمة "auto-mode-alist"("\\.scm$" . مخطط الوضع))

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

كموشيمي

حقيبة بلاستيكية commuschemeتم كتابته بواسطة Olin Shivers منذ سنوات عديدة، ولكنه لا يزال أحد حزم المخطط الرئيسية. تنفذ هذه الحزمة العمل التفاعلي مع مترجمي لغة المخطط. يتم التفاعل مع المترجم باستخدام إمكانيات الحزمة آت، متضمن مع إيماكس.

إعداد الحزمة

يعد إعداد الحزمة أمرًا بسيطًا للغاية - ضع الكود التالي في ملف التهيئة الخاص بك

(تحميل تلقائي "مخطط التشغيل "cmuscheme" "تشغيل مخطط أدنى" t) (اسم برنامج مخطط setq "mzscheme")

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

يستخدم المخزن المؤقت للمترجم الفوري الذي أنشأته الحزمة وضعًا خاصًا - وضع النظام السفلي، والذي يمكن تكوينه باستخدام خطاف وضع النظام السفلي. بالإضافة إلى ذلك، في حالة وجود ملف ~/.emacs_SCHEMENAME أو ~/.emacs.d/init_SCHEMENAME.scm (حيث يكون SCHEMENAME هو اسم المترجم)، فسيتم تنفيذهما فورًا بعد تحميل المترجم.

العمل مع الحزمة

الوظيفة الرئيسية للحزمة هي وظيفة مخطط التشغيل، التي تقوم بتشغيل مترجم لغة المخطط المحدد وتسمح بتنفيذ التعليمات البرمجية التفاعلية دون مغادرة Emacs.

عند القيام بذلك، يمكنك التحكم في أي جزء من التعليمات البرمجية (كتلة مخصصة أو تعريف دالة أو تعبير واحد) سيتم تنفيذه باستخدام وظائف مختلفة تحددها الحزمة - وظيفة تعريف إرسال المخطط (اختصارات لوحة المفاتيح C-c C-e أو C-M-x) يقوم بتمرير التعريف الحالي إلى المترجم لتنفيذه؛ تتيح لك وظيفة منطقة إرسال المخطط (C-c C-r) تنفيذ جزء محدد من كود المصدر؛ يتم استخدام مخطط الدالة-إرسال-آخر-sexp (C-x C-e) لتقييم التعبير الموجود أمام المؤشر؛ وتسمح لك وظيفة تحميل الملف (C-c C-l) بتحميل ملف كامل إلى المترجم (تسمح لك بتنفيذ تعليمات برمجية من أي ملف يحدده المستخدم، وليس فقط من المخزن المؤقت الحالي).

يعمل مترجم المخطط في مخزن مؤقت منفصل يسمى *scheme*، حيث يتم أيضًا إخراج نتائج تقييم التعبيرات والوظائف. للتبديل بسرعة إلى هذا المخزن المؤقت من المخزن المؤقت للنص المصدر، توجد وظيفة منفصلة للتبديل إلى المخطط (C-c C-z). بالإضافة إلى ذلك، نظرًا لأنه غالبًا ما يكون من الضروري تنفيذ التعليمات البرمجية وعرض النتائج، تحدد الحزمة أيضًا وظيفتين ترسلان التعليمات البرمجية إلى المترجم الفوري للتنفيذ، وتتحول إلى المخزن المؤقت *scheme* - مخطط إرسال التعريف والذهاب ( C-c M-e) لحساب التعريف الحالي ومخطط إرسال المنطقة والذهاب (C-c M-r) لتقييم كود المصدر المخصص.

للعمل مع وحدات الماكرو، توفر الحزمة وظيفة مخطط توسيع النموذج الحالي (C-c C-x)، والتي تسمح لك بتوسيع تعريف الماكرو الحالي إلى رمز المخطط المقابل. يتم تنفيذ توسيع التعليمات البرمجية بواسطة المترجم والإخراج إلى المخزن المؤقت *المخطط*. وعند العمل مع تطبيقات المخطط التي تدعم تجميع التعليمات البرمجية المصدر، يمكن للمستخدم الاستفادة من وظائف ملف ترجمة المخطط (C-c C-k) ووظائف تعريف ترجمة المخطط (C-c M-c)، التي تقوم بتجميع الملف أو التعريف الحالي، على التوالي. .

كما ذكرنا سابقًا، يوجد وضع خاص في المخزن المؤقت للمترجم الفوري - وضع النظام السفلي الذي تعمل فيه كافة أوامر وضع comint، بالإضافة إلى الأوامر التالية commuscheme- ملف ترجمة المخطط (C-c C-k)، وملف تحميل المخطط (C-c C-l)، ومخطط إرسال-آخر-sexp (C-x C-e) وتعريف إرسال المخطط (C-M-x).

الدجال

حزمة Quack هي امتداد للحزمة commuschemeوينفذ الميزات الإضافية التالية (يتعلق الكثير منها في المقام الأول بالعمل مع نظام PLT):

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

التثبيت والتكوين

تمت كتابة الحزمة بواسطة نيل فان دايك، وهي متاحة للتنزيل من موقع المؤلف. يتم تثبيت الحزمة عن طريق نسخها إلى دليل حيث يمكن لـ Emacs العثور عليها، ويتم تحميلها بالأمر:

(تتطلب "الدجال")

يمكن تكوين جميع إعدادات الحزمة باستخدام مجموعة إعدادات Quack، أو باستخدام قائمة Quack. تتضمن هذه الإعدادات عناوين الأدلة وSRFIs، وتحديد اختصار لوحة المفاتيح البادئة الذي تستخدمه الحزمة، وما إلى ذلك.

يُنصح مستخدمو نظام PLT بتنزيل الأدلة الخاصة بهذا المترجم من موقع المشروع وتثبيتها في المجموعة وثيقة. يتم تحديد موقع مجموعات نظام PLT إما عن طريق المتغير quack-pltcollect-dirs، الذي يمكنه سرد جميع الدلائل التي تحتوي على مجموعات العمل، أو عن طريق متغيرات البيئة PLTHOME و/أو PLTCOLLECTS.

تتطلب الحزمة أيضًا وجود برنامج wget، والذي سيتم استخدامه للوصول إلى SRFI.

العمل مع الحزمة

بعد تنزيل الحزمة، بالإضافة إلى الوظائف commuschemeو وضع المخططتصبح الوظائف المحددة بواسطة الحزمة متاحة. يمكن للمستخدم أداء هذه الوظائف إما باستخدام الآليات القياسية (اختصارات لوحة المفاتيح و/أو التشغيل حسب اسم الوظيفة) أو باستخدام قائمة Quack.

يمكنك عرض الوثائق باستخدام عدة وظائف. يتم استخدام وظيفة عرض الدليل (C-c C-q m) لعرض الوثائق في متصفح الويب. يتيح لك هذا الأمر عرض كل من الوثائق الأساسية للغة المخطط والوثائق الخاصة بتطبيقات محددة. لعرض SRFI، يتم تعريف أمر منفصل - quack-view-srfi (C-c C-q s)، الذي يطلب رقم المستند المطلوب ويفتحه في المتصفح. وبالنسبة لمستخدمي نظام PLT، يتوفر أيضًا الأمر quack-view-keyword-docs (C-c C-q k)، الذي يعرض الوثائق الخاصة بكلمة رئيسية معينة ( يعتمد تشغيل هذا الأمر على التثبيت الصحيح لوثائق نظام PLT).

كما هو مذكور أعلاه، تنفذ الحزمة وظيفة مخطط التشغيل (C-c C-q r)، والتي تسمح لك بتشغيل مترجمات لغة المخطط، واختيارهم من قائمة المترجمين المعروفين (بما في ذلك التشغيل بالخيارات الضرورية)، ويتذكر أيضًا آخر مستخدم خيار.

يتم أيضًا تعريف الوظائف الملائمة للعمل مع المجموعات لمستخدمي نظام PLT. تقوم وظيفة quack-find-file (C-c C-q f) بفتح ملف باستخدام البيانات من السياق الحالي للحصول على اسم الملف. على سبيل المثال، إذا كنت تستخدم هذه الوظيفة أثناء وجود المؤشر على الكود (يتطلب (lib "list.ss")) فستتم مطالبتك بفتح ملف list.ss من المجموعة com.mzlib. بالإضافة إلى ذلك، تم تعريف وظيفة quack-dired-pltcollect، والتي تسمح لك بفتح مخزن مؤقت رهيبلمجموعة مخطط PLT المطلوبة (عند تحديد اسم، يمكن للمستخدم استخدام الإكمال التلقائي لاسم المجموعة).

تنفذ هذه الحزمة أيضًا العديد من الوظائف التي تغير تنسيق التعليمات البرمجية، مما يجعلها أكثر ملاءمة للاستخدام. تعمل وظيفة quack-tidy-buffer (C-c C-q t) على إعادة المسافة البادئة للتعليمات البرمجية، واستبدال علامات التبويب بمسافات، وإزالة الأسطر الفارغة الإضافية، وإزالة أحرف المسافات البيضاء الزائدة من الأسطر، وإضافة سطر جديد في نهاية الملف إذا لم يكن هناك أي شيء. تقوم الدالة quack-toggle-lambda (C-c C-q l) بتغيير تعريف الدالة الحالية من (define (func args) ...) إلى (define func (lambda (args) ..)) مما يسمح لإشارة lambda سيتم عرضها في الكود (عند تمكين خيارات عرض هذا الرمز). على سبيل المثال، مثل هذا:

حزمة GCA

G.C.A.- حزمة مصممة للعمل بفعالية مع التعليمات البرمجية المصدرية للمخطط. وقد تم تصميمه لدعم مخطط Gauche، ولكن يمكن استخدامه مع اللهجات الأخرى. يحب الدجال، فهو يعمل على توسيع وظائف الحزمة commuscheme.

تحتوي هذه الحزمة على الميزات التالية:

  • إدخال أجزاء من التعليمات البرمجية باستخدام آلية القالب
  • عرض أوصاف الوظائف
  • إضافة الاسم

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

التثبيت والتكوين

حقيبة بلاستيكية نظام تحديد المواقعيأتي مزودًا بأحدث إصدارات Guile، لذا كل ما عليك فعله هو إضافة ملفات مصدر Emacs Lisp إلى مسار بحث Emacs الخاص بك، وإضافة السطر التالي إلى ملف التهيئة:

(تتطلب "جي دي إس")

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

يمكن ضبط الإعدادات الأخرى باستخدام مجموعة إعدادات gds.

العمل مع كود المصدر

حقيبة بلاستيكية نظام تحديد المواقعيستخدم نفس اختصارات لوحة المفاتيح لحساب الكود commuscheme. الاستثناء هو الدالة gds-eval-expression (C-c C-e)، التي تقوم بتقييم التعبير الذي تم إدخاله في المخزن المؤقت الصغير.

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

يتم إكمال الاسم بواسطة وظيفة gds-Complete-symbol (اختصار M-TAB)، التي تحاول العثور على جميع الرموز المعروفة التي تتطابق أسماؤها مع الحروف الموجودة أمام المؤشر. إذا تم العثور على اسم واحد، فسيتم إدراجه على الفور، ولكن إذا كان هناك عدة خيارات، فستظهر نافذة جديدة يمكن للمستخدم من خلالها تحديد الاسم المطلوب.

يتم الحصول على المساعدة لرمز معين باستخدام الوظيفة gds-help-symbol (C-h g)، والتي تنتج نفس النتائج مثل تشغيل الأمر (help SYMBOL) في بيئة Guile التفاعلية. تتم مطالبة المستخدم باسم الرمز عبر المخزن المؤقت الصغير، لكن القيمة الافتراضية هي الاسم الذي يوجد عليه المؤشر. إذا كنت لا تتذكر الاسم الدقيق للرمز، فيمكنك استخدام الوظيفة gds-apropos (C-h G)، والتي تشبه وظيفة التنفيذ (apropos REGEXP) في Guile، والتي تطبع قائمة بالرموز التي تتطابق أسماؤها مع الإدخال تعبير عادي.

تصحيح الأخطاء

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

(وحدات الاستخدام (مصائد تصحيح أخطاء عميل gds-ice-9)) (استخدام الوحدة النمطية! "(مستخدم المكر)"(جلسة Ice-9)) (gds-accept-input #f)

بعد ذلك، يمكنك العمل مع نظام تحديد المواقع. لتعيين نقطة توقف في إجراء proc_name، يتم استخدام ما يلي، ويتم حسابه في المخزن المؤقت للتعليمات البرمجية المصدر:

(تثبيت-فخ (جعل #: السلوك gds-debug-trap #: الإجراء proc_name))

وبعد استدعاء الإجراء المحدد، سوف تتلقى في المخزن المؤقت نظام تحديد المواقعشيء من هذا القبيل:

إجراء الاستدعاء: => s s --:** PID XXXXXX (Guile-Debug)--All--------

في هذا المخزن المؤقت، يمكنك التنقل في المكدس، وعرض حالته، ومتابعة تنفيذ البرنامج، و/أو التنقل خلاله. يتم ضمان العمل في المخزن المؤقت للمكدس باستخدام عدد من الأوامر المرتبطة بمفاتيح فردية.

يمكن استخدام المفاتيح التالية للتنقل عبر مكدس استدعاءات الوظائف: يتم استخدام u وC-p والسهم لأعلى للتحرك لأعلى مكدس الاستدعاءات وتحديد هذا الإطار (وظيفة gds-up)، ويتم استخدام d وC-n والسهم لأسفل للتحرك لأسفل (gds-down)، ويتم استخدام مفتاح RET لتحديد الإطار الذي يوجد عليه المؤشر.

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

تتضمن الوظائف الإضافية التي تعمل في المخزن المؤقت للمكدس ما يلي:

تقييم نظام تحديد المواقع (المفتاح الإلكتروني)يسمح لك بتقييم تعبير باستخدام البيئة المقابلة للإطار المحدد، مع عرض النتيجة في منطقة الصدى؛ نظام تحديد المواقع معلومات الإطار (ط)يعرض معلومات حول الإطار المحدد - سطر في الملف المصدر، والتعبير المقابل، ونوع الإطار، وما إلى ذلك؛ نظام تحديد المواقع الإطار الوسائط (A)يظهر وسيطات إطار التطبيق؛ نظام التوزيع العالمي-بروك المصدر(S)يعرض الكود المصدري للإجراء المسمى. تعتبر هذه الوظيفة مفيدة جدًا في الحالات التي يتم فيها إنشاء الإجراء بواسطة تعبير لامدا مجهول، حيث يتم عرض هذه الإجراءات في مكدس استدعاء الوظيفة كما يلي وهو ما لا يوضح ما سيتم القيام به بعد ذلك.

لمواصلة تنفيذ برنامج تمت مقاطعته، نظام تحديد المواقعينفذ الوظائف التالية:

نظام تحديد المواقع-الذهاب (ز، ج أو ف)يستمر في تنفيذ البرنامج؛ نظام تحديد المواقع-ملف الخطوة (SPC)ينفذ خطوة واحدة من الوظائف التي تنتمي إلى نفس الملف المصدر كإطار المكدس المحدد. سيتم تنفيذ الوظائف من الملفات الأخرى، ولكن دون الدخول فيها؛ نظام تحديد المواقع خطوة إلى (i)ينفذ الخطوة التالية. هذا هو المستوى الأكثر تفصيلاً لتنفيذ البرنامج؛ نظام تحديد المواقع خطوة أكثر (س)ينفذ البرنامج حتى يتم الانتهاء من تنفيذ إطار المكدس المحدد.

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

مخطط48

مخطط48- حزمة أخرى على أساس commuscheme، ولكن توفير الدعم الموسع لتنفيذ Scheme48. تضيف هذه الحزمة الدعم قفل الخطللكلمات الأساسية والمشغلات الخاصة بـ Scheme48، بالإضافة إلى روابط المفاتيح الإضافية لأوامر تقييم التعبير.

يعد إجراء تثبيت هذه الحزمة قياسيًا - ضع gambit.el في مكان ستجده فيه Emacs، وأضف الأسطر التالية إلى ملف التهيئة:

(التحميل التلقائي "المناورة في الوضع السفلي" "المناورة" "ربط وضع المناورة في cmuscheme.") (تحميل تلقائي "وضع المناورة" "المناورة" "ربط وضع المناورة بالمخطط.") (خطاف إضافة "خطاف وضع المخطط السفلي (وضع المناورة الوظيفية") (خطاف إضافة "خطاف وضع المخطط (وضع المناورة الوظيفية)) (اسم برنامج مخطط setq "gsi -: د-" )

يتم تشغيل مترجم Gambit باستخدام وظيفة مخطط التشغيل المطبقة في commuscheme، لكن مناورةيضيف إجراءات تصفية الإخراج إليها، مما يسمح للحزمة بالحصول على معلومات الموقع في الملف المصدر. بعد تشغيل المترجم الفوري، يستطيع المستخدم استخدام اختصارات لوحة المفاتيح القياسية لتنفيذ وتجميع التعليمات البرمجية - C-x C-e، C-c C-l، C-c C-k، إلخ.

بالإضافة إلى الميزات commuscheme، حقيبة بلاستيكية مناورةيقدم العديد من الوظائف المصممة لتصحيح أخطاء التعليمات البرمجية المصدر:

متابعة المناورة (F8 أو C-c c)مواصلة تنفيذ التعليمات البرمجية. مثل الأمر ج للمترجم؛ المناورة-الزحف-backtrace-الأحدث (F9 أو C-c ])انتقل إلى الإطار السابق في السلسلة. على غرار الأمر - مترجم؛ المناورة-الزحف-backtrace-الأقدم (F10 أو C-c [)الانتقال إلى الإطار التالي في السلسلة. على غرار الأمر + مترجم؛ استمرار المناورة (F11 أو C-c s)تنفيذ خطوة حسابية واحدة بما في ذلك إدخال الوظيفة المطلوبة. على غرار أمر المترجم، s؛ استمرار قفزة المناورة (F12 أو C-c l)تنفيذ خطوة حسابية واحدة دون إدخال الوظيفة المطلوبة. مشابه لأمر المترجم،l؛ المناورة-قتل-الأخيرة-المنبثقة (C-c_)احذف النافذة التي تم إنشاؤها لعرض التعبير.

توجد اختصارات لوحة مفاتيح أقصر لهذه الأوامر: M-c وM-[ وM-] وM-s وM-l وM-_، ولكن لا يتم تمكينها افتراضيًا لأنها لا تتبع تمامًا اصطلاحات اختصارات لوحة المفاتيح في Emacs. لتمكين استخدامها، تحتاج إلى تشغيل الأمر التالي (أو وضعه في ملف التهيئة):

(setq مناورة-repl-command-بادئة "\e")

وضع النحل (bmacs)

com.bmacsهو تطبيق لبيئة برمجية متكاملة للعمل مع Bigloo Scheme. تنفذ هذه الحزمة الميزات التالية:

  • تصحيح التعليمات البرمجية؛
  • التنميط.
  • الإنشاء التلقائي لملفات Makefiles وتحديثها؛
  • التنقل بالكود؛
  • التكامل مع أنظمة التحكم في الإصدار؛
  • عرض الوثائق؛
  • تنفيذ التعليمات البرمجية التفاعلية؛
  • التوسع الكلي.
  • بعض الدعم لأسلوب البرمجة القراءة والكتابة.

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

التثبيت والتكوين

يتم توفير هذه الحزمة كجزء من Bigloo Scheme وتقع في الدليل الفرعي bmacs للتوزيع. لتثبيت الحزمة، انتقل إلى هذا الدليل وقم بتشغيل الأمر هناك:

قم بإجراء تثبيت EMACSDIR =

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

(تحميل تلقائي "bdb "bdb" "وضع bdb" t) (تحميل تلقائي "وضع النحل" وضع النحل "" وضع النحل" t) (setq auto-mode-alist (إلحاق "("\\.scm$" . وضع النحل) ("\\.sch$" . وضع النحل) ("\\.scme$" . وضع النحل) ("\\.bgl$" . وضع النحل) ("\\.bee$ " . وضع النحل)) قائمة الوضع التلقائي))

يمكن ضبط إعدادات الحزمة باستخدام مجموعة إعدادات النحلة، والتي توفر إعدادات وضع النحل، والمجموعات dbg & حشرة، يستخدم لتعيين إعدادات مصحح الأخطاء.

العمل مع كود المصدر

بعد التنزيل وضع النحليمكن للمستخدم تنفيذ الأوامر الأساسية باستخدام أيقونات شريط الأدوات المقابلة، أو عن طريق تحديد العناصر الضرورية من قائمة Bee، والتي تظهر عند تشغيل الوضع.

لوضع مسافة بادئة وفقًا لاتفاقيات Bigloo، فإن الحزمة وضع النحليحدد عدة وظائف: bee-indent-sexp (C-M-q) يقوم بوضع مسافة بادئة للتعبير الحالي، bee-indent-define (C-c TAB C-d) يقوم بذلك لتعريف الوظيفة الحالية، bee-indent-last-sexp (C-c TAB C-l) يقوم بوضع مسافة بادئة للتعبيرات قبل المؤشر وهكذا

مجموعة مهمة جدًا من الوظائف المستخدمة عند العمل مع التعليمات البرمجية المصدر هي وظائف للبحث عن تعريفات الوظائف والمتغيرات. للعثور على تعريف للمتغير، يمكنك استخدام bee-tags-find (C-x 5 .) أو bee-tags-find-variable (C-c C-d f). وللبحث عن تعريف الوحدة النمطية، هناك دالة bee-find-module (C-c C-d m). بجانب، وضع النحليعيد تعريف اختصارين للوحة المفاتيح - M-. & M-، والتي ترتبط بوظائف bee-tag-find وbee-tags-find-next، مما يسمح بالعثور على تعريفات الوظيفة والفئة.

لتبسيط العمل مع الوحدات، وضع النحليحدد مجموعة من الوظائف التي تدير قائمة الوحدات المستوردة بواسطة كود المصدر الحالي - وظيفة ربط الاستيراد bee (C-c RET i)، بالإضافة إلى قائمة الوظائف والمتغيرات المصدرة من الوحدة الحالية - bee-export- وظيفة (C-c RET f) ومتغير تصدير النحل (C-c RET v). بالإضافة إلى ذلك، هناك وظيفة منفصلة تسمح لك باستيراد الرموز من ملفات C - ملف bee-import-c (C-c RET c)، كما تقوم أيضًا بتحديث ملف Makefile لإضافة تبعية لتجميع التعليمات البرمجية المقابلة.

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

تنفيذ وتجميع التعليمات البرمجية

تماما مثل الحزم الأخرى، وضع النحليسمح لك بتنفيذ تعليمات برمجية للمخطط مباشرة من المخزن المؤقت لـ Emacs. لبدء تشغيل المترجم، تحتاج إلى تنفيذ وظيفة ude-repl-other-frame (C-c C-r C-r)، وتحديد رمز شريط الأدوات المناسب ( ريبل)، أو عنصر القائمة المقابل.

وبعد تحميل المترجم، يمكن للمستخدم تنفيذ التعليمات البرمجية باستخدام الوظائف التالية:

  • يرسل ude-repl-send-buffer (C-c C-r b) المخزن المؤقت بأكمله للحساب؛
  • منطقة ude-repl-send (C-c C-r r)، ترسل كتلة محددة من التعليمات البرمجية إلى المترجم؛
  • يتم استخدام bee-repl-send-define (C-c C-r d) لتنفيذ التعريف الحالي؛
  • يقوم bee-repl-send-last-sexp (C-c C-r l) بتقييم قيمة التعبير قبل المؤشر؛
  • يتم استخدام bee-repl-send-toplevel-sexp (C-c C-r t) لتقييم التعبير الحالي بأكمله.

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

  • يؤدي bee-expand-buffer (C-c C-e C-e) إلى توسيع وحدات الماكرو في المخزن المؤقت الحالي؛
  • تقوم منطقة توسيع النحل (C-c C-e C-r) بتوسيع وحدات الماكرو في الكود الخلفي؛
  • يقوم bee-expand-define (C-c C-e C-d) بتوسيع وحدات الماكرو في التعريف الحالي
  • يقوم bee-expand-last-sexp (C-c C-e C-l) بتوسيع وحدات الماكرو في التعبير قبل المؤشر؛
  • يقوم bee-expand-toplevel-sexp (C-c C-e C-t) بتوسيع وحدات الماكرو في التعبير الحالي.

لتجميع البرامج، يجب أن يكون لديك ملف Makefile الذي يصف التبعيات بين الوحدات النمطية ويحدد علامات الترجمة. يتطلب المشروع ما يسمى بالدليل الجذر - وضع النحلمحاولة تحديد الدليل الجذر للمشروع من خلال البحث عن أحد ملفات Makefile أو .afile أو .etags، أو يمكن تعيين الدليل الجذر باستخدام وظيفة ude-user-set-root-directory (C-c C-p C-r) أو الوظيفة المناسبة زر شريط الأدوات.

بمجرد تحديد الدليل الجذر، يمكن إنشاء ملف Makefile باستخدام وظيفة ude-generate-makefile (C-c C-c a أو C-c C-c C-l)، والتي ستطالب المستخدم باسم الملف القابل للتنفيذ الذي سيتم إدخال كود المصدر المحدد فيه. تجميع وانتاج. إذا كان ملف Makefile موجودًا بالفعل، فستقوم اختصارات لوحة المفاتيح نفسها بتحديثه وإعادة إنشاء ملفات .afile و.etags أيضًا. بالإضافة إلى ذلك، هناك مجموعة من الوظائف لتحرير Makefile - ude-edit-makefile (C-c C-c e)، وتحديث Makefile - ude-update-makefile (C-c C-c u)، والتبديل بين إصدارات التصحيح والإصدارات النهائية من البرنامج - ude- وضع تصحيح ملف makefile (C-c C-c C-d) ووضع ude-makefile-final-mode (C-c C-c C-f) وغيرها.

بمجرد وجود ملف Makefile، من الممكن تجميع التعليمات البرمجية باستخدام وظيفة ude-mode-compile-from-menu (C-c C-c C-c). يمكنك مقاطعة التجميع باستخدام وظيفة القتل التجميعي (C-c C-c k).

وبعد اكتمال التجميع، يمكنك تنفيذ الملف القابل للتنفيذ باستخدام وظيفة ude-execute (C-c C-c C-r).

تصحيح الأخطاء والتنميط

تأتي حزمة Bigloo أيضًا مع مصحح أخطاء يسمح لك بتصحيح الأخطاء على مستوى الكود المصدري. وضع النحليدعم التفاعل مع مصحح الأخطاء هذا في Emacs. لبدء تشغيل مصحح الأخطاء، تحتاج إلى تنفيذ وظيفة bee-debug (C-c C-b C-b) أو تحديد رمز شريط الأدوات المناسب أو عنصر القائمة. لكن تشغيل مصحح الأخطاء لا يتصل به تلقائيًا، لذلك يجب عليك تنفيذ وظيفة bee-toggle-connect-buffer (C-c C-b c) بشكل صريح لربط المخزن المؤقت الحالي بمصحح الأخطاء، مما سيسمح لك بتعيين نقاط التوقف وتنفيذ مهام أخرى أثناء وجوده في المخزن المؤقت للنص المصدر.

يتم دعم ملفات تعريف البرنامج تلقائيًا إذا كنت تستخدم إنشاء ملف Makefile. لرمز الملف التعريفي، يجب عليك أولاً تجميعه مع دعم التوصيف، والذي يتم باستخدام وظيفة bee-profiler-start (C-c C-p c). وبعد التجميع، يمكنك تشغيل bee-profiler-inspect (C-c C-p i)، الذي سيقوم بتشغيل البرنامج، ثم تشغيل الأداة المساعدة bglprof، التي ستجمع بيانات التنفيذ لتحليلها.

وظائف أخرى

توفر الحزمة فرصًا للحصول على معلومات مرجعية. ويمكن القيام بذلك عن طريق تشغيل وظيفة bee-doc-visit (C-c C-d i) أو عن طريق النقر على أيقونة المعلومات في شريط الأدوات. تتصرف هذه الوظيفة بشكل مختلف اعتمادًا على الموضع الحالي للمؤشر - إذا كان المؤشر على معرف، فسيتم عرض وثائق هذا المعرف، وإذا تم تحديد منطقة رمز، فسيتم إصدار وثائق لهذه المنطقة. بخلاف ذلك، سيُطلب من المستخدم اسم قسم التوثيق محل الاهتمام، وسيتم عرض القسم المحدد.

المعلومات المعروضة للمستخدم مأخوذة من ملفات المعلومات التي تأتي مع Bigloo. بالإضافة إلى ذلك، يتم البحث في الوثائق في أدلة المشروع الحالي ويتم إضافتها تلقائيًا. بالإضافة إلى ذلك، يمكن للمستخدم تحديد ملفات وثائق إضافية ليتم البحث فيها.

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

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

دعم المخطط في SLIME

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

(خطاف الإضافة "خطاف تحميل السلايم (lambda() (يتطلب "مخطط السلايم"))

سيقوم هذا الأمر بتثبيت الخطافات اللازمة للعمل معها الوحل، ولكن بالنسبة لكل لهجة مدعومة، قد تحتاج إلى إجراء تكوين إضافي وفقًا للتعليمات الموجودة في الملف المقابل - swank-kawa.scm أو swank-mit-scheme.scm .

وكل ما يتعلق بالعمل معه الوحل، الموصوفة في القسم المقابل.

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

وبالإضافة إلى ذلك، التسليم com.bmacsالحزم متاحة أيضا أوروبا الوسطى والشرقية، مخصص لتحرير كود C المستخدم لكتابة امتدادات Bigloo، وضع الخطأ، الذي يوفر الدعم لمصحح أخطاء Bigloo، و أودي(بيئة تطوير Unix)، والتي توفر الدعم للتجميع والأدوات المساعدة المختلفة المستخدمة في العمل مع Bigloo.

تجدر الإشارة إلى أنه في حالة عدم وجود ملف Makefile، فإن هذه الوظيفة تتسبب في بدء تجميع الوحدة القابلة للتنفيذ من ملف واحد.

ما يسمى متبخترة-وحدة.

توجد جميع المكونات المتعلقة بالمخطط في الدليل الفرعي للمساهمة في التوزيع SLIME، لذا لا تنس إضافته إلى مسارات البحث لديك.

مقدمة

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

  1. العودية "المتبقية" أو "الذيل". العودية الذيل)
  2. النهج التكراري (الذي يستخدم متغيرات مؤقتة لتخزين نتيجة وسيطة).

كان Scheme هو أول لهجة Lisp تستخدم النطاق المتغير الثابت (بدلاً من الديناميكي) بشكل حصري، وتضمن تحسين التكرار الخلفي، وتدعم أنواع البيانات المنطقية (#t و#f بدلاً من T وNIL المحرجين تقليديًا). وكانت أيضًا واحدة من أولى اللغات التي تم دعمها بشكل مباشر استمرار(إنجليزي) استمرار). منذ مواصفات R^5RS، اكتسبت اللغة وسيلة قوية ومريحة بشكل استثنائي لكتابة وحدات الماكرو بناءً على أنماط التحويل النحوية بطريقة "صحية". hygienic_macro). ينفذ المخطط أيضًا "جمع القمامة". جمع القمامة)، أي التحرير التلقائي للذاكرة من الكائنات التي لم تعد مستخدمة.

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

من باب الفضول، يمكن ملاحظة أن الاسم الأصلي للغة Schemer قد تم تغييره إلى الاسم الحالي بسبب القيود المفروضة على طول أسماء الملفات في ITS.

أمثلة

العمليات الحسابية البسيطة

(+ 2 (* 2 2 ) ) (+ 1 2 3 4 )

يتم تمثيل كل استدعاء عملية (أو وظيفة) كقائمة، حيث يحتل رمز العملية (الذي هو في الأساس اسم الوظيفة) موضع البداية دائمًا.

اكتب المسندات

(رقم؟ 5) (رقم؟ "foo") (سلسلة؟ "foo")

حسب التقليد، تنتهي أسماء جميع المسندات بالرمز؟ .

فحوصات المساواة

(مكافئ? "foo" "bar") (معادل? 5 (+ 2 3 ) ) (معادل? (معادل? 2 3 ) (معادل? 3 4 ) )

تحديد وحدات الماكرو لعمليات الدفع/البوب ​​التقليدية

(تعريف-بناء الجملة دفع! (قواعد بناء الجملة () ((Push! x l ) (set! l (cons x l ) ) ) ) (تعريف-بناء الجملة pop! (قواعد بناء الجملة () ((pop! l ) (let ( (x (car l ) ) ) (set! l (cdr l ) ) x)) ) )

تحديد الوظائف

؛؛ عاملي بأسلوب عودي (غير فعال).(حدد (الحقيقة x) (إذا (< x 3 ) x (* (fact (- x 1 ) ) x) ) ) ؛؛ دالة فيبوناتشي - تتطلب التكرار المزدوج(تعريف (فيب n) (كوند ((= n 0 ) 0 ) ((= n 1 ) 1 ) (else (+ (فيب (- n 1 ) ) (فيب (- n 2 ) ) ) ) ) ؛؛ مجموع عناصر القائمة في نمط المخطط النموذجي ؛؛ (تعبر وظيفة مساعد الحلقة عن حلقة باستخدام ؛؛ العودية الذيل ومتغير التراكم)(حدد (sum-list x) (دع الحلقة ((x x) (n 0 ) ) (if (null? x) n (loop (cdr x) (+ (car x) n)) ) ) ) (الحقيقة 14) (اكذوبة 10 ) (مجموع "(6 6 6 100 ) ) (مجموع (خريطة أكذوبة "(1 2 3 4 ) ) )

يجب أن يتوافق تعريف الوظيفة مع النموذج الأولي التالي:

(حدد اسم_الوظيفة (lambda (قائمة_الوسائط) (تنفيذ_الوظيفة)) ) ,

على الرغم من أن النموذج المختصر يستخدم في كثير من الأحيان في الممارسة العملية:

(حدد (وسائط_اسم_الوظيفة) (تنفيذ_الوظيفة) ) .

إخراج المدخلات

(اكتب (+ (اقرأ) (اقرأ)))

روابط

روابط اللغة الروسية

روابط انجليزية

الكتب المدرسية باللغة الإنجليزية

  • محاضرات فيديو “بنية وتفسير برامج الكمبيوتر” هارولد أبيلسون وجيرالد جاي سوسمان
  • لغة البرمجة المخططة، ر. كينت ديبفيج

مؤسسة ويكيميديا. 2010.

تعرف على "المخطط (لغة البرمجة)" في القواميس الأخرى:

    لغة البرمجة هي نظام إشارة رسمي مصمم لكتابة برامج الكمبيوتر. تحدد لغة البرمجة مجموعة من القواعد المعجمية والنحوية والدلالية التي تحدد مظهر البرنامج والإجراءات، ... ... ويكيبيديا

ما هي اللغة التي تختارها لتعلم البرمجة؟لا يجب أن تبدأ في تعلم البرمجة في مكان ما في المنتصف.

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

بشكل عام، إنه أمر غريب للغاية، لكن النموذج الوظيفي يتم تجاهله بعناد من خلال التعليم المحلي. ولسد هذه الفجوة، أود أن أتحدث عن لغة البرمجة Scheme.

Scheme هي لغة برمجة بسيطة جدًا. من الممكن أن نتعلمها في يوم واحد، لكن هذه البساطة خادعة. المخطط هو أيضًا لغة قوية جدًا. هناك عدد كبير من التطبيقات.

يتم حفظ برامج الشهادات في ملفات *.scm، أو يمكنك استخدام وضع المترجم التفاعلي، المشابه لـ Python.

الثوابت والمتغيرات

لنبدأ في تعلم الهياكل الأساسية للمخطط. بداية دعونا نحدد الثوابت:

123 - عدد صحيح

3.1415926 - رقم كسري

2 + 3i - عدد مركب

2/3 - الكسر

#B1111 - رقم ثنائي

#xFF - مقالة سداسية عشرية

# O123 - الرقم الثماني

#\A - حرف واحد

"مرحبا بالعالم!" - سلسلة أحرف

"مرحبا - رمز

#f - القيمة المنطقية

يمكن تشغيل الثوابت باستخدام العوامل أو الوظائف. بعد كل شيء، Scheme هي لغة وظيفية، لذلك فهي تحتوي على جميع الوظائف.

في الرياضيات، أنت على دراية بشكل كتابة الدوال f (x) أو t (a، b). لكن يمكن كتابة نفس الشيء على الصورة (f x) أو (t a b). هذا هو بالضبط شكل التسجيل الذي يستخدمه Scheme. ليس كتعبير حسابي، يُكتب على الصورة مثلاً 2 + 3، ولكن على شكل البادئة - (+ 2 3).

على سبيل المثال:

المكر> (+ (* 3 4) (/ 5 2))

29/2

المكر> (+ 1 1 1 1 1)

خدعة> (/2)

المكر> (sqrt 2)

1.4142135623731

للإعلان عن المتغيرات، استخدم البناء (حدد اسم القيمة)

المكر> (حدد 2)

المكر> (حدد ب 2)

المكر> (+ أ ب)

يمكن تغيير قيمة المتغير الموجود بالفعل باستخدام البنية (قيمة اسم المجموعة!)

المكر> (مجموعة! 5)

المكر>أ

يتم الإعلان عن الوظائف باستخدام البنية (تعريف (اسم المعلمة) function_type)

المكر> (حدد (مربع x) (* x x))

المكر> (مربع 3)

لإثبات العودية، سأقدم مثالا لحساب المضروب:

(تعريف (الحقيقة س)

(إذا (= × 1)

(* X (حقيقة (- × 1)))))

كما فهمت بالفعل، يمكن التحقق من الحالة باستخدام البناء (إذا كانت الحالة بأي شكل من الأشكال)

دون الخوض في التفاصيل، سألفت الانتباه إلى الوظائف الرئيسية

(عرض "Hello, World!") - عرض سلسلة

(الخط الجديد) - انتقل إلى سطر جديد

من الملائم استخدام القوائم للعمل مع مجموعات البيانات

المكر> (حدد الأرقام (القائمة 1 2 3 4 5 6 7 8 9 10)) - أعلن القائمة

guile> (list-ref nums 0) - قراءة العنصر برقم 0

المكر> (أرقام السيارات) - اقرأ العنصر الأول

guile> (cdr nums) - اقرأ جميع العناصر الأخرى

(2 3 4 5 6 7 8 9 10)

يمكنك معالجة جميع عناصر القائمة مرة واحدة

إنشاء قائمة جديدة عن طريق تطبيق وظيفة لكل عنصر

المكر> (أرقام مربع الخريطة)

(1 4 9 16 25 36 49 64 81 100)

المكر> (خريطة (lambda (x) (* x 3)) أرقام)

(3 6 9 12 15 18 21 24 27 30)

تسمح لك بنية lambda بإعلان الوظائف حسب الحاجة دون تسميتها. إذا كنت تبرمج باستخدام لغة بايثون، فأنت تعرف بالفعل هذه التركيبات.

في الواقع، لا يحتوي المخطط على حلقات كما تفعل اللغات الأمرية. هنا يتم استخدام العودية لنفس الأغراض. على سبيل المثال، لنعرض محتويات القائمة في عمود

(تعريف (قائمة الطباعة lst)

(إذا (ليس (خاليًا؟ Lst))

(البدء (عرض (السيارة lst))

(خط جديد)

(قائمة الطباعة (cdr lst)))))

يتم استخدام البناء (ابدأ ...) إذا كنت بحاجة إلى إدراج عدة عوامل حيث يسمح بناء الجملة بعامل واحد فقط.

يسمح لك البناء التالي بمحاكاة حلقة for المعروفة في لغات البرمجة الأخرى:

(دع الحلقة ((ط 1))

(العرض ط)

(خط جديد)

(لو (<= i 10) (loop (+ i 1))))

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

على سبيل المثال، يمكنك إعطاء تنفيذ الدالة لحساب تكامل محدد

(تعريف (الوظيفة x)

(تعريف (دمج أ ب ه و)

(تحديد المبلغ 0)

(دع الحلقة ((i a))

(لو (

(مجموعة! مجموع (+ مجموع (* (و ط) ه)))

(الحلقة (+ أنا ه)))))

مجموع)

(عرض (دمج 0 1 0.01 وظيفة))

(خط جديد)

الموقع الرسمي لجيل

مخططون.org

تسجيلات فيديو لمحاضرات دورة بنية وتفسير برامج الحاسوب في جامعة بيركلي

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

مقدمة

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

لبيئة تطوير متكاملة كسوفهناك مكون إضافي يسمح لك بالبرمجة مخطط. في هذه المقالة، سنلقي نظرة على الميزات الرئيسية لهذا البرنامج المساعد، ودراسة عملية استخدامه وإجراءات التكوين.

يسمى البرنامج المساعد مخطط وهو جزء من المشروع مخطط الطريق. يمكنك تنزيل أحدث إصدار من هذا البرنامج الإضافي من موقع الويب (بعد التنزيل، ما عليك سوى نسخه ملف جرةإلى الكتالوج الكسوف/الإضافات). المشروع يتطور بنشاط، ويسمى الإصدار الأخير 1.3.0 ألفا10وتم إصداره بتاريخ 05/09/2010، الكود المصدري متاح على جيثب. معلومات إضافية حول البرنامج المساعد، وبعض الحيل التي يسمح بها مخطط، وإمكانياته تجدونها في المدونة دومينيك باوتشر- مؤلف هذا الامتداد.

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

محدث 07/17/10:أحدث إصدار على GitHub يعمل في الكسوف هيليوسولكن يجب تجميعها من المصادر. وبعد مرور بعض الوقت، وعد دومينيك بإعادة بناء التوزيع.

كسوف-وجهة نظر مخطط

بعد تثبيت البرنامج المساعد سيكون متاحا كسوف-وجهة نظر مخطط. افتراضيا يبدو مثل هذا:

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

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

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

سيتم عرض المشروع الذي تم إنشاؤه في المتصفح:

الآن في المشروع يمكنك التنفيذ جديد -> ملفوقم بإنشاء ملف مصمم لتخزين الكود المصدري عليه مخطط. يجب أن يكون لهذا الملف الامتداد .ssأو .scm. سيتم تحرير الملفات ذات هذه الامتدادات باستخدام المحرر الخاص المضمن في الحزمة مخطط.

تحرير كود المصدر

مخططيوفر محرر التعليمات البرمجية المصدر للغة مخططمع الكثير من الاحتمالات. دعونا نلقي نظرة فاحصة عليهم.

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

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

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

عند إنشاء تعريفات (على سبيل المثال، باستخدام الكلمة الأساسية يُعرِّف) يتم إضافتها إلى العرض الخطوط العريضة، والذي يسمح لك بالوصول بسرعة إلى التعريف المطلوب إذا لزم الأمر:

توصيل في مخططيضيف مجموعتين من العناصر إلى قائمة سياق محرر التعليمات البرمجية: مصدر- يحتوي على أوامر لتحرير التعليمات البرمجية المصدر - و تقييم- يحتوي على أوامر لتفسيره:

النظر في مجموعة من عناصر القائمة مصدر:

البحث عن تعريف- يبحث عن تعريف الرمز في الكود المصدري. أي أننا، على سبيل المثال، نحتاج إلى النظر في كيفية تعريف الرمز sqr. للقيام بذلك تحتاج إلى وضع المؤشر بعد هذا الحرف

و اضغط F12. سينتقل المؤشر إلى تعريف الوظيفة sqr، وسيتم تسليط الضوء على هذا التعريف:

رمز كامل- لقد تعرفنا بالفعل على هذا الأمر، وهو أمر الإكمال التلقائي.

وصف الرمز- يعرض تلميح أداة مع وصف الرمز. على سبيل المثال، الرمز الذي تناولناه في المثال السابق sqrهي وظيفة:

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

أدخل تعليق الفصل- إضافة تعليق إلى كتلة معينة من التعليمات البرمجية - مجموعة من الوظائف والتعريفات.

أدخل تعليق القسم- إضافة تعليق إلى وظيفة أو تعريف محدد.

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

وبالتالي، والعكس صحيح - إذا تم التعليق على بعض التعبيرات، تتم إزالة رموز التعليق:

ضغط المساحات- يزيل المسافات الزائدة السابقة واللاحقة وأحرف السطر الجديد. شيء من هذا القبيل وظيفة تقليم:

شكل- تنسيق الكود وفقًا للإعدادات المحددة. المسافات البادئة، وإزالة المسافات الزائدة وفواصل الأسطر.

الكود قبل التنسيق

الكود بعد التنسيق

مبادلة تعبيرات S- يغير ترتيب تعبيرات S لنفس مستوى التداخل. على سبيل المثال، إذا قمت في المثال السابق بتنفيذ هذا الأمر، إذن قائمةو لامداتبادل الأماكن:

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

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

تفسير

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

يوضح الشكل خيارات اختيار المترجم. أولا وقبل كل هذا - مترجم خارجي- توصيل مترجم خارجي مثبت على نفس الجهاز كسوف. المترجمين الفوريين مخططالآن الكثير، تحت شبابيكيمكنك استخدام، على سبيل المثال، مخطط تشي.

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

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

مترجم SISC- مدمج ردلمن المترجم الثاني لرمز المخطط- كتبت في جافامترجم مخطط.

بعد اختيار مترجم قيد التشغيل، على سبيل المثال كاوا، يجب تشغيله باستخدام أمر أو زر القائمة المناسب من لوحة التشغيل السريع:

يتم استخدام مجموعة من الأوامر مباشرة لإرسال أقسام من التعليمات البرمجية للتفسير تقييممن قائمة سياق محرر التعليمات البرمجية:

تحتوي هذه المجموعة على الأوامر التالية:

إيفال أعلى التعبير- تنفيذ تعبير المستوى الأعلى بالنسبة إلى التعبير الذي يوجد به المؤشر. إذا كان المؤشر قبل قوس الإغلاق الأخير - انظر الشكل

وبعد تنفيذ هذا الأمر، سيتم تحميل تعريف الوظيفة في المترجم sqr.

تقييم التعبير السابق- تنفيذ التعبير السابق بالنسبة للمؤشر. إذا في المثال

بتنفيذ هذا الأمر، سيتم تحميل التعبير في المترجم (* س س)، وهو ما لن يتمكن من تحقيقه، لأنه معامل سغير محدد:

تحميل الملف في المترجم- تحميل الملف في المترجم، أي. تنفيذ محتويات الملف بالكامل في المترجم.

دعونا نلقي نظرة على مثال: يوجد رمز لدالة تقوم بالحساب ن-ه رقم فيبوناتشي. نريد حساب رقم فيبوناتشي الرابع:

إذا قمت بتشغيل الأمر تقييم التعبير السابقبعد (كيب 4)سيتم إنشاء خطأ: المترجم لا يعرف تعريف الوظيفة أكذوبة:

إذا قمت بتشغيل الأمر تحميل الملف في المترجم، وثم - تقييم التعبير السابق، فسيتم إجراء الحساب بشكل صحيح:

يدعم كاوا ريبل

حلقة تقييم القراءة والطباعة (REPL)- بيئة برمجة تفاعلية بسيطة، في هذه البيئة يمكن للمستخدم إدخال التعبيرات التي سيتم حسابها على الفور، وسيتم عرض نتائج الحساب للمستخدم.

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

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

كاوالن يكون قادرًا على تقييم قيمة هذا التعبير وسيعرض خطأ في تحويل النوع:

سيبدو تتبع المكدس كما يلي:

إذا تم الضغط عليه في النموذج تتبع كاوا المكدسزر إظهار إطارات المخطط فقط، سيتم عرض تتبع المكدس الكامل، بما في ذلك المواقف الاستثنائية في الكود المكتوب جافا، وليس فقط على مخطط:

إعدادات

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

على الصفحة مخططالإعدادات التالية متاحة:
- علامة التبويب المعروضة مع- يسمح لك بتعيين العرض (في المسافات) لعرض حرف علامة التبويب. يعمل هذا فقط إذا كان الفريق لا يستبدل عادةً علامات التبويب بمسافات.
- تمكين التحرير الهيكلي- مربع الاختيار مسؤول عن تمكين/تعطيل المحرر المنظم مخطط. لا يعمل المحرر المنظم مع الرموز، بل مع تعبيرات S بأكملها. أولئك. بواسطة مسافة للخلفعلى سبيل المثال، سيتم حذف تعبير S بالكامل مرة واحدة. أيضًا، عند فتح قوس، ستتم إضافة قوس إغلاق مقترن على الفور.
- يحفظ...و حمولة...تسمح لك بحفظ والعكس - تحميل - الإعدادات مخططإلى من .epf-ملف.

صفحة مظهرهو المسؤول عن مظهر المحرر. يتيح لك ضبط اللون الذي سيتم به تمييز القوس المقترن (group قوسين متطابقين)، لون خلفية المحرر (group خلفية) والألوان المستخدمة لتسليط الضوء على بناء الجملة (group المقدمة).

يوضح الشكل أعلاه مثالاً على ضبط اللون الأزرق لثوابت السلسلة.

صفحة تعليقاتهو المسؤول عن عرض التعليقات. ويحتوي على الإعدادات التالية:
- البادئة للتعليقات- البادئة التي سيبدأ بها التعليق. بشكل افتراضي - فاصلتان منقوطان ( ;; ).
- محتوى حقل المؤلف- محتويات حقل المؤلف، تسمح لك بتحديد الاسم الأول/الأخير لمؤلف الكود.
- محتوى حقل حقوق الطبع والنشر- تتيح لك محتويات حقل حقوق الطبع والنشر تحديد معلومات حقوق الطبع والنشر.
- متابعة التعليق تلقائيًا من السطر السابق- إذا تم تحديد خانة الاختيار هذه، فعند الضغط عليها يدخلبعد التعليق على سطر جديد يستمر التعليق أي. سيبدأ السطر الجديد بـ ;; .

صفحة مفاتيح التقييم السريعيسمح لك بتحديد الأوامر (أي الأسماء مخطط-functions) التي سيتم تنفيذها عند الضغط على مجموعات لوحة المفاتيح المقابلة. افتراضيا للجميع مفتاح التقييم السريع 0...9يتوافق مع مجموعة المفاتيح البديل-ك، 0...9. عند استخدام البرنامج الإضافي بشكل فعال، يقوم كل مطور بتكوين مجموعة من أسماء الطرق التي يستدعيها باستمرار (على سبيل المثال، الطريقة امتحان، لتشغيل بعض رموز الاختبار). وفقا لذلك، يمكن تعيين استدعاء هذه الأساليب لاختصارات لوحة المفاتيح.

صفحة المسافة الفارغةيعمل على تكوين المسافات البادئة المضافة عند كتابة/تنسيق التعليمات البرمجية. لكل كلمة رئيسية، يمكنك تحديد إعداد المسافة البادئة المطبق على وسيطاتها. يتم ترتيب جدول الإعدادات على النحو التالي: في العمود رمزيتم تحديد كلمة رئيسية، ويتم تكوين المسافات البادئة لها. عمود مخطط المسافة البادئةيحدد نظام المسافة البادئة. المخططات هي كما يلي:
- تقصير- تتم محاذاة جميع التعبيرات الفرعية أسفل الحرف الأول للتعبير المحيط بها.
- تعريف- تتم محاذاة جميع التعبيرات الفرعية كتعبير تأطير + مسافتين (على غرار تصميم النموذج يُعرِّف).
- لو- تتم محاذاة جميع التعبيرات الفرعية كتعبير تأطير + 4 مسافات (على غرار تصميم النموذج لو).
- لا أحد- بدون مسافة بادئة، تتم محاذاة جميع التعبيرات الفرعية بنفس طريقة التعبير المحيط.
- مع- الشكل الأكثر تعقيدًا للمحاذاة، يُستخدم للوظائف ذات الأسماء الطويلة و/أو قائمة كبيرة من المعلمات. أولاً ن-يتم وضع مسافة بادئة للمعلمات بأربع مسافات، والباقي بمسافتين تَلمِيحيحدد القيمة ن. مثال على استخدام هذا النموذج هو محاذاة الكلمات الرئيسية يترك:

صفحة مترجميسمح لك بضبط الإعدادات لتفسير التعليمات البرمجية وتحليلها. يوجد حتى الآن إعدادان من هذا القبيل: - إذا تم تحديد خانة الاختيار، فسيتم حفظ الملف قبل إرساله للتفسير. يتجنب الاضطرار إلى تذكر حفظ التغييرات قبل تفسيرها.
- التعبيرات المحيطة بـ (ابدأ...)- ما إذا كان سيتم تأطير التعبيرات المفسرة في النموذج (يبدأ...). كما أفهم، يعد هذا الخيار ضروريًا للعمل مع بعض المترجمين الفوريين الذين يمكنهم تنفيذ تعبير S واحد فقط في المرة الواحدة.

صفحة مترجم خارجييسمح لك بتحديد المترجم الخارجي الذي تريد استخدامه. يمكنك ضبط الخيارات التالية:
- اسم المترجم- اسم المترجم
- سطر الأوامر- سطر الأوامر، بما في ذلك المسار الكامل للمترجم وبعض الخيارات التي يحتاجها للعمل.
- عمل اخراجي- دليل عمل المترجم هو الدليل الذي سيتم من خلاله حساب مسارات الملفات.
- خطأ في التعبير العادي- تعبير عادي لتحليل الخطأ. يقوم المترجم بإنتاج رسائل خطأ في بعض التنسيقات الخاصة به، مخططيجب معرفة كيفية استخراج المعلومات حول مكان الخطأ في الكود المصدري من هذا السطر مع وجود الأخطاء. على سبيل المثال، ل كاواهذا التعبير العادي هو: [\t ]+في [^(]+\(((.+):(+))\).

يوضح الشكل أعلاه مترجمًا خارجيًا يعمل في وحدة التحكم مخطط chez.

صفحة مترجم عن بعديحتوي على إعدادات للاتصال بمترجم بعيد - مترجم يعمل كخادم ويستمع إلى منفذ معين. وبناء على ذلك، تسمح لك هذه الصفحة بتحديد اسم المضيف والمنفذ الذي يعمل عليه هذا المترجم البعيد.

صفحة ملحقات معجميةيعمل على إدارة الامتدادات المعجمية مخطط. يحتوي على عنصرين:
- تعامل مع القوسين ( أو ()) كآباء- هل يجب التعامل مع الأقواس المتعرجة والمربعة بنفس طريقة التعامل مع الأقواس المستديرة. أولئك. ما إذا كان سيتم تمييز زوج وما إذا كان سيتم التحكم في اقتران الأقواس.
- قبول الشرطة (#) كجزء من المعرف- ما إذا كان سيتم السماح باستخدام رمز التجزئة كجزء من اسم المعرف (كما أفهمه، فإنه لا يعمل مع جميع المترجمين الفوريين) مخطط).

آخر صفحة - بناء الجملة- يسمح لك بالتحكم بمرونة في معالجة بناء جملة اللغة - إضافة وإزالة الهياكل من المجموعات، مما يؤثر على تمييز بناء الجملة عند التحرير. هناك 5 مجموعات محددة في هذه الصفحة:
- يُعرِّف- التعريفات تحتوي على كلمات أساسية تبدأ بها التعريفات، على سبيل المثال - يُعرِّف.
- أسماء خاصة- المعلمات المسماة الخاصة، مثل #!مفتاحأو #!استراحة.
- نماذج خاصة- أشكال خاصة مثل لو, و, يتركإلخ. في الواقع - الجزء الرئيسي من الكلمات الرئيسية للغة البرمجة.
- موتاتور- الطفرات، أي. الوظائف التي تغير الحالة. يتم تمييزها بشكل مختلف عن الوظائف التي لا تغير حالتها.
- ثابت- ثوابت مثل #!eof, #!nulإلخ. يمكنك أيضًا إضافة و #F.

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

هذا ما يحدث إذا قمت بإضافته إلى مجموعة يُعرِّفالكلمة الرئيسية بافل:

خاتمة

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

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

Z.Y. نشأت الفكرة أن نفس الشيء مخططمن الصعب الدراسة لأنها ليست مثيرة للاهتمام - ولا توجد مهام مثيرة للاهتمام. الحسابات الرياضية العادية غير مثيرة للاهتمام، وحتى العمل البسيط مع الرسومات، على سبيل المثال، يتطلب منصة ومكتبات. من المثير للاهتمام أكثر أن تتعلم اللغة من خلال تطبيقها على بعض المجالات الدراسية. لذا، مخطط سكريبت + كاوا + الكسوفيمكن استخدامها كمنصة للتعلم. انظر أمثلة من مخطط(في ملف الجرة الدليل أمثلة)، هناك بعض الأشياء المثيرة للاهتمام هناك.

كالعادة، يمكنكم ترك تعليقاتكم أو طرح الأسئلة على مبرمج سيفير تشيليابينسك.

أعجبتني الرسالة -