سؤال

1) هل اللغات الوظيفية مناسبة لتطوير تطبيقات الويب؟

2) هل اللغات الوظيفية مناسبة للأعمال/تخطيط موارد المؤسسات/إدارة علاقات العملاء نوع التطبيقات؟

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

المحلول

اللغات الوظيفية من النوع الذي تصفه هي لغات برمجة للأغراض العامة، ويتم استخدامها لجميع أنواع الأشياء، بما في ذلك تطبيقات الويب وتطبيقات الأعمال.(أنا استخدم هاسكل).

وكما يشير جابور، فإن الأمر في النهاية يتعلق بالمكتبات.Scala لديه إطار ويب:يرفع.لقد قام هاسكل هابستاك, ، إلى جانب 2100 4400 (في 2010 2012) المكتبات الاختراق لجميع أنواع الأشياء.

إنها في الواقع ليست مسألة لغة بقدر ما تتعلق بسلسلة الأدوات، عند النظر في مجالات متخصصة معينة.

نصائح أخرى

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

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

وF # قد يكون واعدا لأنه في بيئة .NET ويمكن الاستفادة من الأدوات المتاحة هناك (تصحيح لي إذا كنت مخطئا).

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

وتناسب اللغات الوظيفية بشكل جيد لتطوير التطبيقات على شبكة الإنترنت، سكالا على وجه الخصوص.

وإلقاء نظرة على rel="nofollow رفع إطارا لمزيد من المعلومات.

<اقتباس فقرة>   

2) هل اللغات وظيفية مناسبة لنوع العمل / ERP / CRM من التطبيقات؟

لمعالجة النقطة الثانية حول التطبيقات التجارية / ERP / CRM: شخصيا أنا لا تنفذ هذه بلغة "نقية" وظيفية مثل هاسكل، أو لغة وظيفية حيوية مثل كلوجر. من ناحية أخرى، I <م> صباحا حاليا بتنفيذ نظام تخطيط موارد المؤسسات في سكالا، وهو بطبيعة الحال الهجين OOP / FP وتجميعها بشكل ثابت.

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

والناس يمكن الحديث عن عدم تطابق-OOP العلائقية كل ما تحب ولكن في نهاية المطاف كلا OOP وقواعد البيانات والموجهة الرقم القياسي: لغة OOP مع ORM جيد يتيح لك خريطة تلك النماذج البيانات المختلفة في التعليمات البرمجية الخاصة بك ومن ثم إرفاق رمز للتعامل مع كل واحد من النماذج. وبعد هذا ثابت كتبته (مثالي مع ORM كتابة بشدة مثل squeryl سكالا) يقلل بشكل كبير من فرص حدوث خطأ وقت التشغيل أو على سبيل المثال تغيير واحد من نماذج البيانات لا يتم تطبيقها بشكل صحيح من خلال التعليمات البرمجية.

ولا تفهموني خطأ - أنا معجب كبير من FP (أفعله أكثر وأكثر من برمجة أنظمة بلدي في هاسكل)، ولكن بالنسبة لي النهج الموجه سجل لOOP أكثر منطقية من وظيفة نهج المنحى من FP عن المشاحنات الكائنات بيانات لتخطيط موارد المؤسسات التجارية أو ما شابه ذلك. (سكالا هو استثناء لطيفة إلى حكم لأنك تحصل على استخدام نموذج OOP مع ORMs الجودة للتلاعب قياسية، ولكن أيضا الخير FP للبرمجة التطبيقات العامة الخاصة بك.)

  1. نعم، يعد النيتروجين مثالًا جيدًا لإطار عمل الويب الوظيفي.انها جداول أيضا.

http://nitrogenproject.com/

الداء العليقي هو خادم الويب رائع لإرلانج.

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

وعلى سبيل المثال، وأنا متأكد أنه يمكنك استخدام F # جنبا إلى جنب مع ASP.Net على IIS للقيام تطوير الشبكة. أشك هناك دعم F # في محرك النموذجيه، ولكن يمكنك بالتأكيد إرسال منطق الأعمال في F #.

وبالمثل، هناك mod_haskell للأباتشي، والتي ينبغي أن تجعل من السهل نسبيا أن يكون الناتج الديناميكي مع هاسكل. على الرغم من أنني لم يسبق استخدامها شخصيا ذلك. وفي الوقت نفسه، إذا كان هناك mod_(erlang or scala) للأباتشي، فإنه سيكون من السهل على نحو مماثل لتلك اللغات.

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

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

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

وهاسكل لديها إطار الشبكة، ولكن أنا لم تستخدمها.

وتطبيقات الأعمال؟ طبعا، لم لا. اللغات وظيفية كبيرة للتو عن أي شيء.

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

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

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

ونظرا لهذه الخصائص من تطبيقات الويب، ما هي الفوائد لم اللغات الوظيفية يرتفع الى برمجة التطبيقات على شبكة الإنترنت؟

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