Functional JavaScript: مكتبة للبرمجة الدلالية
المحرّر: بوابتي
يعرف متتبعو برمجيات الواب، أن هذا الميدان يشهد تطورات كبيرة تشمل مختلف أوجهه ومنها لغات البرمجة جهة المتصفح، وعلى رأس هذه اللغات التي تشهد تطورات كبير نجد لغة JavaScript التي أصبحت الطبقة السفلى لمجموعة من المنصات (JavaScript framework) المبنية عادة على أساس مكتبيات برمجية (JavaScript Library) وهي كلها أضافت تسهيلات كبيرة للمبرمج واتاحت امكانيات كبيرة للبرمجة.
وتنقسم هذه المنصات والمكتبيات الى مكتبيات تعنى بعوامل التنسيق وظاهر الصفحة وهو ما تفعله اغلب المنصات كJQuery وProtoype و Dojo و Mootools، كأن تتعلق الدوال المقترحة بمعالجة اظهار الصور واضافة التاثيرات عليها في مايعرف برواق الصور (Galerie d'images)، او عمل تاثيرات على الفقرات النصية من خلال عناصر الاحتواء (div) بحيث تصبح منزلقة او متحركة وغيرها من التاثيرات التي تقوم بها مكتبيات JavaScript ولكنها متعلقة فقط بعناصر التنسيق.
ولكن توجد مكتبيات اخرى مبنية ايضا على اساس لغة JavaScript ولكنها لا تعنى بالتنسيق وانما تتجه للقيام بمعالجات حسابية رياضية بدرجة اولى، وهي بالتالي ذات اهتمام آخر غير التنسيق، وهو موضوع مقالي اليوم.
البرمجة الدلالية عن طريق Functional JavaScript:
البرمجة الدلالية هي التعريب الذي اقترحه لمصطلح functional programming، وهي نوع من لغات البرمجة التي تستعمل مع الأغراض الرياضية. وقد قام الأمريكي Oliver Steele بتطوير مكتبيات Functional JavaScript انطلاقا من لغة JavaScript لكي يصبح بالإمكان استعمال هذه اللغة لانجاز معالجات ذات اتجاهات رياضية بدرجة أولى وبطريقة ميسرة، وذلك عن طريق مجموعة من الدوال التي اقترحها والتي تمكن من انجاز المهام بيسر مقارنة بما لو قام بها المطور بنفسه مباشرة من خلال عمليات البرمجة عن طريق JavaScript.
وطرح Oliver Steele مشروعه كإنجاز تشاركي تحت رخص المصادر المفتوحة، ويمكن بالتالي تنزيل المكتبيات لاستعمالها مجانا.
وتقدم مكتبيات Functional JavaScript مجموعة من الدوال المعدة لكي يقع إدخال معطيات لها فقط، ثم تقوم هي بانجاز عمليات معقدة نسبية، من ذلك يمكن ذكر الدوال: map، select، reduce، invoke....
وتتحمل هذه المكتبية المتغيرات (variables) والخواص المنطقية ( logiques: or/ and) وأنواع المعطيات (string, integer, logique..).
هذه عينة من مكتبيات Functional JavaScript وهي دالات map، select، reduce:
map('x*x', [1,2,3,4])
تقوم بارجاع
[1, 4, 9, 16]
select('>2', [1,2,3,4])
تقوم بارجاع
[3, 4]
reduce('x*2+y', 0, [1,0,1,0])
تقوم بارجاع
10
map(guard('2*', not('%2')), [1,2,3,4])
تقوم بارجاع
[1, 4, 3, 8]
الروابط:
معطيات حول Functional JavaScript بما فيها تنزيل الشيفرة المصدرية للمكتبية
معطيات حول functional programming
يسمح بالنقل، بشرط ذكر موقع "بوابتي" مصدر المقال، ويفضّل أن يكون ذلك في شكل رابط
9-12-2008
|
12-12-2008 / 17:23:06 abdhai