12-05-2019, 01:47 PM
چرا کدویژن نه!
[img]data:image/svg+xml;charset=utf-8,<svg height="431px" width="900px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
[img]data:image/svg+xml;charset=utf-8,<svg height="260px" width="400px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
اگر اسم AVR را شنیده باشید ، قطعا اسم کدویژن را هم شنیده اید ، کدویژن یکی از محبوب ترین و شناخته شده ترین کامپایلرهای AVR است که در ایران مورد استفاده قرار می گیرد ، به نحوی که هر کسی قصد استفاده از میکروکنترلر AVR را داشته است ، حتما اسم آن را شنیده است و چه بسا آن را نصب و از آن استفاده کرده است. اما چه چیزی این کامپایلر را تا این حد از معروفیت رسانده است.
نخستن نکته کلیدی در ماجرای معروفیت کدویژن این است که ما در ایران قانون کپی رایت را رعایت نمی کنیم و به راحتی میتوانیم از نسخه قفل شکسته این نرم افزار تجاری استفاده کنیم ، و این خود یکی از اصلی ترین عواملی است که باعث معروفیت این کامپایلر شده است. شاید اگر مجبور بودید برای استفاده از این نرم افزار 200 یورو یا حدود 1 میلیون تومان پول پرداخت کنید ، آن وقت دیگر این نرم افزار را به چشم یک نرم افزار رایج نگاه نمی کردید همانطور که واقعا نرم افزار معروفی نیست.
[img]data:image/svg+xml;charset=utf-8,<svg height="191px" width="624px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
همانطور که در آمار بالا مشاهده می کنید بیشترین بازدیدهای صورت گرفته از سایت نرم افزار (hpinfotech.ro
) از ایران بوده است که نشان دهنده میزان محبوبیت این نرم افزار در ایران و البته فقط ایران است.
مساله بعدی که موجب محبوبیت این نرم افزار شده است ، وجود کدویزارد می باشد. کدویزارد بخشی از این نرم افزار می باشد که به شما اجازه می دهد پیکربندی اولیه میکروکنترلر را به صورت گرافیکال و ویژوال انجام دهید و نیازی به انجام این پیکر بندی ها به صورت دستی و کدی نداشته باشید.
[img]data:image/svg+xml;charset=utf-8,<svg height="671px" width="697px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
بله قطعا این قابلیت جذابیت ویژه ای برای افراد مبتدی و حتی حرفه ای دارد ، وقتی که براحتی و با چند کلیک درگاه SPI یا UART یا I2C را پیکربندی می کنید بدون این که درگیر رجیسترها و بیت ها شده باشید ، در نگاه اول این فرایند بسیار فریبنده است و آدم خیال می کند که شر رجیسترها و دست کاری بیت ها راحت شده است اما ، واقعیت چیز دیگری است ، چرا که تجربه ثابت کرده است در مسیر توسعه برنامه نیاز خواهید داشت که با تک تک بیت ها دست و پنجه نرم کنید و کدویزارد کمکی به شما نمی کند.
نرم افزار های جانبی زیادی به صورت رایگان منشتر شده اند که کار پیکر بندی اولیه را انجام می دهند مثل AVRWiz
[img]data:image/svg+xml;charset=utf-8,<svg height="461px" width="615px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
اما دو نقص اساسی داشته اند ، اول این که تمام پیکربندی ها رو به صورت جامع و متمرکز انجام نمی دهند و یا این که از تمام خانواده AVR پشتیبانی نمی کنند. و البته این که خروجی تولید شده بیشتر منطبق بر کامپایلر رایگان و قدرتمند GCC است. همین عوامل باعث عدم استقبال کاربرهای ایرانی از این نوع نرم افزارها شده است.
از دیگر موارد محبوبیت کامپایلر کدویژن وجود کتابخانه های آماده آن است که کاربر را در راه اندازی دستگاه های کناری یاری می کنید مثلا برای راه اندازی یک ال سی دی کارکتری جز این که کاربر در کدویزارد چند کلیک کند و پیکر بندی اولیه را انجام دهد ، کار دیگری لازم نیست و خود کدویژن کتابخانه مربوطه رو در برنامه صدا میزند و کار پیکر بندی را برای شما انجام می دهد.
حالا آنچه که باعث می شود خیلی از افراد تمایلی به استفاده از کدویژن نداشته باشند چیست ؟ ، آیا تا به حال به این مساله فکر کرده اید ، چه چیزی باعث می شود که کاربران سراسر جهان ترجیح دهند راه حل دیگری را جایگزین استفاده از کدویژن کنند ؟ (هرچند خود کدویژن هیچ راه حلی نیست)، در کنار تمام مزایای نام برده شده از این نرم افزار معایبی وجود دارد که قابل چشم پوشی نیست.
اولین و مهم ترین مساله ، این است که کدویژن ساختار یک کامپایلر استاندارد را دارا نمی باشد و از آن پشتیبانی نمی کند. در یک کامپایلر استاندارد ابتدا فایل ها به صورت مجزا به فایل آبجکت تبدیل می شوند و بعد از آن با استفاده از یک دستورالعمل به هم لینک می شوند و فایل خروجی برنامه حاصل می شود
[img]data:image/svg+xml;charset=utf-8,<svg height="331px" width="798px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
این ساختار علاوه بر اصولی بودن مزایا خیلی زیادی دارد که به عنوان نمونه میتوان به سرعت کامپایل اشاره کرد ، زیرا که فقط فایل های تغییر کرده نیاز به کامپایل مجدد دارند و نیاز نیست کل فایل ها کامپایل شوند(بر خلاف چیزی که در کدویژن اتفاق می افتد) یا این که وقتی شما بتواند فایل ها به صورت مجزا کامپایل کنید یعنی در واقع می توانید کار گروهی بهتری در روال انجام پروژه داشته باشید ، یا این که میتوانید به راحتی از کتابخانه های آماده ای که دیگران نوشته اند بدون کمترین تغییری استفاده کنید ، برنامه شما میتواند ترکیبی از فایل های اسمبلی و C و C++ باشد.
مساله مهم بعدی ، همانطور که در سایت خود کدویژن به آن اشاره شده است ، عدم پشتیبانی کامل از زبان C است.
[img]data:image/svg+xml;charset=utf-8,<svg height="67px" width="714px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
فقط با ANSI C هماهنگی دارد نه این که آن را به صورت کامل پشتیبانی می کند ، همانطور که می دانید خود ANSI C اولین ورژن استاندرد زبان C است که در سال 1972 استاندارد سازی شد. بعد ها ورژن های کاملتری از زبان سی ارائه شد مثل C98,C90,C95,C99,C11 که کدویژن هیچ کدام از آنها را پشتیبانی نمی کند. پس در واقع وقتی که از کدویژن استفاده میکنید شما مجبور هستید از نسخه اولیه زبان C بهره ببرید که همین امر باعث میشه خیلی از کتابخانه های آماده موجود برای شما غیر قابل استفاده شوند.
در واقع کدویژن از تمام قابلیت های زبان ANSI C هم استفاده نمی کند ، به عنوان مثال شما در کدویژن قادر به تعریف اشاره گر به یک فانکشن نیستید(البته شاید در نسخه های جدید اضافه شده باشد).
مساله حائز اهمیت بعدی ، وجود خطا ها و باگ های اساسی در این برنامه است که معلوم نیست به دلیل کرک شدن به وجود امده اند یا به دلیل خطای برنامه نویسی ، باگ هایی که گاها کلافه کننده و سرگردان کننده هستند ، به عنوان مثال شاید ساعت ها و روز ها با برنامه کلنجار رفته باشید و بعد فهمیده باشید که خطا از برنامه نیست و از کامپایلر است ، هیچ چیز به این اندازه کلافه کننده نخواهد بود.
وقتی شما از کدویژن استفاده می کنید ، مجبور هستید که از ویرایشگر کد خود کدویژن استفاده کنید و قادر نخواهید بود که از ویرایشگر های پیشرفته ای مثل نت بینز یا ایکلیپس استفاده کنید. وقتی از ویرایشگر های پیشرفته استفاده می کنید هم توسعه برنامه خیلی سریعتر خواهد بود و هم پیدا کردن خطا های احتمالی برنامه راحت تر خواهد بود.
و البته مسائل خوب و بد دیگری که در خصوص این نرم افزار وجود دارد ، که مجال پرداختن به همه آنها از حوصله این مقاله خارج است ، و ما فقط سعی در بررسی نکات مهم و کلیدی آن داشتیم.
سوالی که همچنان باقی می ماند این است که اگر کدویژن نه ، پس از چه جایگزینی میتوانیم استفاده کنیم ، پاسخ این سوال مهم را در مقاله ” کامپایلر Codevisionavr در مقابل کامپایلر GCC و مقایسه تخصصی آنها ” خواهیم داد.
[img]data:image/svg+xml;charset=utf-8,<svg height="431px" width="900px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
[img]data:image/svg+xml;charset=utf-8,<svg height="260px" width="400px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
اگر اسم AVR را شنیده باشید ، قطعا اسم کدویژن را هم شنیده اید ، کدویژن یکی از محبوب ترین و شناخته شده ترین کامپایلرهای AVR است که در ایران مورد استفاده قرار می گیرد ، به نحوی که هر کسی قصد استفاده از میکروکنترلر AVR را داشته است ، حتما اسم آن را شنیده است و چه بسا آن را نصب و از آن استفاده کرده است. اما چه چیزی این کامپایلر را تا این حد از معروفیت رسانده است.
نخستن نکته کلیدی در ماجرای معروفیت کدویژن این است که ما در ایران قانون کپی رایت را رعایت نمی کنیم و به راحتی میتوانیم از نسخه قفل شکسته این نرم افزار تجاری استفاده کنیم ، و این خود یکی از اصلی ترین عواملی است که باعث معروفیت این کامپایلر شده است. شاید اگر مجبور بودید برای استفاده از این نرم افزار 200 یورو یا حدود 1 میلیون تومان پول پرداخت کنید ، آن وقت دیگر این نرم افزار را به چشم یک نرم افزار رایج نگاه نمی کردید همانطور که واقعا نرم افزار معروفی نیست.
[img]data:image/svg+xml;charset=utf-8,<svg height="191px" width="624px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
همانطور که در آمار بالا مشاهده می کنید بیشترین بازدیدهای صورت گرفته از سایت نرم افزار (hpinfotech.ro
) از ایران بوده است که نشان دهنده میزان محبوبیت این نرم افزار در ایران و البته فقط ایران است.
مساله بعدی که موجب محبوبیت این نرم افزار شده است ، وجود کدویزارد می باشد. کدویزارد بخشی از این نرم افزار می باشد که به شما اجازه می دهد پیکربندی اولیه میکروکنترلر را به صورت گرافیکال و ویژوال انجام دهید و نیازی به انجام این پیکر بندی ها به صورت دستی و کدی نداشته باشید.
[img]data:image/svg+xml;charset=utf-8,<svg height="671px" width="697px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
بله قطعا این قابلیت جذابیت ویژه ای برای افراد مبتدی و حتی حرفه ای دارد ، وقتی که براحتی و با چند کلیک درگاه SPI یا UART یا I2C را پیکربندی می کنید بدون این که درگیر رجیسترها و بیت ها شده باشید ، در نگاه اول این فرایند بسیار فریبنده است و آدم خیال می کند که شر رجیسترها و دست کاری بیت ها راحت شده است اما ، واقعیت چیز دیگری است ، چرا که تجربه ثابت کرده است در مسیر توسعه برنامه نیاز خواهید داشت که با تک تک بیت ها دست و پنجه نرم کنید و کدویزارد کمکی به شما نمی کند.
نرم افزار های جانبی زیادی به صورت رایگان منشتر شده اند که کار پیکر بندی اولیه را انجام می دهند مثل AVRWiz
[img]data:image/svg+xml;charset=utf-8,<svg height="461px" width="615px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
اما دو نقص اساسی داشته اند ، اول این که تمام پیکربندی ها رو به صورت جامع و متمرکز انجام نمی دهند و یا این که از تمام خانواده AVR پشتیبانی نمی کنند. و البته این که خروجی تولید شده بیشتر منطبق بر کامپایلر رایگان و قدرتمند GCC است. همین عوامل باعث عدم استقبال کاربرهای ایرانی از این نوع نرم افزارها شده است.
از دیگر موارد محبوبیت کامپایلر کدویژن وجود کتابخانه های آماده آن است که کاربر را در راه اندازی دستگاه های کناری یاری می کنید مثلا برای راه اندازی یک ال سی دی کارکتری جز این که کاربر در کدویزارد چند کلیک کند و پیکر بندی اولیه را انجام دهد ، کار دیگری لازم نیست و خود کدویژن کتابخانه مربوطه رو در برنامه صدا میزند و کار پیکر بندی را برای شما انجام می دهد.
حالا آنچه که باعث می شود خیلی از افراد تمایلی به استفاده از کدویژن نداشته باشند چیست ؟ ، آیا تا به حال به این مساله فکر کرده اید ، چه چیزی باعث می شود که کاربران سراسر جهان ترجیح دهند راه حل دیگری را جایگزین استفاده از کدویژن کنند ؟ (هرچند خود کدویژن هیچ راه حلی نیست)، در کنار تمام مزایای نام برده شده از این نرم افزار معایبی وجود دارد که قابل چشم پوشی نیست.
اولین و مهم ترین مساله ، این است که کدویژن ساختار یک کامپایلر استاندارد را دارا نمی باشد و از آن پشتیبانی نمی کند. در یک کامپایلر استاندارد ابتدا فایل ها به صورت مجزا به فایل آبجکت تبدیل می شوند و بعد از آن با استفاده از یک دستورالعمل به هم لینک می شوند و فایل خروجی برنامه حاصل می شود
[img]data:image/svg+xml;charset=utf-8,<svg height="331px" width="798px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
این ساختار علاوه بر اصولی بودن مزایا خیلی زیادی دارد که به عنوان نمونه میتوان به سرعت کامپایل اشاره کرد ، زیرا که فقط فایل های تغییر کرده نیاز به کامپایل مجدد دارند و نیاز نیست کل فایل ها کامپایل شوند(بر خلاف چیزی که در کدویژن اتفاق می افتد) یا این که وقتی شما بتواند فایل ها به صورت مجزا کامپایل کنید یعنی در واقع می توانید کار گروهی بهتری در روال انجام پروژه داشته باشید ، یا این که میتوانید به راحتی از کتابخانه های آماده ای که دیگران نوشته اند بدون کمترین تغییری استفاده کنید ، برنامه شما میتواند ترکیبی از فایل های اسمبلی و C و C++ باشد.
مساله مهم بعدی ، همانطور که در سایت خود کدویژن به آن اشاره شده است ، عدم پشتیبانی کامل از زبان C است.
[img]data:image/svg+xml;charset=utf-8,<svg height="67px" width="714px" xmlns="http://www.w3.org/2000/svg" version="1.1"/>[/img]
فقط با ANSI C هماهنگی دارد نه این که آن را به صورت کامل پشتیبانی می کند ، همانطور که می دانید خود ANSI C اولین ورژن استاندرد زبان C است که در سال 1972 استاندارد سازی شد. بعد ها ورژن های کاملتری از زبان سی ارائه شد مثل C98,C90,C95,C99,C11 که کدویژن هیچ کدام از آنها را پشتیبانی نمی کند. پس در واقع وقتی که از کدویژن استفاده میکنید شما مجبور هستید از نسخه اولیه زبان C بهره ببرید که همین امر باعث میشه خیلی از کتابخانه های آماده موجود برای شما غیر قابل استفاده شوند.
در واقع کدویژن از تمام قابلیت های زبان ANSI C هم استفاده نمی کند ، به عنوان مثال شما در کدویژن قادر به تعریف اشاره گر به یک فانکشن نیستید(البته شاید در نسخه های جدید اضافه شده باشد).
مساله حائز اهمیت بعدی ، وجود خطا ها و باگ های اساسی در این برنامه است که معلوم نیست به دلیل کرک شدن به وجود امده اند یا به دلیل خطای برنامه نویسی ، باگ هایی که گاها کلافه کننده و سرگردان کننده هستند ، به عنوان مثال شاید ساعت ها و روز ها با برنامه کلنجار رفته باشید و بعد فهمیده باشید که خطا از برنامه نیست و از کامپایلر است ، هیچ چیز به این اندازه کلافه کننده نخواهد بود.
وقتی شما از کدویژن استفاده می کنید ، مجبور هستید که از ویرایشگر کد خود کدویژن استفاده کنید و قادر نخواهید بود که از ویرایشگر های پیشرفته ای مثل نت بینز یا ایکلیپس استفاده کنید. وقتی از ویرایشگر های پیشرفته استفاده می کنید هم توسعه برنامه خیلی سریعتر خواهد بود و هم پیدا کردن خطا های احتمالی برنامه راحت تر خواهد بود.
و البته مسائل خوب و بد دیگری که در خصوص این نرم افزار وجود دارد ، که مجال پرداختن به همه آنها از حوصله این مقاله خارج است ، و ما فقط سعی در بررسی نکات مهم و کلیدی آن داشتیم.
سوالی که همچنان باقی می ماند این است که اگر کدویژن نه ، پس از چه جایگزینی میتوانیم استفاده کنیم ، پاسخ این سوال مهم را در مقاله ” کامپایلر Codevisionavr در مقابل کامپایلر GCC و مقایسه تخصصی آنها ” خواهیم داد.