loading...

مجله اینترنتی پارسیان | پورتال علمی ، تفریحی و سرگرمی ، فیلم و موزیک

ریشه یابی لغت کامپیوتر طبق لغتنامه انگلیسی آکسفورد، اولین استفاده معلوم از لغت “کامپیوتر” در سال 1613 در کتابی به نام علم اندوزی مرد جوان  نوشته نویسنده انگلیسی ریچارد بریثوِیت بوده

ریشه یابی لغت کامپیوتر

طبق لغتنامه انگلیسی آکسفورد، اولین استفاده معلوم از لغت “کامپیوتر” در سال 1613 در کتابی به نام علم اندوزی مرد جوان  نوشته نویسنده انگلیسی ریچارد بریثوِیت بوده است. “من حقیقی ترین کامپیوتر دوران، و بهترین حسابگری که در دنیا زندگی کرده را ملاقات کردم و او روزها را به تعدادی اندک کاهش میدهد”. این استفاده از لغت رایانه به حسابگر انسانی اشاره دارد، فردی که محاسبات و حسابگری ها را انجام میداد. این لغت با همین معنا تا اواسط قرن بیستم  ادامه پیدا کرد. در ابتدا، زن ها به  عنوان “کامپیوتر های انسانی” استخدام میشدند زیرا میشد به آنها دستمزد کمتری نسبت به همتایان مذکرشان پرداخت کرد. تا 1943، بیشتر رایانه های انسانی، زن بودند. از انتهای قرن نوزدهم، این لغت کم کم معنای آشنای خود را پیدا کرد، ماشینی که محاسبات را انجام میدهد.

دیکشنری آنلاین ریشه یاب ­اولین استفاده مستند از “کامپیوتر” را در دهه 1640 بدست میدهد، به معنای “فردی که محاسبه میکند،”؛ این “… یک اسم عامل از فعل محاسبه کردن است”. دیکشنری آنلاین ریشه یابی  بیان میکند که استفاده از این عبارت به معنای “ماشین محاسبه گر” (از هر نوعی) از 1897 آغاز شد و اشاره میکند که “استفاده مدرن” از این لغت به معنای “کامپیوتر الکترونیکی دیجیتال و برنامه پذیر” به ” 1945 برمیگردد تحت همین عنوان؛ به معنای نظری به 1937 برمیگردد تحت عنوان ماشین تورینگ”.

تاریخچه کامپیوتر

پیش از قرن بیستم

برای هزاران سال از وسایلی جهت کمک به محاسبات استفاده میشد، که عمدتاً از تناظر یک به یک با انگشتان استفاده میکردند. ابتدایی ترین وسیله شمارش احتمالاً نوعی چوب خط بوده است. وسایل آتی که در گهواره تمدن به ضبط کمک میکردند، حسابگرهایی (کره های رُسی، مخروط و غیره) بودند که شمار اشیاء را، احتمالاً احشام یا غلات در مخزن های رُسی نپخته میان-تهی و سربسته، نمایش میدادند. استفاده از میله های شمارنده مثالی از این نوع است. در ابتدا از چرتکه برای حساب استفاه میشد. چرتکه رومی، با وسایل مورد استفاده در بابل با قدمت 2400 سال قبل از میلاد، ساخته شد. از آن زمان، اَشکال متعددی از جداول یا تخته های حسابداری اختراع شده اند. در شمارش-خانه های اروپایی قرون وسطی، یک پارچه شطرنجی روی میز قرار میگرفت و نشانگرها طبق قواعدی خاص حول آن حرکت میکردند تا به محاسبه مقادیر پول کمک کند.

طبق نظر دِرِک ج. دسولا پرایس، باور بر این است که ماشین آنتیکیترا، اولین “رایانه” آنالوگ مکانیکی است. این وسیله برای محاسبه موقعیت های نجومی طراحی شده بود و در سال 1901 در خرابه آنتیکترا در جزیره آنتیکترا در یونان، میان کیترا و کریت، کشف شد و قدمت آن حدود سال 100 قبل از میلاد تخمین زده میشود. وسایلی که از نظر پیچیدگی در سطحی قابل مقایسه با مکانیزم آنتیکیترا بودند تا هزارسال بعد ظهور نکردند.

ابزارهای مکانیکی متعددی برای مصارف جهت یابی و نجومی ساخته شدند. چرخه ستاره یاب، یک نقشه آسمان بود که توسط ابوریحان بیرونی اوایل قرن یازدهم اختراع شد. اختریاب در دوران هلنیستی در قرن اول یا دوم پیش از میلاد اختراع شد و اغلب به هیپارخوس نسبت داده میشود. اختریاب به عنوان ترکیبی از چرخه ستاره یاب و دیوپتر، عملاً رایانه ای آنالوگ بود که توانایی حل چندین نوع مسئله در نجوم کروی را دارا بود. یک دستگاه اختریاب شامل رایانه تقویمی مکانیکی و چرخدنده، توسط ابی بکر اصفهانی پارسی در سال 1235 اختراع شد. ابوریحان بیرونی اولین اختریاب تقویم شمسی-قمری چرخدنده ای مکانیکی را، که یک ماشین پردازشگر دانش مفتول-ثابت اولیه با دنباله ای از چرخدنده ها بود، حدود سال 1000 پس از میلاد اختراع کرد.

قطاع (قطبنمای نظامی) که ابزاری محاسباتی برای حل مسائل نسبت، مثلثات، ضرب و تقسیم، و نیز برای توابع متعددی از قبیل ریشه دوم و سوم بود، در اواخر قرن شانزدهم ساخته شد و در توپخانه، نقشه برداری و  جهت یابی کاربرد پیدا کرد.

پلانیمتر ابزاری دستی برای محاسبه مساحت یک شکل بسته با پیمایش آن توسط یک پیوند مکانیکی بود.

خط کش محاسبه حدود 1620-1630 به فاصله اندکی پس از معرفی مفهوم لگاریتم اختراع شد و یک رایانه آنالوگ دستی برای انجام ضرب و تقسیم بود. با پیشرفت ساخت خط کش محاسبه، مقیاس های اضافه شده، معکوس، توان و ریشه دوم و سوم، و توابع متعالی لگاریتمی و نمایی، مثلثات هذلولوی و دایره ای و توابعی دیگر را فراهم کرد. خط کش های محاسبه ای با مقیاس های ویژه هنوز برای عملکرد سریع محاسبات متداول استفاده میشوند، مثل خط کش محاسبه دایره ای E6B که برای محاسبات فاصله و زمان در هواپیماهای سبک استفاده میشود.

در دهه 1770، پیِر زاک دروز، یک ساعت ساز سوییسی، عروسکی مکانیکی (اتوماتون) ساخت که میتوانست با یک قلم پَری بنویسد. با تغییر تعداد  و ترتیب چرخدنده های درونی آن، حروف متفاوت، و لذا پیام هایی متفاوت، قابل تولید بودند. عملاً میشد آن را بطور مکانیکی “برنامه ریزی” کرد تا دستورالعمل ها را بخواند. این عروسک همراه با دو ماشین پیچیده دیگر در موزه هنرهای تاریخی نوشاتل سوییس قرار دارد و همچنان سالم است.

ماشین پیشگوی جزر و مد که توسط سِر ویلیام تامسون در 1872 اختراع شد، برای جهت یابی در آبهای کم عمق استفاده فراوانی داشت. این وسیله از سامانه ای از قرقره و ریسمان برای پیش بینی خودکار سطح جزر و مد در یک دوره زمانی مشخص در ناحیه ای مشخص استفاده میکرد.

تحلیلگر دیفرانسیل، که یک رایانه آنالوگ مکانیکی برای حل معادلات دیفرانسیل با انتگرال گیری بود، از مکانیزم های چرخ و دیسک برای انتگرال گیری استفاده میکرد. پیشاپیش در 1876 لُرد کلوین، امکان ساخت چنین ماشین حساب هایی را تشریح کرده بود، اما گشتاور محدود خروجی انتگرال گیرهای گوی و قرص، مانع کار او شده بودند. در یک تحلیلگر دیفرانسیل، خروجی یک انتگرال گیر، ورودی یک انتگرال گیر دیگر یا خروجی نموداری را هدایت میکرد. تقویت کننده گشتاور، پیشرفتی بود که اثر بخشی این مکانیزم ها را ممکن کرد. با آغاز در دهه 1920، وانوار بوش و دیگران تحلیگرهای دیفرانسیلی مکانیکی را توسعه دادند.

