(اختصارا لـ Input/Output) هو مصطلح عام يطلق على الأجهزة التي ترسل المعلومات من العالم الخارجي و تلك التي تعيد نتائج الحسابات. هذه النتائج يمكن إما أن تظهر مباشرة للمستخدم أو أن يتم إرسالها إلى آلة أخرى و التي يكون تحكمها مخصص للحاسب. على سبيل المثال في الإنسان الآلى (robot) يكون جهاز الإخراج الرئيسي لتحكم الحاسب هو الروبوت ذاته.
إن الجيل الأول من الحاسبات كان مجهزا بمدى محدود جدا من أجهزة الإدخال. إن قارئ الكروت المثقبة أو الاشياء المماثلة كانت تستخدم لإدخال الأوامر و البيانات في ذاكرة الحاسب، و كذلك استخدم بعض أنواع الطابعات و هو في العادة عبارة عن teletype معدل لتسجيل النتائج. و على مر السنين، أجهزة أخرى تمت إضافتها. بالنسبة إلى الحاسبات الشخصية على سبيل المثال، فان لوحة المفاتيح و الفأرة هما الطريقتين الرئيسيتين المستخدمتين لإدخال المعلومات مباشرة إلى الحاسب، و الشاشة هي الطريقة الرئيسية لإعادة إظهار المعلومات للمستخدم و ذلك بالرغم من أن الطابعات و السماعات منتشرة أيضا. يوجد تشكيلة ضخمة من أجهزة الإدخال الأخرى لإدخال أنواع أخرى من المدخلات. مثال على ذلك هو الكاميرا الرقمية حيث تستخدم لإدخال معلومات مرئية. يوجد نوعين بارزين من أجهزة الإدخال و الإخراج. النوع الأول هو أجهزة التخزين الثانوية مثل الأقراص الصلبة (hard disks) و وحدات الأسطوانات (CD-ROM) و key drives و ما يماثلها و التي تتميز بالبطء نسبيا و لكنها ذات سعات تخزينية عالية، حيث يمكن تخزين المعلومات لاستعادتها لاحقا: النوع الثاني هي الأجهزة المستخدمة للاتصال بشبكات الحاسب. إن القدرة على نقل البيانات بين الحاسبات فتح مدي واسع من القدرات للحاسب. شبكة الانترنت العالمية تسمح لملايين الحاسبات بنقل المعلومات من جميع الانواع بينها و بعضها.
[تحرير] البرامجإن برامج الحاسب ببساطة هي عبارة عن قائمة من الأوامر يقوم الحاسب بتنفيذها. تتراوح هذه الأوامر (التعليمات) ابتداء من بعض الأوامر القليلة التي تؤدي مهمة بسيطة إلى قائمة أوامر أكثر تعقيدا و التي من الممكن أن تحتوي جداول من البيانات. العديد من برامج الحاسب تحتوي الملايين من الأوامر و العديد من هذه الأوامر يتم تنفيذها بصورة متكررة. إن حاسب شخصي حديث نموذجي يمكنه تنفيذ حوالي 3 مليار أمر في الثانية. إن الحاسبات لم تكتسب قدراتها غير العادية من خلال قدرتها على تنفيذ الأوامر المعقدة. و لكن بالأحرى فإنها تقوم بالملايين من الأوامر المرتبة عن طريق أشخاص يعرفون بالمبرمجين.
عادة، فإن المبرمجين لا يكتبون الأوامر إلى الحاسب مباشرة بلغة الالة.إن البرمجة بهذه اللغة عملية مملة جدا و تميل للخطأ بصورة كبيرة مما يجعل المبرمجين غير قادرين على الإنتاج بصورة كبيرة. و عوضا عن ذلك، يقوم المبرمجين بوصف العملية المرادة في لغة برمجة "عالية المستوى" و التي يتم ترجمتها أوتوماتيكيا بعد ذلك إلى لغة الالة عن طريق برامج حاسب مخصصة (مفسرات و مجمعات). بعض لغات البرمجة ترسم خريطة قريبة جدا من لغة الآلة مثل لغة التجميع Assembly (لغات برمجة منخفضة المستوى): و على الجانب الآخر فإن لغات البرمجة مثل البرولوج Prolog مبنية على قواعد مجردة و مفصولة عن تفصيلات العملية الحقيقية للآلة (لغات برمجة عالية المستوى). إن اللغة المختارة لمهمة جزئية تعتمد على طبيعة هذه المهمة و المهارة التي يمتلكها المبرمجين و توافر الأدوات و عادة احتياجات المستهلكين (على سبيل المثال، فإن المشاريع الخاصة بالاستخدامات الحربية الامريكية في الغالب يجب أن تكون مبرمجة بلغة Ada).
إن Computer software (الأجزاء غير الملموسة بالحاسب) هو مصطلح بديل لبرامج الحاسب (computer programs): إنها عبارة أكثر شمولية و تحتوي كل المواد الهامة المصاحبة للبرنامج و التي يحتاجها لأداء المهام المهمة على سبيل المثال فإن لعبة الفيديو لا تحتوي فقط على البرنامج نفسه و لكن تحتوي ايضا على بيانات تمثل الصور و الاصوات و المواد الاخرى المطلوبة لعمل البيئة التخيلية للعبة. تطبيق الحاسب هو قطعة من برامج الحاسب التي تقدم للعديد من المستخدمين غالبا في سوق تجزئة. من الأمثلة الحديثة المطبقة تماما هي الأدوات المكتبية office suite و هي عبارة عن برامج ذات صفات مشتركة لأداء مهام المكتب الشائعة.
بالذهاب من القدرات شديدة البساطة الخاصة بأمر لغة آلة واحد إلى القدرات الضخمة للبرامج التطبيقية يعني أن الكثير من برامج الحاسب تكون كبيرة جدا و معقدة للغاية. من الأمثلة المنطبقة على ذلك هو Windows XP و الذي يتكون من حوالي 40 مليون سطر من شفرة الحاسب في لغة برمجة C++: يوجد العديد من المشاريع التي تكون أكبر هدفا، يقوم بإنشائه فرق كبيرة من المبرمجين. إن إدارة هذه المشاريع شديدة التعقيد هو مفتاح إمكانية تنفيذ هذه المشاريع: لغات البرمجة و تطبيقات البرمجة تسمح بتقسيم المهمة إلى مهام فرعية أصغر فأصغر حتى تصبح في قدرات مبرمج واحد و في وقت مناسب.
إن عملية تطوير البرامج لا زالت بطيئة و لا يمكن التنبؤ بها و تميل للخطأ: إن نظام هندسة البرامج حاولت و قد نجحت جزئيا في جعل العملية أكثر سرعة و إنتاجية و تحسين جودة المنتج النهائي.
[تحرير] المكتبات و أنظمة التشغيلبعد فترة وجيزة من تطوير الحاسب، تم اكتشاف أن هناك مهام معينة تكون مطلوبة في برامج مختلفة؛ إن مثالا قديما على ذلك كان حساب بعض الدوال الرياضية الأساسية. و من أجل الفعالية، فقد تم جمع نسخ نموذجية من تلك الدوال و وضعها في مكتبات تكون متاحة لمن يحتاجها. إن مجموعة المهام الشائعة بعض الشئ و التي تتعلق بمعالجة كتل البيانات الخاصة "بالتحدث" إلى أجهزة الإدخال و الإخراج المختلفة، و لذلك تم تطوير مكتبات لها سريعا.
بانتهاء الستينات من القرن العشرين، و مع الاستخدام الصناعي الواسع للحاسب في العديد من الأغراض، أصبح من الشائع استخدامها لانجاز العديد من الوظائف في مؤسسة. بعد ذلك بفترة وجيزة أصبح متاحا وجود برامج خاصة لتوقيت و تنفيذ تلك المهام العديدة. إن مجموع كل من إدارة "الأجزاء الصلبة" و توقيت المهام أصبح معروفا باسم "نظام التشغيل"؛ من الأمثلة القديمة على هذا النوع من أنظمة التشغيل القديمة كان OS/360 الخاص بـ IBM.
إن التطوير الرئيسي التالي في أنظمة التشغيل كان timesharing - و فكرته تعتمد على أن عددا من المستخدمين بإمكانهم استخدام الآلة في وقت واحد و ذلك عن طريق الاحتفاظ بكل برامجهم في الذاكرة و تنفيذ برنامج كل مستخدم لمدة قصيرة و بذلك يصبح و كأن كل مستخدم يملك كل منهم حاسبا خاصا به. إن مثل هذا التطوير يتطلب من نظام التشغيل بأن يقدم لكل برامج المستخدمين "آلة تخيلية" و ذلك لمنع برنامج المستخدم الواحد من التداخل مع البرامج الاخرى (بالصدفة أو التصميم). إن مدى الأجهزة التي يجب أن تتعامل معها نظم التشغيل قد تمدد؛ من الأمثلة الملاحظة كان القرص الصلب؛ إن فكرة الملفات الفردية و الترتيب البنائي المنظم للادلة "directories" (حاليا يطلق عليها في الغالب مجلدات "folder") قد سهلت و بشكل كبير استخدام هذه الأجهزة للتخزين الدائم. من الأمثلة الحديثة المطبقة تماما هي الأدوات المكتبية office suite و هي عبارة عن برامج ذات صفات مشتركة لأداء مهام المكتب الشائعة. إن متحكمات الوصول الآمن سمحت لمستخدمي الحاسب بالوصول فقط إلى الملفات و الأدلة و البرامج التي لديهم تصريح باستخدامها كانت أيضا شائعة.
ربما تكون آخر إضافة لنظام التشغيل كانت عبارة عن أدوات تزود المستخدم بواجهة مستخدم رسومية معيارية. بينما كانت هناك بعض الأسباب التقنية لضرورة ربط واجهة المستخدم الرسومية (GUI) لباقي أجزاء نظام التشغيل، فقد سمح ذلك لبائع نظام التشغيل بجعل كل البرامج الموجهة لنظام تشغيلهم تمتلك نفس الواجهة.
خارج هذه المهام الداخلية "core"، فإن نظام التشغيل غالبا ما يكون مزودا بمجموعة من الأدوات الاخرى، بعض منها ربما يملك اتصال ضئيل بهذه المهام الداخلية الأصلية و لكن وجد أنها مفيدة لعدد كافي من المستهلكين مما جعل المنتجين بإضافتها. على سبيل المثال فإن Apple's Mac OS X يتم تقديمها مع تطبيق لتحرير الفيديو الرقمي.
نظم تشغيل الحاسبات الأصغر ربما لا تقدم كل هذه المهام. نظم التشغيل للمايكروكمبيوتر القديم ذى الذاكرة و قدرات المعالجة المحدودتين كانت لا تقدم كل المهام، و الحاسبات المدمجة دائما إما تملك نظم تشغيل متخصصة أو لا تملك نظام تشغيل بالكلية، مع برامجه التطبيقية المتخصصة و التي تؤدي المهام التي من الممكن أن تعود بطريقة أخرى إلى نظام التشغيل.