44 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Functional Programming | ||
|  | localeTitle: برمجة وظيفية | ||
|  | --- | ||
|  | ## برمجة وظيفية
 | ||
|  | 
 | ||
|  | البرمجة الوظيفية هي عملية بناء البرمجيات عن طريق تكوين **وظائف نقية** ، وتجنب **الحالة المشتركة** ، **والبيانات** **القابلة** **للتغيير** ، **والآثار الجانبية** . البرمجة الوظيفية هي **تعريفية** (تخبر الكمبيوتر بما تريد أن تفعله) بدلاً من **حتمية** (إخبار الكمبيوتر بالضبط كيف تفعل ذلك) ، وتتدفق حالة التطبيق من خلال وظائف نقية. قارنها بالبرمجة الموجهة للكائنات ، حيث تتم مشاركة حالة التطبيق عادة وتشترك مع طرق في الكائنات. | ||
|  | 
 | ||
|  | ### لماذا البرمجة الوظيفية؟
 | ||
|  | 
 | ||
|  | *   انها عموما أكثر إيجازا | ||
|  | *   انها عموما أكثر قابلية للتنبؤ | ||
|  | *   من السهل اختباره من الكود الموجه للكائن | ||
|  | 
 | ||
|  | ### تبني لغات البرمجة
 | ||
|  | 
 | ||
|  | تدعم العديد من لغات البرمجة البرمجة الوظيفية مثل Haskell و F # و Common Lisp و Clojure و Erlang و OCaml. يحتوي JavaScript أيضًا على خصائص لغة وظيفية غير مقيدة. | ||
|  | 
 | ||
|  | ### الاستخدامات
 | ||
|  | 
 | ||
|  | لطالما كانت البرمجة الوظيفية شائعة في الأوساط الأكاديمية ، ولكن مع عدد قليل من التطبيقات الصناعية. ومع ذلك ، فقد تم مؤخراً استخدام العديد من لغات البرمجة الوظيفية البارزة في الأنظمة التجارية أو الصناعية. على سبيل المثال ، يتم استخدام لغة برمجة Erlang ، التي طورتها شركة Ericsson السويدية في أواخر الثمانينات ، لبناء مجموعة من التطبيقات في شركات مثل T-Mobile و Nortel و Facebook و Électricité de France و WhatsApp. | ||
|  | 
 | ||
|  | ### وظائف الترتيب العالي
 | ||
|  | 
 | ||
|  | وظائف الدرجة العليا هي جزء كبير من البرمجة الوظيفية. دالة الترتيب الأعلى هي دالة تقوم إما بدالة (وظائف) كمعلمة أو تقوم بإرجاع دالة. | ||
|  | 
 | ||
|  | ### خريطة
 | ||
|  | 
 | ||
|  | `map` هي دالة ذات ترتيب أعلى تستدعي دالة لكل عنصر من عناصر القائمة ، وتقوم بإرجاع النتائج كقائمة _جديدة_ . | ||
|  | 
 | ||
|  | في ما يلي مثال على `map` : | ||
|  | 
 | ||
|  |  `const myList = [6, 3, 5, 29];  | ||
|  |   | ||
|  |  let squares = myList.map(num => num * num); // [36, 9, 25, 841]  | ||
|  | `  | ||
|  | 
 | ||
|  | ### معلومات اكثر:
 | ||
|  | 
 | ||
|  | *   [ويكيبيديا - برمجة وظيفية](https://en.wikipedia.org/wiki/Functional_programming#Use_in_industry) | ||
|  |      | ||
|  | *   [KeyCDN - البرمجة الوظيفية - ما هو ولماذا يهم؟](https://www.keycdn.com/blog/functional-programming/) | ||
|  |      | ||
|  | *   [متوسطة - ما هي البرمجة الوظيفية؟](https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0) |