کامپیوترهای آنالوگ

طی نیمه اول قرن بیستم، بسیاری از نیازهای محاسباتی علمی توسط رایانه های آنالوگ که بطور فزاینده پیچیده تر میشدند و از یک مدل مستقیم مکانیکی یا الکتریکی از مسئله به عنوان پایه ای برای محاسبات استفاده میکردند، پاسخ داده میشد. با این حال، این رایانه ها برنامه پذیر نبودند و فاقد جامعیت و دقت رایانه های دیجیتال مدرن بودند. اولین رایانه آنالوگ مدرن، یک ماشین پیش بینی جزر و مد بود که در 1872 توسط سر ویلیام تامسون اختراع شد. تحلیلگر دیفرانسیل، که یک رایانه آنالوگ مکانیکی برای حل معادلات دیفرانسیل توسط انتگرال گیری با استفاده از مکانیزم های دیسک و چرخ بود، توسط جیمز تامسون، برادر لرد کلوین مشهور، در 1876 مفهومی سازی شد.

هنر رایاناش آنالوگ مکانیکی، با تحلیلگر دیفرانسیل که توسط اچ. ال. هیزن و وانوار بوش در ام آی تی در 1927 ساخته شد، به اوج خود رسید.  این دستگاه برپایه انتگرال گیرهای مکانیکی جیمز تامسون و تقویت کننده های گشتاور اختراع شده توسط اچ. دبلیو. نیمان ساخته شد. پیش از منسوخ شدن، تعداد زیادی از این دستگاه ساخته شد. تا دهه 1950، موفقیت رایانه های دیجیتالی الکترونیکی، پایان بسیاری از رایانه های آنالوگ را رقم زد، اما رایانه های آنالوگ در دهه 50 در برخی کاربردهای تخصصی مثل تحصیل (سیستم های کنترل) و هواپیما (خط کش محاسبه) مورد استفاده باقی ماندند.

کامپیوترهای دیجیتال

الکترومکانیکی

تا سال 1938، نیروی دریایی ایالات متحده، یک رایانه آنالوگ الکترومکانیکی به قدر کافی کوچک ساحته بود که میشد آن را در یک زیردریایی استفاده کرد. این رایانه، رایانه اطلاعات اژدر بود، که از مثلثات برای حل مسئله شلیک اژدر به یک هدف متحرک استفاده میکرد. در جنگ جهانی دوم دستگاه های مشابهی در سایر کشورها نیز ساخته شدند.

رایانه های دیجیتالی اولیه، الکترومکانیکی بودند؛ سوییچ های الکتریکی، رله های مکانیکی را برای انجام محاسبات هدایت میکردند. این دستگاه ها سرعت عملکرد پایینی داشتند و در نهایت با رایانه های تمام الکتریکی که بسیار سریعتر بودند جایگزین شدند، که در ابتدا از لامپ خلاء استفاده میکردند. Z2 که توسط مهندس آلمانی کونارد زیوس در 1939 ساخته شد، اولین مثال از یک رایانه با رله الکترومکانیکی بود.

در 1941 زیوس، ماشین اولیه خود را با Z3 کامل تر کرد، که اولین رایانه دیجیتال تمام خودکارِ برنامه پذیرِ الکترومکانیکی بود. Z3 با 2000 رله ساخته شده بود، و یک طول لغت 22 بیتی را پیاده سازی میکرد که در فرکانس زمانی 5-10 هرتز عمل میکرد. کد برنامه روی فیلم پانچ تهیه میشد در حالیکه ممکن بود داده ها را در 64 لغت حافظه، ذخیره یا از طریق صفحه کلید فراهم نمود. این ماشین از برخی جنبه ها بسیار مشابه ماشین های مدرن، و در پیشرفت های متعددی از قبیل اعداد ممیز شناور، پیشگام بود. به جای استفاده از سیستم ده دهی که پیاده سازی سختی داشت (که در طرح اولیه چارلز بابژ استفاده شده بود)، استفاده از سیستم دو دویی به این معنا بود که ساخت ماشین های زیوس آسانتر بود و با فناوری های موجود در آن زمان، مطمئن تر بودند. Z3 تورینگ کامل بود.

لامپ های خلاء و مدارهای الکترونیکی دیجیتال

همزمان با جایگزینی محاسبات دیجیتال با آنالوگ، عناصر مداری الکتریکی محض به سرعت جایگزین همتایان مکانیکی و الکترومکانیکی خود شدند. مهندس تامی فلاورز، که در ایستگاه تحقیقاتی اداره پست در لندن در دهه 1930 کار میکرد، شروع به بررسی امکان استفاده از الکترونیک برای تلفنخانه ها نمود. تجهیزات تجربی ای که او در 1934 ساخت، پنج سال بعد عملیاتی شدند، که با استفاده از هزاران لامپ خلاء، بخشی از شبکه تلفنخانه را به یک سیستم پردازش داده الکترونیکی تبدیل کردند. در امریکا در سال 1942، جان وینسنت آتاناسوف و کلیفورد ای. بری از دانشگاه ایالتی یووا، رایانه آتاناسوف-بری (ABC) را توسعه دادند و آزمایش کردند، که اولین “رایانه دیجیتال الکترونیکی خودکار” بود. این طرح نیز تمام الکترونیکی بود و از حدود 300 لامپ خلاء استفاده میکرد، که در آن خازن ها به عنوان حافظه، در استوانه ای که بطور مکانیکی دَوران میکرد ثابت بودند.

طی جنگ جهانی دوم، بریتانیایی ها در بلچلی پارک موفق به شکستن تعدادی از مخابره های رمزگذاری شده آلمانی ها شدند. ابتدا ماشین رمزنگاری آلمانی، اِنیگما، با کمک بامب های الکترومکانیکی که اغلب توسط زنان کنترل میشدند، مورد حمله قرار گرفت. برای کرک کردن ماشین آلمانی پیشرفته تر لورنز SZ 42/40 که برای مخابرات سطح بالای ارتش استفاده میشد، مکس نیومن و همکاران او، تامی فلاورز را برای ساخت رایانه کلوسوس بکار گماشتند. او از ابتدای فوریه 1943 یازده ماه را صرف طراحی و ساخت اولین کلوسوس کرد. پس از یک آزمایش عملکردی در دسامبر 1943، کلوسوس به بلچلی پارک فرستاده شد، و  18 ژانویه 1944 در آنجا تحویل گرفته شد و در 5 فوریه به اولین پیام خود حمله کرد.

کلوسوس اولین رایانه برنامه پذیر دیجیتال الکترونیک در جهان بود و از دریچه های (لامپ های خلاء) متعددی استفاده میکرد. این رایانه از ورودی نوار کاغذی استفاده میکرد و جهت انجام عملیات مختلف بولی روی داده های خود، قابل تنظیم بود، اما تورینگ-کامل نبود. نُه کلوسوس مارک 2 ساخته شدند (مارک 1 هم به مارک 2 تبدیل شد که در مجموع ده دستگاه شدند). کلوسوس مارک 1 دارای 1500 دریچه (لامپ) حرارتی بود، اما مارک 2 با 2400 دریچه هم 5 مرتبه سریعتر بود و هم کار کردن با آن ساده تر از مارک 1 بود، که فرایند رمزگشایی را بسیار تسریع میکرد.

اِنیاک به انگلیسی ENIAC  (رایانه و انتگرال گیر عددی الکترونیکی) ساخت امریکا، اولین رایانه برنامه پذیر ساخته شده در امریکا بود. گرچه انیاک ساده تر از کلوسوس بود، اما بسیار سریعتر، انعطاف پذیرتر و تورینگ-کامل بود. مشابه کلوسوس، یک “برنامه” را روی کلوسوس با وضعیت سوییچ ها و دسته کابل های آن تعریف میکردند، چیزی بسیار متفاوت از ماشین های الکترونیکی برنامه-انباشته که بعداً معرفی شدند. هنگامی که برنامه ای نوشته میشد، باید بطور مکانیکی با بازنشانی دستی دوشاخه ها و سوییچ ها درون ماشین تنظیم میشد. برنامه نویسان انیاک، شش زن بودند، که بطور گروهی “دختران انیاک” نامیده میشدند.

