برامج الكمبيوتر هي برامج تمكّن الكمبيوتر من أداء مهمة محددة، على عكس المكونات المادية للنظام (Hardware). يتضمن ذلك برامج التطبيقات مثل معالج النصوص، الذي يمكّن المستخدم من أداء مهمة، وبرامج النظام مثل نظام التشغيل، الذي يمكّن البرامج الأخرى من العمل بشكل صحيح، من خلال التفاعل مع الأجهزة والبرامج الأخرى.
مصطلح "البرمجيات" استخدم لأول مرة بهذا المعنى من قبل جون دبليو توكي في عام 1957. في علوم الحاسوب وهندسة البرمجيات، برمجيات الكمبيوتر هي جميع برامج الكمبيوتر. اخترع تشارلز باباج مفهوم قراءة تسلسلات مختلفة من التعليمات في ذاكرة جهاز للتحكم في العمليات الحسابية كجزء من محرك الاختلاف الخاص به. النظرية التي هي أساس معظم البرامج الحديثة اُقْتُرِحَت لأول مرة من قبل آلان تورينج في مقالته عام 1935.
العلاقة بالمكونات المادية للنظام (Hardware)
يُطلق على برامج الكمبيوتر على عكس أجهزة الكمبيوتر ، والتي تشمل الترابط المادي والأجهزة المطلوبة لتخزين وتنفيذ (أو تشغيل) البرنامج. في أجهزة الكمبيوتر ، يتم تحميل البرنامج في ذاكرة الوصول العشوائي (RAM) ويُنَفَّذ في وحدة المعالجة المركزية. في أدنى مستوى، يتكون البرنامج من لغة آلة خاصة بمعالج فردي. تتكون لغة الآلة من مجموعات من القيم الثنائية التي تشير إلى تعليمات المعالج (رمز الكائن)، والتي تغير حالة الكمبيوتر عن حالته السابقة.
البرنامج عبارة عن سلسلة مرتبة من التعليمات لتغيير حالة أجهزة الكمبيوتر في تسلسل معين. عادة ما تكون مكتوبة بلغات برمجة عالية المستوى تكون أسهل وأكثر كفاءة للاستخدام البشري (أقرب إلى اللغة الطبيعية) من لغة الآلة. يتم تجميع اللغات عالية المستوى أو ترجمتها إلى كود كائن لغة الآلة. يمكن أيضًا كتابة البرنامج بلغة تجميع، بشكل أساسي ، تمثيل ذاكري للغة الآلة باستخدام أبجدية لغة طبيعية. يجب تجميع لغة التجميع في رمز كائن عبر مُجمّع.
العلاقة بالبيانات
تم اعتبار البرامج تاريخيًا وسيطًا بين الأجهزة الإلكترونية والبيانات، والتي يتم تحديدها من خلال الإرشادات المحددة بواسطة البرنامج. مع تزايد تعقيد الرياضيات الحسابية، يصبح التمييز بين البرامج والبيانات أقل دقة. تعتبر البيانات عمومًا إما ناتجًا أو مدخلات من البرامج المنفذة. ومع ذلك، فإن البيانات ليست المخرجات أو المدخلات الوحيدة الممكنة. على سبيل المثال، يمكن اعتبار معلومات تكوين (النظام) أيضًا مدخلات، على الرغم من عدم اعتبارها بالضرورة بيانات (وبالتأكيد ليست بيانات التطبيقات). قد يكون إخراج جزء معين من البرامج المنفذة هو المدخلات لجزء آخر من البرنامج المنفذ. لذلك، يمكن اعتبار البرنامج واجهة بين الأجهزة و / أو البيانات و / أو البرامج (الأخرى).
أنواع البرامج
تقسم أنظمة الكمبيوتر العملية البرامج إلى ثلاث فئات رئيسية: برامج النظام، وبرمجيات البرمجة، وبرامج التطبيقات، على الرغم من أن التمييز تعسفي، وغالبًا ما يكون غير واضح.
1. برامج النظام
تساعد برامج النظام في تشغيل أجهزة الكمبيوتر ونظام الكمبيوتر. يتضمن أنظمة التشغيل وبرامج تشغيل الأجهزة وأدوات التشخيص والخوادم وأنظمة النوافذ والأدوات المساعدة والمزيد. الغرض من برامج الأنظمة هو عزل مبرمج التطبيقات قدر الإمكان عن تفاصيل مجمع الكمبيوتر المعين المستخدم، وخاصة الذاكرة وميزات الأجهزة الأخرى، والأجهزة الملحقة مثل الاتصالات والطابعات والقارئات وشاشات العرض ولوحات المفاتيح وما إلى ذلك.
2. برمجيات البرمجة
عادةً ما توفر برمجيات البرمجة أدوات لمساعدة المبرمج في كتابة برامج الكمبيوتر باستخدام لغات برمجة مختلفة بطريقة أكثر ملاءمة. تتضمن الأدوات برامج تحرير النصوص والمترجمين الفوريين والرابطين والمصححين وما إلى ذلك. تدمج بيئة التطوير المتكاملة (IDE) هذه الأدوات في حزمة برامج، وقد لا يحتاج المبرمج إلى كتابة أوامر متعددة للترجمة، والمترجم الفوري، وتصحيح الأخطاء، والتتبع، وما إلى ذلك، لأن IDE يحتوي عادةً على واجهة مستخدم رسومية متقدمة (GUI).
3. برامج التطبيقات
تسمح برامج التطبيقات بإنجاز مهمة واحدة أو أكثر (غير متعلقة بالحاسوب). تشمل التطبيقات النموذجية الأتمتة الصناعية وبرامج الأعمال والبرامج التعليمية والبرامج الطبية وقواعد البيانات وألعاب الكمبيوتر. من المحتمل أن تكون الشركات هي أكبر مستخدمي برامج التطبيقات، ولكن كل مجال من مجالات النشاط البشري يستخدم الآن شكلاً من أشكال برامج التطبيقات. يتم استخدامه لأتمتة جميع أنواع الوظائف.
فيروسات الكمبيوتر
تعد الفيروسات نوعًا خبيثًا من برامج الكمبيوتر على الرغم من أنها قد لا تعتبر برامج. يمكن إنشاؤها كأي نوع من أنواع البرامج الثلاثة. تتسبب بعض الفيروسات في حدوث مشكلات بسيطة، مثل إبطاء جهاز الكمبيوتر أو استخدام البريد الإلكتروني في الانتشار. يمكن أن تتسبب الفيروسات الأخرى في حدوث مشكلات أكثر خطورة، مثل إتلاف البيانات أو إتلاف الأجهزة.
العلاقة بين البرامج والمكتبات
قد لا يكون البرنامج مكتملًا بالقدر الكافي ليُنَفَّذ بواسطة الكمبيوتر. على وجه الخصوص، قد يتطلب الأمر برامج إضافية من مكتبة البرامج حتى تكتمل. قد تتضمن هذه المكتبة مكونات برمجية مستخدمة بواسطة برامج قائمة بذاتها، ولكن لا يمكن تنفيذها بمفردها. ومن ثم، قد تتضمن البرامج إجراءات معيارية مشتركة للعديد من البرامج، مستخرجة من هذه المكتبات. قد تتضمن المكتبات أيضًا برامج قائمة بذاتها يتم تنشيطها بواسطة حدث كمبيوتر و / أو تؤدي بعض الوظائف (مثلاً بما فيما معناه "التدبير المنزلي" للكمبيوتر) ولكن لا تعيد البيانات إلى برنامج التنشيط الخاص بها. قد يتم استدعاء البرامج من قبل برامج أخرى.
طبقات البرامج
غالبًا ما يرى المستخدمون الأشياء بشكل مختلف عن المبرمجين. عادةً ما يرى الأشخاص الذين يستخدمون أجهزة كمبيوتر حديثة للأغراض العامة (على عكس الأنظمة المضمنة وأجهزة الكمبيوتر التناظرية وأجهزة الكمبيوتر العملاقة وما إلى ذلك)، ثلاث طبقات من البرامج تؤدي مجموعة متنوعة من المهام: النظام الأساسي والتطبيق وبرامج المستخدم.
1. برامج النظام الأساسي
يشتمل النظام الأساسي على نظام الإدخال والإخراج الأساسي (غالبًا ما يوصف بأنه برنامج ثابت (Firmware)، وبرامج تشغيل الأجهزة، ونظام التشغيل، وعادةً ما يكون واجهة مستخدم رسومية تسمح للمستخدم بالتفاعل مع الكمبيوتر والأجهزة الطرفية. (المعدات المرتبطة بها). غالبًا ما تأتي برامج النظام الأساسي مجمعة مع الكمبيوتر ، وقد لا يدرك المستخدمون أنها موجودة، أو أن لديهم خيارًا لاستخدام برنامج نظام أساسي مختلف.
2. برامج التطبيقات
البرامج التطبيقية أو ببساطة "التطبيقات" هي ما يفكر فيه معظم الناس عندما يفكرون في البرامج. تشمل الأمثلة النموذجية البرامج المكتبية (Office software) وألعاب الفيديو. غالبًا ما يتم شراء برامج التطبيقات بشكل منفصل عن أجهزة الكمبيوتر. في بعض الأحيان تُجَمَّع التطبيقات مع الكمبيوتر ، ولكن هذا لا يغير حقيقة أنها تعمل كتطبيقات مستقلة. غالبًا ما تكون التطبيقات برامج مستقلة عن نظام التشغيل، على الرغم من أنها غالبًا ما تكون مصممة لأنظمة أساسية معينة. يفكر معظم المستخدمين في المجمعين وقواعد البيانات و "برامج النظام" الأخرى كتطبيقات.
3. البرامج المكتوبة من قبل المستخدم
يصمم برنامج المستخدم الأنظمة لتلبية احتياجات المستخدمين المحددة. تتضمن برامج المستخدم قوالب جداول البيانات ووحدات ماكرو لمعالج الكلمات والمحاكاة العلمية والرسومات والبرامج النصية للرسوم المتحركة. حتى مرشحات البريد الإلكتروني هي نوع من برامج المستخدم. ينشئ المستخدمون هذا البرنامج بأنفسهم، وغالبًا ما يتجاهلون مدى أهميته. اعتمادًا على مدى كفاءة البرنامج الذي كتبه المستخدم في دمج حزم التطبيقات المشتراة، قد لا يكون العديد من المستخدمين على دراية بالتمييز بين الحزم المشتراة وما أضافه زملاء العمل.
طريقة عمل البرامج
يجب "تحميل" برامج الكمبيوتر في وحدة تخزين الكمبيوتر (المعروفة أيضًا باسم ذاكرة الوصول العشوائي).
بمجرد تحميل البرنامج، يكون الكمبيوتر قادرًا على تنفيذ البرنامج. تعمل أجهزة الكمبيوتر من خلال تنفيذ برنامج الكمبيوتر. يتضمن ذلك تمرير التعليمات من برنامج التطبيق، من خلال برنامج النظام، إلى الجهاز الذي يتلقى التعليمات في النهاية كرمز للجهاز. يتسبب كل أمر في قيام الكمبيوتر بتنفيذ عملية - نقل البيانات أو إجراء حساب أو تغيير تدفق التحكم في التعليمات.
عادة ما يتم نقل البيانات من مكان في الذاكرة إلى مكان آخر. يتضمن أحيانًا نقل البيانات بين الذاكرة والسجلات التي تتيح الوصول إلى البيانات بسرعة عالية في وحدة المعالجة المركزية.
مثال بسيط على طريقة عمل البرنامج هو ما يحدث عندما يختار المستخدم إدخالاً مثل "نسخ" من القائمة. في هذه الحالة، يتم تنفيذ تعليمات شرطية لنسخ نص من البيانات في منطقة "مستند" مقيمة في الذاكرة، ربما إلى منطقة تخزين وسيطة تُعرف باسم منطقة بيانات "الحافظة". إذا تم اختيار إدخال قائمة مختلف مثل "لصق"، فقد ينفذ البرنامج التعليمات لنسخ النص من منطقة بيانات الحافظة إلى موقع محدد في نفس المستند أو مستند آخر في الذاكرة.
حاليا، تكاد تكون القيود الوحيدة المفروضة على استخدام برامج الكمبيوتر في التطبيقات هي براعة المصمم / المبرمج. ومن ثم ، فإن مجالات كبيرة من الأنشطة (مثل لعب الشطرنج على مستوى Grand master) التي كان يُفترض سابقًا أنها مستحيلة إذا أُجْرِيَت عن طريق محاكاة البرامج أصبحت الآن مبرمجة بشكل روتيني. المجال الوحيد الذي أثبت حتى الآن أنه آمن بشكل معقول من محاكاة البرامج هو عالم الفن البشري - وخاصة الموسيقى والأدب.
جودة وموثوقية البرامج
تراعي موثوقية البرامج الأخطاء والأعطال والإخفاقات المتعلقة بإنشاء البرامج وتشغيلها. يرتبط الكثير من جودة وموثوقية البرنامج ببرنامج التطبيق الذي تتم كتابته لبرنامج نظام معين. أحد الأمثلة على ذلك هو أن تطبيقًا لبرنامج نظام أقدم قد لا يعمل على تطبيق أحدث.
هيكلة البرمجيات
تتألف بنية برمجيات النظام من مكونات برمجياته وخصائصها الخارجية وعلاقاتها مع بعضها البعض. يشير المصطلح أيضًا إلى توثيق هندسة برمجيات النظام.
⚫ تاريخ نشأة البرامج
حُدِّدَت أصول هندسة البرمجيات كمفهوم لأول مرة في العمل البحثي لـ Edsger Dijkstra في عام 1968، وديفيد بارناس في أوائل السبعينيات. أكد العلماء أن بنية نظام البرمجيات مهمة، وأن الحصول على الهيكل الصحيح أمر بالغ الأهمية. ازدادت شعبية دراسة هذا المجال منذ أوائل التسعينيات، مع تركيز العمل البحثي على الأنماط (الأنماط) المعمارية، ولغات وصف وتوثيق العمارة، والأساليب الرسمية.
كتب ماري شو وديفيد جارلان من جامعة كارنيجي ميلون كتابًا بعنوان، هندسة البرمجيات: وجهات نظر حول الانضباط الناشئ في عام 1996، والذي طرح المفاهيم في هندسة البرمجيات، مثل المكونات والموصلات والأنماط وما إلى ذلك. تتجه جهود معهد UCI لأبحاث البرمجيات في أبحاث هندسة البرمجيات بشكل أساسي إلى الأساليب المعمارية، ولغات وصف العمارة، والبنى الديناميكية.
⚫ لغات وصف الهيكلة
تستخدم لغات وصف الهيكلة (ADLs) لوصف هندسة البرمجيات. طُوِّر العديد من ADLs المختلفة من قبل منظمات مختلفة، بما في ذلك Wright (تم تطويره بواسطة Carnegie Mellon) و Acme (طُوِّر بواسطة Carnegie Mellon) و xADL (طُوِّر بواسطة UCI) و Darwin (تم تطويره بواسطة Imperial College London) و DAOP-ADL (طُوِّر بواسطة جامعة مالقة). العناصر المشتركة ل ADL هي المكون والموصل والتكوين.
يتم تنظيم هندسة البرمجيات بشكل عام في طرق عرض، والتي تشبه الأنواع المختلفة من المخططات التي يتم إجراؤها في هندسة المباني.
تراخيص البرامج
يمنح ترخيص البرنامج المستخدم الحق في استخدام البرنامج في البيئة المرخصة، وتأتي بعض البرامج مع الترخيص عند شرائها، أو ترخيص OEM عند حزمها مع الأجهزة. يمكن أن تكون البرامج أيضًا في شكل برامج مجانية أو برامج تجريبية.
1. البرمجيات الاحتكارية
البرمجيات الاحتكارية هي برمجيات لها قيود على استخدامها ونسخها، وعادة ما يفرضها المالك. يمكن منع الاستخدام أو النسخ أو التعديل بالوسائل القانونية أو التقنية. تشمل الوسائل التقنية تحرير الثنائيات التي يمكن قراءتها آليًا فقط، وحجب شفرة المصدر التي يمكن للبشر قراءتها. يمكن أن تتضمن الوسائل القانونية ترخيص البرامج وحقوق الطبع والنشر وقانون براءات الاختراع. يمكن بيع البرامج الاحتكارية مقابل المال كبرامج تجارية أو متوفرة بسعر صفر كبرامج مجانية. يسمح الاحتكار الذي توفره البرامج الاحتكارية لموزع النسخ التجارية بفرض أي سعر مقابل تلك النسخ. موزعو البرامج الاحتكارية لديهم سيطرة أكبر على ما يمكن أن يفعله المستخدمون بالبرنامج أكثر من البرامج غير الاحتكارية.
2. البرمجيات الحرة
البرمجيات الحرة، كما تحددها مؤسسة البرمجيات الحرة، هي برمجيات يمكن استخدامها ونسخها ودراستها وتعديلها وإعادة توزيعها دون قيود. يعد التحرر من مثل هذه القيود أمرًا أساسيًا للمفهوم، حيث إن البرمجيات الحرة هي برمجيات احتكارية (وهو تمييز لا علاقة له بفرض رسوم). الطريقة المعتادة لتوزيع البرامج كبرمجيات مجانية هي أن يُرَخَّص البرنامج للمستلم بترخيص برنامج مجاني (أو يكون في المجال العام)، وإتاحة الكود المصدري للبرنامج. يتم توزيع معظم البرامج المجانية عبر الإنترنت دون مقابل، أو خارج الإنترنت بتكلفة هامشية للتوزيع، ولكن هذا ليس مطلوبًا، ويمكن للأشخاص بيع نسخ بأي ثمن.
للمساعدة على تمييز البرمجيات الحرة عن البرمجيات المجانية (السعر الصفري)، طور ريتشارد ستالمان، مؤسس حركة البرمجيات الحرة، التفسير التالي: "البرمجيات الحرة هي مسألة حرية وليست سعرًا. لفهم المفهوم، يجب عليك التفكير في كلمة "Free" كما في "حرية التعبير"، وليس "Free beer". وبشكل أكثر تحديدًا، تعني البرمجيات الحرة أن مستخدمي الكمبيوتر لديهم حرية التعاون مع من يختارون، والتحكم في البرامج التي يستخدمونها.
3. البرمجيات مفتوحة المصدر
البرامج مفتوحة المصدر هي برامج الكمبيوتر التي يتوفر رمز مصدرها بموجب ترخيص حقوق النشر الذي يسمح للمستخدمين بدراسة البرنامج وتغييره وتحسينه وإعادة توزيعه في شكل معدل أو غير معدل. إنه المثال الأبرز على تطوير المصادر المفتوحة.
في عام 1998، دعت مجموعة من الأفراد إلى استبدال مصطلح "البرمجيات الحرة" ببرنامج مفتوح المصدر (OSS) كتعبير أقل غموض وأكثر راحة لعالم الشركات. قد يرغب مطورو البرامج في نشر برامجهم بترخيص برنامج مفتوح المصدر، بحيث يمكن لأي شخص أيضًا تطوير نفس البرنامج أو فهم كيفية عمله. تسمح البرامج مفتوحة المصدر عمومًا لأي شخص بإنشاء إصدار جديد من البرنامج، أو نقله إلى أنظمة تشغيل وبنيات معالجات جديدة، أو مشاركته مع الآخرين أو تسويقه. الهدف من المصدر المفتوح هو جعل المنتج أكثر قابلية للفهم أو التعديل أو التكرار أو الموثوقية، أو يمكن الوصول إليه ببساطة، بينما لا يزال قابلاً للتسويق.
يقدم تعريف المصدر المفتوح، على وجه الخصوص، فلسفة مفتوحة المصدر، ويعرف أيضًا حدودًا لاستخدام وتعديل وإعادة توزيع البرامج مفتوحة المصدر. تمنح تراخيص البرامج حقوقًا للمستخدمين قد تكون محظورة بموجب حقوق النشر. وتشمل هذه الحقوق على الاستخدام والتعديل وإعادة التوزيع. تم تأهيل العديد من تراخيص البرامج مفتوحة المصدر داخل حدود تعريف المصدر المفتوح. المثال الأبرز هو رخصة جنو العمومية المشهورة (جي بي إل). بينما تقدم المصادر المفتوحة طريقة لجعل مصادر المنتج متاحة للجمهور على نطاق واسع، تسمح تراخيص المصدر المفتوح للمؤلفين بضبط هذا الوصول.
4. البرمجيات المجانية
البرامج المجانية هي برامج كمبيوتر محمية بحقوق الطبع والنشر، والتي يتم توفيرها للاستخدام مجانًا، ولفترة غير محدودة، على عكس البرامج المشتركة، حيث يتعين على المستخدم الدفع (على سبيل المثال، بعد فترة تجريبية معينة). المعيار الوحيد لتصنيفك على أنه "برنامج مجاني" هو أن البرنامج يجب أن يكون متاحًا للاستخدام لفترة غير محدودة بدون تكلفة. قد يفرض ترخيص البرنامج قيودًا أخرى أو أكثر على نوع الاستخدام بما في ذلك الاستخدام الشخصي والاستخدام الفردي والاستخدام غير الربحي والاستخدام غير التجاري والاستخدام الأكاديمي والاستخدام التجاري. أو أي مزيج من هؤلاء. على سبيل المثال، قد يكون الترخيص "مجانيًا للاستخدام الشخصي غير التجاري". هناك بعض البرامج التي يمكن اعتبارها مجانية، ولكن توزيعها محدود؛ أي أنه يمكن تنزيلها فقط من موقع معين، ولا يمكن إعادة توزيعها. ومن ثم، فإن مثل هذه البرامج لن تكون برامج قابلة لإعادة التوزيع بحرية. وفقًا للتعريف الأساسي ، سيكون هذا البرنامج مجانيًا؛ وفقًا للتعريفات الأكثر صرامة، فلن يكونوا كذلك. يمكن توزيع كل شيء أُنْشِئ باستخدام البرامج المجانية بدون تكلفة (على سبيل المثال الرسوم والمستندات التي صنعها المستخدم). البرمجيات المجانية تتناقض مع البرمجيات الحرة، بسبب اختلاف معاني كلمة "حر". البرامج المجانية مجانية، وتشير إلى سعر صفر، مقابل البرامج المجانية الموصوفة بـ "Libre"، والتي تعني حرية دراسة البرنامج وتغييره ونسخه وإعادة توزيعه ومشاركته واستخدامه في أي غرض. ومع ذلك، فإن العديد من البرامج هي برامج مجانية. وهي متوفرة بسعر صفر وتوفر الكود المصدري، وتُوَزَّع بأذونات برمجيات مجانية. يُطلق على هذا البرنامج حصريًا اسم برنامج مجاني لتجنب الخلط بينه وبين البرامج المجانية التي لا تأتي عادةً مع الكود المصدري، ومن ثم فهي برمجيات مملوكة.
5. البرمجيات المشتركة (Shareware)
تعد البرامج المشتركة طريقة تسويق للبرامج التجارية، حيث يتم توزيع نسخة تجريبية مقدمًا وبدون دفع، كما هو شائع في البرامج الاحتكارية. عادةً ما يتم الحصول على برامج كومبيوتر مجانًا، عن طريق التنزيل من الإنترنت. يقوم المستخدم بتجربة البرنامج، وبالتالي عُرفت البرامج المشتركة أيضًا باسم "جرب قبل الشراء" و Demoware والبرامج التجريبية والعديد من الأسماء الأخرى. يصاحب برنامج كومبيوتري طلباً للدفع، وغالبًا ما يتطلب ترخيص توزيع البرنامج مثل هذا الدفع. غالبًا ما يكون الدفع مطلوبًا بمجرد انقضاء فترة زمنية محددة بعد التثبيت.