کامپیوتر ماشینی است که می تواند برنامه ریزی شود تا به طور خودکار دنباله هایی از عملیات حسابی یا منطقی ( محاسبات ) را انجام دهد . رایانههای الکترونیکی دیجیتال مدرن میتوانند مجموعهای از عملیاتهای عمومی به نام برنامهها را انجام دهند . این برنامه ها کامپیوترها را قادر می سازند تا طیف وسیعی از وظایف را انجام دهند. اصطلاح سیستم کامپیوتری ممکن است به یک کامپیوتر اسمی کامل اشاره کند که شامل سخت افزار ، سیستم عامل ، نرم افزار و تجهیزات جانبی مورد نیاز و مورد استفاده برای عملکرد کامل است. یا به گروهی از رایانههایی که به هم مرتبط هستند و با هم کار میکنند، مانند شبکه رایانهای یا خوشه رایانه .
طیف وسیعی از محصولات صنعتی و مصرفی از رایانهها به عنوان سیستمهای کنترلی استفاده میکنند ، از جمله دستگاههای ساده با کاربرد خاص مانند اجاقهای مایکروویو و کنترلهای از راه دور ، و دستگاههای کارخانهای مانند روباتهای صنعتی . رایانه ها هسته اصلی دستگاه های همه منظوره مانند رایانه های شخصی و دستگاه های تلفن همراه مانند تلفن های هوشمند هستند . رایانهها اینترنت را نیرو میدهند که میلیاردها رایانه و کاربر را به هم پیوند میدهد.
کامپیوترهای اولیه فقط برای محاسبات مورد استفاده قرار می گرفتند. ابزارهای دستی ساده مانند چرتکه از زمان های قدیم به مردم در انجام محاسبات کمک کرده اند. در اوایل انقلاب صنعتی ، برخی از دستگاههای مکانیکی برای خودکارسازی کارهای طولانی و طاقتفرسا، مانند هدایت الگوهای بافندگی ساخته شدند . ماشینهای الکتریکی پیچیدهتر محاسبات تخصصی آنالوگ را در اوایل قرن بیستم انجام دادند. اولین ماشین های محاسبه الکترونیکی دیجیتال در طول جنگ جهانی دوم ، هم به صورت الکترومکانیکی و هم با استفاده از دریچه های ترمیونیک ساخته شدند . اولین ترانزیستورهای نیمه هادی در اواخر دهه 1940 توسط MOSFET مبتنی بر سیلیکون (ترانزیستور MOS) و فناوری های تراشه مدار مجتمع یکپارچه در اواخر دهه 1950 دنبال شدند که منجر به ریزپردازنده و انقلاب میکرو کامپیوتر در دهه 1970 شد. سرعت، قدرت و تطبیق پذیری کامپیوترها از آن زمان به طور چشمگیری افزایش یافته است، با افزایش سرعت تعداد ترانزیستورها ( قانون مور اشاره می کند که تعداد هر دو سال دو برابر می شود)، که منجر به انقلاب دیجیتال در اواخر قرن 20 و اوایل قرن 21 شد. .
به طور معمول، یک کامپیوتر مدرن حداقل از یک عنصر پردازشی ، معمولاً یک واحد پردازش مرکزی (CPU) به شکل یک ریزپردازنده ، همراه با برخی از انواع حافظه کامپیوتر ، معمولاً تراشه های حافظه نیمه هادی ، تشکیل شده است . عنصر پردازش عملیات حسابی و منطقی را انجام می دهد و یک واحد توالی و کنترل می تواند ترتیب عملیات را در پاسخ به اطلاعات ذخیره شده تغییر دهد . دستگاههای جانبی شامل دستگاههای ورودی ( صفحهکلید ، موس ، جوی استیک ، و غیره)، دستگاههای خروجی ( مانیتور ، چاپگر ، و غیره) و دستگاههای ورودی/خروجی هستند که هر دو عملکرد را انجام میدهند (مانند صفحههای لمسی ). دستگاه های جانبی امکان بازیابی اطلاعات از یک منبع خارجی را فراهم می کنند و نتایج عملیات را ذخیره و بازیابی می کنند.
تا اواسط قرن بیستم بود که این کلمه تعریف مدرن خود را به دست آورد. با توجه به فرهنگ لغت انگلیسی آکسفورد ، اولین استفاده شناخته شده از کلمه کامپیوتر به معنایی متفاوت، در کتابی به نام The Yong Mans Gleanings در سال 1613 توسط نویسنده انگلیسی ریچارد براتویت بود : "من [ sic ] واقعی ترین کامپیوتر تایمز را خوانده ام. و بهترین حسابی که هر دم [ sic ] دمیده است، و روزهای تو را به تعداد کوتاه میکند.» این استفاده از این اصطلاح به رایانه انسانی اشاره دارد ، شخصی که محاسبات یا محاسبات را انجام می دهد . این کلمه تا اواسط قرن بیستم به همین معنی ادامه داد. در اواخر این دوره، زنان اغلب به عنوان رایانه استخدام می شدند، زیرا می توانستند حقوق کمتری نسبت به همتایان مرد خود دریافت کنند. [1] تا سال 1943، اکثر کامپیوترهای انسانی زن بودند. [2]
دیکشنری آنلاین ریشه شناسی اولین استفاده تایید شده از کامپیوتر را در دهه 1640 ارائه می دهد، به معنای "کسی که محاسبه می کند". این یک "اسم عامل از محاسبه (v.)" است. دیکشنری آنلاین ریشه شناسی بیان می کند که استفاده از این اصطلاح به معنای " ماشین محاسبه" (از هر نوع) مربوط به سال 1897 است." فرهنگ ریشهشناسی آنلاین نشان میدهد که «استفاده مدرن» از این اصطلاح به معنای «کامپیوتر الکترونیکی دیجیتال قابل برنامهریزی» از «1945 تحت این نام؛ [در یک] نظری [به معنای] از سال 1937، به عنوان ماشین تورینگ ». [3] این نام باقی مانده است، اگرچه رایانه های مدرن قادر به انجام بسیاری از عملکردهای سطح بالاتر هستند.
هزاران سال است که از دستگاهها برای کمک به محاسبات استفاده میشود و بیشتر از مکاتبات یک به یک با انگشتان دست استفاده میشود . اولین دستگاه شمارش به احتمال زیاد نوعی چوب شمارش بود . وسایل کمکی بعدی برای ثبت سوابق در سرتاسر هلال حاصلخیز شامل سنگهای سنگی (کرههای رسی، مخروطها و غیره) بود که نشاندهنده تعداد اقلام، احتمالاً دام یا غلات بود که در ظروف سفالی توخالی پخته نشده بودند. [a] [4] استفاده از میله های شمارش یک مثال است.
چرتکه در ابتدا برای کارهای حسابی استفاده می شد . چرتکه رومی از وسایل مورد استفاده در بابل در 2400 سال قبل از میلاد ساخته شد . از آن زمان، بسیاری از اشکال دیگر از تابلوها یا میزهای حساب ابداع شده است. در یک شمارش خانه قرون وسطایی اروپا ، پارچه شطرنجی را روی میز قرار می دادند و نشانگرها بر اساس قوانین خاصی روی آن حرکت می کردند تا کمکی برای محاسبه مبالغ پول باشد. [5]
به گفته درک جی. د سولا پرایس ، اعتقاد بر این است که مکانیسم Antikythera اولین کامپیوتر آنالوگ مکانیکی شناخته شده است. [6] برای محاسبه موقعیت های نجومی طراحی شده بود. در سال 1901 در ویرانه آنتیکیترا در جزیره یونانی آنتی کیترا ، بین کیترا و کرت کشف شد و قدمت آن به حدود 1000 می رسد. 100 ق.م. دستگاه هایی با پیچیدگی قابل مقایسه با مکانیسم Antikythera تا قرن چهاردهم دوباره ظاهر نشدند. [7]
بسیاری از وسایل کمک مکانیکی برای محاسبه و اندازهگیری برای استفاده در نجوم و ناوبری ساخته شدند. صفحه کره یک نمودار ستاره ای بود که توسط ابوریحان البیرونی در اوایل قرن یازدهم اختراع شد. [8] اسطرلاب در قرن 1 یا 2 قبل از میلاد در جهان هلنیستی اختراع شد و اغلب به هیپارخوس نسبت داده می شود . اسطرلاب ترکیبی از صفحه کره و دیوپترا ، به طور موثر یک کامپیوتر آنالوگ بود که قادر به حل چندین نوع مشکل در نجوم کروی بود . اسطرلاب شامل یک کامپیوتر تقویم مکانیکی [ 9 ] [ 10 ] و چرخدندهها توسط ابی بکر اصفهانی در ایران در سال 1235 اختراع شد . ماشین اولیه پردازش دانش سیمی ثابت [13] با قطار دنده و چرخ دنده، [14] ج. 1000 بعد از میلاد
بخش ، یک ابزار محاسبه برای حل مسائل به نسبت، مثلثات ، ضرب و تقسیم، و برای توابع مختلف، مانند مربع و ریشه مکعب، در اواخر قرن شانزدهم توسعه یافت و در توپخانه، نقشه برداری و ناوبری کاربرد پیدا کرد .
پلان متر یک ابزار دستی برای محاسبه مساحت یک شکل بسته با ردیابی روی آن با یک پیوند مکانیکی بود.
قانون اسلاید در حدود 1620-1630 توسط کشیش انگلیسی ویلیام اوترد ، اندکی پس از انتشار مفهوم لگاریتم ابداع شد . این یک کامپیوتر آنالوگ دستی برای انجام ضرب و تقسیم است. با پیشرفت قوانین اسلاید، مقیاس های اضافه شده، متقابل، مربع و ریشه مربع، مکعب و ریشه مکعب، و همچنین توابع ماورایی مانند لگاریتم و نمایی، مثلثات دایره ای و هذلولی و سایر توابع را ارائه می دهند . قوانین اسلاید با مقیاس های خاص هنوز برای اجرای سریع محاسبات معمول استفاده می شود، مانند قانون اسلاید دایره ای E6B که برای محاسبات زمان و مسافت در هواپیماهای سبک استفاده می شود.
در دهه 1770، پیر ژاکه دروز ، ساعتساز سوئیسی ، عروسکی مکانیکی ( اتوماتیک ) ساخت که میتوانست با در دست گرفتن خودکار بنویسد. با تغییر شماره و ترتیب چرخهای داخلی آن حروف مختلف و در نتیجه پیامهای متفاوتی تولید میشود. در واقع، می توان آن را به صورت مکانیکی برای خواندن دستورالعمل ها "برنامه ریزی" کرد. همراه با دو ماشین پیچیده دیگر، این عروسک در موزه هنر و تاریخ نوشاتل سوئیس است و هنوز هم کار می کند . [15]
در سالهای 1831-1835، ریاضیدان و مهندس جووانی پلانا یک ماشین تقویم دائمی ابداع کرد که از طریق سیستمی از قرقرهها و سیلندرها میتوانست تقویم همیشگی را برای هر سال از صفر تا 4000 میلادی پیشبینی کند. سال و طول روز متغیر ماشین پیش بینی جزر و مد که توسط دانشمند اسکاتلندی سر ویلیام تامسون در سال 1872 اختراع شد، برای ناوبری در آب های کم عمق بسیار مفید بود. از سیستمی از قرقره ها و سیم ها برای محاسبه خودکار سطوح جزر و مد پیش بینی شده برای یک دوره معین در یک مکان خاص استفاده کرد.
تحلیلگر دیفرانسیل ، یک کامپیوتر آنالوگ مکانیکی که برای حل معادلات دیفرانسیل با ادغام طراحی شده است ، از مکانیزم های چرخ و دیسک برای انجام ادغام استفاده می کند. در سال 1876، سر ویلیام تامسون قبلاً درباره ساخت احتمالی چنین ماشینحسابهایی صحبت کرده بود، اما گشتاور خروجی محدود انتگرالکنندههای گوی و دیسک با مشکل مواجه شده بود . [16] در یک تحلیلگر دیفرانسیل، خروجی یک انتگرالگر ورودی انتگرالگر بعدی یا خروجی نموداری را هدایت می کند. تقویت کننده گشتاور پیشرفتی بود که به این ماشین ها اجازه کار می داد. از دهه 1920، وانوار بوش و دیگران آنالایزرهای دیفرانسیل مکانیکی را توسعه دادند.
در دهه 1890، مهندس اسپانیایی لئوناردو تورس کوودو شروع به توسعه یک سری ماشین های آنالوگ پیشرفته کرد که می توانست ریشه های واقعی و پیچیده چندجمله ای ها را حل کند ، [17] [18] [19] [20] که در سال 1901 توسط آکادمی پاریس منتشر شد. علوم . [21]
چارلز بابیج ، مهندس مکانیک و دانشمند انگلیسی ، مفهوم کامپیوتر قابل برنامه ریزی را ابداع کرد. او که " پدر کامپیوتر " در نظر گرفته می شود، [22] اولین کامپیوتر مکانیکی را در اوایل قرن نوزدهم مفهوم سازی و اختراع کرد.
پس از کار بر روی موتور دیفرانسیل خود ، اختراع خود را در سال 1822، در مقاله ای به انجمن سلطنتی نجوم ، با عنوان "یادداشت در مورد کاربرد ماشین آلات برای محاسبه جداول نجومی و ریاضی" اعلام کرد. [23] او همچنین برای کمک به محاسبات ناوبری طراحی کرد، در سال 1833 متوجه شد که یک طراحی بسیار کلی تر، یک موتور تحلیلی ، امکان پذیر است. قرار بود ورودی برنامهها و دادهها از طریق کارتهای پانچ در اختیار دستگاه قرار گیرد ، روشی که در آن زمان برای هدایت ماشینهای بافندگی مکانیکی مانند ماشین بافندگی ژاکارد استفاده میشد . برای خروجی، دستگاه دارای یک چاپگر، یک پلاتر منحنی و یک زنگ خواهد بود. این دستگاه همچنین میتواند اعداد را روی کارتها پانچ کند تا بعداً خوانده شوند. این موتور دارای یک واحد منطقی محاسباتی ، کنترل جریان به شکل انشعابها و حلقههای شرطی و حافظه یکپارچه است، که آن را به اولین طراحی برای یک کامپیوتر همهمنظوره تبدیل میکند که میتوان آن را در اصطلاح مدرن تورینگ-کامل توصیف کرد . [24] [25]
این دستگاه حدود یک قرن جلوتر از زمان خود بود. تمام قطعات دستگاه او باید با دست ساخته می شد - این یک مشکل بزرگ برای دستگاهی با هزاران قطعه بود. در نهایت با تصمیم دولت بریتانیا مبنی بر توقف تامین مالی این پروژه منحل شد. شکست بابیج در تکمیل موتور تحلیلی را میتوان عمدتاً به مشکلات سیاسی و مالی و همچنین تمایل او به توسعه رایانهای پیچیدهتر و سریعتر از هر کس دیگری به پیش برد. با این وجود، پسرش، هنری بابیج ، یک نسخه ساده شده از واحد محاسباتی موتور تحلیلی ( آسیاب ) را در سال 1888 تکمیل کرد. او در سال 1906 کاربرد موفقیت آمیزی از استفاده از آن در جداول محاسباتی ارائه کرد.
لئوناردو تورس کوودو در اثرش «مقالاتی درباره خودکار» که در سال 1914 منتشر شد، تاریخچه مختصری از تلاشهای بابیج در ساخت موتور تفاضل مکانیکی و موتور تحلیلی نوشت. این مقاله حاوی طرحی از ماشینی است که قادر به محاسبه فرمول هایی مانند ، برای دنباله ای از مجموعه مقادیر است. قرار بود کل دستگاه توسط یک برنامه فقط خواندنی کنترل شود ، که با مقرراتی برای انشعاب شرطی کامل بود . او همچنین ایده محاسبات ممیز شناور را معرفی کرد . [26] [27] [28] در سال 1920، به مناسبت صدمین سالگرد اختراع حساب ، تورس در پاریس حساب سنج الکترومکانیکی را ارائه کرد که به کاربر اجازه می داد مسائل حسابی را از طریق صفحه کلید وارد کند و نتایج را محاسبه و چاپ کند. ، [29] [30] [31] [32] که امکان سنجی یک موتور تحلیلی الکترومکانیکی را نشان می دهد. [33]
در نیمه اول قرن بیستم، بسیاری از نیازهای محاسباتی علمی توسط رایانههای آنالوگ پیچیدهتر، که از یک مدل مکانیکی یا الکتریکی مستقیم مسئله به عنوان مبنایی برای محاسبه استفاده میکردند، برآورده شد . با این حال، اینها قابل برنامه ریزی نبودند و به طور کلی فاقد تطبیق پذیری و دقت کامپیوترهای دیجیتال مدرن بودند. [34] اولین کامپیوتر آنالوگ مدرن یک ماشین پیش بینی جزر و مد بود که توسط سر ویلیام تامسون (بعدها لرد کلوین) اختراع شد. تحلیلگر دیفرانسیل ، یک کامپیوتر آنالوگ مکانیکی که برای حل معادلات دیفرانسیل با ادغام با استفاده از چرخ و مکانیزم های دیسک، در سال 1876 توسط جیمز تامسون ، برادر بزرگتر سر ویلیام تامسون، مفهوم سازی شد. [16]
هنر محاسبات آنالوگ مکانیکی با تحلیلگر دیفرانسیل که توسط HL Hazen و Vannevar Bush در MIT در سال 1927 ساخته شد ، به اوج خود رسید . ده ها مورد از این دستگاه ها قبل از آشکار شدن کهنگی آنها ساخته شده اند. در دهه 1950، موفقیت رایانههای الکترونیکی دیجیتال پایانی برای اکثر ماشینهای محاسباتی آنالوگ بود، اما رایانههای آنالوگ در طول دهه 1950 در برخی کاربردهای تخصصی مانند آموزش ( قانون اسلاید ) و هواپیما ( سیستمهای کنترل ) مورد استفاده قرار گرفتند.
تا سال 1938، نیروی دریایی ایالات متحده یک کامپیوتر آنالوگ الکترومکانیکی به اندازه کافی کوچک برای استفاده در یک زیردریایی توسعه داد . این کامپیوتر داده اژدر بود که از مثلثات برای حل مشکل شلیک اژدر به سمت هدف متحرک استفاده می کرد. در طول جنگ جهانی دوم دستگاه های مشابهی در کشورهای دیگر نیز ساخته شد.
کامپیوترهای دیجیتال اولیه الکترومکانیکی بودند . سوئیچ های الکتریکی برای انجام محاسبات، رله های مکانیکی را به حرکت درآوردند. این دستگاهها سرعت عملکرد پایینی داشتند و در نهایت توسط رایانههای تمام الکتریکی بسیار سریعتر، که در ابتدا از لولههای خلاء استفاده میکردند، جایگزین شدند . Z2 که توسط مهندس آلمانی Konrad Zuse در سال 1939 در برلین ساخته شد ، یکی از اولین نمونه های کامپیوتر رله الکترومکانیکی بود. [35]
در سال 1941، Zuse دستگاه قبلی خود را با Z3 ، اولین کامپیوتر دیجیتالی قابل برنامه ریزی الکترومکانیکی کارآمد و کاملا اتوماتیک در جهان دنبال کرد. [38] [39] Z3 با 2000 رله ساخته شد که طول کلمه 22 بیتی را پیادهسازی میکرد که در فرکانس ساعت حدود 5 تا 10 هرتز کار میکرد . [40] کد برنامه بر روی فیلم پانچ شده ارائه می شد در حالی که داده ها را می توان در 64 کلمه حافظه ذخیره کرد یا از صفحه کلید تهیه کرد. این دستگاه از برخی جهات کاملاً شبیه ماشینهای مدرن بود و پیشرفتهای متعددی مانند اعداد ممیز شناور را پیشرو کرد . به جای سیستم اعشاری سختتر برای پیادهسازی (که در طراحی قبلی چارلز بابیج استفاده میشد)، استفاده از یک سیستم دودویی به این معنی بود که ماشینهای Zuse با توجه به فناوریهای موجود در آن زمان ساخت آسانتر و بالقوه قابل اعتمادتر بودند. [41] Z3 به خودی خود یک کامپیوتر جهانی نبود، اما میتوان آن را تا تکمیل تورینگ گسترش داد . [42] [43]
کامپیوتر بعدی Zuse، Z4 ، اولین کامپیوتر تجاری جهان شد. پس از تاخیر اولیه به دلیل جنگ جهانی دوم، در سال 1950 تکمیل و به ETH زوریخ تحویل داده شد . [44] کامپیوتر توسط شرکت خود Zuse، Zuse KG ، که در سال 1941 به عنوان اولین شرکت با هدف توسعه کامپیوترها در برلین تاسیس شد، ساخته شد. [44]
المان های مدار کاملاً الکترونیکی به زودی جایگزین معادل های مکانیکی و الکترومکانیکی خود شدند، در همان زمان که محاسبات دیجیتالی جایگزین آنالوگ شد. مهندس تامی فلاورز ، که در دهه 1930 در ایستگاه تحقیقاتی اداره پست لندن کار می کرد، شروع به کشف استفاده احتمالی از وسایل الکترونیکی برای مبادلات تلفنی کرد . تجهیزات آزمایشی که او در سال 1934 ساخت، پنج سال بعد به بهره برداری رسید و بخشی از شبکه مبادله تلفن را با استفاده از هزاران لوله خلاء به یک سیستم پردازش الکترونیکی داده تبدیل کرد . [34] در ایالات متحده، جان وینسنت آتاناسوف و کلیفورد ای. بری از دانشگاه ایالتی آیووا، کامپیوتر Atanasoff-Berry (ABC) را در سال 1942 توسعه و آزمایش کردند ، [45] اولین "کامپیوتر دیجیتال الکترونیکی خودکار". [46] این طرح همچنین تمام الکترونیکی بود و از حدود 300 لوله خلاء، با خازنهای ثابت در یک درام چرخان مکانیکی برای حافظه استفاده میکرد. [47]
در طول جنگ جهانی دوم، کدشکن های بریتانیایی در پارک بلچلی به تعدادی موفقیت در شکستن ارتباطات نظامی رمزگذاری شده آلمانی دست یافتند. دستگاه رمزگذاری آلمانی انیگما ابتدا با کمک بمب های الکترومکانیکی که اغلب توسط زنان اداره می شد مورد حمله قرار گرفت. [48] [49] برای شکستن ماشین پیچیدهتر آلمانی Lorenz SZ 40/42 که برای ارتباطات ارتش در سطح بالا استفاده میشد، مکس نیومن و همکارانش فلاورز را مأمور ساختن کلوسوس کردند . [47] او یازده ماه از اوایل فوریه 1943 را صرف طراحی و ساخت اولین کلوسوس کرد. [50] پس از یک آزمایش عملکردی در دسامبر 1943، Colossus به بلچلی پارک فرستاده شد، جایی که در 18 ژانویه 1944 تحویل داده شد [51] و اولین پیام خود را در 5 فوریه مورد حمله قرار داد. [47]
Colossus اولین کامپیوتر دیجیتال الکترونیکی قابل برنامه ریزی در جهان بود . [34] از تعداد زیادی شیر (لوله های خلاء) استفاده می کرد. این ورودی نوار کاغذی داشت و میتوانست برای انجام انواع عملیات منطقی بولی روی دادههایش پیکربندی شود، اما تورینگ کامل نبود. نه Mk II Colossi ساخته شد (Mk I به Mk II تبدیل شد و در مجموع ده ماشین ساخت). Colossus Mark I حاوی 1500 دریچه ترمیونیک (لوله) بود، اما Mark II با 2400 سوپاپ، پنج برابر سریعتر و ساده تر از Mark I کار می کرد و روند رمزگشایی را تا حد زیادی سرعت می بخشید. [52] [53]
ENIAC [54] (Electronic Numerical Integrator and Computer) اولین کامپیوتر قابل برنامه ریزی الکترونیکی بود که در ایالات متحده ساخته شد اگرچه انیاک شبیه به Colossus بود، اما بسیار سریعتر ، انعطاف پذیرتر و کاملتر تورینگ بود. مانند Colossus، یک «برنامه» در ENIAC با وضعیت کابلها و سوئیچهای وصله آن تعریف شد، که فاصله زیادی با برنامههای ذخیرهشده ماشینهای الکترونیکی که بعداً ارائه شد، بود. هنگامی که یک برنامه نوشته شد، باید به صورت مکانیکی با تنظیم مجدد دوشاخه ها و سوئیچ ها در دستگاه تنظیم می شد. برنامه نویسان انیاک شش زن بودند که اغلب در مجموع به عنوان "دختران انیاک" شناخته می شدند. [55] [56]
سرعت بالای الکترونیک را با قابلیت برنامه ریزی برای بسیاری از مشکلات پیچیده ترکیب کرد. این می تواند 5000 بار در ثانیه اضافه یا کم کند، هزار بار سریعتر از هر ماشین دیگری. همچنین ماژول هایی برای ضرب، تقسیم و جذر داشت. حافظه با سرعت بالا به 20 کلمه (حدود 80 بایت) محدود شد. توسعه و ساخت انیاک که تحت هدایت جان ماچلی و جی. شامل بیش از 18000 لوله خلاء، 1500 رله و صدها هزار مقاومت، خازن و سلف بود. [57]
اصل کامپیوتر مدرن توسط آلن تورینگ در مقاله مهم خود در سال 1936، [58] در مورد اعداد قابل محاسبه پیشنهاد شد . تورینگ دستگاه ساده ای را پیشنهاد کرد که آن را «ماشین محاسبات جهانی» نامید و اکنون به عنوان ماشین تورینگ جهانی شناخته می شود . او ثابت کرد که چنین ماشینی قادر به محاسبه هر چیزی است که قابل محاسبه است با اجرای دستورالعمل ها (برنامه) ذخیره شده روی نوار، به ماشین امکان برنامه ریزی را می دهد. مفهوم اساسی طراحی تورینگ برنامه ذخیره شده است که در آن تمام دستورالعمل های محاسبه در حافظه ذخیره می شود. فون نویمان تصدیق کرد که مفهوم اصلی کامپیوتر مدرن به دلیل این مقاله است. [59] ماشینهای تورینگ تا به امروز موضوع اصلی مطالعه در نظریه محاسبات هستند . به جز محدودیتهای تحمیلشده توسط حافظههای محدود آنها، رایانههای مدرن تورینگ کامل هستند ، که میگویند، آنها دارای قابلیت اجرای الگوریتمی معادل یک ماشین تورینگ جهانی هستند.
ماشین های محاسباتی اولیه برنامه های ثابتی داشتند. تغییر عملکرد آن نیازمند سیم کشی مجدد و ساختار مجدد دستگاه است. [47] با پیشنهاد کامپیوتر برنامه ذخیره شده، این تغییر کرد. یک کامپیوتر برنامه ذخیره شده با طراحی شامل یک مجموعه دستورالعمل است و می تواند مجموعه ای از دستورالعمل ها (یک برنامه ) را در حافظه ذخیره کند که جزئیات محاسبات را انجام می دهد . اساس نظری کامپیوتر برنامه ذخیره شده توسط آلن تورینگ در مقاله خود در سال 1936 ارائه شد. در سال 1945، تورینگ به آزمایشگاه ملی فیزیک ملحق شد و کار بر روی توسعه یک کامپیوتر دیجیتالی با برنامه ذخیره شده الکترونیکی را آغاز کرد. گزارش او در سال 1945 "ماشین حساب الکترونیکی پیشنهادی" اولین مشخصات برای چنین دستگاهی بود. جان فون نویمان در دانشگاه پنسیلوانیا نیز اولین پیش نویس گزارش خود در مورد EDVAC را در سال 1945 منتشر کرد. [34]
منچستر بیبی اولین کامپیوتر با برنامه ذخیره شده در جهان بود . این در دانشگاه منچستر در انگلستان توسط فردریک سی ویلیامز ، تام کیلبرن و جف توتیل ساخته شد و اولین برنامه خود را در 21 ژوئن 1948 اجرا کرد . دسترسی به دستگاه ذخیره سازی دیجیتال [61] اگرچه کامپیوتر در سال 1998 به عنوان "کوچک و بدوی" توصیف شد، اما اولین ماشین کاری بود که حاوی تمام عناصر ضروری برای یک کامپیوتر الکترونیکی مدرن بود. [62] به محض اینکه Baby امکانسنجی طراحی خود را نشان داد، پروژهای در دانشگاه آغاز شد تا آن را به یک کامپیوتر عملا مفید تبدیل کند، منچستر مارک 1 .
Mark 1 به نوبه خود به سرعت به نمونه اولیه Ferranti Mark 1 تبدیل شد ، اولین کامپیوتر همه منظوره تجاری موجود در جهان. [63] ساخته شده توسط Ferranti ، در فوریه 1951 به دانشگاه منچستر تحویل داده شد. حداقل هفت دستگاه از این ماشین های بعدی بین سال های 1953 و 1957 تحویل داده شد، یکی از آنها به آزمایشگاه های شل در آمستردام . [64] در اکتبر 1947، مدیران شرکت پذیرایی بریتانیا J. Lyons & Company تصمیم گرفتند که نقش فعالی در ترویج توسعه تجاری کامپیوترها داشته باشند. کامپیوتر LEO I لیون ، که از نزدیک از کمبریج EDSAC در سال 1949 الگوبرداری شده بود، در آوریل 1951 عملیاتی شد [65] و اولین کار معمول کامپیوتر اداری در جهان را اجرا کرد .
مفهوم ترانزیستور اثر میدانی توسط جولیوس ادگار لیلینفلد در سال 1925 ارائه شد. جان باردین و والتر براتین ، در حالی که زیر نظر ویلیام شاکلی در آزمایشگاه بل کار می کردند ، اولین ترانزیستور کار ، ترانزیستور تماس نقطه ای را در سال 1947 ساختند که به دنبال آن انجام شد. توسط ترانزیستور اتصال دوقطبی شاکلی در سال 1948. [66] [67] از سال 1955 به بعد، ترانزیستورها جایگزین لوله های خلاء در طراحی های کامپیوتری شدند که باعث ایجاد "نسل دوم" کامپیوترها شد. در مقایسه با لولههای خلاء، ترانزیستورها مزایای زیادی دارند: کوچکتر هستند و به انرژی کمتری نسبت به لولههای خلاء نیاز دارند، بنابراین گرمای کمتری از خود ساطع میکنند. ترانزیستورهای اتصالی بسیار قابل اعتمادتر از لوله های خلاء بودند و عمر طولانی تر و نامحدود داشتند. کامپیوترهای ترانزیستوری می توانند شامل ده ها هزار مدار منطقی باینری در یک فضای نسبتا فشرده باشند. با این حال، ترانزیستورهای اتصال اولیه دستگاه های نسبتاً حجیمی بودند که ساخت آنها به صورت تولید انبوه دشوار بود ، که آنها را به تعدادی از کاربردهای تخصصی محدود می کرد. [68]
در دانشگاه منچستر ، تیمی به رهبری تام کیلبرن، ماشینی را با استفاده از ترانزیستورهای جدید توسعه یافته به جای سوپاپ طراحی و ساختند. [69] اولین کامپیوتر ترانزیستوری شده آنها و اولین کامپیوتر در جهان، تا سال 1953 عملیاتی شد و نسخه دوم در آوریل 1955 در آنجا تکمیل شد. خواندن و نوشتن بر روی حافظه درام مغناطیسی خود ، بنابراین اولین کامپیوتر کاملاً ترانزیستوری نبود. این تمایز به هارول CADET در سال 1955، [70] توسط بخش الکترونیک مرکز تحقیقات انرژی اتمی در هارول ساخته شد . [70] [71]
ترانزیستور اثر میدانی فلز-اکسید-سیلیکون (MOSFET) که با نام ترانزیستور MOS نیز شناخته میشود، بین سالهای 1955 و 1960 در آزمایشگاههای بل اختراع شد [72] [73] [74] [75] [76] [77] و اولین ترانزیستور واقعا فشرده که می تواند کوچک شده و برای طیف وسیعی از کاربردها تولید انبوه شود. [68] با مقیاس پذیری بالا ، [78] و مصرف انرژی بسیار کمتر و چگالی بیشتر نسبت به ترانزیستورهای پیوند دوقطبی، [79] ماسفت ساخت مدارهای مجتمع با چگالی بالا را ممکن کرد . [80] [81] علاوه بر پردازش داده ها، استفاده عملی از ترانزیستورهای MOS را به عنوان عناصر ذخیره سلول حافظه نیز ممکن کرد ، که منجر به توسعه حافظه نیمه هادی MOS شد که جایگزین حافظه هسته مغناطیسی قبلی در رایانه ها شد. ماسفت به انقلاب میکروکامپیوتر منجر شد ، [82] و به نیروی محرکه انقلاب رایانه تبدیل شد . [83] [84] ماسفت پرکاربردترین ترانزیستور در کامپیوترها است، [85] [86] و بلوک اصلی ساختمان الکترونیک دیجیتال است . [87]
پیشرفت بزرگ بعدی در قدرت محاسباتی با ظهور مدار مجتمع (IC) بود. ایده مدار مجتمع برای اولین بار توسط یک دانشمند رادار که برای تأسیسات سلطنتی رادار وزارت دفاع کار می کرد ، جفری وا . دامر اولین توصیف عمومی یک مدار مجتمع را در سمپوزیوم پیشرفت در قطعات الکترونیکی با کیفیت در واشنگتن دی سی در 7 می 1952 ارائه کرد. [88]
اولین آی سی های فعال توسط جک کیلبی در Texas Instruments و رابرت نویس در Fairchild Semiconductor اختراع شدند . [ 89] کیلبی ایده های اولیه خود را در مورد مدار مجتمع در ژوئیه 1958 ثبت کرد و اولین نمونه کار یکپارچه را در 12 سپتامبر 1958 با موفقیت نشان داد . مواد نیمه هادی ... که در آن تمام اجزای مدار الکترونیکی کاملاً یکپارچه شده اند. [91] [92] با این حال، اختراع کیلبی به جای یک تراشه مدار مجتمع یکپارچه (IC) یک مدار مجتمع ترکیبی (IC هیبریدی) بود. [93] آی سی کیلبی دارای اتصالات سیم خارجی بود که تولید انبوه را دشوار می کرد. [94]
نویس نیز نیم سال دیرتر از کیلبی ایده خود را در مورد یک مدار مجتمع مطرح کرد. [95] اختراع Noyce اولین تراشه IC یکپارچه واقعی بود. [96] [94] تراشه او بسیاری از مشکلات عملی را حل کرد که کیلبی نتوانسته بود. تولید شده در Fairchild Semiconductor، از سیلیکون ساخته شده بود ، در حالی که تراشه Kilby از ژرمانیوم ساخته شده بود . IC یکپارچه Noyce با استفاده از فرآیند مسطح ساخته شد که توسط همکارش Jean Hoerni در اوایل سال 1959 توسعه یافت. به نوبه خود، فرآیند مسطح بر اساس کار Carl Frosch و Lincoln Derick بر روی غیرفعال کردن سطح نیمه هادی توسط دی اکسید سیلیکون بود. [97] [98] [99] [100] [101] [102]
آی سی های یکپارچه مدرن عمدتاً مدارهای مجتمع MOS ( فلز-اکسید-نیمه هادی ) هستند که از ماسفت ها (ترانزیستورهای MOS) ساخته شده اند. [ 103] اولین IC آزمایشی MOS ساخته شده یک تراشه 16 ترانزیستوری بود که توسط فرد هیمن و استیون هافستاین در RCA در سال 1962 ساخته شد . نورمن. [104] پس از توسعه ترانزیستور MOS گیت خود تراز (دروازه سیلیکونی) توسط رابرت کروین، دونالد کلاین و جان ساراس در آزمایشگاه بل در سال 1967، اولین IC MOS گیت سیلیکونی با گیت های خود تراز توسط فدریکو توسعه یافت . Faggin در Fairchild Semiconductor در سال 1968. [106] MOSFET از آن زمان به مهم ترین جزء دستگاه در آی سی های مدرن تبدیل شده است. [103]
توسعه مدار مجتمع MOS منجر به اختراع ریزپردازنده ، [ 107] [108] شد و انفجاری را در استفاده تجاری و شخصی از رایانهها نوید داد. در حالی که موضوع دقیقاً اینکه کدام دستگاه اولین ریزپردازنده بوده است بحث برانگیز است، تا حدی به دلیل عدم توافق در مورد تعریف دقیق اصطلاح "ریزپردازنده"، تا حد زیادی قابل بحث نیست که اولین ریزپردازنده تک تراشه اینتل 4004 بود ، [109] طراحی و اجرا توسط فدریکو فاگین با فناوری MOS IC سیلیکونی گیت، [107] همراه با تد هاف ، ماساتوشی شیما و استنلی مازور در اینتل . [b] [111] در اوایل دهه 1970، فناوری MOS IC امکان ادغام بیش از 10000 ترانزیستور را روی یک تراشه واحد فراهم کرد. [81]
سیستم روی تراشه (SoCs) کامپیوترهای کاملی هستند که روی یک ریزتراشه (یا تراشه) به اندازه یک سکه هستند. [112] آنها ممکن است RAM و حافظه فلش یکپارچه داشته باشند یا نداشته باشند . اگر یکپارچه نباشد، رم معمولاً مستقیماً در بالای SoC (معروف به Package on Package ) یا زیر (در طرف مقابل برد مدار ) SoC قرار می گیرد و فلش مموری معمولاً دقیقاً در کنار SoC قرار می گیرد. این کار برای بهبود سرعت انتقال داده انجام می شود، زیرا سیگنال های داده نیازی به طی مسافت های طولانی ندارند. از زمان انیاک در سال 1945، کامپیوترها بسیار پیشرفت کرده اند، به طوری که SoC های مدرن (مانند اسنپدراگون 865) به اندازه یک سکه بوده و همچنین صدها هزار بار قدرتمندتر از انیاک هستند، میلیاردها ترانزیستور را ادغام می کنند و تنها چند وات مصرف می کنند. از قدرت
اولین کامپیوترهای همراه سنگین بودند و از برق اصلی کار می کردند. IBM 5100 50 پوند (23 کیلوگرم) نمونه اولیه بود. لپتاپهای قابل حمل بعدی مانند Osborne 1 و Compaq Portable بهطور قابلتوجهی سبکتر بودند، اما هنوز باید به برق متصل شوند. اولین لپتاپها، مانند Grid Compass ، این نیاز را با استفاده از باتریها حذف کردند - و با کوچکسازی مداوم منابع محاسباتی و پیشرفتهای قابل حمل. عمر باتری، کامپیوترهای قابل حمل در دهه 2000 محبوبیت یافتند. [113] همان پیشرفتها به تولیدکنندگان اجازه داد تا منابع محاسباتی را در تلفنهای همراه تلفن همراه تا اوایل دهه 2000 ادغام کنند.
این گوشی های هوشمند و تبلت ها بر روی انواع سیستم عامل ها اجرا می شوند و اخیراً به دستگاه محاسباتی غالب در بازار تبدیل شده اند. [114] اینها توسط سیستم روی یک تراشه (SoCs)، که کامپیوترهای کاملی روی یک ریزتراشه به اندازه یک سکه هستند، تغذیه میشوند . [112]
رایانه ها را می توان به روش های مختلفی طبقه بندی کرد، از جمله:
اصطلاح سختافزار تمام آن بخشهایی از رایانه را که اشیای فیزیکی محسوس هستند، در بر میگیرد. مدارها ، تراشههای کامپیوتر، کارتهای گرافیک، کارتهای صدا، حافظه (RAM)، مادربرد، نمایشگرها، منابع تغذیه، کابلها، کیبوردها، چاپگرها و دستگاههای ورودی "موش" همگی سختافزار هستند.
یک کامپیوتر همه منظوره دارای چهار جزء اصلی است: واحد منطق حسابی (ALU)، واحد کنترل ، حافظه ، و دستگاه های ورودی و خروجی (که در مجموع I/O نامیده می شوند). این قسمت ها توسط اتوبوس هایی که اغلب از گروه های سیم ساخته شده اند به هم متصل می شوند . در داخل هر یک از این قسمت ها هزاران تا تریلیون مدار الکتریکی کوچک وجود دارد که می توان آنها را با استفاده از یک کلید الکترونیکی خاموش یا روشن کرد . هر مدار یک بیت (رقم دودویی) از اطلاعات را نشان می دهد به طوری که وقتی مدار روشن است نشان دهنده یک "1" و زمانی که خاموش است نشان دهنده "0" (در نمایش منطق مثبت) است. مدارها در گیت های منطقی مرتب شده اند به طوری که یک یا چند مدار می توانند وضعیت یک یا چند مدار دیگر را کنترل کنند.
هنگامی که داده های پردازش نشده با کمک دستگاه های ورودی به رایانه ارسال می شوند، داده ها پردازش شده و به دستگاه های خروجی ارسال می شوند. دستگاه های ورودی ممکن است دستی یا خودکار باشند. عمل پردازش عمدتاً توسط CPU تنظیم می شود. چند نمونه از دستگاه های ورودی عبارتند از:
ابزارهایی که کامپیوتر از طریق آنها خروجی می دهد به عنوان دستگاه های خروجی شناخته می شوند. چند نمونه از دستگاه های خروجی عبارتند از:
واحد کنترل (که اغلب سیستم کنترل یا کنترل کننده مرکزی نامیده می شود) اجزای مختلف کامپیوتر را مدیریت می کند. دستورالعمل های برنامه را می خواند و تفسیر (رمزگشایی) می کند و آنها را به سیگنال های کنترلی تبدیل می کند که سایر قسمت های رایانه را فعال می کند. [d] سیستمهای کنترل در رایانههای پیشرفته ممکن است ترتیب اجرای برخی دستورالعملها را برای بهبود عملکرد تغییر دهند.
یکی از اجزای کلیدی مشترک برای همه CPU ها شمارنده برنامه است ، یک سلول حافظه ویژه (یک ثبات ) که دستورات بعدی را از کدام مکان در حافظه باید خواند. [e]
عملکرد سیستم کنترل به شرح زیر است - این یک توضیح ساده است و برخی از این مراحل بسته به نوع CPU ممکن است همزمان یا به ترتیب متفاوتی انجام شوند:
از آنجایی که شمارنده برنامه (از لحاظ مفهومی) فقط مجموعه دیگری از سلول های حافظه است، می توان آن را با محاسبات انجام شده در ALU تغییر داد. افزودن عدد 100 به شمارنده برنامه باعث می شود دستور بعدی از 100 نقطه پایین تر از برنامه خوانده شود. دستورالعمل هایی که شمارنده برنامه را تغییر می دهند اغلب به عنوان "پرش" شناخته می شوند و برای حلقه ها (دستورالعمل هایی که توسط کامپیوتر تکرار می شوند) و اغلب اجرای دستورالعمل های مشروط (هر دو نمونه از جریان کنترل ) اجازه می دهند.
توالی عملیاتی که واحد کنترل برای پردازش یک دستورالعمل انجام می دهد، به خودی خود مانند یک برنامه کامپیوتری کوتاه است، و در واقع، در برخی از طراحی های پیچیده تر CPU، کامپیوتر کوچکتر دیگری به نام microsequencer وجود دارد که یک برنامه میکروکد را اجرا می کند که باعث می شود همه این اتفاقات رخ دهد
واحد کنترل، ALU و رجیسترها در مجموع به عنوان واحد پردازش مرکزی (CPU) شناخته می شوند. CPUهای اولیه از بسیاری از اجزای مجزا تشکیل شده بودند. از دهه 1970، CPUها معمولاً بر روی یک تراشه مدار مجتمع MOS به نام ریزپردازنده ساخته میشوند .
ALU قادر به انجام دو دسته عملیات است: حسابی و منطقی. [119] مجموعه ای از عملیات حسابی که یک ALU خاص پشتیبانی می کند ممکن است به جمع و تفریق محدود شود یا ممکن است شامل ضرب، تقسیم، توابع مثلثاتی مانند سینوس، کسینوس و غیره و ریشه های مربع باشد . برخی می توانند فقط بر روی اعداد کامل ( اعداد صحیح ) عمل کنند در حالی که برخی دیگر از ممیز شناور برای نمایش اعداد واقعی استفاده می کنند ، البته با دقت محدود. با این حال، هر رایانه ای که قادر به انجام ساده ترین عملیات باشد، می تواند برنامه ریزی شود تا عملیات پیچیده تر را به مراحل ساده ای که می تواند انجام دهد تقسیم کند. بنابراین، هر کامپیوتری را میتوان برای انجام هر عملیات حسابی برنامهریزی کرد، اگرچه اگر ALU آن مستقیماً از این عملیات پشتیبانی نکند، انجام آن زمان بیشتری میبرد. یک ALU همچنین ممکن است اعداد را با هم مقایسه کند و مقادیر صدق بولی (درست یا نادرست) را بسته به اینکه یکی برابر، بزرگتر یا کوچکتر از دیگری باشد ("64 بزرگتر از 65 است؟") برگرداند . عملیات منطقی شامل منطق بولی است : AND ، OR ، XOR ، و NOT . اینها می توانند برای ایجاد عبارات شرطی پیچیده و پردازش منطق بولی مفید باشند .
کامپیوترهای Superscalar ممکن است حاوی چندین ALU باشند که به آنها امکان می دهد چندین دستورالعمل را به طور همزمان پردازش کنند. [120] پردازندههای گرافیکی و رایانههای دارای ویژگیهای SIMD و MIMD اغلب حاوی ALU هستند که میتوانند محاسبات را روی بردارها و ماتریسها انجام دهند .
حافظه رایانه را می توان به عنوان لیستی از سلول ها مشاهده کرد که اعداد را می توان در آنها قرار داد یا خواند. هر سلول دارای یک "آدرس" شماره گذاری شده است و می تواند یک عدد واحد را ذخیره کند. می توان به رایانه دستور داد که "عدد 123 را در سلول شماره 1357 قرار دهد" یا "عددی را که در سلول 1357 است به عددی که در سلول 2468 است اضافه کند و پاسخ را در سلول 1595 قرار دهد." اطلاعات ذخیره شده در حافظه ممکن است عملاً هر چیزی را نشان دهد. حروف، اعداد، حتی دستورالعمل های کامپیوتری را می توان به راحتی در حافظه قرار داد. از آنجایی که CPU بین انواع مختلف اطلاعات تفاوتی قائل نمی شود، این وظیفه نرم افزار است که به آنچه که حافظه چیزی جز یک سری اعداد نمی بیند اهمیت دهد.
تقریباً در تمام رایانه های مدرن، هر سلول حافظه برای ذخیره اعداد باینری در گروه های هشت بیتی (بایت ) تنظیم شده است . هر بایت می تواند 256 عدد مختلف را نشان دهد (2 8 = 256). یا از 0 تا 255 یا -128 تا +127. برای ذخیره اعداد بزرگتر، ممکن است از چندین بایت متوالی (معمولاً دو، چهار یا هشت) استفاده شود. هنگامی که اعداد منفی مورد نیاز است، معمولاً در نمادهای مکمل دو ذخیره می شوند . ترتیبات دیگری ممکن است، اما معمولاً خارج از برنامه های تخصصی یا زمینه های تاریخی دیده نمی شوند. یک کامپیوتر می تواند هر نوع اطلاعاتی را در حافظه ذخیره کند اگر بتوان آن را به صورت عددی نمایش داد. کامپیوترهای مدرن میلیاردها یا حتی تریلیون ها بایت حافظه دارند.
CPU شامل مجموعه خاصی از سلول های حافظه به نام ثبات است که می توان آنها را بسیار سریعتر از ناحیه اصلی حافظه خواند و نوشت. بسته به نوع CPU معمولا بین دو تا صد رجیستر وجود دارد. رجیسترها برای اقلام داده ای که اغلب مورد نیاز هستند استفاده می شود تا از دسترسی به حافظه اصلی در هر زمانی که به داده نیاز است اجتناب شود. از آنجایی که به طور مداوم روی داده ها کار می شود، کاهش نیاز به دسترسی به حافظه اصلی (که اغلب در مقایسه با واحدهای ALU و کنترل کند است) سرعت کامپیوتر را تا حد زیادی افزایش می دهد.
حافظه اصلی کامپیوتر در دو نوع اصلی وجود دارد:
RAM را می توان هر زمان که CPU دستور داد خوانده و روی آن نوشته شود، اما ROM با داده ها و نرم افزارهایی از قبل بارگذاری شده است که هرگز تغییر نمی کنند، بنابراین CPU فقط می تواند از روی آن بخواند. ROM معمولاً برای ذخیره دستورالعمل های راه اندازی اولیه رایانه استفاده می شود. به طور کلی، محتویات RAM زمانی که برق کامپیوتر قطع می شود پاک می شود، اما رام اطلاعات خود را به طور نامحدود حفظ می کند. در رایانه شخصی، رام حاوی یک برنامه تخصصی به نام BIOS است که بارگذاری سیستم عامل رایانه را از درایو دیسک سخت در حافظه رم هر زمان که رایانه روشن یا تنظیم مجدد می شود، هماهنگ می کند. در رایانه های جاسازی شده ، که اغلب درایوهای دیسک ندارند، ممکن است همه نرم افزارهای مورد نیاز در رام ذخیره شوند. نرم افزارهای ذخیره شده در رام اغلب سفت افزار نامیده می شوند ، زیرا از نظر تصوری بیشتر شبیه سخت افزار هستند تا نرم افزار. فلش مموری تمایز بین رام و رم را محو می کند، زیرا در صورت خاموش شدن اطلاعات خود را حفظ می کند اما قابل بازنویسی نیز می باشد. با این حال، معمولاً بسیار کندتر از رام و رم معمولی است، بنابراین استفاده از آن به برنامه هایی محدود می شود که سرعت بالا غیر ضروری است. [f]
در رایانه های پیچیده تر ممکن است یک یا چند حافظه کش RAM وجود داشته باشد که از رجیسترها کندتر اما سریعتر از حافظه اصلی هستند. معمولاً رایانههایی با این نوع حافظه نهان به گونهای طراحی شدهاند که اغلب بدون نیاز به دخالت برنامهنویس، دادههای اغلب مورد نیاز را به صورت خودکار به کش منتقل میکنند.
ورودی/خروجی وسیله ای است که کامپیوتر به وسیله آن اطلاعات را با دنیای خارج مبادله می کند. [122] دستگاه هایی که ورودی یا خروجی را برای کامپیوتر فراهم می کنند، لوازم جانبی نامیده می شوند . [123] در یک رایانه شخصی معمولی، تجهیزات جانبی شامل دستگاههای ورودی مانند صفحهکلید و ماوس ، و دستگاههای خروجی مانند نمایشگر و چاپگر است . درایوهای دیسک سخت ، درایوهای فلاپی دیسک و درایوهای دیسک نوری هم به عنوان دستگاه های ورودی و هم خروجی عمل می کنند. شبکه های کامپیوتری شکل دیگری از I/O است. دستگاه های ورودی/خروجی اغلب به تنهایی کامپیوترهای پیچیده ای هستند که CPU و حافظه مخصوص به خود را دارند. یک واحد پردازش گرافیکی ممکن است شامل پنجاه یا بیشتر کامپیوتر کوچک باشد که محاسبات لازم برای نمایش گرافیک سه بعدی را انجام می دهند . [ نیازمند منبع ] کامپیوترهای رومیزی مدرن شامل بسیاری از کامپیوترهای کوچکتر هستند که به CPU اصلی در انجام I/O کمک می کنند. یک نمایشگر صفحه تخت متعلق به سال 2016 حاوی مدارهای کامپیوتری خاص خود است.
در حالی که یک کامپیوتر ممکن است به عنوان اجرای یک برنامه غول پیکر ذخیره شده در حافظه اصلی آن در نظر گرفته شود، در برخی از سیستم ها لازم است ظاهری شبیه اجرای چندین برنامه به طور همزمان داده شود. این امر با چندوظیفگی به دست میآید، یعنی داشتن رایانه به سرعت بین اجرای هر برنامه به نوبه خود. [124] یکی از ابزارهایی که به وسیله آن این کار انجام می شود سیگنال خاصی به نام وقفه است که می تواند به طور دوره ای باعث شود که کامپیوتر اجرای دستورالعمل ها را در جایی که بود متوقف کند و به جای آن کار دیگری انجام دهد. با یادآوری محل اجرای آن قبل از وقفه، رایانه میتواند بعداً به آن کار بازگردد. اگر چندین برنامه "همزمان" در حال اجرا هستند. در این صورت ممکن است مولد وقفه در هر ثانیه صدها وقفه ایجاد کند که هر بار باعث تغییر برنامه می شود. از آنجایی که رایانههای مدرن معمولاً دستورات را چندین مرتبه سریعتر از تصور انسان اجرا میکنند، ممکن است به نظر برسد که بسیاری از برنامهها همزمان اجرا میشوند، حتی اگر تنها یکی از آنها در هر لحظه اجرا شود. این روش چندوظیفه ای را گاهی اوقات «اشتراک گذاری زمان» می نامند زیرا هر برنامه به نوبه خود یک «برش» از زمان را اختصاص می دهد. [125]
قبل از عصر کامپیوترهای ارزان قیمت، استفاده اصلی برای چندوظیفه ای این بود که به افراد زیادی اجازه می داد تا یک کامپیوتر را به اشتراک بگذارند. به نظر میرسد که انجام چند وظیفهای باعث میشود رایانهای که بین چند برنامه جابجا میشود، کندتر اجرا شود، به نسبت مستقیم با تعداد برنامههایی که در حال اجرا است، اما بیشتر برنامهها بیشتر وقت خود را صرف انتظار دستگاههای ورودی/خروجی کند میکنند تا وظایف خود را انجام دهند. اگر برنامه ای منتظر باشد تا کاربر روی ماوس کلیک کند یا کلیدی را روی صفحه کلید فشار دهد، تا زمانی که رویدادی که در انتظارش است رخ ندهد، «برش زمانی» نمی گیرد . این امر زمان اجرای برنامه های دیگر را آزاد می کند تا بسیاری از برنامه ها به طور همزمان بدون کاهش سرعت غیرقابل قبول اجرا شوند.
برخی از رایانهها برای توزیع کار خود در چندین CPU در یک پیکربندی چند پردازشی طراحی شدهاند، تکنیکی که زمانی فقط در ماشینهای بزرگ و قدرتمند مانند ابر رایانهها ، رایانههای اصلی و سرورها استفاده میشد . رایانههای شخصی و لپتاپهای چند پردازندهای و چند هستهای (چند CPU در یک مدار مجتمع) اکنون به طور گسترده در دسترس هستند و در نتیجه به طور فزایندهای در بازارهای پایینرده استفاده میشوند.
به طور خاص، ابررایانهها معمولاً معماریهای بسیار منحصربهفردی دارند که بهطور قابلتوجهی با معماری اولیه برنامههای ذخیرهشده و با رایانههای همه منظوره متفاوت است. [g] آنها اغلب دارای هزاران CPU، اتصالات پرسرعت سفارشی شده و سخت افزار محاسباتی تخصصی هستند. به دلیل مقیاس بزرگ سازماندهی برنامه که برای استفاده همزمان از بیشتر منابع موجود نیاز است، چنین طرح هایی تنها برای کارهای تخصصی مفید هستند. ابررایانهها معمولاً در شبیهسازی ، رندر گرافیکی و برنامههای رمزنگاری در مقیاس بزرگ و همچنین در سایر کارهای به اصطلاح موازی شرمآور استفاده میشوند .
نرم افزار به بخش هایی از رایانه اطلاق می شود که شکل مادی ندارند، مانند برنامه ها، داده ها، پروتکل ها و غیره. نرم افزار به بخشی از سیستم رایانه ای گفته می شود که بر خلاف سخت افزار فیزیکی که از آن اطلاعات رمزگذاری شده یا دستورالعمل های رایانه ای تشکیل شده است. سیستم ساخته شده است. نرم افزارهای رایانه ای شامل برنامه های رایانه ای، کتابخانه ها و داده های غیرقابل اجرا مرتبط ، مانند اسناد آنلاین یا رسانه های دیجیتال است . اغلب به نرم افزار سیستم و نرم افزار کاربردی تقسیم می شود . سخت افزار و نرم افزار کامپیوتر به یکدیگر نیاز دارند و هیچکدام به تنهایی قابل استفاده نیستند. وقتی نرمافزار در سختافزاری ذخیره میشود که به راحتی نمیتوان آن را تغییر داد، مانند بایوس رام در رایانههای سازگار با رایانه شخصی IBM ، گاهی اوقات به آن «سیستمافزار» میگویند.
هزاران زبان برنامه نویسی مختلف وجود دارد - برخی برای اهداف عمومی در نظر گرفته شده اند، برخی دیگر فقط برای برنامه های کاربردی بسیار تخصصی مفید هستند.
ویژگی بارز رایانه های مدرن که آنها را از سایر ماشین ها متمایز می کند این است که می توانند برنامه ریزی شوند . یعنی می توان نوعی دستورالعمل ( برنامه ) را به کامپیوتر داد و آنها را پردازش می کند. کامپیوترهای مدرن مبتنی بر معماری فون نویمان اغلب دارای کد ماشین به شکل یک زبان برنامه نویسی ضروری هستند . از نظر عملی، یک برنامه کامپیوتری ممکن است فقط چند دستورالعمل باشد یا به میلیون ها دستورالعمل گسترش یابد، به عنوان مثال، برنامه های واژه پرداز و مرورگرهای وب . یک کامپیوتر مدرن معمولی می تواند میلیاردها دستورالعمل را در ثانیه اجرا کند ( گیگافلاپس ) و به ندرت در طول چندین سال کارکرد اشتباه می کند. برنامههای رایانهای بزرگ متشکل از چندین میلیون دستورالعمل ممکن است برای تیمهای برنامهنویس سالها طول بکشد تا بنویسند و به دلیل پیچیدگی کار تقریباً مطمئناً دارای خطا هستند.
این بخش برای اکثر رایانه های متداول مبتنی بر RAM دستگاه اعمال می شود .
در بیشتر موارد، دستورالعملهای رایانه ساده هستند: یک عدد را به شماره دیگر اضافه کنید، برخی از دادهها را از یک مکان به مکان دیگر منتقل کنید، یک پیام به دستگاه خارجی ارسال کنید، و غیره. این دستورالعملها از حافظه رایانه خوانده میشوند و به طور کلی اجرا میشوند ( اجرا میشوند ) به ترتیبی که به آنها داده شد. با این حال، معمولاً دستورالعملهای تخصصی وجود دارد که به رایانه میگوید به جای دیگری در برنامه به جلو یا عقب بپرد و از آنجا به اجرا ادامه دهد. این دستورالعمل ها (یا شاخه ها ) "پرش" نامیده می شوند . علاوه بر این، دستورالعملهای پرش ممکن است به صورت مشروط اتفاق بیفتد ، به طوری که توالیهای متفاوتی از دستورالعملها ممکن است بسته به نتیجه محاسبه قبلی یا رویداد خارجی مورد استفاده قرار گیرند. بسیاری از رایانهها مستقیماً از زیرروالها پشتیبانی میکنند و نوعی پرش را ارائه میکنند که مکانی را که از آن پریده است را به یاد میآورد و دستورالعمل دیگری برای بازگشت به دستورالعمل به دنبال آن دستورالعمل پرش.
اجرای برنامه ممکن است شبیه خواندن یک کتاب باشد. در حالی که یک فرد معمولاً هر کلمه و سطر را به ترتیب می خواند، ممکن است گاهی به مکان قبلی در متن بازگردد یا از بخش هایی که جالب نیستند بگذرد. به طور مشابه، گاهی اوقات ممکن است یک کامپیوتر به عقب برگردد و دستورالعملهای موجود در بخشی از برنامه را بارها و بارها تکرار کند تا زمانی که برخی شرایط داخلی برآورده شود. این جریان کنترل درون برنامه نامیده می شود و این چیزی است که به رایانه اجازه می دهد تا وظایف را به طور مکرر بدون دخالت انسان انجام دهد.
در مقایسه، شخصی که از ماشین حساب جیبی استفاده می کند می تواند یک عملیات حسابی اساسی مانند جمع کردن دو عدد را تنها با چند فشار دکمه انجام دهد. اما جمع کردن همه اعداد از 1 تا 1000 با هم، هزاران دکمه را فشار داده و زمان زیادی را صرف می کند، با اطمینان تقریباً اشتباه. از سوی دیگر، ممکن است یک کامپیوتر برای انجام این کار فقط با چند دستورالعمل ساده برنامه ریزی شود. مثال زیر به زبان اسمبلی MIPS نوشته شده است :
شروع: addi $8 , $0 , 0 # مقداردهی اولیه به 0 addi $9 , $0 , 1 # تنظیم اولین عدد برای اضافه = 1 حلقه: slti $10 , $9 , 1000 # بررسی کنید که آیا عدد کمتر از 1000 beq $10 , $0 , پایان است # اگر عدد فرد بزرگتر از n باشد، خارج شوید، $ 8 ، $ 8 ، $ 9 را اضافه کنید # بهروزرسانی مجموع اضافه $ 9 ، $ 9 ، 1 # عدد بعدی را دریافت کنید .
هنگامی که به کامپیوتر دستور داده شود این برنامه را اجرا کند، کار اضافه کردن تکراری را بدون دخالت بیشتر انسان انجام می دهد. تقریباً هرگز اشتباه نمی کند و یک رایانه مدرن می تواند کار را در کسری از ثانیه انجام دهد.
در اکثر رایانه ها، دستورالعمل های جداگانه به عنوان کد ماشین ذخیره می شوند و به هر دستورالعمل یک شماره منحصر به فرد داده می شود (کد عملیات یا به اختصار Opcode ). دستور جمع کردن دو عدد با هم یک کد عملیاتی خواهد داشت. فرمان ضرب کردن آنها دارای یک اپکد متفاوت خواهد بود و غیره. ساده ترین رایانه ها قادر به انجام هر یک از تعداد انگشت شماری از دستورالعمل های مختلف هستند. رایانههای پیچیدهتر چند صد مورد برای انتخاب دارند که هر کدام یک کد عددی منحصربهفرد دارند. از آنجایی که حافظه کامپیوتر قادر به ذخیره اعداد است، می تواند کدهای دستورالعمل را نیز ذخیره کند. این امر منجر به این واقعیت مهم می شود که کل برنامه ها (که فقط لیستی از این دستورالعمل ها هستند) می توانند به عنوان لیستی از اعداد نمایش داده شوند و خود می توانند در داخل رایانه به همان روشی مانند داده های عددی دستکاری شوند. مفهوم اساسی ذخیره سازی برنامه ها در حافظه کامپیوتر در کنار داده هایی که روی آنها کار می کنند، هسته معماری فون نویمان یا برنامه ذخیره شده است. [127] [128] در برخی موارد، یک کامپیوتر ممکن است تمام یا برخی از برنامه های خود را در حافظه ای که جدا از داده هایی که روی آن کار می کند نگهداری می شود، ذخیره کند. این معماری پس از کامپیوتر مارک اول هاروارد، معماری هاروارد نامیده می شود . کامپیوترهای مدرن فون نویمان برخی از ویژگیهای معماری هاروارد را در طراحیهای خود نشان میدهند، مانند حافظه پنهان CPU .
در حالی که نوشتن برنامه های کامپیوتری به صورت لیست های طولانی اعداد ( زبان ماشین ) امکان پذیر است و در حالی که این تکنیک در بسیاری از کامپیوترهای اولیه استفاده می شد، [h] انجام این کار در عمل بسیار خسته کننده و مستعد خطا است، به خصوص برای برنامه های پیچیده. . درعوض، میتوان به هر دستورالعمل اصلی یک نام کوتاه داد که نشاندهنده عملکرد آن باشد و به راحتی قابل به خاطر سپردن باشد - یک یادگاری مانند ADD، SUB، MULT یا JUMP. این یادداشت ها در مجموع به عنوان زبان اسمبلی کامپیوتر شناخته می شوند . تبدیل برنامه های نوشته شده به زبان اسمبلی به چیزی که کامپیوتر واقعاً می تواند آن را بفهمد (زبان ماشین) معمولاً توسط یک برنامه کامپیوتری به نام اسمبلر انجام می شود.
زبانهای برنامهنویسی راههای مختلفی برای تعیین برنامهها برای اجرای رایانهها ارائه میکنند. بر خلاف زبان های طبیعی ، زبان های برنامه نویسی طوری طراحی شده اند که اجازه ابهام نداشته باشند و مختصر باشند. آنها زبان های نوشتاری محض هستند و خواندن با صدای بلند اغلب دشوار است. آنها معمولاً قبل از اجرا توسط یک کامپایلر یا یک اسمبلر به کد ماشین ترجمه می شوند یا مستقیماً در زمان اجرا توسط یک مفسر ترجمه می شوند . گاهی اوقات برنامه ها با روش ترکیبی از این دو تکنیک اجرا می شوند.
زبانهای ماشین و زبانهای اسمبلی که آنها را نشان میدهند (که در مجموع زبانهای برنامهنویسی سطح پایین نامیده میشوند ) عموماً در معماری خاص واحد پردازش مرکزی رایانه ( CPU ) منحصر به فرد هستند. به عنوان مثال، یک CPU معماری ARM (مانندی که ممکن است در یک گوشی هوشمند یا یک بازی ویدیویی دستی یافت شود ) نمی تواند زبان ماشین یک CPU x86 را که ممکن است در رایانه شخصی باشد درک کند . [i] از نظر تاریخی تعداد قابل توجهی از دیگر معماریهای cpu ایجاد شد و مورد استفاده گسترده قرار گرفت، به ویژه از جمله MOS Technology 6502 و 6510 علاوه بر Zilog Z80.
اگرچه بسیار ساده تر از زبان ماشین است، اما نوشتن برنامه های طولانی در زبان اسمبلی اغلب دشوار است و همچنین مستعد خطا است. بنابراین، بیشتر برنامههای کاربردی به زبانهای برنامهنویسی سطح بالا انتزاعیتر نوشته میشوند که میتوانند نیازهای برنامهنویس را راحتتر بیان کنند (و در نتیجه به کاهش خطای برنامهنویس کمک کنند). زبان های سطح بالا معمولاً با استفاده از یک برنامه کامپیوتری دیگر به نام کامپایلر به زبان ماشین (یا گاهی اوقات به زبان اسمبلی و سپس به زبان ماشین) "کامپایل" می شوند . [j] زبانهای سطح بالا نسبت به زبان اسمبلی کمتر به کار کامپیوتر هدف مرتبط هستند و بیشتر به زبان و ساختار مسئله(هایی) که باید توسط برنامه نهایی حل شوند، مرتبط هستند. بنابراین اغلب می توان از کامپایلرهای مختلف برای ترجمه یک برنامه زبان سطح بالا به زبان ماشین انواع مختلف رایانه استفاده کرد. این بخشی از ابزاری است که با آن نرم افزارهایی مانند بازی های ویدیویی ممکن است برای معماری های مختلف رایانه مانند رایانه های شخصی و کنسول های بازی های ویدیویی مختلف در دسترس قرار گیرند .
طراحی برنامههای کوچک نسبتاً ساده است و شامل تجزیه و تحلیل مسئله، جمعآوری ورودیها، استفاده از ساختارهای برنامهنویسی در زبانها، ابداع یا استفاده از رویهها و الگوریتمهای تعیینشده، ارائه دادهها برای دستگاههای خروجی و راهحلهایی برای مشکل در صورت امکان میشود. [129] با بزرگتر شدن و پیچیدهتر شدن مشکلات، ویژگیهایی مانند زیربرنامهها، ماژولها، اسناد رسمی و پارادایمهای جدیدی مانند برنامهنویسی شیگرا با آن مواجه میشوند. [130] برنامه های بزرگ شامل هزاران خط کد و بیشتر به روش های نرم افزار رسمی نیاز دارند. [131] وظیفه توسعه سیستمهای نرمافزاری بزرگ یک چالش فکری قابل توجه است. [132] تولید نرم افزار با قابلیت اطمینان بالا در یک برنامه زمانی و بودجه قابل پیش بینی از لحاظ تاریخی دشوار بوده است. [133] رشته دانشگاهی و حرفه ای مهندسی نرم افزار به طور خاص بر این چالش متمرکز است. [134]
به خطاهای برنامه های کامپیوتری " اشکال " می گویند. آنها ممکن است خوش خیم باشند و بر سودمندی برنامه تأثیر نگذارند یا فقط تأثیرات ظریفی داشته باشند. با این حال، در برخی موارد ممکن است باعث شوند که برنامه یا کل سیستم " هنگ " کند، به ورودی هایی مانند کلیک ماوس یا فشار دادن کلید پاسخ ندهد، به طور کامل از کار بیفتد یا از کار بیفتد . [135] در غیر این صورت، گاهی اوقات ممکن است باگ های خوش خیم برای نیت مخرب توسط یک کاربر بی وجدان که یک اکسپلویت می نویسد، استفاده شود ، کدی که برای استفاده از یک باگ و اختلال در اجرای صحیح رایانه طراحی شده است. اشکالات معمولاً تقصیر رایانه نیستند. از آنجایی که رایانهها صرفاً دستورالعملهای داده شده را اجرا میکنند، باگها تقریباً همیشه نتیجه خطای برنامهنویس یا نادیده گرفتن طراحی برنامه هستند. [k] دریاسالار گریس هاپر ، دانشمند کامپیوتر آمریکایی و توسعهدهنده اولین کامپایلر ، برای اولین بار از اصطلاح "اشکالات" در محاسبات پس از پیدا شدن یک پروانه مرده در اتصال یک رله در رایانه هاروارد Mark II در سپتامبر 1947 استفاده کرد. [136]
از دهه 1950 از کامپیوترها برای هماهنگ کردن اطلاعات بین چندین مکان استفاده شده است. سیستم SAGE ارتش ایالات متحده اولین نمونه در مقیاس بزرگ از چنین سیستمی بود که منجر به تعدادی از سیستم های تجاری خاص مانند Saber شد . [137] در دهه 1970، مهندسان کامپیوتر در مؤسسات تحقیقاتی در سراسر ایالات متحده شروع به پیوند رایانه های خود با استفاده از فناوری مخابرات کردند. این تلاش توسط ARPA (در حال حاضر DARPA ) تأمین مالی شد و شبکه رایانه ای که نتیجه آن ARPANET نامیده شد . [138] فن آوری هایی که Arpanet را ممکن ساختند گسترش یافتند و تکامل یافتند.
با گذشت زمان، این شبکه از موسسات دانشگاهی و نظامی فراتر رفت و به اینترنت معروف شد. ظهور شبکه مستلزم تعریف مجدد ماهیت و مرزهای کامپیوتر بود. سیستمهای عامل و برنامههای کاربردی رایانه به گونهای اصلاح شدند که توانایی تعریف و دسترسی به منابع رایانههای دیگر در شبکه، مانند دستگاههای جانبی، اطلاعات ذخیرهشده، و موارد مشابه را بهعنوان توسعهدهنده منابع یک رایانه جداگانه، شامل شود. در ابتدا این امکانات عمدتاً برای افرادی که در محیطهای با فناوری پیشرفته کار میکردند در دسترس بود، اما در دهه 1990 گسترش برنامههایی مانند ایمیل و شبکه جهانی وب ، همراه با توسعه فناوریهای ارزان و سریع شبکه مانند اترنت و ADSL باعث ایجاد شبکههای کامپیوتری شد. تقریباً همه جا حاضر می شوند. در واقع، تعداد کامپیوترهایی که به شبکه متصل می شوند، به طرز خارق العاده ای در حال افزایش است. بخش بسیار زیادی از رایانه های شخصی به طور منظم برای برقراری ارتباط و دریافت اطلاعات به اینترنت متصل می شوند. شبکههای بیسیم، که اغلب از شبکههای تلفن همراه استفاده میکنند، به این معناست که شبکهسازی حتی در محیطهای محاسباتی تلفن همراه به طور فزایندهای فراگیر میشود.
یک کامپیوتر نیازی به الکترونیکی بودن ، حتی پردازنده ، رم و حتی هارد دیسک ندارد . در حالی که استفاده رایج از کلمه "کامپیوتر" مترادف با رایانه الکترونیکی شخصی است، [l] یک تعریف معمولی مدرن از رایانه این است: " دستگاهی که محاسبه می کند ، به ویژه یک ماشین الکترونیکی قابل برنامه ریزی [معمولاً] الکترونیکی که کارهای ریاضی یا با سرعت بالا را انجام می دهد. عملیات منطقی یا که اطلاعات را جمع آوری، ذخیره، همبستگی یا پردازش می کند." [139] طبق این تعریف، هر دستگاهی که اطلاعات را پردازش می کند، واجد شرایط رایانه می شود.
تحقیقات فعالی برای ساخت رایانههای غیر متعارف از بسیاری از انواع فناوری نویدبخش، مانند رایانههای نوری ، رایانههای DNA ، رایانههای عصبی و رایانههای کوانتومی وجود دارد . اکثر رایانه ها جهانی هستند و قادر به محاسبه هر تابع قابل محاسبه هستند و فقط با ظرفیت حافظه و سرعت عملکرد آنها محدود می شوند. با این حال طراحی های مختلف کامپیوترها می توانند عملکرد بسیار متفاوتی را برای مشکلات خاص ارائه دهند. برای مثال رایانههای کوانتومی میتوانند بهطور بالقوه برخی از الگوریتمهای رمزگذاری مدرن (با فاکتورسازی کوانتومی ) را خیلی سریع بشکنند.
انواع مختلفی از معماری کامپیوتر وجود دارد :
از میان تمام این ماشینهای انتزاعی ، یک کامپیوتر کوانتومی بیشترین نوید را برای متحول کردن محاسبات دارد. [140] گیتهای منطقی یک انتزاع رایج هستند که میتوانند برای اکثر پارادایمهای دیجیتال یا آنالوگ فوق اعمال شوند . توانایی ذخیره و اجرای فهرستهایی از دستورالعملهایی که برنامه نامیده میشوند ، رایانهها را بسیار متنوع میکند و آنها را از ماشینحساب متمایز میکند . تز چرچ-تورینگ بیانیه ریاضی این تطبیق پذیری است: هر رایانه ای با حداقل قابلیت (کامل بودن تورینگ) در اصل قادر به انجام همان وظایفی است که هر رایانه دیگری می تواند انجام دهد. بنابراین، هر نوع رایانه ای ( نت بوک ، سوپرکامپیوتر ، اتومات سلولی و غیره) با توجه به زمان و ظرفیت ذخیره سازی کافی، قادر به انجام همان وظایف محاسباتی است.
یک کامپیوتر بدون در نظر گرفتن کارایی، راه حل های جایگزین، میانبرهای احتمالی یا خطاهای احتمالی در کد، دقیقاً به همان روشی که برنامه ریزی شده است، مشکلات را حل می کند. برنامههای رایانهای که یاد میگیرند و سازگار میشوند، بخشی از حوزه نوظهور هوش مصنوعی و یادگیری ماشین هستند . محصولات مبتنی بر هوش مصنوعی به طور کلی به دو دسته عمده تقسیم می شوند: سیستم های مبتنی بر قانون و سیستم های تشخیص الگو . سیستمهای مبتنی بر قوانین تلاش میکنند قوانینی را که توسط متخصصان انسانی استفاده میشوند را نشان دهند و توسعه آن هزینه بر است. سیستم های مبتنی بر الگو از داده های مربوط به یک مسئله برای نتیجه گیری استفاده می کنند. نمونه هایی از سیستم های مبتنی بر الگو عبارتند از: تشخیص صدا ، تشخیص فونت، ترجمه و حوزه نوظهور بازاریابی آنلاین.
با گسترش استفاده از رایانه در سراسر جامعه، تعداد روزافزونی از مشاغل مربوط به رایانه وجود دارد.
نیاز به کامپیوترها برای کار خوب با یکدیگر و توانایی تبادل اطلاعات، نیاز به بسیاری از سازمانها، باشگاهها و جوامع استاندارد را با ماهیت رسمی و غیررسمی ایجاد کرده است.
کنراد زوزه عنوان نیمه رسمی "مخترع کامپیوتر مدرن" را به دست آورد
[
چه کسی؟
]
.
فون نویمان... قاطعانه به من، و به دیگران، مطمئنم، تأکید کرد که مفهوم بنیادین مدیون تورینگ است - تا جایی که بابیج، لاولیس و دیگران پیشبینی نکردهاند.نامه استنلی فرانکل به برایان راندل ، 1972.
سادگی نسبی و نیازهای کم توان ماسفت ها، انقلاب میکروکامپیوتر امروزی را تقویت کرده است.
به آن معماری برنامه ذخیره شده یا مدل برنامه ذخیره شده می گویند که به معماری فون نویمان نیز معروف است. ما از این اصطلاحات به جای یکدیگر استفاده خواهیم کرد.
تجربه SAGE کمک کرد تا اولین شبکه تجاری واقعی در مقیاس بزرگ ایجاد شود: سیستم کامپیوتری رزرو خطوط هوایی SABER.