این ماشین سرعت بالای الکترونیک را با توانایی برنامه پذیری برای بسیاری از مسائل پیچیده ترکیب کرد. انیاک میتوانست 5000 بار در ثانیه، جمع یا تفریق انجام دهد، هزاربار سریعتر از هر ماشین دیگری. همچنین دارای مُدول هایی برای ضرب، تقسیم و ریشه دوم بود. حافظه سرعت بالا محدود به 20 لغت (حدو 80 بایت) بود. توسعه و ساخت انیاک، که تحت هدایت جان ماچلی و جی. پِرِسپر اِکارت در دانشگاه پنسیلوانیا درست شده بود، با عملکرد کامل از 1943 تا پایان 1945 ادامه پیدا کرد. این ماشین بزرگ بود و 30 تن وزن داشت، 200 کیلووات برق مصرف میکرد و بیش 18000 لامپ خلاء، 1500 رله و صدها هزار مقاومت، خازن و القاگر داشت.

کامپیوترهای مدرن

مفهوم رایانه مدرن

اصل رایانه مدرن توسط آلن تورینگ در مقاله پیشروی او درباره اعداد محاسبه پذیر در 1936 مطرح شد. تورینگ دستگاهی ساده را پیشنهاد کرد و آن را “ماشین محاسبه جهانی” نامید که اکنون به عنوان ماشین جهانی تورینگ شناخته میشود. او ثابت کرد که چنین ماشینی، با اجرای دستورالعمل هایی (برنامه) که روی نوار، ذخیره شدند، توانایی محاسبه هرچیزی که محاسبه پذیر باشد را دارد، چیزی که ماشین را برنامه پذیر میکند. مفهوم اساسی طرح تورینگ، برنامه ذخیره شده است، که در آن تمام دستورالعمل های محاسباتی در حافظه ذخیره (انباشته) میشوند. وُون نیومن اذعان کرد که مفهوم محوری رایانه مدرن، مرهون این مقاله است. تا امروز، ماشین های تورینگ، موضوعی اساسی در مطالعه نظریه محاسبه بوده است. صرف نظر از محدودیت های ایجاد شده توسط ذخایر حافظه ای محدود، رایانه های مدرن، تورینگ-کامل قلمداد میشوند، به این معنا که دارای توانایی اجرای الگوریتم معادل با یک ماشین جهانی تورینگ هستند.

برنامه های ذخیره شده

ماشین های محاسبه ای اولیه دارای برنامه های ذخیره شده بودند. تغییر عملکرد آن ها نیازمند بازکردن و بستن مجدد ماشین بود. با ارائه رایانه برنامه-انباشته این موضوع دستخوش تغییر شد. رایانه برنامه-انباشته در طراحی خود شامل یک مجموعه دستورالعمل است و میتواند مجموعه ای از دستورالعمل ها (برنامه) را در حافظه ذخیره کند که جزییات رایانش را انجام دهند. مبنای نظری رایانه برنامه-انباشته توسط آلن تورینگ در مقاله 1936 او مطرح شد. در 1945، تورینگ به آزمایشگاه ملی فیزیک ملحق شد و کار را روی توسعه یک رایانه دیجیتال برنامه-انباشته الکترونیکی آغاز کرد. گزارش 1945 او “ماشین حساب الکترونیکی پیشنهادی” اولین تصریح سازی از چنین دستگاهی بود. جان وون نیومن در دانشگاه پنسیلوانیا  نیز در 1945 اولین پیش نویس گزارشی در مورد اِدواک را گردآوری کرد.

بچه منچستری اولین رایانه برنامه-انباشته در جهان بود. این رایانه در دانشگاه ویکتوریا در منچستر توسط فردریک سی. ویلیامز، تام کیلبرن و جئوف توتیل ساخته شد و اولین برنامه خود را در 21 ژوئن 1948 اجرا کرد. این رایانه به عنوان یک بستر آزمایشی برای لامپ ویلیامز، که اولین دستگاه ذخیره دیجیتال با دسترسی تصادفی بود، طراحی شد. گرچه طبق استانداردها آن زمان، این رایانه “کوچک و ابتدایی” قلمداد میشد، اما اولین ماشین کارکننده ای بود که تمام عناصر ضروری یک رایانه الکترونیکی مدرن را دارا بود. به محض اینکه این رایانه امکان پذیری طرح خود را نمایش داد، پروژه ای برای توسعه آن به یک رایانه استفاده پذیرتر آغاز شد، منچستر مارک 1. گریس هوپر اولین فردی بود که یک کامپایلر برای زبان برنامه نویسی توسعه داد.

مارک 1 خود به سرعت نمونه اولیه ای شد برای فرانتی مارک 1، اولین رایانه چندمنظوره تجاری در دسترس جهان. این رایانه که توسط فرانتی ساخته شده بود، در فوریه 1951 به دانشگاه منچستر تحویل داده شد. لاقل هفت مورد از این ماشین های جدیدتر بین 1953 و 1957 تحویل داده شدند، که یکی از آنها به آزمایشگاه ها شل در آمستردام داده شد. در اکتبر 1947، مدیران شرکت خدمات تشریفاتی J. Lyons & Co  تصمیم گرفتند نقشی فعال در ترویج توسعه تجاری رایانه ها اتخاذ کنند. رایانه LEO I در آپریل 1951 عملیاتی شد و اولین شغل رایانه ای دفتری متداول در جهان را اجرا کرد.

ترانزیستورها

ترانزیستور دوقطبی در 1947 اختراع شد. از 1955 به بعد ترانزیستورها در طراحی رایانه جایگزین لامپ های خلاء شدند و “نسل دوم رایانه” ها را به وجود آوردند. ترانزیستورها در مقایسه با لامپ های خلا، مزایای فراوانی دارند: کوچکتر هستند و برق کمتری نیاز دارند و لذا حرارت کمتری تولید میکنند. ترانزیستورهای پیوندی سیلیکونی از لامپ های خلاء بسیار مطمئن تر بودند و عمر کاری طولانی تر و در واقع عمری بی پایان داشتند. رایانه های ترانزیستوری میتوانستند شامل ده ها هزار مدار منطقی دودویی در فضایی نسبتاً فشرده باشند.

در دانشگاه منچستر، تیمی تحت هدایت تام کیلبرن با استفاده از ترازیستورهای تازه طراحی شده، به جای دریچه ها، ماشینی را طراحی کردند و ساختند. اولین رایانه ترانزیستوری آنها و اولین رایانه ترانزیستوری جهان، تا 1953 عملیاتی شد، و نسخه دومی نیز در آپریل 1955 همانجا کامل شد. با این حال، این ماشین برای تولید شکل موج های زمانی 125 کیلوهرتزی خود، و در مدار برای خواندن و نوشتن روی حافظه درام مغناطسی، از دریچه ها استفاده میکرد، لذا  اولین رایانه تماماً ترانزیستوری نبود. این برتری به هارول کادت در 1955 داده شد، که توسط بخش الکترونیک تاسیسات تحقیقاتی انرژی اتمی در هارول ساخته شد.

مدارهای مجتمع

پیشرفت بزرگ بعدی در توان محاسباتی با ظهور مدار مجتمع بدست آمد. ایده مدار مجتمع ابتدا توسط جئوفری دبلیو.ای. درامر که یک دانشمند رادار در موسسه رادار سلطنتی وزارت دفاع بود، مطرح شد. درامر اولین توصیف عمومی یک مدار مجتمع را در مجله سمپوزیوم پیشرفت در اجزای باکیفیت الکترونی در واشنگتون دی.سی. در 7 می 1952 ارائه کرد.

اولین ICهای عَملی توسط جک کیبلی در تگزاس اینسترومنت و رابرت نویس در فیرچایلد سمیکانداکتر اختراع شدند. کیبلی ایده های آغازین خود را درباره مدار مجتمع در جولای 1958 ضبط کرد و با موفقیت اولین مثال مجتمع کارکننده را در 12 سپتامبر 1958 به نمایش گذاشت. کیبلی در تقاضانامه ثبت اختراع در 6 فوریه 1959 دستگاه جدید خود را “بدنه ای از جنس نیم رسانا…که در آن تمام اجزای مدار الکتریکی کاملاً یکپارچه هستند” توصیف کرد. نویس نیز 6 ماه پس از کیبلی ایده خود را از مدار مجتمع مطرح کرد. تراشه او مسائل عملی فراوانی را حل میکرد که تراشه کیبلی حل نکرده بود. این تراشه که در فیرچایلد سمیکانداکتر تولید شده بود، از جنس سیلیکون بود، درحالیکه تراشه کیبلی از ژرمانیوم ساخته شده بود.

