هاسكل مقابلالبرمجة الإجرائية في العالم الحقيقي [مغلقة]

StackOverflow https://stackoverflow.com/questions/1024585

سؤال

هذه الأيام أنا على محمل الجد في البرمجة الوظيفية.

بينما أنا متحمس حقا عن هاسكل وإمكانيات يبدو أن العرض, أنا أيضا أستطيع أن أرى الآن أنه سيأخذ مني بعض الوقت للتعلم.في ذلك السؤال كيف تتعلم هاسكل الجواب أنه سوف يستغرق شهورا إن لم يكن سنوات في الواقع "سيد" عليه.

الآن, وأنا أعلم C, PHP, بعض وجوه المنحى الأشياء ، وما إلى ذلك.و بعد أن قيل أن هاسكل لا تستخدم كثيرا هناك في "العالم الحقيقي", وسوف تكون أفضل حالا تحسين مهاراتي في العادية اللغات أعرف ؟ هو هاسكل يستحق كل هذا الصراع ؟

في هذا السؤال على لماذا الناس يعتقدون البرمجة الوظيفية سوف قبض على في الختام يبدو أن البرمجة الوظيفية سوف "قبض على".ولكن بالتأكيد البرمجة الإجرائية سوف البقاء على القمة ، أليس كذلك ؟

تحرير:keparo لطيف يوضح سؤالي: بدلا الإجرائية اللغات سوف تكون ذات قيمة بالنسبة لي دراسة هاسكل و البرمجة الوظيفية النماذج ؟

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

المحلول

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

هاسكل سوف تتعلم الكثير من الاشياء الجديدة, وسوف تظهر لك كيفية البرنامج أفضل حتى في اللغات التي /لا/ العمل مع.يمكنك أن تفعل المشاريع الشخصية الخاصة بك في وقت فراغك مع.

هاسكل ليس حقا تستخدم كثيرا في "العالم الحقيقي" إذا قمت بتعريف "العالم الحقيقي" كما "مولد النقدية".حتى إذا كان هذا هو الهدف الخاص بك, فإنك قد تضطر إلى إعادة النظر في أهداف :p

أيضا, أنا لا أحب هذا الجزء من اختيار "كيف تتعلم هاسكل" الإجابة.يستغرق أشهر إلى سنوات لإتقان أي لغة ، وليس فقط هاسكل.اعتمادا على كيفية تعريف "سيد".يمكنني استخدام هاسكل إلى درجة جيدة جدا من الكفاءة و أنا كنت تعلم ذلك لمدة شهر و أنا حدث حتى.

نصائح أخرى

إذا كان أي شيء آخر ، تغيير في العقلية التي تعلم هاسكل يوفر سوف تساعدك عندما يكون لديك للذهاب مرة أخرى إلى استخدام تلك اللغات الإجرائية التي لا تزال تستخدم في مكان العمل.

الوظيفية النموذج هو بداية لجعل طريقها إلى مختلف التطبيقات السائدة و لغات - حتى C++ سيكون إضافة (شلت) لامدا في C++0x.

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

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

تعلمت هاسكل لأنه كان حتى الآن أفضل وظيفية اللغة التي حاولت الخروج من سكالا ، Clojure, OCaml و المخطط ولكن لم تتوقعي لاستخدامها في العمل.

كما اتضح أنه هو الكمال بالنسبة لأولئك أنواع من الوظائف الغريبة التي هي صغيرة جدا للفريق سوف تستغرق وقتا طويلا جدا في جاوة.حتى الآن, لقد استعملت من أجل المخصص البيانات الهجرات أيتغيير اسم CSV الصادرات إلى تنسيق آخر ، دفعة التحويلات XML (HXT أكثر إيجازا وأكثر قوة من XSLT), شاشة-كشط قبالة الإنترنت والبرمجيات تقدير المشروع بما في ذلك نمذجة المخاطر باستخدام احتمال الكائن الدقيق الاحادي الخلية وإنتاج الأمثل مخططات جانت باستخدام التراجع.هذا هو العمل الحقيقي التي تحتاج إلى القيام, التي لم أكن حتى عناء محاولة القيام به في جافا كما أنه سيكون متعدد يوم القيام.

أنا الآن استخدامها بدلا من التفوق على أي شيء مبهم الرياضية كما هو المزيد من الجهد لإنشاء قائمة من القيم في هاسكل مصدر في محرر النص من اكتب لهم في Excel.مرة واحدة في هاسكل, ثم يمكن أن تفعل كل أنواع السحر مثل التراجع التوزيعات الاحتمالية.... الخExcel لا يمكن القيام به.إذا كنت بحاجة إلى الرسم البياني ثم أبصق القيم كما CSV (2 الأسطر من التعليمات البرمجية) وتحميلها إلى Excel.

الجانب السلبي الوحيد هو أن يستغرق عدة أشهر للحصول على الكفاءة ، ولكن يستحق كل هذا الجهد IMHO.

بدلا الإجرائية اللغات سوف تكون ذات قيمة بالنسبة لي دراسة هاسكل و البرمجة الوظيفية النماذج ؟

إذا كان وجود موسعة مجموعة من المهارات ذات قيمة ، ثم:نعم.

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

وجود تلك المهارة حتى الأكمام الخاص بك لا يمكن أن يصب.

