ما الفرق بين "البرنامج النصي" و "التطبيق"؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

أنا أشير إلى الفروق مثل في هذه الإجابة:

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

باعتباري مبرمجًا يعمل بالعديد من اللغات، يبدو أن هذا هو لغة C وJava وغيرها من اللغات المترجمة.أنا لا أبحث عن تعزيز لرأيي أو إجابات متموجة.بل أريد حقًا أن أعرف ما هي الاختلافات التقنية التي تتم الإشارة إليها.

(وأنا أستخدم لغة C في وظيفتي اليومية، لذا فأنا لا أتخذ موقفًا دفاعيًا فقط.)

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

المحلول

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

قد يكون التعريف الأكثر حداثة هو أن البرنامج مخصص للاستخدام من قبل العميل (ربما عميل داخلي)، وبالتالي يجب أن يتضمن التوثيق والدعم، في حين أن النص البرمجي مخصص في المقام الأول لاستخدام المؤلف.

يعد الويب مثالًا مضادًا مثيرًا للاهتمام.نحن جميعًا نستمتع بالبحث عن الأشياء باستخدام محرك بحث Google.يتم استخدام الجزء الأكبر من التعليمات البرمجية التي تدخل في إنشاء "قاعدة البيانات" التي تشير إليها فقط من قبل مؤلفيها والمشرفين عليها.هل هذا يجعله نصًا؟

نصائح أخرى

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

عادةً ما يكون "البرنامج النصي" مقابل "البرنامج".

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

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

دعونا نلقي نظرة على بعض مقالات ويكيبيديا للتعرف على الفرق.

النصي (ويكيبيديا -> لغة البرمجة النصية):

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

طلب (ويكيبيديا -> البرامج التطبيقية -> المصطلحات)

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

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

عندما يتعلق الأمر بذلك، في رأيي أنه يمكن التمييز بين العامية من حيث حجم من البرنامج.تكون البرامج النصية بشكل عام أصغر حجمًا عند مقارنتها بالتطبيقات.

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

جون أوسترهوت (مخترع TCL) لديه مقالة جيدة في http://www.tcl.tk/doc/scripting.html حيث يقترح التمييز بين لغات برمجة النظام (لتنفيذ اللبنات الأساسية، والتركيز على الصحة، وسلامة الكتابة) مقابل لغات البرمجة النصية (للجمع بين اللبنات الأساسية، والتركيز على الاستجابة للبيئات والمتطلبات المتغيرة، وسهولة التحويل داخل وخارج التمثيلات النصية).إذا اتبعت نظام التصنيف هذا، فإن 99% من المبرمجين يقومون بوظائف أكثر ملاءمة للغات البرمجة النصية من لغات برمجة النظام.

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

يتضمن البرنامج النصي بالنسبة لي تفسيرًا سطريًا للكود.يمكنك فتح البرنامج النصي وعرض محتوياته التي يمكن للمبرمج قراءتها.يتضمن التطبيق ملفًا تنفيذيًا مستقلاً ومترجمًا.

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

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

ولكن في كل هذه الحالات، يكون البرنامج النصي نوعًا من البرامج.

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

أنظر أيضا هل هو برنامج بيرل أم برنامج بيرل النصي؟ في بيرلفاك1.

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

التطبيق عبارة عن مجموعة من البرامج النصية الموجهة نحو مجموعة مشتركة من المشكلات.

البرنامج النصي عبارة عن جزء من التعليمات البرمجية لأداء مهمة واحدة محددة إلى حد ما.

IMO، الفرق ليس له أي علاقة على الإطلاق باللغة المستخدمة.من الممكن كتابة تطبيق معقد باستخدام bash، ومن الممكن كتابة برنامج نصي بسيط باستخدام C++.

بادئ ذي بدء، أود أن أوضح ذلك تمامًا البرنامج النصي هو برنامج.وبعبارة أخرى، البرنامج النصي هو مجموعة من التعليمات.

برنامج:

تُعرف مجموعة التعليمات التي سيتم تجميعها بالبرنامج.

النصي:

تُعرف مجموعة التعليمات التي سيتم تفسيرها باسم البرنامج النصي.

بأخذ لغة Perl كمثال، يمكنك كتابة نصوص Perl أو تطبيقات Perl.

