قبل 12 عامًا ، عندما بدأت فصولي الرسمية في علوم الكمبيوتر ، كان أول شيء تعلمته هو “البيانات” تعني “المعلومات”. بعد أيام قليلة ، بدأنا البرمجة التقليدية ، حيث تم التعامل مع التعليمات البرمجية والبيانات بشكل منفصل. على سبيل المثال ، يمكن تمرير البيانات فقط كوسائط وظيفية. كان من الصعب بالنسبة لي استيعاب أن “الكود ، وهو أيضًا معلومات ، لا يتم التعامل معه على أنه بيانات”. شعرت بقوة أن هذا سيزيد من تعقيد البرامج على المدى الطويل.
يقوم النظام بثلاثة أشياء – القراءة والتحويل (معالجة البيانات) والكتابة. بمعنى آخر – الرياضيات (جزء التحويل) وتأثير ذلك في الحياة الواقعية (جزء القراءة / الكتابة). إن تحويل البيانات هو بالفعل مفهوم رياضي ، وبمساعدة القراءة والكتابة ، نجعل الرياضيات (جزء التحويل) مفيدة للعالم الحقيقي. إن إحضار جزء “التحويل” بالكامل داخل المجال الرياضي له مصلحته الخاصة في استخدام الرياضيات دون خوف (أخطاء محتملة) لتحليل النظام ، مما يجعل النظام أكثر قابلية للتتبع من الناحية الرياضية. المهم هو معاملة كل من عناصر التحويلات والبيانات والوظائف على قدم المساواة.
في البداية ، كان الرمز أكبر من البيانات ، لذا كان إرسال البيانات عبر السلك ممكنًا. ولكن مع مرور الوقت ، تصبح البيانات ضخمة ، يصبح إرسال التعليمات البرمجية إلى الأنظمة عبر السلك هو الحاجة ، مما يجعل البيانات على الأنظمة سليمة. مع البيانات الضخمة ، فإن الحاجة للساعة هي التعامل مع الكود على أنه بيانات ، بحيث يمكن أخذ الكود كحجة لوظيفة meta أخرى على نظام به بيانات ضخمة تتوقع خوارزمية للتحولات.
بشكل تقريبي ، الأكواد عبارة عن خوارزميات ، والخوارزميات وظائف رياضية ، والوظائف بدورها هي في الواقع جداول بحث ، أي بيانات. ومن ثم ، مع هذا المبدأ ، فإن جميع الرموز أو الوظائف هي بيانات ، وهذا هو بالضبط حجر الزاوية للنموذج الوظيفي. البرمجة الوظيفية هي البرمجة بالوظائف ، فهي تتعامل مع الوظائف والبيانات بالمثل. مبدأ آخر أحبه ، للتحكم في التعقيد ، يجب ألا تكون القواعد نفسها معقدة.
إعادة كتابة قواعد الإبهام للنموذج الوظيفي:
القراءة والكتابة والتحويلات (الخوارزميات) يجب أن تكون منفصلة.
استخدم المتغيرات الثابتة. لا تشجع على استخدام عبارات إعادة التعيين.
تثبيط الآثار الجانبية (الإدخال / الإخراج أو تغيير أي متغير في المكان) ، يجب أن ترجع كل وظيفة نتيجتها المتوقعة فقط.
استخدم وظائف شفافة مرجعية (تسمى أحيانًا وظائف نقية) بدون آثار جانبية ، أي إذا كانت x = y ، و f (x) و f (y) يجب أن تكون هي نفسها إلى الأبد.
اختبار الوحدة أمر لا بد منه لكل وظيفة.
أحد أنماط التصميم الرئيسية التي يجب اتباعها هو استخدام التعبيرات بدلاً من التعليمات ، أي يجب أن تكون ذات طبيعة توضيحية. عدم تشجيع استخدام الحلقات مثل for / while – استخدم العبارات العودية كما هو موضح أعلاه لحساب المجموع. أخبر أجهزة الكمبيوتر بما يجب القيام به ، وليس كيفية القيام بذلك – فهو يقلل من الأخطاء ، خاصة حالات الحافة.
مع الحاجة إلى التحكم في تعقيد النظام والتصميم المتقدم ، يمكن جعل نمط التصميم للتكوين الوظيفي يتبع بعض الهياكل الجبرية الأساسية ، والتي بدورها تصبح أكثر قوة.