این توسعه جدید، سرآغاز انفجاری در مصرف شخصی و تجاری رایانه ها بود و منجر به اختراع ریزپردازنده شد. گرچه این موضوع که دقیقاً کدام دستگاه اولین ریزپردازنده بود، تاحدی به علت عدم توافق روی تعریف دقیق عبارت “ریزپردازنده” مورد بحث است، اما تقریباً بدون تردید اولین ریزپردازنده تک-تراشه ای، اینتل 4004 بوده است، که توسط تد هوف، فدریکو فاگین و استنلی مازور در اینتل طراحی و تحقق یافت.

رایانه های همراه

اولین رایانه های همراه، سنگین بودند و با برق شهری کار میکردند. 50lb IBM 5100 یک مثال ابتدایی است. رایانه های حمل پذیر بعدی مثل Osborn 1 و Compaq Portable بطور چشمگیری سبکتر بودند، اما همچنان لازم بود که به برق وصل شوند. اولین لپتاپ ها، مثل Grid Compass، با استفاده از باتری این نیاز را برطرف کردند – و با ادامه مینیاتورسازی منابع محاسبه و پیشرفت های عمر باتری قابل حمل، رایانه های حمل پذیر در سال های 2000 محبوبت فزاینده ای یافتند. همین توسعه ها به تولیدکنندگان اجازه داد منابع محاسباتی را در گوشی های سلولی ادغام کنند.

این گوشی های هوشمند و تبلت ها با سیستم عامل های متنوعی کار میکنند و به سرعت به دستگاه رایانش غالب در بازار تبدیل شدند، که طبق گزارش تولیدکنندگان حدود 237 دستگاه در فصل دوم 2013 فروخته شد.

انواع کامپیوتر

رایانه ها معمولاً بر اساس مصرف طبقه بندی میشوند:

بر اساس  مصرف

  • رایانه آنالوگ

  • رایانه دیجیتال

  • رایانه هیبرید

براساس اندازه

  • گوشی هوشمند

  • ریزرایانه

  • ایستگاه کار

  • رایانه شخصی

  • لپتاپ

  • رایانه کوچک

  • بزرگ رایانه

  • ابررایانه

سخت افزار

عبارت سخت افزار دربرگیرنده تمام قطعات فیزیکی قابل لمس رایانه است. مدارها، تراشه های رایانه، کارت گرافیک، کارت صدا، حافظه (رم)، بردمادر، نمایشگر، منبع تغذیه، کابل، صفحه کلید، چاپگر و دستگاه های ورودی “موس” همگی سخت افزار هستند.

رایانه چندمنظوره دارای چهار مولفه اصلی است: واحد حساب منطقی (ALU)، واحد کنترل، حافظه و دستگاه های ورودی و  خرجی (که بطور جمعی با I/O نشان داده میشوند). این قطعات با گذرگاه ها بهم متصل میشوند، که اغلب از دسته های سیم تشکیل میشوند. درون هر یک از این قطعات هزاران تریلیون مدار الکتریکی کوچک وجود دارد که میتوان آنها را با یک سوییچ الکتریکی روشن یا خاموش کرد. هر مدار، نمایانگر یک بیت (رقم دودویی) اطلاعات است لذا هنگامی که مدار روشن است، “1” و هنگامی که خاموش است “0” را نمایش میدهد (در نمایش منطقی مثبت). مدارها در دروازه های منطقی چیده شده اند لذا یک یا چند مدار ممکن است وضعیت یک یا چند مدار دیگر را کنترل کنند.

دستگاه های ورودی (Input devices)

هنگامی که داده های پردازش نشده توسط دستگاه های ورودی به رایانه فرستاده میشوند، داده ها پردازش میشوند و به دستگاه های خروجی برده میشوند. دستگاه های ورودی میتوانند دستی یا خودکار باشند. عمل پردازش معمولاً توسط CPU تنظیم میشود. چند مثال از دستگاه های ورودی عبارت اند از:

  • صفحه کلید رایانه

  • دوربین دیجیتال

  • ویدیوی دیجیتال

  • تبلت گرافیکی

  • اسکنر تصویر

  • جوی استیک

  • میکروفون

  • موس

  • صفحه کلید روکش

  • ساعت همزمان

  • توپک

  • صفحه لمسی

دستگاه های خروجی (Output devices)

وسایلی که رایانه توسط آنها خروجی را میدهد، دستگاه های خروجی نام دارند. چند مثال از دستگاه های خروجی عبارت اند از:

  • نمایشگر رایانه

  • چاپگر

  • اسپیکر PC

  • پروژکتور

  • کارت صدا

  • کارت ویدیو

واحد کنترل

واحد کنترل (که اغلب سیستم کنترل یا کنترلگر مرکزی هم نامیده میشود) اجزای مختلف رایانه را مدیریت میکند؛ دستورالعمل های برنامه را میخواند و تفسیر (کدگشایی) میکند و آنها را به سیگنال هایی کنترلی تبدیل میکند که سایر بخش های رایانه را فعال میکنند. سیستم های کنترلی در رایانه های پیشرفته ممکن است ترتیب اجرای برخی دستورالعمل ها را جهت بهبود عملکرد، تغییر دهند.

یک مولفه کلیدی مشترک در تمام CPUها، شمارنده برنامه است، که یک سلول حافظه ای ویژه (یک رجیستر) است که درون حافظه، مکانی که دستورالعمل بعدی باید از آنجا خوانده شود را ردیابی میکند.

عملکرد سیستم کنترل به شرح زیر است-توجه کنید که این یک توصیف ساده شده است، و برخی از این گامها ممکن است بطور همزمان یا با ترتیبی متفاوت، بسته به نوع CPU، اجرا شوند:

  1. خواندن کد برای دستورالعمل بعدی از سلول مشخص شده توسط شمارنده برنامه.

  2. رمزگشایی کد عددی دستورالعمل به مجموعه ای از دستورات یا سیگنال ها برای هر یک از سیستم های دیگر.

  3.  افزایش شمارنده برنامه برای اینکه به دستورالعمل بعدی اشاره کند.

  4. خواندن داده های مورد نیاز دستورالعمل از سلول های حافظه (یا شاید از یک دستگاه ورودی). مکان این داده های مورد نیاز معمولاً درون کد دستورالعمل ذخیره میشود.

  5.  تهیه داده های لازم برای یک ALU یا رجیستر.

  6. اگر دستورالعمل بخواهد که یک ALU یا سخت افزار ویژه، کامل شود، به سخت افزار دستود داده شود که عملیات مورد نظر را اجرا کند.

  7. نوشتن مجدد نتیجه ALU در یک مکان حافظه ای یا در یک رجیستر یا شاید یک دستگاه خروجی.

  8. پریدن به گام 1.

از آنجا که شمارنده برنامه (بطور مفهومی) تنها یک مجموعه دیگر از سلول های حافظه است، میتوان آن را با محاسبات انجام شده در ALU تغییر داد. اضافه کردن 100 به شمارنده برنامه باعث میشود دستورالعمل بعدی از 100 مکان پایینتر از برنامه خوانده شود. دستورالعمل هایی که شمارنده برنامه را تغییر میدهند اغلب به عنوان “پرش” شناخته میشوند، و حلقه های تکرار (دستورالعمل هایی که توسط رایانه تکرار میشوند) و غالباً اجرای دستورالعمل شرطی را، ممکن میسازند (هردو مثال هایی از جریان کنترل هستند).

دنباله عملیاتی که واحد کنترل جهت پردازش یک دستورالعمل طی میکند، خود شبیه یک برنامه کوچک رایانه ای است، و در واقع، در برخی طراحی های پیچیده تر CPU، یک رایانه کوچکتر دیگر به نام ریزدنباله ساز وجود دارد، که یک برنامه ریزکد را اجرا میکند و باعث وقوع تمام این اتفاقات میشود.

واحد پردازش مرکزی (Central processing unit) یا CPU

واحد کنترل، ALU و رجیسترها جمعاً به عنوان واحد پردازشگر مرکزی (CPU) شناخته میشوند. CPUهای اولیه از اجزای مجزای متعددی ساخته میشدند اما از اواسط دهه 1970، CPUها معمولاً روی یک مدار مجتمع منفرد به نام ریزپردازنده ساخته میشوند.

واحد حساب مرکزی (Arithmetic logic unit) یا ALU

