پنجشنبه, ۱۳ اردیبهشت, ۱۴۰۳ / 2 May, 2024
مجله ویستا

مترجم‌های زبان‌های برنامه‌نویسی


مترجم‌های زبان‌های برنامه‌نویسی
رایانه‌ها فقط قادرند دستورات زبان‌ ماشینی را به اجرا در آورند. این دستورات در حقیقت رشته‌های نسبتاً طولانی از ارقام ۰ و ۱ هستند كه هر كدام معنی و مفهوم خاصی برای رایانه‌ها دارند. مثلاً فرمان ××××××××××××۱۰۱۱ در یك ماشینِ به خصوص، فرمانی است كه به CPU دستور می‌دهد عمل تفریق خاصی را انجام دهد كه در آن ۱۰۱۱ ، فرمان تفریق و ×××××××××××× آدرسی در حافظه‌ی رایانه است كه در عمل تفریق به كار گرفته می‌شود.
این فرمان‌ها به صورت تصادفی و یا دلخواه تعیین نمی‌شوند، بلكه تعیین فرامین ماشین یكی از مراحل طراحی و ساخت CPU است كه باید با دقت فراوان و طبق اصول خاصی انجام پذیرد و اما دستورات زبان ماشین بسیار محدود هستند كه توسط آنها فقط می‌توان اعمال محاسباتی، منطقی و یا مقایسه‌ای ساده را انجام داد.
البته با استفاده از مجموعه‌ای از این فرامین ساده می‌توان برای انجام هر كاری توسط رایانه‌ها برنامه‌های مناسبی به زبان ماشین تهیه نمود ولی این كار بسیار مشكل وطاقت‌فرسا بوده و نیازمند دانش فنی زیادی در خصوص عملكرد رایانه‌هاست.
دقیقاً به همین دلیل زبان‌های برنامه‌نویسی سطح بالا بوجود آمده‌اند. (در مورد سطوح مختلف عملكرد ماشین در قسمت سوم از همین سلسله مقالات بحث شده است.)
در زبان‌های برنامه‌نویسی سطح بالا فرامین بسیار زیاد و متنوعی تعریف شده است كه تقریباً تمام نیازهای برنامه‌سازان را تأمین می‌كند؛ كه عبارتند از فرامین محاسباتی و منطقی، فرامین كنترل صفحه‌نمایش، فرامینی جهت مدیریت فایل‌ها و دستگاه‌های جانبی. اما همه‌ی این فرامین پیچیده هرگز توسط رایانه‌ها قابل فهم نیستند مگر آنكه به دستورات زبان ماشین ترجمه شوند. این عمل یعنی ترجمه‌ی فرامین زبان برنامه‌نویسی سطح بالا به زبان ماشین، توسط مترجم‌های زبان برنامه‌نویسی انجام می‌گیرد.
علت آن كه این نوع نرم‌افزارها را در گروه نرم‌افزارهای سیستمی قرار می‌دهند این است كه طراحی این نوع نرم‌افزارها فقط زمانی ممكن است كه اطلاع دقیق و كاملی از نحوه‌ی عملكرد ماشین حقیقی و ماشین‌های مجازی (كه قبلاً در مورد آنها بحث كرده‌ایم) داشته‌ باشیم و در واقع بر نحوه‌ی عملكرد سیستم ‌رایانه اشراف داشته باشیم. مترجم‌های زبان دو گروه مختلف را شامل می‌شوند كه عبارتند از :
۱) مترجم‌ها(Compilers)
۲) مفسرها (Interpreters)
كه گروه اول یعنی مترجم‌ها، برنامه منبع (Source) كه به زبان برنامه‌نویسی سطح بالا (مثلاً C یا Pascal ) نوشته شده است را در اختیار گرفته، طی چند بار مروركردن كل برنامه، آن را كاملاً كنترل كرده و در صورتی كه هیچ اشكالی در نحوه‌ی نوشتن دستورالعمل‌ها وجود نداشته باشد كل برنامه را به طور یكجا به زبان ماشین ترجمه می‌كنند و به یك برنامه‌ی قابل اجرا توسط سیستم عامل تبدیل می‌نمایند.
البته در این عملیات، برنامه‌ی منبع تغییر نكرده و فقط یك برنامه به زبان ماشین تولید شده و به صورت یك فایل جدید در سیستم ذخیره می‌گردد. این فایل جدید معمولاً هم نام فایل برنامه منبع است ولی با انشعاب متفاوت كه معمولاً .EXE می‌باشد.
به این ترتیب عمل ترجمه‌ی دستورات زبان برنامه‌نویسی سطح بالا به دستورات زبان ماشین فقط یكبار و آن هم در زمان كامپایل انجام گرفته و از آن به بعد برای اجرای برنامه‌ هیچ نیازی به كامپایلر نبوده و می‌توان فایل اجرایی برنامه را مستقیماً توسط سیستم‌عامل اجرا نمود. تمام نر‌م‌افزارهایی كه بر روی رایانه‌ها مورد استفاده قرار می‌گیرند به همین روش تهیه شده‌اند.
اما گروه دوم یعنی مفسرها عمل ترجمه برنامه منبع را به صورت خط به خط انجام می‌دهند. به این معنی كه هر سطر از برنامه‌ منبع را بررسی و كنترل نموده و در صورت درستی دستور‌العمل‌ها، آن سطر را مستقیماً اجرا می‌كنند و لذا عمل تبدیل دستورالعمل‌های زبان سطح بالا به فرامین زبان ماشین آن گونه كه در مورد مترجم‌ها وجود دارد صورت نمی‌گیرد.
به این ترتیب اگر در یكی از سطرهای برنامه‌ی منبع اشكالی وجود داشته باشد اشكال فوق آشكار نخواهد شد و همچنین مفسرها هیچ برنامه‌‌ی قابل اجرایی توسط سیستم‌عامل تولید نمی‌كنند. بنابراین هر بار كه بخواهید برنامه را اجرا كنید نیازمند استفاده از مفسر مربوطه هستید و هر بار هم باید عمل ترجمه و اجرای برنامه خط به خط تكرار گردد.
Qbasic از جمله زبان‌‌هایی است كه از مفسر برای اجرای برنامه‌ها استفاده می‌كند، البته در نسخه‌های كاملتر آن و همچنین همراه برنامه‌ی Visual Basic ، یك كامپایلر عرضه شده است كه توسط آن می‌توان از برنامه‌ی منبع، یك برنامه اجرایی با انشعاب .EXE تولید نمود.
و اما نكته بسیار جالب این است كه مردم در تمام دنیا فقط از یك نوع رایانه استفاده نمی‌كنند بلكه براساس كاربردهای مورد نیاز در مؤسسات بزرگ، سازمان‌ها و همچنین منازل شخصی از رایانه‌های متفاوت با ماشین‌های حقیقی مختلف و سیستم‌ عامل‌های متفاوت استفاده می‌شود و چون مترجم‌های زبان‌های برنامه‌نویسی می‌توانند برنامه‌ منبع را فقط به زبان یك ماشین خاص ترجمه كنند پس برای هر گروه از رایانه‌ها بایستی مترجم خاص آن ساخته شود كه این روش تا چند سال گذشته راه‌حل مناسبی بود ولی از وقتی كه استفاده از اینترنت گسترش یافته و به خصوص با ظهور و گسترش Web باید راه‌حل جدیدی برای این مشكل قدیمی ارایه می‌شد چرا كه تمام مردم دنیا و تمام مؤسسات و سازمان‌ها با سیستم‌های رایانه‌ای متفاوت مایلند از صفحات Web استفاده كنند و عملاً منطقی نیست كه بخواهیم یك صفحه‌ی (Web Page) Web را چندین بار توسط چندین زبان ماشین مختلف ترجمه كنیم.
برای این مشكل امروزه راه‌حل مناسب و جالبی وجود دارد. برای تولید صفحات Web از زبان خاصی به نام HTML استفاده می‌گردد. HTML همچون هر زبان دیگری تعدادی دستورالعمل خاصِ خود را دارد كه طبق اصول و قواعد مشخص استفاده می‌شوند. این زبان جهت تولید نرم‌افزارهای كاربردی خاص بوجود نیامده است بلكه توسط آن می‌توان صفحاتی جهت انتقال اطلاعات و اخبار به همراه فیلم، صدا، تصویر و انیمیشن بر روی شبكه‌ها تولید نمود. مفسر زبان HTML را Web Browser می‌گویند.
Web Browser دستورات HTML را شناسایی كرده و طبق آن دستورالعمل‌ها صفحات Web را به كاربر نشان می‌دهد. بنابراین هر كس با هر سیستم رایانه‌ای كه كار می‌كند برای استفاده از صفحات Web بر روی اینترنت كافیست یك Web Browser مناسب تهیه كرده و بر روی سیستم خود نصب نماید. باید به این نكته اشاره شود كه صفحات Web بر روی اینترنت (به طور كلی بر روی شبكه‌ها) به صورت ترجمه شده منتقل نمی‌شوند بلكه همان برنامه‌ی منبع و اصلی منتقل می‌شود و سپس در مقصد توسط Web Browser ترجمه شده و به كاربر نشان داده می‌شود.
پس به این ترتیب هر كس با هر نوع سیستم ‌رایانه‌ای می‌تواند ازاین صفحات بر روی رایانه‌ی خود استفاده كند. سه مورد از Web Browserهایی كه بیشترین استفاده را در دنیا دارند عبارتند از : Netscape Navigator ، Microsoft Internet Explorer و .Mosaic بحث در خصوص نرم‌افزارهای سیستمی را تا همین جا به خاطر داشته باشید تا قدری در مورد نرم‌افزارهای كاربردی هم صحبت كنیم و سپس خواهید دید كه امروزه دنیای نرم‌افزارها به قدری متحول شده كه گاهی به سادگی نمی‌توان یك نرم‌افزار را سیستمیِ محض و یا كاربردی محض دانست.
● نرم‌افزارهای كاربردی
نرم‌افزارهای كاربردی برنامه‌هایی هستند كه جهت انجام یك عمل خاص و ثابت تهیه می‌شوند و كاربران را در همان مورد خاص یاری می‌دهند. به عنوان مثال نرم‌افزارPaint Brush یك برنامه كاربردی است كه همراه ویندوز عرضه می‌گردد و جهت نقاشی كردن و یا تغییر و دستكاری در نقاشی‌هایی كه از قبل تهیه شده‌اند و یا توسط اسكنر، اسكن‌شده و به صورت یك فایل ذخیره شده‌اند، مورد استفاده قرار می‌گیرد. این نرم‌افزار هیچ كاربرد دیگری به غیر از دستكاری نقاشی‌ها ندارد.
با این تعریف و توضیح نرم‌افزارهای بازی هم از این دسته هستند و فقط با هدف بازی و سرگرمی به كار می‌روند. امروزه نرم‌افزارهای كاربردیِ بسیار متنوعی وجود دارد و می‌توان گفت تقریباً در هر زمینه‌ی خاصی كه ممكن است انسان به آن علاقمند باشد، نرم‌افزارهای زیادی تولید شده است از جمله‌ی این نرم‌افزارها می‌توان به نرم‌افزارهای موسیقی، فیلم، انیمیشن، نقاشی، بازی، آموزشی، مطالعات علمی، ریاضی، فیزیك، اطلاعات عمومی و غیره اشاره كرد.
● مرز میان نر‌م‌افزارهای كاربردی و سیستمی
دنیای رایانه‌ها دنیای بزرگی است و با گسترش روزافزون استفاده از رایانه در جهان هر روز نرم‌افزارهای جدید با كاربرد تازه وارد این دنیای بزرگ می‌شوند و شركت‌ها و مؤسسات مختلفی كه در این زمینه فعالیت دارند سعی می‌كنند با تولید نرم‌افزارهای جدیدتر كه با كیفیت بهتری به كاربران خدمات لازم را ارایه می‌كنند، گوی سبقت را از رقبای خود بربایند.
امروزه نرم‌افزارهایی تولید شده‌اند كه اگر چه از نظر خدماتی كه ارایه می‌دهند و با توجه به كاربرد خاصی كه دارند جزو نرم‌افزارهای كاربردی محسوب می‌شوند، ولی از نظر نوع عملكرد درونی آنها و روش‌هایی كه برای ارایه خدمات بهتر به كار می‌برند از جمله‌ی نرم‌افزارهای سیستمی به حساب می‌آیند. به عنوان یك مثال ساده می‌توان به نرم‌افزار Macromedia Authorware اشاره كرد.
این نرم‌افزار به طور خاص به منظور تولید برنامه‌های آموزشی تهیه شده است. به این ترتیب این نرم‌افزار می‌تواند جزو نرم‌افزارهای كاربردی محسوب گردد، ولی در همین حال نرم‌‌افزار فوق زبان برنامه‌نویسی خاص خود را دارد كه گرچه دستورات محدودی دارد ولی تمام اهداف را پوشش می‌دهد، همچنین تعداد زیادی تابعِ از پیش‌ تعریف شده دارد كه قابلیت‌های نرم‌افزار را به شدت افزایش می‌دهند و علاوه بر اینها یك مترجم (Compiler) مخصوص هم دارد كه می‌تواند برنامه آموزشی تولید شده را ترجمه كرده و یك فایل اجرایی با انشعاب .
EXE تولید كند كه می‌تواند مستقل از نرم‌افزار Authorware اجرا شود. لذا مشاهده می‌كنید كه این بخش از عملكرد این نرم‌افزار آن را در گروه نرم‌افزارهای سیستمی قرار می‌دهد.
امیدواریم با توجه به بیان ناقص ما، به چنان دیدگاه مشتركی در مورد رایانه‌ها رسیده باشید كه اهمیت نكاتی را كه در اینجا متذكر می‌شویم كاملاً درك نمایید، چرا كه تقریباً تمام آنچه تا اینجا شرح داده شد مقدمه‌ای برای بیان این نكات بوده است:
۱) رایانه‌های شخصی، دستگاه‌هایی همه منظوره (Genral Purpose) هستند. به این معنی كه از آنها در انجام هر نوع كاری می‌توان استفاده كرد، اما این دستگاه مفید فقط به یاری نرم‌افزارهاست كه می‌تواند به انسان كمك كند. پس كارهایی را كه در طول روز انجام می‌دهید یادداشت كنید، آنها را دسته‌بندی كرده و سعی كنید با جستجو و كنجكاوی نرم‌افزارهای مناسبی بیابید كه شما را در انجام این كارها یاری ‌دهند.
۲) سعی كنید زبان انگلیسی خود را تا حد ممكن تقویت كنید چرا كه احتمالاً اكثر نرم‌افزارهایی كه نیاز خواهید داشت به این زبان تهیه شده‌اند.
۳) یكی از مجلاتی كه در زمینه رایانه منتشر می‌شوند و بیشتر با نیازها و علایق شما هماهنگی دارند انتخاب كنید و مشترك آن شوید چرا كه دنیای رایانه‌ها هر روز متحول شده و نرم‌افزارها و سخت‌افزارهای جدیدی به بازار عرضه می‌شوند و شما برای اطلاع از این تغییر و تحول‌ها باید از مجلات استفاده كنید.
۴) از هر سیستم‌عاملی كه استفاده می‌كنید، حتماً كتاب مرجع آن را تهیه كنید و سعی كنید با تمام زیر و بم آن آشنا شوید و هر زمان با مشكلی مواجه شدید حتماً ابتدا به كتاب مرجع سری بزنید.
۵) هرگاه از یك نرم‌افزار جدید استفاده می‌كنید، HELP آن را مطالعه كنید وجزییات نحوه‌ی درست‌ِ استفاده از آن را قبلاً فرا بگیرید.
۶) اگر از نرم‌افزارهای سیستمی (به هر شكل) استفاده می‌كنید حتماً با مطالعه HELP نرم‌افزار و یا كتاب‌های مرجع آن تا حد ممكن از نحوه‌ی عملكرد نرم‌افزار آگاهی یابید تا در صورتی كه در عملكرد رایانه شما اختلالی رخ داد سریعتر بتوانید علت آن را پیدا كنید.
۷) سعی كنید از طریق مطالعه، نقاط ضعف و قوت سیستم‌عامل مورد استفاده خود را بشناسید و نرم‌افزارهایی را بیابید كه بتوانند ضعف سیستم عامل را جبران كنند.
۸) سرعت تغییرات در رایانه‌ها زیاد است. سعی كنید اطلاعات خود را در این زمینه با دوستانتان در میان بگذارید چرا كه اطلاعات شما خیلی زود كهنه می‌شوند و اگر با دوستانتان مشورت نكنید از تجارب و اطلاعات تازه آنها محروم خواهید شد.
۹) خوشبختانه در كشور، CDهای آموزشی زیادی تولید شده‌اند كه هر كدام به آموزش یكی ازجنبه‌های مختلف رایانه ‌پرداخته‌اند. بنابراین سعی كنید از رایانه‌ها در راه آموزش روش صحیح استفاده از خودِ رایانه بهره بگیرید.
۱۰) با اشتراك شبكه اینترنت آخرین اطلاعات را در زمینه‌های مورد علاقه خود بیابید و آنها را در راه ترقی و تعالی شغل و زندگی خود به كار ببرید.
منبع : کامپیوتر جوان