معماری کامپیوتر همواره یکی از مباحث جذاب دنیای فناوری اطلاعات بوده است و دانستن اینکه معماری این فضا چگونه است می تواند بسیار جذاب باشد.
این مقاله، اولین مقاله از مجموعه "چطور برنامه نویسی یاد بگیریم" میباشد که شاید برای شما جذاب باشد تا بدانید برای برنامه نویسی نیاز به دانستن معماری کامپیوتر نیز می باشد اما باید بدانید که بسیار مهم است. همچنین اصول کار با دادهها و مفاهیم مربوط به آنرا نیز باید فرا بگیرید تا درک درستی از شروع کدنویسی داشته باشید.
یکی از شگفتانگیزترین چیزها درباره زبانهای برنامه نویسی مدرن این است که آنها به ما این امکان را می دهند تا بدون نگرانی درباره جزئیات زیر ساختی سخت افزار و دانستن عملیاتهای پشت صحنه (برای اغلب قسمتها)، کاربردهای پیچیده وعجیبی ایجاد کنیم.
این موضوع را انتزاع یا abstraction مینامند که به معنای توانایی کار با ابزار سطح بالاتر (در این مورد زبانهای برنامه نویسی) بدون نیاز به درک پیچیدگیها است که مهارتهای ما را تسهیل و محدود می سازد.
با این حال که زبانهای برنامه نویسی مدرن ما را از پیچیدگیها دور می کنند، به معنای این نیست که دانستن اصول پایهای که کد شما بر روی آن اجرا می شود، بیهوده می باشد. حداقل آگاهی از چند نکته کوچک و جالب به شما کمک مینماید تا بتوانید مشکلاتی که درمورد مصرف بالای CPU و کاربرد بهینه RAM می باشد را در برنامههای خود ردیابی نمایید.
بنابراین، در اینجا حداقل نیازهای شما از اصول اولیه معماری کامپیوتر برای شروع، آورده شده است:
معماری کامپیوتر
پردازنده مرکزی یا CPU
مهم ترین قطعه کامپیوتر شما روی ریزتراشهها یا microchips (که به عنوان مدارهای یکپارچه نیز شناخته می شوند) قراردارند.
ریزتراشهها برای عملکرد به یک جزء الکتریکی به نام ترانزیستور متکی هستند. ترانزیستورها کلیدهای الکتریکی کوچکی هستند که در هر لحظه یا خاموش (0) یا روشن (1) هستند. یک microchip می تواند حاوی میلیونها یا میلیاردها ترانزیستور کوچک باشد که روی آن تعبیه شده است.
اکثر کامپیوترهای مدرن دارای یک ریزتراشه به نام واحد پردازش مرکزی (CPU) هستند. می توانید آن را به عنوان مغز کامپیوتر در نظر بگیرید که بیشتر وظایف محاسبه اعداد و کارهای منطقی که کامپیوتر انجام میدهد را کنترل کند.
هر CPU چیزی به نام مجموعه دستورالعمل یا Instruction set دارد که مجموعه ای از دستورات باینری (صفر و یک) است که CPU آن را درک می کند. خوشبختانه، ما واقعاً نیازی به نگرانی در مورد اینها به عنوان توسعه دهندگان نرم افزاری نداریم! این همان قدرت انتزاع در زبانهای برنامه نویسی مدرن است.
اگر CPU مرکز منطقی مغز است، داشتن حافظه نیز برای ذخیره موقت یا طولانی مدت اطلاعات مفید است.
حافظه دسترسی تصادفی (RAM)
کامپیوترها دارای حافظه دسترسی تصادفی (RAM) به عنوان "حافظه کاری" (یا حافظه کوتاه مدت) برای ذخیره اطلاعات هستند که به طور فعال توسط برنامههای در حال اجرا استفاده می شود.
RAM مجموعهای از آدرس های حافظه است که میتوان از آنها برای ذخیره بیتهای داده استفاده کرد. در زبانهای قدیمیتر مانند C، برنامهنویسان به کار مستقیم با آدرسهای حافظه با استفاده از قابلیتی به نام اشارهگر یا pointers دسترسی دارند، اما در زبانهای مدرنتر این نادر است.
Hard Disk یا حافظه جانبی
درنهایت، دست روی بخشی می گذاریم که مطمئنا با آن آشنایی دارید- هارد درایو (حافظه جانبی). در مقایسه با مغز، نشان دهنده حافظه طولانی مدت می باشد. یک هارد درایو وسیله داخلی یا خارجی است که دادههایی که میبایست حتی بعد از خاموش شدن کامپیوتر، باقی بمانند.
اصول کار با دادهها
حالا وقت آن رسیده که اجازه دهید کمی در مورد دادهها صحبت کنیم. اما دقیقاً منظور از کلمه داده یا Data چیست؟
بصورت حرفه ای/تخصصی، دادهها را چیزهایی مانند اسناد متنی، تصاویر، فیلم ها، ایمیل ها، فایل ها و پوشه ها در نظر می گیریم. همه ساختارهای داده فایلهایی هستند که ما هر روز در کامپیوتر خود ایجاد و ذخیره میکنیم.
اما به طور دقیق، یک تراشه کامپیوتری (مانند تراشه CPU یا RAM) هیچی از "تصویر" یا "ویدئو" نمی داند!
از منظر یک تراشه، همه این ساختارها به صورت دنبالههای طولانی از یک و صفر ذخیره می شوند. به این یکها و صفرها بیت (bit) می گویند.
بیتها معمولاً هر بار در یک مجموعه هشت تایی ذخیره می شوند که به عنوان بایت (Byte) شناخته می شوند. یک بایت به سادگی دنبالهای از هشت بیت است، مانند 00000001، 01100110، یا 00001111. نمایش اطلاعات به این روش، نمایش باینری (Binary) نامیده می شود.