خصوصیات یک زبان خوب

كساني كه از كار با رايانه هدف خاصي را دنبال مي‌كنند و حوزه فعاليت‌هاي آنها محدود به زمينه خاصي است، تكليفشان در به كارگيري ابزارها و انتخاب نرم‌افزارهاي مورد نياز تاحدي مشخص است، ‌اما دنياي برنامه‌نويسي و زبان‌هاي مربوطه برخلاف دوران اوليه اختراع رايانه، آنقدر وسيع و گسترده شده است كه ورود بدون آگاهي به اين دنيا ممكن است موجب سردرگمي گردد و فرد پس از گذشت مدت زمان طولاني مجددا به نقطه‌اي بازگردد كه راه را از آن شروع كرده است.
دوشنبه، 12 اسفند 1387
تخمین زمان مطالعه:
موارد بیشتر برای شما
خصوصیات یک زبان خوب
خصوصیات یک زبان خوب
خصوصیات یک زبان خوب

نويسنده: پارسا ستوده‌نيا
كساني كه از كار با رايانه هدف خاصي را دنبال مي‌كنند و حوزه فعاليت‌هاي آنها محدود به زمينه خاصي است، تكليفشان در به كارگيري ابزارها و انتخاب نرم‌افزارهاي مورد نياز تاحدي مشخص است، ‌اما دنياي برنامه‌نويسي و زبان‌هاي مربوطه برخلاف دوران اوليه اختراع رايانه، آنقدر وسيع و گسترده شده است كه ورود بدون آگاهي به اين دنيا ممكن است موجب سردرگمي گردد و فرد پس از گذشت مدت زمان طولاني مجددا به نقطه‌اي بازگردد كه راه را از آن شروع كرده است.
مسلما در پي اين گشت و گذار، تجربه‌اي نسبي كسب كرده است و دانشي فراگرفته است؛ اما شايد به دليل كمبود آگاهي و نداشتن نقشه مسير نتواند دانش خود را در عمل به كار گيرد. واقعا خصوصيات يك زبان خوب چيست و آيا زباني وجود دارد كه همه اين خصوصيات را يكجا داشته باشد؟

سادگي

زبان‌هاي سطح پايين از خصوصيت سادگي بي‌بهره‌اند. مسلما يك انسان نمي‌تواند بسادگي با رايانه با استفاده از يك زبان سطح پايين ارتباط برقرار كند. اصولا دليل به وجود آمدن زبان‌هاي سطح بالا نيز همين بوده است.
مكانيزم‌هاي طراحي زبان‌هاي سطح بالا بايد حتي‌الامكان بدون عيب و ساده باشد تا شخص بتواند براحتي به وسيله آن با رايانه ارتباط برقرار كرده و آنچه را كه در ذهن دارد بسادگي به زباني قابل تبديل به زبان رايانه بيان كند.
يك زبان برنامه‌سازي، چارچوبي مفهومي را براي فكر كردن راجع به الگوريتم‌ها و همچنين ابزارهايي را براي بيان آن الگوريتم‌ها تدارك مي‌بيند. يك زبان برنامه‌نويسي بايد قبل از نوشتن كد، به برنامه‌نويس كمك كند. بايد مجموعه‌اي از مفاهيم واضح، ساده و يكپارچه را تدارك ببيند كه براي طراحي الگوريتم، مورد استفاده قرار گيرند.

خوانايي