ALU قادر به انجام دو نوع عملیات است: حسابی و منطقی. مجموعه عملیات حسابی که یک ALU خاص پشتیبانی میکند ممکن است به جمع و تفریق محدود باشد، یا ممکن است شامل ضرب، تقسیم، توابع مثلثاتی مثل سینوس و کسینوس و غیره و ریشه دوم نیز باشد. برخی تنها میتوانند روی اعداد کامل (صحیح) کار کنند، درحالیکه برخی دیگر از ممیز شناور برای نمایش اعداد حقیقی استفاده میکنند، البته با دقت محدود. با این حال، هر رایانه ای که قادر به انجام ساده ترین عملیات باشد را میتوان بگونه ای برنامه ریزی کرد که عملیات پیچیده تر را به گام هایی ساده بشکند که بتواند اجرا کند. بنابراین هر رایانه را میتوان برنامه ریزی کرد که هر عملیات حسابی را انجام دهد، گرچه اگر ALU عملیات را پشتیبانی نکند، زمان بیشتری لازم است. ALU همچنین میتواند اعداد را مقایسه کند و ارزش درستی بولی (صحیح یا غلط) را، بسته به اینکه یک عدد برابر با، بزرگتر از یا کوچکتر از عدد دیگر است، برگرداند (“آیا 64 بزرگتر از 65 است؟”). عملیات منطقی شامل منطق بولی است: و، یا، یای انحصاری و نقیض. این موارد میتوانند برای ساخت گزاره های شرطی و پردازش منطق بولی مفید باشند.

رایانه های سوپراسکالر ممکن است دارای چند ALU باشند، که به آنها امکان پردازش همزمان چند دستورالعمل را میدهد. پردازنده های گرافیکی و رایانه های دارای ویژگی های SIMD و MIMD اغلب ALUهایی دارند که میتوانند روی بردارها و ماتریس ها حساب انجام دهند.

حافظه (Memory)

حافظه رایانه را میتوان به عنوان فهرستی از سلولها در نظر گرفت که ممکن است در آنها  اعداد را قرار داد یا خواند. هر سلول دارای یک “آدرس” شماره دار است و میتواند یک عدد منفرد را ذخیره کند. میتوان به رایانه دستور داد “عدد 123 را در سلول 1357 قرار بده ” یا “عددی را که در سلول 1357 قرار دارد با عدد داخل سلول 2468 جمع کن و جواب را داخل سلول 1595 قرار بده.” اطلاعات ذخیره شده در حافظه عملاً میتواند نمایانگر هرچیزی باشد. حروف، اعداد، حتی دستورالعمل های رایانه ای را میتوان به همین سادگی در حافظه قرار داد. از آنجا که CPU میان انواع مختلف اطلاعات، تمایزی قائل نمیشود، این وظیفه نرم افزار است که به آنچه که از نظر حافظه صرفاً رشته ای از اعداد است، معنا بدهد.

تقریباً در تمام رایانه های مدرن، هر سلول حافظه برای ذحیره اعداد دودویی در گروه های هشت بیتی (به نام یک بایت) تنظیم میشود. هر بایت میتواند 256 عدد مختلف را نمایش دهد ( )؛ یا از 0 تا 255، یا از 127- تا 128+. برای ذخیره اعداد بزرگتر، چند بایت متوالی ممکن است مصرف شوند (معمولاً دو، چهار یا هشت). هنگامی که اعداد منفی لازم باشند، معمولاً به نماد متمم دو ذخیره میشوند. چینش های دیگری نیز ممکن هستند، اما معمولاً خارج از کاربردهایی ویژه یا چارچوب تاریخی، مشاهده نشده اند. رایانه میتواند هر نوع اطلاعاتی را در حافظه ذخیره کند، اگر بتوان آن را بطور عددی نمایش داد. رایانه های مدرن، بیلیون ها، حتی تریلیون ها بایت حافظه دارند.

CPU دارای نوع خاصی از سلولهای حافظه به نام رجیستر است که بسیار سریعتر از محدوده حافظه اصلی میتوان آنها را خواند و روی آنها نوشت. بسته به نوع CPU معمولاً بین دو و صد رجیستر وجود دارند. رجیسترها برای پُرنیازترین آیتم های داده ای استفاده میشوند تا هربار که داده ای نیاز باشد، از لزوم دسترسی به حافظه اصلی، اجتناب شود. از آنجا که همواره روی داده ها کار میشود،  کاهش لزوم دسترسی به حافظه اصلی (که اغلب از ALU و واحدهای کنترل کندتر است) سرعت رایانه را بسیار افزایش میدهد.

حافظه رایانه دارای دو نوع اصلی است:

  • حافظه دسترسی تصادفی یا رم (random-access memory)

  • حافظه فقط خواندنی یا رام (read-only memory)

هروقت که CPU دستور دهد میتوان رم را خواند و روی آن نوشت، اما رام از پیش توسط داده ها و نرم افزاری که هرگز تغییر نمیکنند بارگذاری شده، لذا CPU تنها میتواند از آن بخواند. رام معمولاً برای ذخیره دستورالعمل های راه اندازی اولیه رایانه استفاده میشود. بطور کلی، محتوای رم با خاموش شدن رایانه پاک میشود، اما رام محتوای خود را بدون محدودیت نگه میدارد. در یک PC، رام دارای برنامه ای ویژه به نام BIOS است که بارگذاری سیستم عامل را از درایو دیسک سخت به رم، هرگاه که رایانه خاموش یا ریست شود، رهبری میکند. در رایانه های نهفته، که اغلب دارای دیسک سخت نیستند، ممکن است تمام نرم افزار لازم در رام ذخیره شود. نرم افزار ذخیره شده روی رام را اغلب سفت افزار (فِرم وِر) مینامند، زیرا از نظر مفهومی بیشتر شبیه سخت افزار است تا نرم افزار. فلش مموری تمایز میان رام و رم را کمرنگ میکند، زیرا هنگامی که خاموش میشود داده های خود را نگه میدارد اما قابل بازنویسی هم است. با این حال معمولاً فلش بسیار کندتر از رم و رام معمولی است، لذا مصرف آن به کاربردهایی که سرعت زیاد در آنها الزامی نیست، محدود است.

در رایانه های پیچیده تر ممکن است یک یا چند حافظه کَش رم وجود داشته باشد، که از رجیسترها کندتر اما از حافظه اصلی سریعتر هستند. معمولاً رایانه های دارای این نوع کَش، برای انتقال خودکار داده های پُرنیاز به کش طراحی میشوند، اغلب بدون نیاز به دخالتی از جانب برنامه نویس.

ورودی/خروجی (I/O)

I/O ابزاری برای رایانه جهت تبادل اطلاعات با دنیای بیرون است. دستگاه هایی که ورودی یا خروجی را برای رایانه تامین میکنند، دستگاه جانبی نام دارند. در یک رایانه شخصی معمولی، دستگاه های جانبی شامل دستگاه های ورودی مثل صفحه کلید و موشواره، و دستگاه های خروجی شامل نمایشگر و چاپگر میشوند. درایوهای دیسک سخت، درایوهای دیسک فلاپی و درایوهای دیسک نوری هم به عنوان ورودی و هم به عنوان خروجی عمل میکنند. شبکه های رایانه ای نوع دیگری از I/O هستند. دستگاه های I/O معمولاً خود، رایانه هایی پیچیده هستند، که CPU و حافظه خود را دارند. یک واحد پردازنده گرافیکی ممکن است شامل پنجاه یا بیشتر، رایانه کوچک باشد که محاسبات لازم جهت نمایش گرافیک 3 بعدی را انجام میدهند. رایانه های رومیزی مدرن شامل رایانه های کوچکتر متعددی هستند که CPU اصلی را در انجام I/O یاری میدهند. یک نمایشگر صفحه مسطح ساخت 2016 خود دارای مدار رایانه است.

چندکارگی یا چند وظیفگی (Multitasking)