أستطيع أن أرى أن البرمجة الوظيفية يمكن أن يكون زائدا في بيئة الإنتاج إذا كان من السهل جدا للاستخدام من قبل غير وظيفية رمز.MS يمكن أن نرى ذلك أيضا عندما جاء مع F# أعتقد.

لأن كلا منهما جمع IL, يمكنك التعامل مع المشاكل التي تسأل عن نهج وظيفي الوظيفية واستخدام هذه الحلول بسهولة جدا في قانون الإجراءات.

وبهذه الطريقة الفنية رمز يمكن بسهولة العثور على طريقها في بيئة إنتاج قليلا في وقت

لذلك و منذ سيرباسي من مرض التصلب العصبي المتعدد هو أن كبير ، تخميني هو أنه إذا كان F# لن قبض على في المستقبل القريب جدا ، هاسكل لا سواء.

أعتقد أنه يستحق النضال. وسوف تساعدك على فهم كيف يتم حل المشاكل وليس فقط كيف يعمل جهاز الكمبيوتر.

ربما المشكلة بالذات هو هاسكل نفسها - كما وظيفية بحتة اللغة هو نوع من "المتشددين" قد من ناحية أخرى حتى تعقيد الأمور.

البرمجة الوظيفية بدلا من ذلك قد تكون مفيدة للغاية في عملي جدا بطريقة العديد OO/حتمية اللغات الآن تضمين العناصر الفنية لهذا السبب (Linq, وظائف مجهولة ، للقراءة فقط قيم مؤشرات الدالة/مندوبين من نوع الاستدلال):يمكنك التركيز على ما ينبغي القيام به والذي يسمح لك للتعبير عن أكثر من ذلك في رمز أقل (حتى أقل عرضة للخطأ).

غير وظيفية بحتة اللغات (المعيار الوظيفي اللغات) مثل Scala أو F# يمكن دمجها بسهولة في القائمة جافا أو .صافي المشاريع حتى تتمكن من الجمع بين مزايا كل من النماذج حيث تكون هناك حاجة إليها.نموذجي مزايا وظيفية اللغات ، انظر هذا الموضوع.مجرد التفكير قوية للغاية تحليل (بعملية محلل combinators / بارسيك) أو البرمجة المتزامنة التي من الممكن مع اللغات الوظيفية وسترى كيف أنها مفيدة.

بدلا الإجرائية اللغات سوف تكون ذات قيمة بالنسبة لي دراسة هاسكل و البرمجة الوظيفية النماذج ؟

لا إلا إذا كنت تريد أن تكون بائسة.لوقا النبات يقول ، لماذا التعلم هاسكل/بيثون يجعلك أسوأ مبرمج:

لذا تعلم بايثون و هاسكل الروح المعنوية لي و تشجيع لي لكتابة التعليمات البرمجية التي هي غريبة وصعبة الفهم...

(هذا ليس تماما مزحة.)

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

انطلاقا من الأشياء الجيدة في C# مثل lambdas, نوع الاستدلال والإغلاق ، وهلم جرا, التعلم هاسكل سوف تعطيك الساق غدا المتطورة في اللغات السائدة.

يتمتع بعض الناس البرمجة في هاسكل.إذا كان يمكنك اختيار البيئة الخاصة بك والتمتع بها هو النظر ، ثم ربما عليك أن تقفز.

العديد من المبرمجين ليسوا في موقف اختيار الأدوات و التمتع ليس عاملا عن اختياراتهم.العديد منهم الحصول على استخدام C/Java/الخ في مكان العمل "جوهر المشروع مصدر" ، لكن أيضا اختيار أو تحتاج إلى استخدام بايثون ل "البرامج النصية" مثل بناء البرامج النصية مع SCons ، وغيرها من البرامج النصية التي تولد Java/إلخ رمز اختبار نظم البراهين من المفاهيم ، الخ..و في أماكن أخرى الثعبان يستخدم أيضا في "جوهر المشروع".

في 8 سنوات ، سيكون هاسكل, وليس الثعبان الذي سوف يكون "قادم إليكم".ولكن يمكنك أن تأتي إلى ذلك عاجلا.

يمكنك الجمع بين استخدام البرمجة الوظيفية و أن تكون واقعية حول اللغة.

كل الحديثة لغات البرمجة s.أ.جافا سكريبت أو لوا تسمح استخدام وظيفية النموذج.

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

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

لماذا إجرائية وليست وجوه المنحى ، لم أر الإجرائية المستخدمة لسنوات عديدة وبصرف النظر عن C.

تجاريا يتحدث.وأود أن تذهب مع جافا أو C#.لا يهم حقا أي أنها تدفع جيدا و مهارات قابلة للتبادل مع غيرها من مثل التفكير لغات مثل بايثون و روبي و جافا سكريبت.

هاسكل يستحق الوقت والجهد ، على الرغم من أنه هو جدا الأكاديمية بعض البنوك استخدامه ، على الرغم من أن الكثيرين في أوروبا والمملكة المتحدة تتحرك رمز قاعدة على F#.

لا أعتقد FOP سوف تتحرك بسرعة كبيرة تجاريا يتحدث.ولكن التقنيات هي بالتأكيد الظهور في الرئيسية تبقى اللغات.خصوصا مع متعددة النواة رقاقة التصاميم و صنع كود تشغيل موازية عليها.

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