إعلان الرئيسية العرض كامل

إعلان أعلي المقال

 كلوجر 

لغة كلوجر 


لغة كلوجر من اللغات الدالية تم اختيارها فى برامج الذكاء الاصطناعي

هي لغة دالية (Functional) و هو توجه أكاديمي حتى وقت قريب حيث أن التوجه الذي يحكم السوق هو توجه اللغات كائنية التوجه(Object Oriented) مثل جافا و C#. - تواجدت بعض

 اللغات الدالية

 منذ وقت طويل مثل Haskell و اللغة القديمة قدم C و هي Lisp و لكن لم يكتب لهم النجاح في عالم الشركات حتى وقت قريب بالرغم من تميز هذه اللغات. - في الوقت الحالي بدأت اللغات الدالية بالعودة للساحة من جديد في صورة أو أخرى مثل Scala, F#, Clojure, Haskell, scheme, python, ruby مع الاعتراف بأن بعض هذه اللغات يملك قابلية الكتابة بمنهجي الدالية و كائنية التوجه. - حتى أن اللغات العتيدة في مسألة كائنية التوجه أضيف لها بعض من خصائص اللغات الدالية مثل ما حدث مع C# 4 و ما سيحدث مع Java 7 and 8.

- Clojure هي نكهة من نكهات Lisp و Lisp 

هي لغة قديمة قوية جميلة لكنها أبداً لم تصبح توجه عام بالنسبة للمبرمجين رغم أنها الاختيار الأول لكتابة برامج الذكاء الاصطناعي و من المبادئ البسيطة ل Lisp و التي ورثتها Clojure عنها هي أن شفرة البرنامج نفسها تعتبر معلومات "Code as Data" و لذلك تحاط جميع أكواد Clojure بأقواس لأن كل جملة من أكواد Clojure تعتبر List.

سنفترض معرفتك بجافا .. إذن أنت معتاد على كود بهذا الشكل:

myObj.doSomething(anArg);

مع Clojure نفس الكود سيكتب بهذا الشكل:

(do-something my-obj an-arg)

و هذا يدعى prefix notation. - كما تلاحظ فإن الكود محاط بأقواس (و هذا ربما العيب الوحيد الذي يؤخذ على Clojure و من قبلها Lisp لكثرة الأقواس الناتجة من الكتابة). - مثال آخر على ال prefix notation:

(+ 2 3)

- نلاحظ أن علامة الجمع في بداية الدالة لأنها هي نفسها الدالة و 

الرقمين بعدها هما معطيات الدالة.   ما الذي ستحصل عليه مع

 Clojure:

- closures - List comprehension - Software Transactional Memory - Lazy sequence - Code as Data - Immutable data structures - Dynamicity - Macros

  أنواع البيانات في Clojure:

- Arbitrary precision integers - 12345678987654 - Doubles 1.234 , BigDecimals 1.234M - Ratios - 22/7 - Strings - “fred” , Characters - \a \b \c - Symbols - fred ethel , Keywords - :fred :ethel - Booleans - true false , Null – nil - Regex patterns #”a*b”

هيكلة البيانات في

Lists - singly linked, grow at front (1 2 3 4 5), (fred ethel lucy), (list 1 2 3) • Vectors - indexed access, grow at end [1 2 3 4 5], [fred ethel lucy] • Maps - key/value associations {:a 1, :b 2, :c 3}, {1 “ethel” 2 “fred”} • Sets #{fred ethel lucy} • Everything Nests

مثال للكود و شكله:

هذا الكود لعمل نافذة بمساحة 300*300 بيكسل مع زر و مربع نص و عنوان.

(import '(javax.swing JFrame JPanel JLabel JButton JTextArea)) (doto (JFrame. "Test") (.setContentPane (doto (JPanel.) (.setSize 300 300) (.add (JLabel. "Label 1")) (.add (JTextArea. )) (.add (

تابع اخبار تكنولوجيا المعلومات على موقع جوجل نيوز " اضافة الى المفضلة وعمل متابعة

تابع اخبار تكنولوجيا المعلومات على موقع جوجل نيوز " اضافة الى المفضلة وعمل متابعة


اشترك فى القناة ليصلك كل جديد







ليست هناك تعليقات:

إرسال تعليق

إعلان أسفل المقال