الفرق بين الـscripting languages و الـProgramming Languages

ما الاشياء التي تجعل PHP أن تكون scripting Language و التي تجعل C++ أن تكون Programming Languages

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

من جهة أخرى لغتي الانكليزية لم تسفعني في فهم بعض المصطلحات .....

هل من مجيب

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

14

مرحبا,,

اولا السؤال خطا نوعا ما :)

php , python , java, c etc هم لغات برمجة "Programming Languages"

السبب راجع تعريف لغة البرمجة في الويكي.

لكن Scripting Languages هم مجموعة جزئية من لغات البرمجة.

وهم مثل php , python , ruby الخ.

هذه اللغات تتميز بقدرتك على تعريف المتغير بعدة انواع اقصد مرة ك عدد وبعدها كنص او ما يسمى ب "Dynamic type-checking" .

ثانية يمكنك ترجمة للغة "interpreting" وفي بعض الاحيان يمكنك "Compiling"

وايضا Syntax سهل

14

هناك بعض التعاريف مغلوطة.

لعل ابرز مميزات السكربتنق أن ترجمة البرنامج (تحويله الى لغة الالة ) تتم بالوقت الحقيقي لهذا اللغة تحتاج الى مفسر interrupter يقوم المفسر بالمرور على السطر الأول للكود ويقوم بترجمته الى لغة الالة وتنفيذه فورا ومن ثم ينتقل الى السطر الثاني ويفعل نفس الامر وهكذا . أما اللغات الغير سكربتنق فتحتاج الى compiler بحيث يتم ترجمة البرنامج كاملا الى لغة الالة .

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

وماذا تعتبر بايثون؟ Scripting أم Programming؟

وإذا كانت Scripting ألا تعتقد أنها لا تصلح كثيراً لتطبيقات سطح المكتب لأنها ستكون بطيئة نسبياً؟

scripting تدخل ضمن لغات البرمجة .

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

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

14

صيغة السؤال نفسها خاطئة, لغات البرمجة Programming languages هى الفئة الكبيرة التى تنقسم إلى فئتين هما اللغات المترجمة Compiled languages و اللغات المفسرة Interpreted languages.

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

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

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

يمكنك الاستزادة من هذا الرابط:

شكراً على التصحيح :)

وبناء على المقالة المذكورة ينبغي إدراج لغة كالجافا في صنف ثالث يحمل -بنظري- مساوئ الصنفين الرئيسيين!

الجافا صنعت كلغة مفسرة حيث تتم ترجمتها الى صيغة وسيطة تسمى ال Byte code لا تفهمها أنت و لا الجهاز و بالتالى تحتاج الى المنصة التخيلية للجافا java virtual machine لتشغيل البرنامج. هذا بالضرورة ليس جمعا لمساوئ النوعين و ليس نوعا ثالثا. الجافا ما زالت مفسرة لأنها تحتاج مفسر عند تشغيل البرنامج. و هناك مزايا من عملية التحويل الوسيطة الى Byte code:

1- الكود الذى قمت أنت بكتابته لن ينقل للعميل و بالتالى فهو محمى لا يعرفه غيرك.

2- البرنامج مازال يمكنه العمل على أكثر من نظام تشغيل لأنه عند ترجمته لم يترجم إلى نظام بعينه.

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

لغات الscripting هى لغات تعمل من داخل تطبيق معين لاضافة بعض التخصيص أو الcustomization للتطبيق نفسه,

يتولى التطبيق نفسه تشغيل و تفسير هذه اللغة و تنفيذها و خصائصها تتمتع بالترابط مع البرنامج الذى يقوم بتنفيذها, مثلا خصائص document , navigator فى javascript.

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

لغات البرمجة هى لغات تتم ترجمتها الى لغة الالة, و هى بشكل أو بأخر تعبر عن قدرات الحاسوب و أوامره لكن بشكل أسهل و أكثر قربا من الانسان عن لغة الالة,

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

ما أعرفه هو أن الفرق يكمن في مسألة الترجمة إلى لغة الآلة (الـ Compiling)، وبموجب ذلك تصنف لغة Python ضمن لغات الـ Scripting Languages.

لكن حديثك عن مسألة التعامل المباشر مع النظام والحاسوب والذاكرة يعني أن لغة Python ينبغي أن تصنف كلغة برمجة، أليس كذلك؟!

-1

ليس بالضرورة ان تكون لغة البرمجة مترجمة,

قد تكون مفسرة مثل البيسك, أو تترجم الى كود وسيط مثل جافا و سى#.

الترجمة الى لغة الألة هو دليل على كون اللغة لغة برمجة و ليست scripting. لأنه لا يمكن أبدا ترجمة لغة scripting الى لغة الالة,

لأن تراكيب لغات الscripting لا تراعى خصائص الحاسوب و النظام, كما أنها بالطبع تحتوى على عناصر خاصة بتطبيق معين (كيف ستترجم خصائص document فى جافا سكريبت؟)

شكراً لك كثيراً أخي......

هل يمكنك أن تحدثني عن الأسباب التي جعلت PHP هي SCRIPTING LANGUAGE و التي حعلت c++ هي programming language

اي لغة scripting Language تحتاج الى برنامج اخرى لكي يقوم بترجمه الكود الى لغة الالة ولا يتم تنفيذ الكود بشكل مباشر، مثل لغة Actionscript فهي لا تعمل الا ضمن مشغل الفلاش كذلك php لها مفسر مبني بلغة C ، هذه النوعية من اللغات في الغالب جيدة في التعامل مع النصوص وكذلك اغلبها تعتبر type-less اي انك لست بحاجة الى تعريف نوع المتغير.

اما Programming Languages فهي لغات لا تحتاج الى برنامج اخر لكي يترجم الكود الى لغة الالة فهي لها مترجمها وكذلك اغلب اللغات من هذا النوع لا تعتبر type-less ويجب ان تقوم بتعريف نوع كل متغير، هذا النوع من اللغات ممتاز في التعامل مع نظام التشغيل بشكل مباشر او مع عتاد الحاسوب.

لغات الـ scripting تكون دورة حياتها صغيرة، مثلاً يتم تشغيل برنامج والذي بدوره يقوم بعمل معالجة على المُدخلات، ثم تظهر النتيجة، بذلك تنتهي حياته إلى أن يتم استدعاءه من جديد ليكون إستدعاء ليس له علاقة بالتشغيل أو اﻹستدعاء اﻷول . مثال لها: web page scripts, web services scripts, web application scripts, Linux shell scripts

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

غير صحيح بل هناك برامج سطح مكتب كتبت بلغات السكربتنق . وتستطيع أن تعمل حلقة مستمرة لانهائية في السكربتنق .

في هذه الحال يُمكن تصنيف هذه اللغة على أنها لغة برمجة، وليست مجرد scripting language.

حسب تعريف الـ scripting language في الويكيبيديا فهي نوع من لغات البرمجة، لكنها توجد في طبقة عُليا من التجريد فتصبح إمتداد لبرامج أخرى، هذه البرامج هي التي تُشغل هذه اﻹسكربتات.

السكربتنق هي لغة برمجة .

وقد وضحت الفرق بينها وبين لغة البرمجة العادية ستجدها ضمن الردود

نسيت ذكر أمثلة على لغات برمجة scripting:

PHP, Java Script, SQL Scripts,

ولغات برمجة عادية

Java, C, C++, C#, Delphi, Pascal,