زبانهاي برنامهنويسي
دستورالعملها
هر رايانه تنها داراي يك مجموعه كم تعداد از دستورالعملهاي ساده و تعريف شده ميباشد. از انواع پركاربردشان ميتوان به دستورالعمل «محتواي خانه ۱۲۳ را در خانه ۴۵۶ كپي كن!»، «محتواي خانه ۶۶۶ را با محتواي خانه ۰۴۲ جمع كن، نتايج را در خانه ۰۱۳ كن!»، «اگر محتواي خانه ۹۹۹ برابر با صفر است، به دستورالعمل واقع در خانه ۳۴۵ رجوع كن!».
دستورالعملها در داخل رايانه بصورت اعداد مشخص شدهاند - مثلاً كد دستور العمل (copy instruction) برابر ۰۰۱ ميتواند باشد. مجموعه معين دستورالعملهاي تعريف شده كه توسط يك رايانه ويژه پشتيباني ميشود را زبان ماشين مينامند. در واقعيت، اشخاص معمولاً به [زبان ماشين]] دستورالعمل نمينويسند بلكه بيشتر به نوعي از انواع سطح بالاي زبانهاي برنامهنويسي، برنامهنويسي ميكنند تا سپس توسط برنامه ويژهاي (تفسيرگرها (interpreters) يا همگردانها (compilers) به دستورالعمل ويژه ماشين تبديل گردد. برخي زبانهاي برنامهنويسي از نوع بسيار شبيه و نزديك به زبان ماشين كه اسمبلر (يك زبان سطح پايين) ناميده ميشود، استفاده ميكنند؛ همچنين زبانهاي سطح بالاي ديگري نيز مانند پرولوگ نيز از يك زبان انتزاعي و چكيده كه با زبان ماشين تفاوت دارد بجاي دستورالعملهاي ويژه ماشين استفاده ميكنند.
● معماريها
در رايانههاي معاصر واحد محاسبه و منطق را به همراه واحد كنترل در يك مدار مجتمع كه واحد پردازشي مركزي (CPU) ناميده ميشود، جمع نمودهاند. عموما، حافظه رايانه روي يك مدار مجتمع كوچك نزديك CPU قرار گرفته. اكثريت قاطع بخشهاي رايانه تشكيل شدهاند از سامانههاي فرعي (به عنوان نمونه، منبع تغذيه) و يا دستگاههاي ورودي/خروجي.
برخي رايانههاي بزرگتر چندين CPU و واحد كنترل دارند كه بصورت همزمان با يكديگر درحال كارند. اينگونه رايانهها بيشتر براي كاربردهاي پژوهشي و محاسبات علمي بكار ميروند.
كارايي رايانهها بنا به تئوري كاملاً درست است. رايانه دادهها و دستورالعملها را از حافظهاش واكشي (fetch) ميكند. دستورالعملها اجرا ميشوند، نتايج ذخيره ميشوند، دستورالعمل بعدي واكشي ميشود. اين رويه تا زماني كه رايانه خاموش شود ادامه پيدا ميكند. واحد پردازنده مركزي در رايانههاي شخصي امروزي مانند پردازندههاي شركت اي-ام-دي و شركت اينتل از معماري موسوم به Pipeline استفاده ميشود و در زماني كه پردازنده در حال ذخيره نتيجه يك دستور است مرحله اجراي دستور قبلي و مرحله واكشي دستور قبل از آن را آغاز ميكند. همچنين اين رايانهها از سطوح مختلف حافظه نهانگاهي استفاده ميكنند كه در زمان دسترسي به حافظه اصلي صرفهجويي كنند.
● برنامهها
برنامه رايانهاي فهرستهاي بزرگي از دستورالعملها (احتمالاً به همراه جدولهائي از داده) براي اجرا روي رايانه هستند. خيلي از رايانهها حاوي ميليونها دستورالعمل هستند، و بسياري از اين دستورات به تكرار اجرا ميشوند. يك رايانه شخصي نوين نوعي (درسال ۲۰۰۳) ميتواند در ثانيه ميان ۲ تا ۳ ميليارد دستورالعمل را پياده نمايد. رايانهها اين مقدار محاسبه را صرف انجام دستورالعملهاي پيچيده نميكنند. بيشتر ميليونها دستورالعمل ساده را كه توسط اشخاص باهوشي «برنامه نويسان» در كنار يكديگر چيده شدهاند را اجرا ميكنند. برنامهنويسان خوب مجموعههايي از دستورالعملها را توسعه ميدهند تا يكسري از وظايف عمومي را انجام دهند(براي نمونه، رسم يك نقطه روي صفحه) و سپس آن مجموعه دستورالعملها را براي ديگر برنامهنويسان در دسترس قرار ميدهند. (اگر مايليد «يك برنامهنويس خوب» باشيد به اين مطلب مراجعه نماييد.)
رايانههاي امروزه، قادرند چندين برنامه را در آن واحد اجرا نمايند. از اين قابليت به عنوان چندكارگي (multitasking) نام برده ميشود. در واقع، CPU يك رشته دستورالعملها را از يك برنامه اجرا ميكند، سپس پس از يك مقطع ويژه زماني دستورالعملهايي از يك برنامه ديگر را اجرا ميكند. اين فاصله زماني اكثرا بهعنوان يك برش زماني (time slice) نام برده ميشود. اين ويژگي كه CPU زمان اجرا را بين برنامهها تقسيم ميكند، اين توهم را بوجود ميآورد كه رايانه همزمان مشغول اجراي چند برنامهاست. اين شبيه به چگونگي نمايش فريمهاي يك فيلم است، كه فريمها با سرعت بالا در حال حركت هستند و به نظر ميرسد كه صفحه ثابتي تصاوير را نمايش ميدهد. سيستم عامل همان برنامهاي است كه اين اشتراك زماني را بين برنامههاي ديگر تعيين ميكند.
● سيستم عامل
رايانه هميشه نياز دارد تا براي بكارانداختنش حداقل يك برنامه روي آن در حال اجرا باشد. تحت عملكردهاي عادي اين برنامه همان سيستم عامل يا OS است. سيستم يا سامانه عامل تصميم ميگيرد كه كدام برنامه اجرا شود، چه زمان، از كدام منابع (مثل حافظه، ورودي/خروجي و ...) استفاده شود. همچنين سيستم عامل يك لايه انتزاعي بين سخت افزار و برنامههاي ديگر كه ميخواهند از سخت افزار استفاده كنند، ميباشد، كه اين امكان را به برنامه نويسان ميدهد تا بدون اينكه جزئيات ريز هر قطعه الكترونيكي از سخت افزار را بدانند بتوانند براي آن قطعه برنامهنويسي نمايند. با تمام اين وجود كامپيوتر ها نمي توانند برخي از مسائل را حل كنند كه به اين مسائل حل نشدني گفته مي شود مانند مسائلي كه در مسير حلشان در حلقه بي نهايت مي افتند
برچسب: ،