پاسخ به:راهنمایِ جامع برنامه نویسی (چگونه برنامه نویس شویم New Version)؟
سه شنبه 29 اردیبهشت 1394 3:40 PM
کلا" برنامه ها در دو دسته قرار میگیرن:
مفسری یا کامپایلری
ویژگی اول:
کامپایلر یه نرم افزاره که زبون مبدا{c , c++ , pascal ,...} رو به زبون مقصد{زبون سطح پایین و قابل فهم برای سیستم سخت افزاری} تبدیل میکنه
اما در مفسری، مراحل منطقی کد نوشته شده طی میشه!
پس نتیجه اول:
در کامپایلر، تموم کد تجزیه و تحلیل و انالیز میشه
ولی در مفسر،بسته به ورودی برنامه، یه روند منطقی در پیش گرفته میشه
پس مفسری تا اینجا بهتر عمل میکنه{هم در بحث پیچیدگی زمانی و هم حافظه،یعنی منابع سخت افزاری و زمانی کمتری مصرف میکنه!}
ویژگی دوم:
مفسری،خط به خط انالیز میکنه
اما کامپایلری یهو کل کد رو ترجمه میکنه
نتیجه دوم:
عملیات خطا یابی در زبونهای مفسری بسیار ساده تر از کامپایلریه {چون به محض برخورد با خطا ارور رو میده،اما در کامپایلری تا کل کد رو انالیز نکنه هیچ اروری نمیده!... این برا وقتی با چند میلیون کد نوشته شده سروکار دارید خیلی حائز اهمیته!}
ویژگی سوم: پیاده سازی مفسری از کامپایلری راحت تره
ویژگی چهارم:
سرعت ترجمه مفسر از کامپایلر بیشتره {مورد توجه برنامه نویسان!}
ولی سرعت اجرای برنامه کامپایلری از مفسری بیشتره {مورد توجه کاربران}
برای همینه وقتی کد یه بروت فرس با مفسر نوشته میشه، عملکردش از بروت فرس که با کامپایلری نوشته شده خیلی ضعیفتره! {کلا" حلقه ها و تستها در بروت فرس حرف اول رو میزنن، که برا اینجور برنامه هایی کامپایلر بهتر خودشو نشون میده!}
ویژگی پنجم:
هربرنامه ای که توسط کامپایلر ترجمه شه، برای اجرا در دفعات بعد نیازی به ترجمه مجدد نداره!
اما هربرنامه ای که توسط مفسر ترجمه شه،برای اجرا در دفعات بعد نیاز به ترجمه مجدد داره!
این یعنی اگر قرار باشه یه برنامه چند هزار بار اجرا شه، روش کامپایلری خیلی بهتر از مفسری عمل میکنه {بازم مثال بروت فرس!}
ویژگی ششم:
هر برنامه مفسری،برای اجرا وابسته به محیط مجازی سازی شده توسط مفسر خودش هست!
این یعنی برای اجرا روی هر دستگاهی{از گوشی گرفته تا سیستم عاملهای درونکار و رایانه های شخصی و..}قابل اجرا هستن! چون نیاز به یه محیط شبیه ساز دارن که صددرصد همراه خود برنامه هست {مث برنامه های جاوا که نیاز به موتور اجرایی دارن}
این ویژگی از این واقعیت نشات میگیره که برنامه های مفسری، برای هر بار اجرا مجددا" ترجمه میشن!
اما در کامپایلری وضع فرق میکنه!
فقط یه بار ترجمه میشه،و دفعات بعد فقط اجرا میشه!
پس برنامه ای که با روش کامپایلری نوشته شده، برای اجرا بر روی هر دستگاه پردازشگر ،باید روی اون دستگاه یه بار ترجمه شه تا بتونه اجرا شه!
این یعنی، برنامه های که روی سیستم شما با متد کامپایلری ترجمه شده، قابل اجرا بر روی یه گوشی موبایل نیست!
اما درمورد انتخاب یه زبان خوب:
نمیدونم نظری که میدم تکراریه یا نه!
ولی:
اول نگاه کن نیازت چیه؟!
اگه برنامه محاسباتی{مث انالیزگر حجمهای سه بعدی ،شبیه ساز واکنش شیمیایی و...} هدفته
خوب یه زبون مث سی پلاس پلاس یا فرترن کارتو راه میندازه
اگه برنامه ای مد نظرته که با سیستم کلی تصمیم گیری سه وجهی{بزرگی،کوچکی،تساوی} قابل حل نیست از زبونهای هوش مصنوعی استفاده کن
مثلا":بازیها، حملات هوشمند اینترنتی{که از لیسپ استفاده میکنن} و...حتی ویروسهای ییشرفته.
اگه برنامه اقتصادی مد نظرته:
نظرات دوستان گویای همه چیز هست
و...
زیاد گفتم
موفق باشید
ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیلهسین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.