قد يتضمن البرنامج النصي ملفًا واحدًا أو مساحة اسم واحدة.(على سبيل المثالupdateFile.pl).

سيكون التطبيق عبارة عن شيء يتكون من مجموعة من الملفات أو مساحات الأسماء/الفئات (على سبيل المثال.تطبيق Perl مصمم بواسطة OO مع العديد من ملفات الوحدة النمطية .pm).

أنا شخصياً أعتقد أن الفصل هو خطوة إلى الوراء من التنفيذ الفعلي.

في تقديري، أ طلب لقد خطط.لها أهداف متعددة، ولها نتائج متعددة.هناك مهام يتم تخصيصها في وقت التصميم قبل البرمجة والتي يجب أن يفي بها التطبيق.

ومع ذلك، يتم تجميع النص معًا كبدلات، ولا يتضمن سوى القليل من التخطيط.

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

علاوة على ذلك، يمكن أن يحتوي التطبيق على نصوص برمجية مجمعة تشكل الكل.لكن البرنامج النصي يمكن أن يشير فقط إلى التطبيق.

التطبيق كبير وسيتم استخدامه مرارًا وتكرارًا من قبل الأشخاص وربما يتم بيعه للعميل.

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

ماذا عن:

النصي:

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

طلب:

ان طلب هو أي برنامج كمبيوتر تتضمن وظيفته الأساسية تقديم الخدمة لممثل بشري.

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

أي من الأشخاص يود ذلك؟:)

@ إجابة جيف جيدة.التفسير المفضل لدي هو

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

الكثير من المشكلة هنا هي أن "البرمجة النصية" هي تسمية غامضة للغاية-فهذا يعني لغة ملائمة لكتابة البرامج النصية ، بدلاً من كتابة "البرامج الكاملة" (أو التطبيقات).ولكن كيف يمكن للمرء أن يميز البرنامج النصي المعقد عن تطبيق بسيط؟هذا سؤال لا يمكن الإجابة عليه في الأساس.بشكل عام ، البرنامج النصي هو سلسلة من الأوامر المطبقة على مجموعة من البيانات ، ربما في ترتيب محدد من قبل المستخدم ...ولكن بعد ذلك ، يمكن للمرء أن يمتد هذا الوصف للتطبيق على Photoshop ، وهو تطبيق رئيسي بوضوح.البرامج النصية عمومًا أصغر من التطبيقات ، وتفعل بعض الأشياء المحددة جيدًا وهي "أبسط" للاستخدام ، وعادة ما يمكن أن تتحلل إلى سلسلة واضحة من العمليات الفرعية ، ولكن كل هذه الأشياء ذاتية.

المشار إليه من هنا.

أعتقد أنه لا يهم على الإطلاق ما إذا كان يتم تجميع التعليمات البرمجية أو تفسيرها.

يكمن الاختلاف الحقيقي في المنطق الأساسي للكود:

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

  • إذا تم التلاعب بالكود بشكل أساسي من خلال إجراءات البرامج الأخرى وكانت النتيجة الإجمالية هي بشكل أساسي نتائج عمل البرامج التي تم التلاعب بها - فهو برنامج نصي.حرفيا نص الإجراءات لبعض البرامج.

في الواقع الفرق بين البرنامج النصي (أو لغة البرمجة النصية) والتطبيق هو أن البرنامج النصي لا يتطلب تجميعه في لغة الآلة.قمت بتشغيل مصدر البرنامج النصي مع مترجم..يقوم التطبيق بتجميع المصدر في كود الجهاز بحيث يمكنك تشغيله كتطبيق مستقل.

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

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

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

باستخدام هذا التعريف، البرنامج النصي هو رمز مصمم لتشغيل تطبيق أكبر (مجموعة).قد يستدعي جافا سكريبت Firefox لفتح النوافذ أو التعامل مع DOM.ينفذ برنامج Bash النصي البرامج الموجودة أو البرامج النصية الأخرى ويربطها معًا عبر الأنابيب.


أنت تسأل أيضًا لماذا لا تكتب لغات البرمجة النصية، لذلك:

هل هناك أي أدوات لاختبار الوحدات للغات البرمجة النصية؟يبدو أن هذه أداة مهمة جدًا للتطبيقات "الحقيقية" المفقودة تمامًا.ونادرًا ما يكون هناك أي ارتباطات مكتبة حقيقية للغات البرمجة النصية.

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

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