كلوجر (لغة برمجة)

عودة للموسوعة

كلوچر هي لهجة حديثة من ليسب لغة برمجة. وهي لغة عامة الهدف تدعم التطور التفاعلي الذي يُشجع أسلوب برمجة وظيفية ويُبسّط برمجة خيط (حاسوب) تعمل لغة كلوچر علي آلة جافا الافتراضية ووقت تشغيل اللغة المشهجر. ومثل لغات ليسب فإن لغة كلوچر تعتبر الشفيرات كبيانات ولها نظام ماكرومعقد.


الفلسفة

وضع (ريتش هيكي) لغة كلوچر لأنه أراد لغة ليسب حديثة للـ برمجة وظيفية تتوافق مع جافا (منصة برمجية) وتم تصميمها لتحقيق التزامن.

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

البنية

مثل غيرها من لغات ليسب فإن بنية اللغة كلوچر قائمة علي اللغات الرمزية S-expressions التي يتم تحليلها أولا إلي هياكل بيانات بواسطة قارئ قبل تجميعها. يدعم قارئ لغة كلوچر البنية النصية للخرائط والمجموعات والمتجهات بالإضافة إلي القوائم. ثم يتم إعطاء جميع ذلك إلي المُجمع كما هي. بمعني آخر لا يقوم جامع لغة كلوچر بجمع هياكل البيانات فقط ولكنه يدعم جميع الأنواع المذكورة مباشرة. لغة كلوچر هي لغة ليسب-1 وليس المقصود منها حتى تتوافق من ناحية الشفرة مع لهجات ليسب الأخرى.

الماكرو

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

السمات اللغوية

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

أمثلة

برنامج_أهلا_بالعالم:

 (println "Hello, world!")

مولد خيط آمن من أعداد متسلسلة فريدة:

 (javax.swing.JOptionPane/showMessageDialog nil "Hello World")

فئة فرعية مجهولة من كاتي جافا آى أووالتي لا تخط علي أي شيء والماكرويستخدم ذلك لإسكات كافة المطبوعات بداخله:

 (let [i (atom 0)]
  (defn generate-unique-id
    "Returns a distinct numeric ID for each call."
    []
    (swap! i inc)))