درحالیکه میتوان فرض کرد هر رایانه، یک برنامه غول آسای ذخیره شده در حافظه اصلی خود را اجرا میکند، در برخی سیستم ها لازم است به نظر برسد که چند برنامه همزمان اجرا میشوند. این عمل، توسط چندکارگی انجام میشود، یعنی تنظیم رایانه برای تعویض سریع میان اجرای هر برنامه به نوبت. یک ابزار برای انجام این کار، سیگنالی به نام وقفه است، که به تناوب باعث توقف اجرای دستورات فعلی رایانه و انجام کاری دیگر میشود. رایانه با یادآوری وضعیت خود پیش از وقفه، بعداً میتواند به آن کار بازگردد. اگر چند برنامه “همزمان” در حال اجرا باشند آنگاه مولد وقفه ممکن است در هر ثانیه چند صد وقفه ایجاد کند، که باعث میشود هر بار یک برنامه تعویض شود. از آنجایی که رایانه های مدرن معمولاً دستورالعمل ها را به مراتب سریعتر از ادراک انسان انجام میدهند، ممکن است به نظر برسد که برنامه های متعددی همزمان در حال اجرا هستند، اگرچه همواره فقط یک برنامه در هر لحظه اجرا میشود. این روش چندکارگی گاهی اوقات “اشتراک زمان” نامیده میشود زیرا هر برنامه به نوبت، بُرشی از زمان را بدست میاورد. پیش از دوران رایانه های ارزان، استفاده اصلی از چندکارگی برای ایجاد امکان استفاده از یک رایانه برای افراد متعدد بود. ظاهراً، چندکارگی باعث میشد رایانه ای که بین چند برنامه تعویض میکرد، کندتر عمل کند، که با تعداد برنامه هایی که اجرا میکرد نسبت مستقیم داشت، اما بیشتر برنامه ها عمده وقت خود را صرف انتظار برای دستگاه های ورودی/خروجی کُند جهت تکمیل کار خود میکردند. اگر برنامه ای منتظر کاربر است که روی موشواره کلیک کند یا کلیدی را روی صفحه کلید فشار دهد، آنگاه هیچ “برش زمانی” بدست نمی آورد تا وقتی که اتفاقی که منتظر آن است بیفتد. این عمل، زمان را برای اجرای سایر برنامه ها آزاد میکند تا برنامه های متعددی بتوانند بدون افت چشمگیر سرعت، همزمان اجرا شوند.

چندپردازشی (Multiprocessing)

بعضی رایانه ها بگونه ای طراحی شده اند که کار خود را با یک پیکربندی چندپردازشی، میان چند CPU تقسیم کنند، تکنیکی که قبلاً فقط برای ماشین های بزرگ و قدرتمندی مثل ابررایانه ها، بزرگ رایانه ها و سرورها استفاده میشد. رایانه های لپتاپ و شخصی چندپردازشگری و چندهسته ای (چند CPU روی یک مدار مجتمع منفرد) امروزه فراگیر هستند، و در نتیجه، بطور فزاینده ای در بازارهای ارزان استفاده میشوند.

ابررایانه ها به ویژه، اغلب معماری هایی بسیار یکتا دارند که با معماری اساسی برنامه-انباشته و رایانه های چندمنظوره تفاوتی چشمگیر دارند. این رایانه ها معمولاً دارای هزاران CPU، اتصالات درونی سرعت بالای سفارشی، و سخت افزار ویژه هستند. به علت سازماندهی برنامه ایِ مقیاس بزرگی که برای بهره گیری مفید و همزمان از بیشتر منابعِ در دسترس لازم است، چنین طراحی هایی معمولاً تنها برای کارهای تخصصی مفید هستند. ابررایانه ها معمولاً در کاربردهای شبیه سازی مقیاس بزرگ، رندرینگ گرافیک، و رمزنگاری و نیز سایر کارهایی که به “موازی خجالت آور” موسوم هستند، استفاده میشوند.

نرم افزار

نرم افزار به بخش هایی از رایانه اشاره دارد که شکل فیزیکی ندارند، مثل برنامه ها، داده ها، پروتکل ها و غیره. نرم افزار بخشی از یک سامانه رایانه ای است که از اطلاعات رمزنگاشته یا دستورالعمل های رایانه ای تشکیل میشود، برخلاف سخت افزار فیزیکی که از آن، سامانه ساخته میشود. نرم افزار رایانه شامل برنامه های رایانه ای، کتابخانه ها و داده های اجراناپذیر مرتبط با آن، مثل مستندسازی آنلاین یا رسانه های دیجیتال میشود. نرم افزارها معمولاً به نرم افزار سیستم و نرم افزار کاربردی تقسیم میشود. نرم افزار و سخت افزار رایانه به یکدیگر نیاز دارند و هیچ کدام به خودی خود، استفاده ای واقع بینانه ندارند. هنگامی که نرم افزار، در سخت افزاری ذخیره شود که به سادگی نتوان آن را تغییر داد، مثل رام BIOS در یک رایانه سازگار IBM، گاهی اوقات آن را “سفت افزار” هم مینامند.

نرم افزارهای کاربردی

برنامه ها

ویژگی معرف رایانه های امروزی که آنها را از همه ماشینهای دیگر متمایز میکند، برنامه پذیری آنهاست. این بدان معناست که نوعی از دستورالعمل ها (برنامه) را میتوان به رایانه داد، و رایانه آنها را پردازش میکند. رایانه های مدرن مبتنی بر معماری وون نیومن اغلب کد ماشینی را به شکل یک زبان برنامه نویسی دستوری دارند. به عبارت ساده تر، یک برنامه رایانه ای ممکن است فقط چند دستورالعمل، یا چند میلیون دستورالعمل داشته باشد، مثل برنامه های پردازشگر لغت و مرورگرهای وب. یک رایانه امروزی معمولی میتواند میلیاردها دستورالعمل را در ثانیه (گیگافلاپس) اجرا کند و طی سالیان سال کار، به ندرت اشتباهی مرتکب میشود. برنامه های رایانه ای بزرگ که از میلیون ها دستورالعمل ساخته شده اند ممکن است چند سال تیم های برنامه نویسی را درگیر کدنویسی کنند، و به علت پیچیدگی کار تقریباً قطعاً شامل خطا هستند.

معماری برنامه ذخیره شده (Stored program architecture)

این بخش در مورد بیشتر رایانه های “ماشین دسترسی تصادفی-بنیان” یا  RAM machine–based computers کاربرد دارد.

در بیشتر موارد، دستورالعمل های رایانه ای ساده هستند: عددی را با عددی دیگر جمع کن، داده ای را از یک مکان به مکان دیگر منتقل کن، پیامی را به یک دستگاه خارجی بفرست، و غیره. این دستورالعمل ها از حافظه رایانه خوانده میشوند و معمولاً به ترتیبی که داده میشوند، اجرا میشوند. با این حال، دستورهای ویژه ای وجود دارند که به رایانه میگویند به مکانی دیگر در برنامه در جلو یا عقب بپرد و اجرای برنامه را از آنجا ادامه دهد. این دستورات، “پرش” (یا شاخه) نام دارند. علاوه براین، دستورات پرشی را میتوان شرطی کرد تا بتوان رشته های متفاوتی از دستورات را، بسته به برخی نتایج محاسبات قبلی یا یک رویداد بیرونی، استفاده نمود. بسیاری از رایانه ها با تدارک دیدن نوعی پرش که مکانی که از آن پریدند را “به یاد می آورند” و دستوری دیگر برای بازگشت به دستور تالی آن دستور پرش، مستقیماً از زیرروال ها پشتیبانی میکنند.

اجرای برنامه را میتوان به خواندن کتاب مرتبط ساخت. در حالیکه فرد معمولاً هر لغت و خط را به ترتیب میخواند، میتواند گاهی اوقات به مکانی عقبتر در متن بپرد یا بخش های کسل کننده را رد کند. بطور مشابه، یک رایانه ممکن است گاهی اوقات به عقب برگردد و دستورالعمل های یک بخش از برنامه را بارها و بارها تکرار کند تا زمانی که یک شرط درونی برآورده شود. این عمل، جریان کنترل درون برنامه نامیده میشود و چیزی است که به رایانه امکان اجرای تکراری کارها را بدون دخالت انسان میدهد.

برای مقایسه، فردی با یک ماشین حساب جیبی میتواند یک عملیات حسابی ابتدایی مثل جمع دو عدد را با تنها فشار چند دکمه انجام دهد. اما برای جمع تمام اعداد از 1 تا 1000 هزاران بار به فشار دکمه ها و زمانی زیاد نیاز دارد و وقوع اشتباه تقریباً قطعی است. از طرف دیگر، میتوان یک رایانه را برنامه ریزی نمود تا این کاررا با تنها چند دستور ساده انجام دهد. مثال زیر به زبان اسمبلی MIPS نوشته شده است.

1
2
3
4
5
6
7
8
9
10
11
  begin:
  addi$8,$0,0           #initializesumto0
  addi$9,$0,1           #setfirstnumbertoadd=1
  loop:
  slti$10,$9,1000       #checkifthenumberislessthan1000
  beq$10,$0,finish      #ifoddnumberisgreaterthannthenexit
  add$8,$8,$9           #updatesum
  addi$9,$9,1           #getnextnumber
  jloop                   #repeatthesummingprocess
  finish:
  add$2,$8,$0           #putsuminoutputregister

 

