کدویژن و AVR
اگر اسم AVR را شنیده باشید، قطعا اسم کدویژن را هم شنیدهاید، کدویژن یکی از محبوب ترین و شناختهشده ترین کامپایلرهای AVR است که در ایران مورد استفاده قرار میگیرد، به نحوی که هرکسی قصد استفاده از میکروکنترلر AVR را داشته بادش، حتما اسم آن را شنیده است و چه بسا آن را نصب و از آن استفاده کرده است.
کامپایلرِ معروف
اما چه چیزی این کامپایلر را تا این حد از معروفیت رسانده است؟نخستن نکته کلیدی در ماجرای معروفیت کدویژن این است که ما در ایران قانون کپی رایت را رعایت نمیکنیم و به راحتی میتوانیم از نسخه قفل شکسته این نرم افزار تجاری استفاده کنیم و این خود یکی از اصلیترین عواملی است که باعث معروفیت این کامپایلر شده است. شاید اگر مجبور بودید برای استفاده از این نرمافزار ۲۰۰ یورو یا حدود ۱ میلیون تومان پول پرداخت کنید، آن وقت دیگر این نرمافزار را به چشم یک نرمافزار رایج نگاه نمیکردید همانطور که واقعا نرمافزار معروفی نیست.
محبوبیت کدویژن
همانطور که در آمار بالا مشاهده میکنید، بیشترین بازدیدهای صورت گرفته از سایت نرمافزار (hpinfotech.ro ) از ایران بوده است که نشان دهنده میزان محبوبیت این نرمافزار در ایران و البته فقط ایران است.
مسئله بعدی که موجب محبوبیت این نرمافزار شده است، وجود کدویزارد می باشد. کدویزارد بخشی از این نرمافزار میباشد که به شما اجازه میدهد پیکربندی اولیه میکروکنترلر را به صورت گرافیکال و ویژوال انجام دهید و نیازی به انجام این پیکربندیها به صورت دستی و کدی نداشته باشید.
قطعا این قابلیت جذابیت ویژهای برای افراد مبتدی و حتی حرفهای دارد، وقتی که بهراحتی و با چند کلیک درگاه SPI یا UART یا I2C را پیکربندی میکنید بدون اینکه درگیر رجیسترها و بیتها شده باشید، در نگاه اول این فرآیند بسیار فریبنده است و آدم خیال میکند که از شر رجیسترها و دست کاری بیتها راحت شده است اما واقعیت چیز دیگری است، چرا که تجربه ثابت کرده در مسیر توسعه برنامه نیاز خواهید داشت که با تک تک بیتها دستو پنجه نرم کنید و کدویزارد کمکی به شما نمی کند. نرم افزار های جانبی زیادی به صورت رایگان منتشر شدهاند که کار پیکربندی اولیه را انجام می دهند مثل AVRWiz
اما دو نقص اساسی داشتهاند؛ اول اینکه تمام پیکربندیها رو به صورت جامع و متمرکز انجام نمیدهند و یا اینکه از تمام خانواده AVR پشتیبانی نمیکنند و البته این که خروجی تولید شده بیشتر منطبق بر کامپایلر رایگان و قدرتمند GCC است. همین عوامل باعث عدم استقبال کاربرهای ایرانی از این نوع نرم افزارها شده است. از دیگر موارد محبوبیت کامپایلر کدویژن وجود کتابخانههای آماده آن است که کاربر را در راهاندازی دستگاههای کناری یاری می کنید مثلا برای راهاندازی یک السیدی کارکتری جز اینکه کاربر در کدویزارد چند کلیک کند و پیکربندی اولیه را انجام دهد، کار دیگری لازم نیست و خود کدویژن کتابخانه مربوطه رو در برنامه صدا میزند و کار پیکر بندی را برای شما انجام می دهد.
کاربرد نداشتن کدویژن
حالا آنچه که باعث می شود خیلی از افراد تمایلی به استفاده از کدویژن نداشته باشند چیست ؟
آیا تا بهحال به این مسئله فکر کردهاید که چه چیزی باعث میشود کاربران سراسر جهان ترجیح دهند راه حل دیگری را جایگزین استفاده از کدویژن کنند؟ در کنار تمام مزایای نامبرده شده از این نرمافزار، معایبی وجود دارد که قابل چشمپوشی نیست. اولین و مهمترین مسئله این است که کدویژن ساختار یک کامپایلر استاندارد را دارا نمیباشد و از آن پشتیبانی نمیکند. در یک کامپایلر استاندارد ابتدا فایلها به صورت مجزا به فایل آبجکت تبدیل میشوند و بعد از آن با استفاده از یک دستورالعمل به هم لینک میشوند و فایل خروجی برنامه حاصل میشود.
این ساختار علاوه بر اصولی بودن مزایای خیلی زیادی دارد که بعنوان نمونه میتوان به سرعت کامپایل اشاره کرد، زیرا که فقط فایلهای تغییر کرده نیاز به کامپایل مجدد دارند و نیاز نیست کل فایلها کامپایل شوند(بر خلاف چیزی که در کدویژن اتفاق می افتد) یا اینکه وقتی شما بتوانید فایلها به صورت مجزا کامپایل کنید یعنی در واقع میتوانید کار گروهی بهتری در روال انجام پروژه داشته باشید، یا اینکه میتوانید به راحتی از کتابخانههای آمادهای که دیگران نوشتهاند بدون کمترین تغییری استفاده کنید، برنامه شما میتواند ترکیبی از فایل های اسمبلی و C و C++ باشد.
مساله مهم بعدی ، همانطور که در سایت خود کدویژن به آن اشاره شده است، عدم پشتیبانی کامل از زبان C است.
همانطور که گفته شد فقط با ANSI C هماهنگی دارد نه اینکه آن را به صورت کامل پشتیبانی میکند، همانطور که میدانید خود ANSI C اولین ورژن استاندرد زبان C است که در سال 1972 استاندارد سازی شد. بعدها ورژنهای کاملتری از زبان سی ارائه شد مثل C98,C90,C95,C99,C11 که کدویژن هیچ کدام از آنها را پشتیبانی نمیکند. در واقع وقتی از کدویژن استفاده میکنید مجبورید از نسخهی اولیهی زبان C بهره ببرید که همین امر باعث میشود خیلی از کتابخانههای آماده موجود برای شما غیرقابل استفاده شوند.
در واقع کدویژن از تمام قابلیتهای زبان ANSI C هم استفاده نمی کند، بعنوان مثال شما در کدویژن قادر به تعریف اشارهگر به یک فانکشن نیستید(البته شاید در نسخه های جدید اضافه شده باشد).
مساله حائز اهمیت بعدی، وجود خطاها و باگهای اساسی در این برنامه است که معلوم نیست به دلیل کرک شدن به وجود امدهاند یا به دلیل خطای برنامهنویسی، باگهایی که گاهاً کلافهکننده و سرگردانکننده هستند، بعنوان مثال شاید ساعتها و روزها با برنامه کلنجار رفته باشید و بعد فهمیده باشید که خطا از برنامه نیست و از کامپایلر است، هیچ چیز به این اندازه کلافهکننده نخواهد بود. وقتی شما از کدویژن استفاده می کنید، مجبورید که از ویرایشگر کد خود کدویژن استفاده کنید و قادر نخواهید بود که از ویرایشگرهای پیشرفتهای مثل نت بینز یا ایکلیپس استفاده کنید. وقتی از ویرایشگرهای پیشرفته استفاده می کنید هم توسعه برنامه خیلی سریعتر خواهد بود و هم پیدا کردن خطاهای احتمالی برنامه راحت تر خواهد بود.
نقاط قوت و ضعف دیگری که در خصوص این نرمافزار وجود دارد که مجال پرداختن به همه آنها از حوصلهی این مقاله خارج است، ما فقط سعی در بررسی نکات مهم و کلیدی آن داشتیم.
سوالی که همچنان باقی میماند این است که اگر کدویژن نه، پس از چه جایگزینی میتوانیم استفاده کنیم؟ پاسخ این سوال مهم را در مقاله “کامپایلر Codevisionavr در مقابل کامپایلر GCC و مقایسه تخصصی آنها ” خواهیم داد
منبع: سیسوگ
[…] در مقالهای تحت عنوان “چرا کدویژن نه!” به بررسی شبه کامپایلر کدویژن و ناکارآمدی آن […]