يكي از مهم‌ترين ويژگي‌هاي يك زبان كه بايد به آن توجه شود، خوانايي برنامه‌هاي آن زبان است. فرض كنيد شخصي به زباني همچون اسمبلي برنامه‌اي مي‌نويسد و آن را در اختيار شخص ديگري آشنا به اين زبان قرار مي‌دهد. در صورتي كه اين فرد تجربه و تسلط كافي به اين زبان نداشته باشد، نمي‌تواند منطق برنامه و طريقه كار آن را درك كند. در صورتي هم كه شخص بينش كافي در اين زمينه را داشته باشد و بر كدهاي اين زبان تسلط داشته باشد ممكن است پس از مدت زمان نسبتا زيادي و با زحمت به منطق برنامه پي ببرد. البته توجه داشته باشيد كه صحبت ما در اينجا برنامه‌اي با مقدار متوسط كد است. كدهاي با حجم كم و اندازه‌هاي كوچك توسط افراد كم‌تجربه‌تر هم قابل درك هستند و درك كدهاي يك برنامه‌ بزرگ حتي براي با تجربه‌ترين افراد در اين زمينه نيز با زحمت فراوان همراه بوده و گاهي مستلزم روزها و ماه‌ها زمان است. اين يكي از بزرگ‌ترين مشكلات يك زبان برنامه‌نويسي سطح پايين با قابليت خوانايي كم است كه گاهي حتي نويسنده برنامه را نيز با مشكل روبه‌رو مي‌كند. بسيار اتفاق مي‌‌افتد كه شخص برنامه‌نويس، پس از گذشت مدت زماني، هنگامي كه به برنامه خود رجوع مي‌كند در درك نوشته‌هاي خود نيز دچار مشكل مي‌شود و بايد زماني را صرف به خاطر آوردن منطق برنامه خود كند. معمولا براي كم كردن چنين مشكلي، برنامه‌نويس ناچار است براي قطعه به قطعه و گاهي خط به خط برنامه خود توضيحاتي به زبان خود بنويسد تا بعد از رجوع به آن بتواند دليل استفاده از آن دستور يا قطعه كد را درك كند.
اما تلاش زبان‌هاي سطح بالا بر اين بوده است كه تا حد امكان خوانايي برنامه را افزايش داده و درك آن را ساده كنند. اين كار با نزديك كردن زبان برنامه‌نويسي به زبان گفتار تا حد زيادي انجام مي‌شود. اما تمامي مشكلات آن را حل نمي‌كند. به هر حال براي آن‌كه اين مشكل به حداقل ممكن برسد بايد زباني را انتخاب كرد كه قابليت خوانايي آن بالا باشد. اين يكي از عامل‌هايي است كه علاوه بر نوشتن و درك برنامه، آزمايش، اصلاح آن را نيز تحت تاثير قرار مي‌دهد.
بسياري از زبان‌ها ساختارهاي نحوي دارند كه دو جمله تقريبا مشابه، معاني مختلفي دارند و در نتيجه قابليت خوانايي آنها پايين خواهد بود. طراحي يك زبان بايد طوري باشد كه ساختارهايي با معاني مختلف، با هم فرق داشته باشند. يعني تفاوت‌هاي معنايي بايد منعكس كننده تفاوت‌هاي نحوي باشند. اكثر زبان‌هاي برنامه‌سازي جديد سعي كرده‌اند تا حد امكان اين قاعده را رعايت كنند.

محيط كار

امروزه يك محيط كار توانمند از شاخص‌ترين ويژگي‌هاي يك زبان به‌شمار مي‌رود. ساختار تكنيكي يك زبان برنامه‌سازي فقط يك جنبه از آن زبان است كه كاربردش را تحت تاثير قرار مي‌دهد. يك محيط برنامه‌نويسي قدرتمند، ممكن است كاربردش را نسبت به يك زبان برنامه‌نويسي كه قدرت تكنيكي بالاتري دارد و محيط برنامه‌نويسي آن ضعيف است، بيشتر كند.
عوامل و فاكتورهاي زيادي را مي‌توان به عنوان خصوصيات يك محيط برنامه‌نويسي خوب در نظر گرفت.
قابليت بازرسي و تست برنامه يكي از مهم‌ترين ويژگي‌هاي يك محيط برنامه‌نويسي خوب است. برنامه‌اي كه بدون اشكال باشد هنوز نوشته نشده است!‌ هر برنامه‌اي كم يا زياد، اشكال دارد و محيط برنامه‌نويسي خوب بايد به برنامه‌نويس امكان اجراي گام‌به‌گام،‌تست، اشكال‌يابي و اشكال‌زدايي برنامه را بدهد.
امكانات ويرايشي و تكميل كد، پيشنهاد دستورات و توابع ممكن، امكان دستيابي سريع به هر قسمت از متن برنامه، كمك به ساختار كد براي بالا بردن خوانايي آن و تسهيل اشكال‌زدايي برنامه، مستندسازي و... از ديگر امكاناتي است كه وجود آن در يك محيط كار برنامه‌نويسي موجب افزايش كارايي و سهولت كار برنامه‌نويس خواهد شد.