هنگامی که به رایانه گفته شود که این برنامه را اجرا کند، رایانه عمل تکراری جمع را بدون دخالت انسان انجام میدهد. رایانه تقریباً هرگز اشتباه نمیکند و یک PC مدرن میتواند این کار را در کسری از ثانیه انجام دهد.

کد ماشینی

در بیشتر رایانه ها، هر دستور به عنوان کد ماشینی ذخیره میشود و به آن شماره ای یکتا (کد عملیاتی آن یا آپکد به اختصار) داده میشود. دستور جمع کردن دو عدد یک آپکد دارد؛ دستوز ضرب آنها کدی دیگر دارد و به همین ترتیب بقیه. ساده ترین رایانه ها چند دستورالعمل متفاوت را میتوانند اجرا کنند؛ رایانه های پیچیده تر چندصد دستورالعمل برای انتخاب کردن دارند، هر یک با کد عددی یکتا. از آنجا که حافظه رایانه قادر به ذخیره سازی اعداد است، میتواند کدهای دستوری را نیز ذخیره کند. این نکته، منجر به این واقعیت مهم میشود که کل برنامه ها (که چیزی جز فهرست هایی از این دستورات نیستند) را میتوان به عنوان فهرست هایی از اعداد، نمایش داد و برنامه ها مثل داده های عددی، درون رایانه قابل اداره هستند. مفهوم اساسی ذخیره سازی برنامه در حافظه رایانه، درکنار داده هایی که روی آنها عمل میکنند، شالوده معماری وون نیومن، یا معماری برنامه-انباشته است. در برخی موارد، رایانه ممکن است قسمتی از برنامه خود، یا کل آن را در حافظه ذخیره کند که جدا از داده هایی که روی آن کار میکند، نگهداشته میشود. این را به افتخار رایانه هاروارد مارک 2، معماری هاروارد مینامند. رایانه های مردن وون نیومن برخی ویژگی های معماری هاوارد را در طراحی خود نشان میدهند، مثل کَش های CPU.

گرچه نوشتن برنامه های رایانه ای به عنوان فهرست های بلند از اعداد، ممکن است (زبان ماشین)، و اگرچه این تکنیک در رایانه های اولیه متعددی استفاده شده است، اما بسیار طاقت فرسا است و در عمل پتانسل خطا دارد، به ویژه در برنامه های پیچیده. در عوض، به هر دستور اساسی میتوان نامی کوتاه داد که نمایانگر عملکرد آن باشد و به راحتی بتوان آن را به خاطر سپرد –  مخففی مثل ADD، SUB، MULT یا JUMP. این مخفف ها بطور جمعی، به عنوان زبان اسمبلی (هم گذاری) یک رایانه شناخته میشوند.  تبدیل برنامه های نوشته شده با زبان اسمبلی به چیزی که رایانه بتواند متوجه شود (زبان ماشین)، معمولاً توسط یک برنامه رایانه ای به نام اسمبلر (هم گزار) انجام میشود.

زبان برنامه نویسی

زبان های برنامه نویسی، راه های متنوعی برای تصریح برنامه ها جهت اجرا توسط رایانه ایجاد میکنند. برخلاف زبان های طبیعی، زبان های برنامه نویسی بگونه طراحی میشوند که اجازه هیچ ابهامی را ندهند و مختصر و مفید باشند. این زبان ها صرفاً نوشتاری هستند و اغلب خواندن آنها با صدای بلند سخت است. آن ها معمولاً قبل از اجرا توسط یک کامپایلر یا اسمبلر به کد ماشینی تبدیل میشوند، یا توسط یک مفسر در زمان اجرا مستقیماً ترجمه میشوند. بعضی اوقات برنامه ها توسط روشی ترکیبی از دو تکنیک فوق، اجرا میشوند.

زبان های برنامه نویسی سطح پایین (Low-level languages)

زبان های ماشینی و زبان های اسمبلیِ نماینده آنها (که بطور جمعی زبان های برنامه نویسی سطح پایین نامیده میشوند) به یکتایی برای نوع خاصی از رایانه، گرایش دارند. برای مثال، یک رایانه با معماری ARM (مثل یک گوشی هوشمند یا کنسول بازی دستی) نمیتواند زبان ماشینی یک CPU x86 را که ممکن است در یک PC قرار داشته باشد، بفهمد.

زبان های برنامه نویسی سطح بالا/زبان نسل سوم (High-level languages/third generation language)

نوشتن برنامه های بلند به زبان اسمبلی، گرچه بسیار آسانتر از زبان ماشین، اما اغلب دشوار و خطاپذیر است. بنابراین بیشتر برنامه های عملی، به زبان های برنامه نویسی سطح بالای انتزاعی تری که قادر به بیان مطلوب تر نیازهای برنامه نویس هستند، نوشته میشوند (و لذا به کاهش خطای برنامه نویس کمک میکنند). زبان های سطح بالا معمولاً با استفاده از یک برنامه رایانه ای دیگر به نام کامپایلر به زبان ماشین (یا گاهی اوقات ابتدا به زبان اسمبلی و بعد به زبان ماشین)     “کامپایل” میشوند. زبان های سطح بالا در مقایسه با زبان اسمبلی ارتباط کمتری با نحوه عملکرد رایانه مقصد دارند، و بیشتر به زبان و ساختار مسئله(هایی) که توسط برنامه نهایی حل میشود، مربوط هستند. بنابراین اغلب ممکن است که از کامپایلرهایی متفاوت برای ترجمه یک برنامه زبان سطح بالا به زبان ماشینی انواع متعددی رایانه استفاده کرد. این بخشی از ابزاری است که توسط آن بازی های ویدیویی نرم افزارگونه را میتوان برای معماری های رایانه ای مختلف مثل رایانه های شخصی و کنسول های بازی متنوع عرضه کرد.

زبان های برنامه نویسی نسل چهارم (Fourth-generation languages)

زبان های نسل چهارم (4GL) از زبان های 3G کمتر رَویه ای هستند. مزیت 4GL این است که این زبان ها روش هایی برای بدست آوردن اطلاعات بدون نیاز به کمک مستقیم برنامه نویس ایجاد میکنند.

طراحی برنامه یا طراحی نرم افزار (Program design)

طراحی برنامه های کوچک، نسبتاً ساده است و شامل تحلیل مسئله، گردآوری ورودی ها، استفاده از ساختارهای برنامه نویسی درون زبان ها، ابداع یا استفاده از رَویه ها و الگوریتم های شناخته شده، تامین داده برای دستگاه های خروجی و راه حل های کاربردی برای مسئله میشود. با بزرگتر و پیچیده تر شدن مسائل، ویژگی هایی از قبیل زیربرنامه ها، مدول ها، مستندسازی سوری، و پارادایم های جدید مثل برنامه نویسی شیء گرا پدیدار میشوند. برنامه های بزرگی که شامل هزاران خط کد هستند نیازمند متدلوژی های نرم افزاری سوری میباشند.  توسعه سیستم های نرم افزاری بزرگ، یک چالش فکری بزرگ را ایجاد میکند. بطور تاریخی، تولید نرم افزاری با قابلیت اطمینان نسبتاً بالا با هزینه و جدول زمانی قابل پیش بینی، دشوار بوده است؛ رشته دانشگاهی و حرفه ای مهندسی نرم افزار بطور ویژه ای روی این چالش، تمرکز میکند.

باگ ها

خطاهای برنامه های رایانه ای را “باگ” (حشره) مینامند. ممکن است این خطاها ناچیز باشند و مفید بودن برنامه را تحت تاثیر قرار ندهند، یا تنها اثراتی جزئی داشته باشند. اما در برخی موارد، ممکن است باعث “هنگ کردن” برنامه یا کل سیستم شوند، نسبت به ورودی ها مثل کلیک موشواره یا فشار کلیدها بی پاسخ شوند، کاملاً شکست بخورند یا کرش کنند. حتی در غیر اینصورت،  باگ های خوشخیم ممکن است گاهی اوقات توسط یک کاربر بهره جو با نیتی بد که کدی مخرب را برای بهره گیری از یک باگ و ایجاد اختلال در عملکرد مناسب یک رایانه مینویسد، مورد سوءاستفاده قرار بگیرند. باگ ها معمولاً تقصیر رایانه نیستند. از آنجا که رایانه های تنها دستورالعمل هایی که به آن ها داده شده است را اجرا میکنند، باگ ها تقریباً همواره نتیجه خطای برنامه نویسی یا سهل انگاری در طراحی برنامه هستند. فرمانده نیروی دریایی گریس هوپر، که یک دانشمند رایانه امریکایی و توسعه دهنده اولین کامپایلر بود، پس از پیدا شدن یک حشره مرده که باعث اتصال کوتاه یک رله در رایانه هاروارد مارک 2 در سپتامبر 1947 شده بود، اولین فردی شناخته میشود که از عبارت “باگ” در رایانش استفاده کرد.

