برامج الحاسب أو برمجيات (بالإنجليزية: software) مصطلح عام يُستخدم لوصف مجموعة من عمليات الحاسوب المتكاملة لحل مسألة رياضية معينة أو القيام بعملية إحصائية أو لتصحيح صيغة تحريرية أو إنجاز عملية معينة أو غير ذلك.[1]
وعادةً ما تكون هذه التعليمات مكتوبة بلغة برمجة عالية المستوى يمكن للإنسان التعامل معها بسهولة وكفاءة وهي أقرب إلى لغة البشر الطبيعية من اللغة البرمجية التي يفهمها جهاز الحاسب وهي لغة الآلة.
ويتم تحويل جميع الجمل البرمجية المكتوبة بلغات برمجة عالية المستوى وتنفيذها جملة جملة باستخدام المترجم أو تنفيذها دفعة واحدة باستخدام المحول البرمجي.
والشفرة الناتجة من هذا التحويل يُطلق عليها لغة الآلة أو شفرة الهدف.
يمكن أيضًا كتابة البرامج باستخدام لغة الأسيمبلي وهي ترميز للغة البرمجية التي يفهمها الحاسب باستخدام الأحرف الهجائية الإنجليزية.
هذا ويجب تحويل لغة الأسمبلي إلى اللغة البرمجية التي يفهمها الحاسب باستخدام أداة المجمـِّع.
برنامج ثابت أو برنامج دائم أو ما يسمى بالفريموير وهو برنامج صغير يتحكم في الأجهزة الإلكترونية ويكون مخزنًا على شرائح ذاكرة مبرمجة إلكترونياً ومثبتة على اللوحة الأم أو أنواع أخرى من حاملات المكونات المادية المتكاملة للأجهزة.
برامج النظم: مثل نظم التشغيل التي تشترك مع مكونات الحاسب المادية في تقديم الخدمات اللازمة لبرامج التطبيقات.
اختبار البرامج: هو مجال مستقل يهتم بالبرمجة وتطوير البرامج. وتوجد عدة طرق لاختبار المنتج والتأكد من جودته قبل طرحه للاستخدام من قبِل فرد أو مجموعة. [2][2][2].
فحص البرمجياتمصطلح شامل يتضمن جميع البرامج المساعدة والبرامج التطبيقية التي تعمل معًا لاختبار أي حزمة برمجية، ولكن ليس ذلك بالضرورة؛ حيث إنها يمكن أن تستخدم أيضًا في أغراض تشغيلية أخرى. وبالتالي، فإن عملية الاختبار ليست عملية توصيف أو ضبط، ولكنها مجرد بيئة عمل لبرامج التطبيقات أو مجموعات فرعية منها.
نظم الإطارات التي تساعد مستخدم الحاسوب على فتح عدة برامج في الوقت نفسه وكل برنامج في إطار أو نافذة خاصة به.
إن الهدف من برامج النظم هو مساعدة مطوري التطبيقات لتفادي الخوض في التفاصيل الخاصة بجهاز الحاسوب بما في ذلك الأجهزة الملحقة، مثل وسائل الاتصال والطابعات وأجهزة العرض والقراءة ولوحات المفاتيح...إلخ. هذا بالإضافة إلى التفاصيل الخاصة بتقسيم مصادر الحاسوب، مثل الذاكرة وزمن المعالجة بطريقة آمنة وثابتة.
لا يمكن إنشاء البرمجيات إلا بلغات البرمجة. وتوفر لغات البرمجة في الغالب أدوات لمساعدة المبرمج في كتابة برامج الحاسوب باستخدام لغات برمجة مختلفة، ولكن بطريقة سهلة. تشتمل الأدوات على:
محول برمجي (يتم من خلالها تحويل جميع الجمل البرمجية وتنفيذها دفعة واحدة).
غالبًا ما يرى مستخدمو الحاسوب الأمور بصورة مختلفة عن المبرمجين. فالأشخاص الذين يستخدمون أجهزة الحاسوب الحديثة الخاصة بالأغراض العامة (في مقابل النظم المضمنةوأجهزة الحاسوب التناظريةوأجهزة الحاسوب كبيرة الحجم وفائقة السرعة...إلخ) عادةً ما يصنفون برامج الحاسوب التي تؤدي مهام متنوعة في ثلاث طبقات وهي: برامج نظم التشغيل وبرامج التطبيقات وبرامج المستخدمين.
تحتوي معظم برامج الحاسوب على دليل تعليمات فنية للبرنامج حتى يتمكن المستخدم النهائي من فهم البرنامج وما يفعله وكيفية استخدامه. وإذا لم يكن هناك دليل تعليمات فنية سهل وواضح، فقد يكون من الصعب استخدام البرنامج، وخاصةً إذا كان برنامج متخصص ومعقد نسبيًا، مثل برنامج "فوتوشوب"و"أتوكاد"...إلخ.
وربما يكون دليل التعليمات الفنية للمطور موجودًا أيضًا إما مع الكود في شكل تعليقات و/أو في شكل ملفات منفصلة تشرح كيفية تشغيل البرنامج وكيفية إدخال بعض التعديلات عليه.
إن الملفات القابلة للتنفيذ لا تكون عادةً كاملة بالشكل الكافي الذي يجعل من الممكن تنفيذها بشكل مباشر. تتضمن المكتبات البرمجية (Software Libraries) مجموعات من الوظائف والاستخدامات يمكن تضمينها في تطبيقات أخرى. وتحتوي نظم التشغيل على العديد من ملفات البرامج القياسية، وغالبًا ما يتم توزيع التطبيقات مع الملفات الخاصة بها.
ينبغي «تحميل» برامج الحاسوب في الجزء المخصص للتخزين في الحاسوب (مثل، القرص الصلب أو الذاكرة أو ذاكرة الوصول العشوائي) المعروفة باسم RAM. وبمجرد الانتهاء من تحميل البرنامج، فإن الحاسوب يصبح قادرًا على تشغيل البرنامج. ويتضمن ذلك تمرير التعليمات من برنامج التطبيق وعبر برنامج النظام إلى عتاد / مكونات الحاسوب الذي يتلقى التعليمات في النهاية في شكل لغة برمجة يفهمها جهاز الحاسوب نفسه، ويقوم كل سطر برمجي بجعل جهاز الحاسوب يتولى تنفيذ عملية أو مهمة معينة، مثل نقل البيانات أو إجراء عمليات حسابية أو تغيير التحكم في تدفق التعليمات.
عادةً ما يكون نقل البيانات من مكان إلى آخر في الذاكرة. وفي بعض الأحيان يتضمن الأمر نقل البيانات بين الذاكرة الرئيسية (Memory) ومناطق التخزين في وحدة المعالجة المركزية (الكاش أو الذاكرة المخبأة)؛ مما يتيح الوصول السريع إلى البيانات في وحدة المعالجة المركزية. إن نقل البيانات، وخاصةً إذا كانت بكميات كبيرة، قد يكون مكلفًا. ومن ثم، فإنه يمكن تجنب هذا الأمر في بعض الأحيان عن طريق استخدام «مؤشرات» لبيانات. وتشمل العمليات الحسابية إجراء بعض العمليات البسيطة، مثل زيادة قيمة العنصر الخاص ببيانات المتغير. وربما تطلبت العمليات الحسابية الأكثر تعقيدًا استخدام العديد من العمليات وعناصر البيانات معًا.
إن نوعية برامج الحاسوب مهمة جدًا، وخاصةً البرامج التجارية والبرامج التي تعمل مع نظام التشغيل، مثل مايكروسوفت أوفيس وكذلك برامج نظام التشغيل نفسه مثل مايكروسوفت ويندوزولينكس...إلخ. وإذا كان هناك عيب في البرنامج، فإنه يمكن أن يحذف ملفات العمل ويعطل جهاز الحاسوب ويتسبب في حدوث أشياء أخرى غير متوقعة. يُطلق على الأخطاء والمشكلات اسم أخطاء برمجية(Bugs). جدير بالذكر أنه يتم اكتشاف العديد من الأخطاء والتخلص منها في أثناء اختبار البرامج. ومع ذلك، فإنه نادرًا ما تستطيع عملية اختبار البرامج التخلص من كل الأخطاء، ويقول بعض المبرمجين إن «كل برنامج يحتوي على خطأ واحد على الأقل» (قانون «لوبارسكي»).إن جميع شركات برامج الحاسوب الكبيرة، مثل «مايكروسوفت» و«نوفيل» وصن مايكروسيستمز لديها أقسام لاختبار البرامج الخاصة بها هدفها الأساسي اختبار مستوى جودة البرامج وضمان فاعليتها. يمكن اختبار برامج الحاسوب من خلال اختبار الوحداتواختبار مشكلات البرنامج بالإضافة إلى طرق أخرى يتم إجراؤها يدويًا أو أوتوماتيكيًا وهذا هو الأكثر شيوعًا؛ حيث إن كم الكود الذي يتم اختباره قد يكون كبيرًا للغاية. على سبيل المثال، طبقت ناسا إجراءات صارمة للغاية لاختبار برامج الحاسوب الموجودة في مكوك الفضاء وبرامج أخرى كون وجود أخطاء يمكن أن يوقف البرنامج بأكمله ويعطل المركبة ويتسبب في خسائر فادحة.
إن ترخيص برنامج الحاسوب يمنح المستخدم الحق في استخدام البرنامج ضمن إطار وشروط هذا الترخيص. وتأتي بعض البرامج مزودة بترخيص استخدامها عند شرائها بنفسك أو قد تأتي مزودة بترخيص صانع معدات أصلية أو ما يعرف اختصاراً OEM من الشركة الأصلية عندما يأتي جهاز الحاسوب الذي تم شراؤه مثبتًا عليه البرنامج. في حين أن هناك برامج أخرى تأتي بترخيص استخدام مجاني ويُمنح المستخدم حق تعديل البرنامج وإعادة توزيعه. هذا بالإضافة إلى أنه توجد بعض البرامج المجانية أو التجريبية. انظر أيضًا: إدارة رخص البرمجيات.
يمكن تسجيل براءة اختراع لبرنامج حاسوب، إلا أن هذا الأمر قد يكون موضع خلاف في مجال البرمجيات؛ حيث يوجد العديد من الآراء المتباينة إزاء هذا الأمر. إن نقطة الخلاف المثارة حول موضوع براءات اختراع برامج الحاسوب تتمثل في عدم السماح بنسخ لوغاريتم أو تقنية معينة يتضمنها البرنامج من قبِل أشخاص آخرين، فهي تعتبر ملكية فكريةويحذر نسخها إو إعادة نشرها، وذلك وفقًا لدرجة أهمية البرنامج. وهنا يعتقد البعض أن تسجيل براءة اختراع لبرنامج حاسوب يعوق تطوير البرنامج، في حين يجادل البعض الآخر قائلين إن براءات الاختراع تعتبر حافزًا قويًا يشجع على ابتكار برامج حاسوب جديدة.
يختلف تصميم برنامج الحاسوب وتطبيقه تبعًا لدرجة تعقيد البرنامج وصعوبته. على سبيل المثال، يستغرق تصميم وإنشاء برنامج مايكروسوفت وورد وقتًا أطول من الوقت المستغرق في تصميم وتطوير برنامج «المفكرة» مفكرة «مايكروسوفت»، وذلك بسبب اختلاف وظائف كل برنامج.
كما سبق وذكرنا أنه عادةً ما يتم إنشاء برنامج جديد بالاعتماد على برنامج موجود بالفعل وباستخدام واجهة برمجة التطبيقات الخاصة بالبرنامج الأساسي، مثل GTK+ وJavaBeans وSwing...إلخ.
إن برامج الحاسوب لها سوقها الخاص الذي يسمى صناعة البرمجيات ويتكون من شركات مختلفة وأشخاص يقومون بإنتاج برامج الحاسوب. ونتيجة لذلك، فإن هناك العديد من الشركات المتخصصة في إنتاج برامج الحاسوب والمبرمجين في العالم. ونظرًا لزيادة استخدام برامج الحاسوب في العديد من المجالات المختلفة، مثل النواحي الماليةوالبحثوالرياضياتواستكشاف الفضاءوالألعابوالتعدين وغيرها، فإن شركات البرامج والمبرمجين عادةً ما يتخصصون في مجالات معينة. على سبيل المثال، تتخصص شركة "إليكترونك آرتس" في تصميم ألعاب الفيديو.
هذا بالإضافة إلى أن بيع برامج الحاسوب يمكن أن يكون مجالاً مربحًا جدًا. على سبيل المثال، تم تصنيف "بيل جيتس" مؤسس شركة "مايكروسوفت" في عام 2008 على أنه ثاني أغنى رجل في العالم، ويرجع السبب في ذلك إلى حد كبير إلى بيع برامج "ويندوز"و"أوفيس". وينطبق الأمر نفسه على لاري إليسون بسبب برنامج قواعد البيانات "أوراكل".