نرم‌افزار

کامپیوتر از نظر نوع گرایش به دو بخش سخت‌افزار و نرم‌افزار تقسیم می‌شود. سخت‌افزار ”مجموعه‌ای از امکانات وسایل الکترونیکی و الکترومکانیک که کامپیوتر و سایر دستگاه‌های …

کامپیوتر از نظر نوع گرایش به دو بخش سخت‌افزار و نرم‌افزار تقسیم می‌شود.
سخت‌افزار ”مجموعه‌ای از امکانات وسایل الکترونیکی و الکترومکانیک که کامپیوتر و سایر دستگاه‌های جانبی آن را مانند صفحهٔ کلید و... تشکیل می‌دهند، سخت‌افزار نامیده می‌شود.“ بدیهی است که برای استفاده از کامپیوتر، مجموعهٔ ذکر شده به تنهائی کافی نیست. آنچه کامپیوتر را به‌عنوان ابزاری پرقدرت، سریع و سودمند قابل استفاده می‌سازد، بخش مهم‌تر کامپیوتر، یعنی نرم‌افزار می‌باشد. یک کامپیوتر هر قدر هم از لحاظ امکانات سخت‌افزاری غنی و کامل باشد، باز هم بدون نرم‌افزار چیزی جز یک جعبهٔ الکترونیک بی‌مصرف نخواهد بود و حتی شاید نتوان از نظر ظاهر بین آن و یک تلویزیون! تفاوتی قائل شد. به‌طور مثال می‌توان گفت که کامپیوتر بدون نرم‌افزار، مانند یک ماشین سواری نو و مدل بالا اما بدون راننده می‌باشد. همان‌طور که ماشین، بدون راننده حرکت نمی‌کند و در نتیجه استفاده از آن در جهت حمل و نقل ممکن نیست، کامپیوتر ـ و به‌طور کلی سخت‌افزار بدون نرم‌افزار ـ نیز قادر به انجام ساده‌ترین کار مانند جمع دو عدد یک رقمی نیست.
حال که اهمیت و جایگاه نرم‌افزا تا حدودی روشن شد، این سئوال پیش می‌آید: نقش نرم‌افزار در استفاده از کامپیوتر چیست که بدون آن به‌کارگیری کامپیوتر در جهت رفع نیازهای انسان غیرممکن تلقی می‌شود؟ برای پاسخ به این سئوال به ذکر مثال زیر می‌پردازیم:
فرض کنید مثلاً بخواهیم میانگین اعداد بین ۰ و ۶ را به کمک کامپیوتر به‌دست آوریم. برای اینکار اعمال زیر به ترتیب باید انجام شود:
۱) ابتدا باید برنامه‌ای نوشت شود که وظیفه‌اش دریافت پنج عدد از ۰ تا ۶ و جمع کردن آنها با هم، تقسیم حاصل جمع بر عدد ۵ و نگهداری عدد محاسبه شده (میانگین) در متغیری مانند X می‌باشد. توجه دارید که این برنامه از قبل در کامپیوتر موجود نبوده است.
۲) برنامهٔ فوق باید از طریق دستگاه ورودی ـ مثلاً صفحهٔ کلید ـ به منظور نگهداری در حافظه وارد آن گردد. در این مرحله به‌صورتی باید روشن شود که برنامهٔ ذکر شده در چه ناحیه‌ای از حافظه ذخیره می‌شود، به‌عبارت ساده‌تر آدرس ناحیه‌ای از حافظه که برنامه در آنجا قرار می‌گیرد باید معلوم شود. این‌کار از عهدهٔ واحد حافظه به تنهائی و یا واحد پردازش مرکزی که هر دو اجزائی سخت‌افزاری هستند، بر نمی‌آید بنابراین برنامهٔ دیگری خاص این هدف باید در دست باشد.
۳) همانطور که در بخش سخت‌افزار نیز به آن اشاره گردید، اطلاعات ورودی که در این مثال شامل برنامه، اعداد بین ۱ تا ۶، فرمان عملیات جمع و تقسیم و متغیری به نام X می‌شود، باید از طریق دستگاه ورودی وارد و پس از انجام عملیات لازم نتیجهٔ آن برای مشاهدهٔ کار بر روی دستگاه خروجی، مثلاً صفحهٔ نمایش، نشان داده شود. این‌گونه کارها نیز توسط سخت‌افزار به تنهائی عملی نمی‌باشد و برنامه‌های ویژه‌ای را می‌طلبد.
با توجه به موارد ذکر شده می‌توان نتیجه گرفت که اجزاء سخت‌افزاری بدون برنامه‌های مورد نیاز که به مجموعهٔ آنها اصطلاحاً ”نرم‌افزار“ می‌گوئیم، نمی‌توانند کاری انجام دهند. به همین دلیل امروزه می‌بینیم که سازندگان کامپیوتر در اقصی نقاط جهان، تولیدات خود را همراه تعدادی نرم‌افزارهای لازم و مفید عرضه می‌کنند. بنابراین به‌عنوان یک تعریف کلی از نرم‌افزار می‌توان گفت: ”کلیهٔ برنامه‌هائی را که برای به راه انداختن، فعال‌کردن و در نتیجه به‌کار گرفتن اجزای سخت‌افزاری کامپیوتر، به‌کار بسته می‌شوند نرم‌افزار می‌نامیم.“
● تقسیم‌‌بندی نرم‌افزارها
قبل از دسته‌بندی نرم‌افزارها باید با مفهوم دقیق برنامه به‌خوبی آشنا شویم. منظور از برنامه تعدادی دستورالعمل اجرائی مشخص است که برای رسیدن به هدف خاصی نوشته می‌شود و توسط کامپیوتر به اجرا در می‌آید. به‌طوری‌که در پایان اجرای این دستور‌العمل‌ها، نتیجه لازم و مورد انتظار برنامه‌نوس و یا کاربر به‌دست می‌آید. مثالی بزنیم: فرض کنید می‌خواهیم برنامهٔ مربوط به محاسبهٔ میانگین اعداد ۰ تا ۶ را بنویسیم.
بی‌تردید با اندکی توجه می‌توانید اولاً مرز وظایف نرم‌افزار و سخت‌افزار را ببینید، ثانیاً به اهمیت و ارزش‌های برنامه و یا نرم‌افزار پی ببرید. به‌طور مثال وقتی می‌گوئیم، مقدار صفر را در A قرار بده (سعی کنید تا علت صفرکردن متغیر A را در ابتدای برنامه پیدا کنید.) اصولاً این‌کار باید توسط واحد سخت‌افزاری ”محاسبه و منطق، ALU“ انجام بگیرد، اما چگونه، مگر نه این است که فرمان صفرکردن A باید توسط برنامه صادر شود. مگر نه این است که آدرس خانه‌ای از حافظه به نام A باید معلوم گردد. حتماً توجه دارید که متغیر A از نظر ما حرف A می‌باشد، اما از نظر کامپیوتر یکی از خانه‌های خالی حافظه است که آدرسش باید به‌طور دقیق روشن شده باشد تا در مراحل دیگر و زمان نیاز بتوان به آن مراجعه کرد. اینگونه اقدامات برعهدهٔ برنامه‌های ویژه‌ای می‌باشد. حال به نظر شما چه مواقعی ممکن است مجدداً به این خانه از حافظه (A) برگردیم؟ کمی فکر کنید تا شاید پاسخ را به‌دست آورید. به هر حال پاسخ این است: بعد از صفر شدن A اولین عدد یعنی یک در A قرار می‌گیرد، سپس عدد دو با محتوای قبلی که یک است جمع شده و حاصل که عدد سه می‌باشد، مجدداً در A قرار می‌گیرد. آنگاه سومین عدد (یعنی ۳) با محتوای قبلی A که عدد سه می‌باشد، جمع و حاصل باز هم در A قرار می‌گیرد. تا اینکه بالاخره به آخر برنامه و عدد پنج برسیم. پس مشاهده می‌کنید که در طول اجرای برنامه بارها به متغیر A که خانه‌ای از حافظه است، مراجعه می‌کنیم و حتماً باید آدرس دقیق آن در حافظه برای واحد پردازش مرکزی (CPU) معلوم شده باشد. این‌کار از عهدهٔ سخت‌افزارهای مربوطه خارج بوده و به کمک برنامه‌های ویژه‌ای انجام می‌گیرد. به‌نظر شما در طول اجرای این برنامه چند بار در خانهٔ A مراجعه خواهیم داشت؟
به‌نظر می‌آید با این توضیحات جایگاه و نقش باارزش برنامه‌ها ـ که مجموعهٔ آنها را نرم‌افزار می‌نامیم ـ روشن شده باشد.
نرم‌افزارها به‌طور کلی به پنج گروه عمدهٔ زیر تقسیم می‌شوند:
▪ سیستم‌های عامل (Operating systems)
▪ برنامه‌های عمومی و یا خدماتی (Utility or Service Programs)
▪ برنامه‌های مترجم (Compilers)
▪ برنامه‌های کاربردی و یا بسته‌های نرم‌افزاری کاربردی (Application Packages)
▪ برنامه‌های خاص استفاده‌کنندگان (User,s Programs) ـ [۲۶]

۲۶ـ فرهنگ علم ـ ترجمه دکتر ابوالقاسم قلمسیاه و دیگران