سفت افزار (Firmware)

سفت افزار، فناوری ای است که از ترکیب سخت افزار و نرم افزار برخودار است، مثل تراشه BIOS درون یک رایانه. این تراشه (سخت افزار) روی بردمادر قرار دارد و تنظیمات BIOS (نرم افزار) را در خود، ذخیره دارد.

شبکه و اینترنت

از دهه 1950 رایانه ها برای انتقال اطلاعات میان چند محل، مورد استفاده بوده اند. سامانه SAGE ارتش امریکا اولین مثال از یک چنین سیستم مقیاس بزرگی بود، که منجر به ظهور تعدادی از سیستم های تک منظوره تجاری مثل Sabre شد. در دهه 1970، مهندسان رایانه در موسسات تحقیقاتی در سراسر امریکا شروع به اتصال رایانه های خود توسط فناوری مخابرات راه دور کردند. این تلاش، توسط آرپا (اکنون دارپا)، سرمایه گذاری شد و شبکه رایانه ای حاصل، آرپانت نامیده شد. فناوری هایی که آرپانت را ممکن ساختند، گسترش و تحول پیدا کردند.

با گذر زمان، این شبکه از موسسات نظامی و دانشگاهی فراتر رفت و به نام اینترنت شناخته شد. ظهور شبکه، باعث بازتعریف ماهیت و مرزهای رایانه شد. برنامه ها و سیستم های عامل رایانه ای اصلاح شدند تا شامل توانایی تعریف و دسترسی به منابع سایر رایانه ها در شبکه بشوند، مثل دستگاه های جانبی، اطلاعات ذخیره شده و مشابه آن، به عنوان توسعه هایی از منابع یک رایانه منفرد. این تسهیلات در ابتدا تنها در اختیار افرادی که در محیط های با تکنولوژی بالا کار میکردند، قرار گرفت، اما در دهه 1990 گسترش برنامه هایی مثل رایانامه (ایمل) و تور جهان گستر (World Wide Web)، در کنار توسعه فناوری های شبکه ای ارزان و سریع مثل اترنت و ADSL، منجر به فراگیری تقریباً همه جانبه شبکه های رایانه ای شد.  در واقع، تعداد رایانه های تحت شبکه بطور بی سابقه ای در حال رشد است. کسر بسیار بزرگی از رایانه های شخصی، مرتب به اینترنت وصل میشوند تا اطلاعات را مخابره و دریافت کنند. شبکه های “وایرلس” (بی سیم)، که اغلب از شبکه های تلفن های همراه استفاده میکنند، به این معنا بوده اند که شبکه بطور فزاینده ای در حال فراگیر شدن است، حتی در محیط های رایانش همراه.

 

رایانه های نامتعارف (Unconventional computers)

نیازی نیست که رایانه الکترونیکی باشد، یا پردازنده، رم یا حتی دیسک سخت داشته باشد. گرچه استفاده عمومی از لغت “رایانه” (کامپیوتر) مترادف با رایانه شخصی الکترونیکی است، اما تعریف مدرن رایانه این است: “دستگاهی که محاسبه میکند، مخصوصاً یک ماشین ]معمولاً[ الکترونیکی برنامه پذیر که عملیات ریاضی یا منطقی را با سرعت بالا انجام میدهد یا اطلاعات را جمع آوری، ذخیره، مرتبط یا پردازش میکند.” هر دستگاهی که پردازش اطلاعات انجام دهد، یک رایانه است، به ویژه اگر این پردازش، هدفمند باشد.

رایانش نامتعارف (Unconventional computing)

بطور تاریخی، رایانه ها از رایانه های مکانیکی و در نهایت از لامپ های خلاء به ترانزیستورها، تحول پیدا کردند. با این حال، سامانه های محاسباتی مفهومی که به انعطاف پذیری یک رایانه شخصی باشند، تقریباً از هرچیزی قابل ساختن هستند. به عنوان یک مثال معروف، میتوان از توپ های بیلیارد، یک رایانه ساخت (رایانه توپ بیلیاردی). بطور واقع گرایانه تر، رایانه های مدرن از ترانزیستورهای از جنس نیم رسانای طرح نگار نوری، ساخته میشوند.

آینده

پژوهش های پویایی جهت ساخت رایانه از فناوری های جدید و نویدبخش مثل رایانه های اُپتیکال، رایانه های DNA، رایانه های عصبی و رایانه های کوانتومی در حال انجام است. بیشتر رایانه ها، جهانی هستند و میتوانند هر تابع محاسبه پذیری را محاسبه کنند، و تنها محدودیت آن ها ظرفیت حافظه و سرعت محاسبه است. با این حال طراحی های متفاوتی از رایانه میتواند عملکردی بسیار متفاوت برای مسائلی خاص ارائه دهند؛ برای مثال رایانه های کوانتومی میتوانند بطور بالقوه برخی الگوریتم های رمزنگاری مدرن را با سرعتی بسیار بالا بشکنند (توسط فاکتورگیری کوانتومی).

پارادایم های معماری کامپیوتر

معماری های رایانه ای متعددی وجود دارند:

  • رایانه کوانتومی در مقابل رایانه شیمیایی

  • پردازشگر اسکالر در مقابل پردازشگر برداری

  • رایانه های دسترسی حافظه غیر یکپرچه (NUMA)

  • ماشین رجیستر در مقابل ماشین پشته ای

  • معماری هاروارد در مقابل معماری وون نیومن

  • معماری سلولی

در بین تمام این ماشین های انتزاعی، رایانه کوانتومی بیشترین نوید را برای ایجاد انقلابی در رایانش میدهد. دروازه های منطقی، مفهومی مشترک هستند  که میتوانند روی بیشتر پارادایم های دیجیتال یا آنالوگ فوق، اِعمال شوند. توانایی ذخیره و اجرای فهرست های دستوری که برنامه نام دارند، رایانه ها را بسیار همه فن حرف، و از ماشین حساب ها متمایز میکند. رساله چرچ-تورینگ، بیانی ریاضی از این همه فن حریفی است: هر رایانه ای با یک توانایی کمینه (تورینگ کامل بودن) بطور اصولی، توانایی اجرای کارهایی که هر رایانه دیگری میتواند انجام دهد را دارد. لذا هر نوع رایانه ای (نوت بوک، ابر رایانه، اتوماتون سلولی و غیره) توانایی اجرای کارهای محاسباتی یکسانی را دارد، به شرطی که زمان و ظرفیت ذخیره کافی داشته باشد.

هوش مصنوعی

رایانه مسائل را دقیقاً به شکلی که برایشان برنامه نویسی شده، حل میکند، بدون ملاحظه بازدهی، جواب های دیگر، میانبرهای احتمالی یا خطاهای احتمالی در کد. برنامه های رایانه ای که یادگیری میکنند و تطابق پیدا میکنند، بخشی از رشته نوظهور هوش مصنوعی و یادگیری ماشین هستند. محصولات مبتنی بر هوش مصنوعی عموماً به دو دسته بزرگ تقسیم میشوند: سیستم های قاعده-بنیان و سیستم های شناسایی الگو. سیستم های قاعده بنیان، سعی در نمایش قواعد مورد استفاده توسط متخصصین انسانی دارند و توسعه آن ها معمولاً هزینه بر است. سیستم های الگو-بنیان از داده های مربوط به مسئله جهت تولید نتایج  استفاده میکنند. مثال هایی از سیستم های الگو بنیان شامل شناسایی صدا، شناسایی فونت، ترجمه و رشته نوظهور بازاریابی آنلاین میشود.

 

ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 205
  • کل نظرات : 0
  • افراد آنلاین : 4
  • تعداد اعضا : 1
  • آی پی امروز : 32
  • آی پی دیروز : 62
  • بازدید امروز : 36
  • باردید دیروز : 68
  • گوگل امروز : 0
  • گوگل دیروز : 1
  • بازدید هفته : 104
  • بازدید ماه : 3,170
  • بازدید سال : 11,164
  • بازدید کلی : 83,941