سرعت

در زبان‌هاي برنامه‌نويسي يكي سرعت اجراي برنامه‌هاي توليد شده و ديگري سرعت كامپايل برنامه مطرح است.
وقتي زباني براي آموزش به كار گرفته مي‌شود، سرعت ترجمه مهم‌تر از سرعت اجرا است. معمولا برنامه‌هاي دانشجويان چندين بار ترجمه مي‌شوند ولي كمتر اجرا مي‌شوند بنابراين مهم است كه كامپايلر سرعت قابل‌قبولي داشته باشد. براي ساخت برنامه‌هاي كاربردي كه ترجمه يك بار انجام مي‌شود و برنامه چندين بار اجرا مي‌شود، سرعت كامپايل آنقدر مهم نبوده و در مركز توجه قرار ندارد. اگر تشخيص عيب‌ها ساده باشد و كاربر بتواند بر توسعه و نگهداري برنامه كنترل داشته باشد، چنانچه در اجراي ميليون‌ها دستور در ثانيه، اندكي تاخير ايجاد شود قابل تحمل است.

قابليت حمل

يك معيار مهم براي بسياري از پروژه‌هاي برنامه‌نويسي، قابليت انتقال يك برنامه از يك سيستم رايانه‌اي به سيستم ديگر است. زباني كه به ماشين خاصي وابسته نباشد، برنامه‌هاي نوشته شده در آن زبان، از ماشيني به ماشين ديگر قابل حمل است. زباني مثل C++، تعاريف استانداردي دارد كه مي‌توان برنامه‌هاي قابل حمل توليد كرد.

وابستگي به سيستم عامل

اگر يك زبان به سيستم عامل خاصي وابسته باشد يك عيب براي آن زبان محسوب مي‌شود. اين مساله از دو جنبه قابل بررسي است. يكي آن كه خود زبان به سيستم عامل وابسته نباشد و ديگر آن كه برنامه توليدي آن بتواند روي سيستم عامل‌‌هاي گوناگون اجرا شود.
زباني مثل++ C زباني است كه كامپايلرهاي مختلفي براي آن در سيستم عامل‌هاي گوناگون طراحي شده است.
هر كس كه به نحوي اين زبان آشنا باشد مي‌تواند در هر سيستم عاملي، برنامه نوشته و با استفاده از كامپايلر مخصوص آن سيستم عامل برنامه خود را كامپايل و اجرا كند، اما برنامه كامپايل شده معمولا در سيستم عامل‌هاي ديگر قابل اجرا نيست و تنها راه‌حل براي اين مساله آن است كه برنامه نوشته شده با كامپايلر ديگري براي سيستم عامل ديگر مجددا كامپايل شده و فايل اجرايي مخصوص آن ايجاد شود. زباني مثل# C زباني است كه هم كامپايلر آن و هم برنامه‌هاي اجرايي آن مخصوص ويندوز است و از اين نظر محدوديت دارد، اما زباني مثل جاوا، با توجه به اين كه كامپايلر آن كد مياني يا كد ماشين مجازي توليد مي‌كند، برنامه‌هاي اجرايي آن مستقيما بدون نياز به كامپايل مجدد روي سيستم عامل‌هاي ديگر قابل اجراست. البته پيش از اين نيز گفتيم كه نرم‌افزار ماشين مجازي جاوا براي سيستم عامل‌هاي مختلف متفاوت است، اما زماني كه اين نرم‌افزار نصب شود ديگر مشكل انتقال فايل‌هاي اجرايي از يك سيستم عامل به ديگري در ميان نخواهد بود.

گستره كاربرد

