I/O (اختصارا لـ Input/Output) هو مصطلح عام يطلق على الأجهزة التي ترسل المعلومات من العالم الخارجي وتلك التي تعيد نتائج الحسابات. هذه النتائج يمكن إما أن تظهر مباشرة للمستخدم أو أن يتم إرسالها إلى آلة أخرى والتي يكون تحكمها مخصص للحاسب.
الجيل الأول من الحواسيب كان مجهزا بمدى محدود جدا من أجهزة الإدخال. مثل قارئ الكروت المثقبة أو الاشياء المماثلة التي أستخدمت لإدخال الأوامر والبيانات في ذاكرة الحاسوب، و كذلك استخدم بعض أنواع الطابعات وهو في العادة عبارة عن teletype معدل لتسجيل النتائج. وعلى مر السنين، أجهزة أخرى تمت إضافتها. بالنسبة إلى الحاسبات الشخصية، فان لوحة المفاتيح والفأرة هما الطريقتين الرئيسيتين المستخدمتين لإدخال المعلومات مباشرة إلى الحاسب، والشاشة هي الطريقة الرئيسية لإظهار المعلومات للمستخدم وذلك بالرغم من أن الطابعات والسماعات منتشرة أيضا. توجد تشكيلة ضخمة من أجهزة الإدخال الأخرى لإدخال أنواع أخرى من المدخلات. مثال على ذلك هو الكاميرا الرقمية حيث تستخدم لإدخال معلومات مرئية.
من الممكن توصيل مجموعة ضخمة ومتنوعة من الأجهزة الإلكترونية إلى الحاسوب لتعمل كأجهزة إدخال وإخراج.بشرط توفر نظام لتعرفها على الحاسوب ويسمى المشغل (حاسوب) أو Driver
[عدل]البرامج
مقال تفصيلي :برمجيات
برنامج انسكيب يعمل على دبيان الذي هو أحد الامثلة على الانظمة المفتوحة المصدر
إن برامج الحاسوب ببساطة هي عبارة عن قائمة من الأوامر ينفذها الحاسوب، وتتراوح هذه الأوامر (التعليمات) بين بعض الأوامر القليلة التي تؤدي مهمة بسيطة إلى قائمة أوامر أكثر تعقيدًا والتي من الممكن أن تحتوي جداول من البيانات. العديد من برامج الحاسوب تحتوي الملايين من الأوامر والعديد من هذه الأوامر يتم تنفيذها بصورة متكررة. إن الحاسوب الشخصي الحديث النموذجي يمكنه تنفيذ حوالي 3 مليار أمر في الثانية. إن الحواسيب لم تكتسب قدراتها غير العادية من خلال قدرتها على تنفيذ الأوامر المعقدة. ولكن بالأحرى فإنها تقوم بالملايين من الأوامر المرتبة عن طريق أشخاص يعرفون بالمبرمجين.
عادة، فإن المبرمجين لا يكتبون الأوامر إلى الحاسوب مباشرة بلغة الآلة.إن البرمجة بهذه اللغة عملية مملة وصعبة جدًا وتميل للخطأ بصورة كبيرة مما يجعل المبرمجين غير قادرين على الإنتاج بصورة كبيرة. و عوضا عن ذلك، يقوم المبرمجون بوصف العملية المرادة في لغة برمجة "عالية المستوى" مثل لغة باسكال أو لغة سي أو لغات خاصة بتطبيقات الإنترنت مثل جافا والتي يتم ترجمتها أوتوماتيكيا بعد ذلك إلى لغة الآلة عن طريق برامج حاسوب مخصصة (مفسرات ومترجم) يدعى بالانجليزية كومبايلر compiler. بعض لغات البرمجة ترسم خريطة قريبة جدًا من لغة الآلة مثل لغة التجميع Assembly (لغات برمجة منخفضة المستوى) و على الجانب الآخر فإن لغات البرمجة مثل البرولوج Prolog مبنية على قواعد مجردة ومفصولة عن تفصيلات العملية الحقيقية للآلة (لغات برمجة عالية المستوى). إن اللغة المختارة لمهمة جزئية تعتمد على طبيعة هذه المهمة والمهارة التي يمتلكها المبرمجون وتوافر الأدوات وعادة احتياجات المستهلكين (على سبيل المثال، فإن المشاريع الخاصة بالاستخدامات الحربية الأمريكية في الغالب يجب أن تكون مبرمجة بلغة Ada).
إن الكيان المعنوي للحاسوب Computer software (الأجزاء غير الملموسة بالحاسوب) هو مصطلح بديل لبرامج الحاسوب (computer programs): وهي عبارة أكثر شمولية وتتكون من كل المواد الهامة المصاحبة للبرنامج والتي يحتاجها لأداء المهام المهمة على سبيل المثال فإن لعبة الفيديو لا تحتوي فقط على البرنامج نفسه ولكن تحتوي أيضا على بيانات تمثل الصور والاصوات والمواد الأخرى المطلوبة لعمل البيئة التخيلية للعبة. تطبيق الحاسوب هو قطعة من برامج الحاسوب التي تقدم للعديد من المستخدمين غالبا في سوق تجزئة. من الأمثلة الحديثة المطبقة تماما هي الأدوات المكتبية office suite وهي عبارة عن برامج ذات صفات مشتركة لأداء مهام المكتب الشائعة.
بالذهاب من القدرات شديدة البساطة الخاصة بأمر لغة آلة واحد إلى القدرات الضخمة للبرامج التطبيقية يعني أن الكثير من برامج الحاسوب تكون كبيرةً جدًا ومعقدةً للغاية. من الأمثلة على ذلك نظام التشغيل ويندوز إكس بي والذي يتكون من حوالي 40 مليون سطر من شفرة الحاسوب في لغة برمجة C++ يوجد العديد من المشاريع التي تكون أكبر هدفا، يقوم بإنشائه فرق كبيرة من المبرمجين. إن إدارة هذه المشاريع شديدة التعقيد هو مفتاح إمكانية تنفيذ هذه المشاريع: لغات البرمجة وتطبيقات البرمجة تسمح بتقسيم المهمة إلى مهام فرعية أصغر فأصغر حتى تصبح في قدرات مبرمج واحد وفي وقت مناسب.
كما أن هناك بعض النظم الأكثر تطوراً والتي تستخدم في الحواسيب الضخمة والحواسيب الحساسة كمخدمات الويب وغيرها، وهي الأنظمة المشتقة من نظام UNIX، مثل RedHat (ريد هات) وSun Solaris، وقد تطورت لتصلح للاستخدام المكتبي، وذلك بتوفير واجهات رسومية يمكن أن تتفوق أحياناً على أنظمة Microsoft Windows، حيث توفر تأثيرات تتفوق على تلك الموجودة في Windows 7 كما هو الحال في Ubuntu، كما تم استخدام أنظمة UNIX في بعض الأنظمة الخاصة بالموبايل، وتتميزهذه الأنظمة بالوثوقية، حيث يمكن أن تبقى قيد التشغيل حتى عشر سنوات متواصلة أو أكثر بدون أي توقف، كما أنها لا تأثر بما يسمى فيروسات[محل شك]،وتقدم أداء عالي حتى على الأجهزة الضعيفة إلى حد ما.
و هذه الأنظمة عير مستخدمة بشكل كبير في العالم العربي، وذلك لعدم توافق كل البرامج التي تعمل على أنظمة Microsoft Windows معها، لكن معظم البرامج المكتبية يوجد بديل عنها كبرامج عرض الصوت والفيديو والبرامج المكتبية وبرامج تصفح الإنترنت، وكلها برامج مجانية غالباً تكون متوفرة مع النظام.
إن عملية تطوير البرامج لا زالت بطيئة ولا يمكن التنبؤ بها وتميل للخطأ: إن نظم هندسة البرامج حاولت وقد نجحت جزئيا في جعل العملية أكثر سرعة وإنتاجية وتحسين جودة المنتج النهائي.