سؤال

لقد سمعت الكثير عن لغات البرمجة الوظيفية وأنا على استعداد لتعلم واحدة. أعتقد أنه سيكون في الغالب من أجل المتعة، ومع ذلك، آمل أن يحسن مهارات البرمجة الخاصة بي.

لدي معظم الخلفية C # /. خيار صافي، لذلك خياري الأول هو تعلم F # (بسبب .NET والألفة مع Visual Studio). من ناحية أخرى، أتساءل إذا كانت F # لديها ميزات مثل وحدات ماكرو Lisp أو وظائف Haskell ذات الترتيب العالي.

هل يمكن أن تقارن f #، haskell و lisp؟ أي واحد سيكون لغة اختيارك؟

هل كانت مفيدة؟

المحلول

F # هي لغتي المفضلة، لكنني نوصي بشدة بتعلمهم جميعا. انهم جميعا مختلفة تماما ومثيرة للاهتمام في حقهم. إليك وجهة نظر سريعة لكل واحد (مع biase f # طفيف)، يمكنك بسهولة العثور على مزيد من المعلومات عن طريق googling:

F # - هي لغة تجعل من السهل البرنامج في النمط الوظيفي، تتيح لك نسخ الكائنات بسهولة بدلا من تحريضها. كما أنه يمنحك أنواعا بيانات مثيرة للاهتمام، مثل tuples & algebraic أنواع البيانات، وبناء لغة مفيدة مثل مطابقة الأنماط وقائمة الفهم. كما أن لديها ميزات OO والضروبة والوصول الجيد إلى المكتبات، حيث يمكنك استخدام أي مكون .NET Framework.

Haskell - هي لغة وظيفية نقية وسالطة، وحضور نادرة أو حتى فريدة من نوعها. هذا يعني أنه لا توجد آثار جانبية على الإطلاق، ما لم يتم تتبعها من قبل مناد. يحتوي Haskel أيضا على Tuples وبيانات جبرية ومطابقة نمط.

LISP - Whereas F # و Haskell مكتوبة قانونيا، يتم كتابة LISP بشكل حيوي. يحتوي على بناء جملة مميزة يستخدم الكثير من الأقواس وتوفر ميزة ماكرو مثيرة للاهتمام تتيح لك إجراء تحويلات إلى البرنامج نفسه وتوسيع بناء الجملة.

نصائح أخرى

كان لدي نفس السؤال مرة واحدة

منذ ذلك الحين، لقد قمت ببعض البرمجة في F #. الآن أنا سعيد جدا لأنني فعلت، لأنها مفيدة حقا لفهم LinQ في C # وهذا ما حدث ليكون خلفيتي أيضا. (أنا تقريبا لا أستخدمها أبدا في C # الآن منذ أن تعلمت F #)

لقد تعلمت من خلال F # الكثير من الأشياء حول التقييم الكسول، والقوائم والتسلسلات، والتي يمكنك اختيار أي لغة مع دعم جيد للقوائم، tuples، وهلم جرا (مثل أي لغة وظيفية أعتقد)، ولكن إذا اخترت F # ، كل هذا سيكون مفيدا جدا في C # أيضا. ربما كنت تعرف بالفعل كل هذه الأشياء واستخدامها بشكل صحيح، ولكن في حالة عدم اختيار F #.

لقد بدأت خارج هنا : فيديو فيديو لطيف للغاية، مؤثرة جدا ومعلم إلهام للغاية.

حاليا أشاهد هؤلاء الفيديو على القناة 9 على أساسيات البرمجة الوظيفية. وأوضح استخدام Haskell، ولكن الأساسيات تنطبق على جميع اللغات. يجب أن أقول إنها مفيدة للغاية وسهلة الفهم.

هذا سؤال شخصي للغاية.

رأيي هو هذا المخطط (متغير LISP) والقراءة SICP. هو الشيء الصحيح. سوف تتعلم الكثير.

ولكن بالنسبة للأغراض العملية وإذا كنت مطورا .NET ثم F # أفضل.

أنا لا أعرف f # ولكن أحب اللعب معها في بعض الأحيان. لغتي هي عباءة وظيفية للغاية ويعمل على CLR أيضا، ولكن إصدار JVM هو الإصدار الرئيسي.

إنه يتفوق على الكثير من الأشياء التي تريدها. الفرق الرئيسي إلى F # هو أن عباءة مكتوبة بشكل حيوي ولديها طريقة جيدة حقا التعامل مع التوفيق (أحد أفضل ما أقوله).

بالمناسبة. هل تعلم أن F # تم إجراؤه لأن Haskell كان من الصعب الحصول على الجري على CLR؟ (هذا ليس القصة كلها بالطبع ولكن جزء منه)

لا أحد أجاب بالفعل على هذا السؤال المحدد: "أتساءل إذا كان F # لديه ميزات مثل وحدات ماكرو Lisp أو وظائف ترتيب Haskell العالي."

F # لا تقدم وحدات الماكرو. أيضا، فإنه لا يقدم أنواعا أعلى مضمونة (وهو ما اعتقدت أنك تسأل في البداية).

F # تقدم وظائف ذات طلب أعلى في أنه يمكنك بسهولة كتابة وظيفة تأخذ وظيفة وإرجاع وظيفة. في الواقع، C # (أو حقا أي لغة .NET) يمكن أن تفعل هذا كما Func مندوب هو جزء من .NET Framework.

لماذا الاختيار؟ تعلم كل من Lisp و haskell لوحدك. لا نقطة في تعلم F # في وقتك الخاص. إذا كنت في حاجة إليها للعمل، فسوف تتعلمها في العمل؛)

تحرير: كان الرجل يبحث في اللغة للتعلم عن المتعة. حسنا، LISP و Haskell هي مرشحين جيدين منذ المرح هو كل ما سيستخدمون فيه (لا توجد فرص عمل مدفوعة الأجر). لقد "قد" (على الرغم من أنه من غير المرجح) لديه فرصة لاستخدام F # في العمل (هو في MS SHOP)، فلماذا تعلم شيئا ما في وقت فراغ عندما يمكن دفعه في العمل.

لقد تعلمت كل منهم بدرجة شتوية، وسوف ينصح البدء بمخطط (لهجة LISP) - ببساطة لأنه من الأسهل التعلم. يتم كتابة Haskell و F # ثابتا، وهي ميزة كبيرة لمشاريع الحياة الحقيقية، ولكن IMHO لديها القليل من بناء الجملة "الكثير" "وليس سهلا لاستلام كمخطط.

هناك تنفيذ مخطط لطيف ل .NET - Ironscheme. يمكنك إلقاء نظرة على مقالتي "اللعب مع ironscheme."لمعرفة ما إذا كنت ترغب في ذلك.

إذا قارنا هذه اللغات الثلاث، فسوف أوصي Haskell. إنه أكثر عملية من LISP أعتقد (لأنه نظام النوع) وأكثر قوة وأذكياء من F #. بقدر ما تعرف F # هو منفذ OCAML .NET إلى حد ما، فهذا ليس واضحا من قبل Ideoligally مثل Haskell أو كما هو Ocaml. سأوصي بدراسة Haskell أو Ocaml لمعرفة مدى إزعاج F #.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top