پشتيباني از گستره وسيع‌تر كاربرد، از خصوصيات ديگر زبان‌هاي برنامه‌نويسي است كه امتياز بيشتري به آن مي‌دهد. يك زبان ممكن است تنها براي هدف و كاربرد خاصي جوابگو باشد و زبان ديگري بتواند زمينه‌هاي گوناگوني ازجمله سخت‌افزار، برنامه‌هاي كاربردي، گرافيكي، پايگاه داده، برنامه‌هاي تحت وب، برنامه‌هاي قابل اجرا روي تلفن‌هاي همراه، برنامه‌هاي بزرگ سازماني، برنامه‌هاي تحت شبكه و... را پوشش دهد. يك زبان خوب خصوصيات بسيار ديگري نيز دارد كه از حوصله اين بحث خارج است. در پايان يادآور مي‌شويم كه زباني وجود ندارد كه در همه اين خصوصيات برتر باشد. بنابراين زباني يك زبان خوب به شمار مي‌رود كه به معيارهاي گفته شده نزديك‌تر بوده و از همه مهم‌تر پاسخگوي نياز و پوشش‌دهنده هدف كاربر خود باشد.




نظرات کاربران
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط
موارد بیشتر برای شما
بررسی مرقع و قطاع در خوشنویسی
بررسی مرقع و قطاع در خوشنویسی
خیابانی: آقای بیرانوند! من بخواهم از نام بردن تو معروف بشوم؟ خاک بر سر من!
play_arrow
خیابانی: آقای بیرانوند! من بخواهم از نام بردن تو معروف بشوم؟ خاک بر سر من!
توضیحات وزیر رفاه در خصوص عدم پرداخت یارانه
play_arrow
توضیحات وزیر رفاه در خصوص عدم پرداخت یارانه
حمله پهپادی حزب‌ الله به ساختمانی در نهاریا
play_arrow
حمله پهپادی حزب‌ الله به ساختمانی در نهاریا
مراسم تشییع شهید امنیت وحید اکبریان در گرگان
play_arrow
مراسم تشییع شهید امنیت وحید اکبریان در گرگان
به رگبار بستن اتوبوس توسط اشرار در محور زاهدان به چابهار
play_arrow
به رگبار بستن اتوبوس توسط اشرار در محور زاهدان به چابهار
دبیرکل حزب‌الله: هزینۀ حمله به بیروت هدف قراردادن تل‌آویو است
play_arrow
دبیرکل حزب‌الله: هزینۀ حمله به بیروت هدف قراردادن تل‌آویو است
گروسی: فردو جای خطرناکی نیست
play_arrow
گروسی: فردو جای خطرناکی نیست
گروسی: گفتگوها با ایران بسیار سازنده بود و باید ادامه پیدا کند
play_arrow
گروسی: گفتگوها با ایران بسیار سازنده بود و باید ادامه پیدا کند
گروسی: در پارچین و طالقان سایت‌های هسته‌ای نیست
play_arrow
گروسی: در پارچین و طالقان سایت‌های هسته‌ای نیست
گروسی: ایران توقف افزایش ذخایر ۶۰ درصد را پذیرفته است
play_arrow
گروسی: ایران توقف افزایش ذخایر ۶۰ درصد را پذیرفته است
سورپرایز سردار آزمون برای تولد امیر قلعه‌نویی
play_arrow
سورپرایز سردار آزمون برای تولد امیر قلعه‌نویی
رهبر انقلاب: حوزه‌ علمیه باید در مورد نحوه حکمرانی و پدیده‌های جدید نظر بدهد
play_arrow
رهبر انقلاب: حوزه‌ علمیه باید در مورد نحوه حکمرانی و پدیده‌های جدید نظر بدهد
حملات خمپاره‌ای سرایاالقدس علیه مواضع دشمن در جبالیا
play_arrow
حملات خمپاره‌ای سرایاالقدس علیه مواضع دشمن در جبالیا
کنایه علی لاریجانی به حملات تهدیدآمیز صهیونیست‌ها
play_arrow
کنایه علی لاریجانی به حملات تهدیدآمیز صهیونیست‌ها