لماذا لا "أراهن بمستقبل الشركة" على نصوص شل؟[مغلق]

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

  •  08-06-2019
  •  | 
  •  

سؤال

كنت انظر إلى http://tldp.org/LDP/abs/html/why-shell.html و أصابه :

عندما لا تستخدم البرامج النصية شل

...

  • التطبيقات ذات المهام الحرجة التي تراهن عليها بمستقبل الشركة

ولم لا؟

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

المحلول

يعد استخدام نصوص Shell أمرًا جيدًا عندما تستخدم نقاط قوتها.تمتلك شركتي بعض المفاتيح الناعمة من الفئة 5 ورمز معالجة المكالمات وواجهة التوفير مكتوبة بلغة Java.كل شيء آخر مكتوب بلغة KSH - مقالب قاعدة البيانات للنسخ الاحتياطية والتشذيب وتدوير ملف السجل وجميع التقارير الآلية.أود أن أزعم أن جميع وظائف الدعم هذه، على الرغم من عدم ارتباطها مباشرة بمسار الاتصال، تعتبر مهمة بالغة الأهمية.وخاصة التفاعل DB.إذا حدث خطأ ما في رمز تفاعل قاعدة البيانات وأدى إلى التخلص من جداول توجيه المكالمات، فقد يؤدي ذلك إلى توقفنا عن العمل.

لكن لا شيء يحدث على الإطلاق بشكل خاطئ، لأن نصوص shell هي اللغة المثالية لأشياء مثل هذه.إنها صغيرة الحجم، ومفهومة جيدًا، وقوتها في التعامل مع الملفات، كما أنها مستقرة.لا يبدو الأمر كما لو أن KSH09 سيكون بمثابة إعادة كتابة كاملة لأن شخصًا ما يعتقد أنه يجب ترجمته إلى رمز بايت، لذا فهو واجهة مستقرة.بصراحة، واجهة التزويد المكتوبة بلغة Java تكون متزعزعة في كثير من الأحيان إلى حد ما ولم تتعطل نصوص shell أبدًا على ما أتذكر.

نصائح أخرى

أعتقد نوعًا ما أن المقالة تشير إلى قائمة جيدة حقًا بأسباب عدم استخدام البرامج النصية لـ Shell - مع النقطة الحرجة للمهمة الواحدة، تشير إلى أنها أكثر من مجرد استنتاج يعتمد على جميع الرموز النقطية الأخرى.

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

من الواضح أن هذا يعد بمثابة رجل القش بالنسبة لي لإسقاطه.أنا مهتم حقًا بالسبب الذي يجعل الناس يعتقدون أنه يجب تجنب نصوص shell النصية في "التطبيقات ذات المهام الحرجة"، لكن لا يمكنني التفكير في سبب مقنع.

على سبيل المثال، لقد رأيت (وكتبت) بعض نصوص ksh التي تتفاعل مع قاعدة بيانات Oracle باستخدام SQL*Plus.للأسف، لم يتمكن النظام من القياس بشكل صحيح لأن الاستعلامات لم تستخدم متغيرات الربط.قم بضرب واحدة ضد نصوص الشل، أليس كذلك؟خطأ.لم تكن المشكلة في نصوص shell ولكن في SQL*Plus.في الواقع، اختفت مشكلة الأداء عندما استبدلت SQL*Plus ببرنامج Perl النصي المتصل بقاعدة البيانات واستخدم متغيرات الربط.

يمكنني بسهولة أن أتخيل أن وضع نصوص برمجية في برامج رحلات المركبات الفضائية سيكون فكرة سيئة.لكن Java أو C++ قد تكون خيارات سيئة بنفس القدر.سيكون الخيار الأفضل هو أي لغة (تجميع؟) تُستخدم عادةً لهذا الغرض.

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

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

أيا كان.

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

التعليمات البرمجية الجيدة جيدة، والتعليمات البرمجية السيئة سيئة - سواء تمت كتابتها كبرنامج نصي Bash، أو ملف Windows CMD، أو بلغة Python، أو Ruby، أو Perl، أو Basic، أو Forth، أو Ada، أو Pascal، أو Common Lisp، أو Cobol، أو لغة C المترجمة.

الذي لا ليقول أن اختيار اللغة لا يهم. هناك أسباب وجيهة جدًا، في بعض الأحيان، لاختيار لغة معينة أو للتجميع مقابل لغة معينة.التفسير (الأداء، وقابلية التوسع، والقدرة، والأمن، وما إلى ذلك).ولكن، في حالة تساوي جميع الأمور، فإنني أثق في نص Shell الذي كتبه مبرمج عظيم بدلاً من برنامج C++ المكافئ الذي يكتبه doofus في أي يوم من أيام الأسبوع.

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

كما قال عدد قليل من الأشخاص الآخرين، اللغة عامل.بالنسبة لخطواتي القصيرة التي لا أريد أن أتذكرها وبرامج الغراء، فإنني أثق تمامًا في نصوص الصدفة الخاصة بي وأعتمد عليها.هذا لا يعني أنني سأقوم بإنشاء موقع ويب يقوم بتشغيل bash على الواجهة الخلفية ولكنني سأستخدم بالتأكيد bash/ksh/python/whatever لمساعدتي في إنشاء مشروع الهيكل العظمي وإدارة التعبئة والتغليف والنشر الخاص بي.

عندما أقرأ هذا الاقتباس أركز على "التطبيقات"الجزء بدلاً من الجزء "المهمة الحرجة".

قرأته على أنه يقول أن bash ليس مخصصًا لكتابة التطبيقات، بل مخصص للبرمجة النصية.من المؤكد أن طلبك قد يحتوي على بعض نصوص التدبير المنزلي ولكن لا تكتب critical-business-logic.sh لأن لغة أخرى ربما تكون أفضل لأشياء من هذا القبيل.

أراهن أن المؤلف يظهر أنهم غير مرتاحين لجوانب معينة من البرمجة النصية عالية الجودة.من يختبر نصوص BASH على سبيل المثال.

كما أن البرامج النصية مقترنة بشكل كبير بنظام التشغيل الأساسي، وهو ما قد يكون شيئًا سلبيًا.

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

البرامج النصية غير مناسبة لتنفيذ بعض المهام الحرجة، حيث يجب أن يكون لها أذونات +r و+x لتعمل.يجب أن تحتوي الملفات التنفيذية على +x فقط.

حقيقة أن البرنامج النصي يحتوي على +r تعني أن المستخدمين قد يكونون قادرين على عمل نسخة من البرنامج النصي وتحريره/تخريبه وتنفيذ نسخة Cuckoo's-Egg المعدلة.

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