فئة فرعية مجهولة من java.io.Writer that والتي لا تخط علي أي شيء والماكرويستخدم ذلك لإسكات كافة المطبوعات بداخله:

 (def bit-bucket-writer
  (proxy [java.io.Writer] []
    (write [buf] nil)
    (close []    nil)
    (flush []    nil)))
 (defmacro noprint
  "Evaluates the given expressions with all printing to *out* silenced."
  [& forms]
  `(binding [*out* bit-bucket-writer]
     ~@forms))
 (noprint
 (println "Hello, nobody!"))

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

 (defn run [nvecs nitems nthreads niters]
  (let [vec-refs (vec (map (comp ref vec)
                           (partition nitems (range (* nvecs nitems)))))
        swap #(let [v1 (rand-int nvecs)
                    v2 (rand-int nvecs)
                    i1 (rand-int nitems)
                    i2 (rand-int nitems)]
                (dosync
                 (let [temp (nth @(vec-refs v1) i1)]
                   (alter (vec-refs v1) assoc i1 (nth @(vec-refs v2) i2))
                   (alter (vec-refs v2) assoc i2 temp))))
        report #(do
                 (prn (map deref vec-refs))
                 (println "Distinct:"
                          (count (distinct (apply concat (map deref vec-refs))))))]
    (report)
    (dorun (apply pcalls (repeat nthreads #(dotimes [_ niters] (swap)))))
    (report)))
 (run 100 10 10 100000)

مخرجات المثال السابق:

 ([0 1 2 3 4 5 6 7 8 9] [10 11 12 13 14 15 16 17 18 19]...
 [990 991 992 993 994 995 996 997 998 999])
Distinct: 1000
  ([382 318 466 963 619 22 21 273 45 596] [808 639 804 471 394 904 952 75 289 778]...
 [484 216 622 139 651 592 379 228 242 355])
Distinct: 1000

المراجع

  1. ^ https://clojure.org/community/license — تاريخ الاطلاع: 28 سبتمبر 2016
  2. ^ Release 1.10.1 — تاريخ الاطلاع:ستة يونيو2019 — تاريخ النشر:ستة يونيو2019
  3. ^ Rich Hickey (30 June 2009). "Books that influenced Clojure". مؤرشف من الأصل في 03 أكتوبر 2017. اطلع عليه بتاريخ 11 سبتمبر 2009.
  4. ^ Google Groups نسخة محفوظة 08 نوفمبر 2012 على مسقط واي باك مشين.
  5. ^ "Rationale". Rich Hickey. clojure.org. مؤرشف من الأصل في 04 يناير 2016. اطلع عليه بتاريخ 17 أكتوبر 2008.
  6. ^ Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure | Going Deep | Channelتسعة نسخة محفوظة 09 نوفمبر 2017 على مسقط واي باك مشين.
  7. ^ "On State and Identity". Rich Hickey. clojure.org. مؤرشف من الأصل في 02 يناير 2016. اطلع عليه بتاريخ 01 مارس 2010.

وصلات خارجية

  • المسقط الرسمي
تاريخ النشر: 2020-06-02 01:18:25
التصنيفات: برمجيات 2007, برمجيات حرة متعددة المنصات, برمجيات متعددة المنصات, لغات برمجة, لغات برمجة أنشئت في 2007, لغات برمجة ديناميكية, لغات برمجة ديناميكية النمط, لغات برمجة عالية المستوى, لغات برمجة نصية, لغات برمجة وظيفية, ليسب, قالب أرشيف الإنترنت بوصلات واي باك, صفحات تستخدم خاصية P154, صفحات بها بيانات ويكي بيانات, صفحات بها مراجع ويكي بيانات, صفحات تستخدم خاصية P275, صفحات تستخدم خاصية P348, صفحات تستخدم خاصية P737, صفحات تستخدم خاصية P1195, صفحات تستخدم خاصية P856, موقع رسمي بوصلة مختلفة عن ويكي بيانات, بوابة برمجة الحاسوب/مقالات متعلقة, بوابة برمجيات حرة/مقالات متعلقة, جميع المقالات التي تستخدم شريط بوابات, صفحات تستخدم خاصية P244, صفحات تستخدم خاصية P227

مقالات أخرى من الموسوعة

سحابة الكلمات المفتاحية، مما يبحث عنه الزوار في كشاف:

آخر الأخبار حول العالم

ما الذي يمنع الرئيس التونسي قيس سعيد من زيارة المغرب؟

المصدر: الأيام 24 - المغرب التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:19:31
مستوى الصحة: 74% الأهمية: 83%

وليد الركراكي: نحن أسياد أفريقيا

المصدر: راديو مارس - المغرب التصنيف: رياضة
تاريخ الخبر: 2022-07-21 15:19:57
مستوى الصحة: 58% الأهمية: 54%

مفتي الجمهورية يهنئ الرئيس السيسي والشعب المصري بذكرى ثورة 23 يوليو

المصدر: بوابة أخبار اليوم - مصر التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:19:15
مستوى الصحة: 53% الأهمية: 65%

حموشي يقلم أظافر شبكات جزائرية | جريدة الصباح

المصدر: جريدة الصباح - المغرب التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:20:08
مستوى الصحة: 49% الأهمية: 55%

تعاون بين «قطاع الأعمال» و«التضامن» لمساعدة مستفيدي برنامج «فرصة»

المصدر: بوابة أخبار اليوم - مصر التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:19:17
مستوى الصحة: 54% الأهمية: 65%

«التعليم» تحدد رسوم تظلم طلاب الثانوية العامة عن كل مادة

المصدر: بوابة أخبار اليوم - مصر التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:19:22
مستوى الصحة: 59% الأهمية: 57%

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

المصدر: بوابة أخبار اليوم - مصر التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:19:13
مستوى الصحة: 48% الأهمية: 54%

5 ملايين مشاهد تابعوا مباراة الوداد أمام الفتح

المصدر: راديو مارس - المغرب التصنيف: رياضة
تاريخ الخبر: 2022-07-21 15:19:53
مستوى الصحة: 58% الأهمية: 55%

تعرف على أهم مضامين صندوق التضامن عن الكوارث.. ما سبب عدم تفعيله؟

المصدر: الأيام 24 - المغرب التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:19:23
مستوى الصحة: 67% الأهمية: 83%

ريال مدريد يحسم موقفه النهائي من عودة رونالدو

المصدر: راديو مارس - المغرب التصنيف: رياضة
تاريخ الخبر: 2022-07-21 15:19:54
مستوى الصحة: 51% الأهمية: 68%

أندية تتمرد على الجامعة | جريدة الصباح

المصدر: جريدة الصباح - المغرب التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:20:13
مستوى الصحة: 46% الأهمية: 65%

مربية سابقة للأميرين وليام وهاري تحصل على تعويض مالي كبير من "بي بي سي"

المصدر: الإمارات اليوم - الإمارات التصنيف: مجتمع
تاريخ الخبر: 2022-07-21 15:20:14
مستوى الصحة: 51% الأهمية: 58%

نهضة بركان يتربص بالوردي

المصدر: راديو مارس - المغرب التصنيف: رياضة
تاريخ الخبر: 2022-07-21 15:19:56
مستوى الصحة: 58% الأهمية: 70%

“بوليساريو” تبيض أموال تبون بالإكوادور | جريدة الصباح

المصدر: جريدة الصباح - المغرب التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:20:12
مستوى الصحة: 55% الأهمية: 62%

حادث مآساوي.. مقتل 3 أشخاص بـ"نطحة الثور" في اسبانيا (فيديو)

المصدر: الإمارات اليوم - الإمارات التصنيف: مجتمع
تاريخ الخبر: 2022-07-21 15:20:12
مستوى الصحة: 45% الأهمية: 57%

عطل سياسيين على نفقة بارونات | جريدة الصباح

المصدر: جريدة الصباح - المغرب التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:20:10
مستوى الصحة: 53% الأهمية: 55%

تحت الدف | جريدة الصباح

المصدر: جريدة الصباح - المغرب التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:20:11
مستوى الصحة: 56% الأهمية: 61%

التحقيق في اختلالات “أوراش” | جريدة الصباح

المصدر: جريدة الصباح - المغرب التصنيف: سياسة
تاريخ الخبر: 2022-07-21 15:20:14
مستوى الصحة: 56% الأهمية: 57%

روسيا: العلاقات مع أميركا في وضع لا تحسد عليه

المصدر: الإمارات اليوم - الإمارات التصنيف: مجتمع
تاريخ الخبر: 2022-07-21 15:20:15
مستوى الصحة: 54% الأهمية: 54%

تحميل تطبيق المنصة العربية