مطالب یافت شده برای دسته بندی : برنامه نویسی

مقایسه جاوا و جاوااسکریپت به همراه تعریف هر کدام از این زبان ها


در این مدت سعی کرده ایم مقالات زیادی در زمینه جاوا و جاوااسکریپت در سایت منتشر کنیم ولی خیلی ها فعلا فرق بین جاوااسکریپت و جاوا رو نمیدونند و فکر می کنند این دو یکی هستند. در این مقاله میخواهم مقایسه جاوا و جاوااسکریپت رو مورد بررسی قرار دهم و ببینیم که فرق بین جاوااسکریپت و جاوا چی هستش. البته قبلی هر کدوم رو تعریف می کنیم و توضیحاتی در مورد هر زبان برنامه نویسی به صورت جدا میدهیم. 

مقایسه جاوا و جاوااسکریپت

قبل از اینکه شروع به مقایسه جاوا و جاوااسکریپت کنیم باید بدونیم اصلا جاوا و جاوااسکریپت چی هستند و به چه دردی می خورند بعد در مورد فرق بین جاوااسکریپت و جاوا توضیحاتی ارائه دهیم. 

جاوا چیست؟

جاوا یک زبان برنامه نویسی که به صورت شی گرا ارائه شده است. جاوا شبیه به زبان برنامه نویسی سی پلاس پلاس می باشد اما مدل شی گرایی آسانتری نسبت به سی پلاس پلاس دارد.

نکته ۱: زبان برنامه نویسی جاوا از قابلیت‌های سطح پایین کمتری پشتیبانی می‌کند.

نکته ۲: یکی از قابلیت‌های بنیادین جاوا این است که مدیریت حافظه را بطور خودکار انجام می‌دهد.

نکته ۳: ضریب اطمینان عملکرد برنامه‌های نوشته‌شده به زبان جاوا نسبت به زبان های نسل اول C بالا است.

جاوا از چه اسمی گرفته شده و به چه معنی است ؟

نام جاوا از Jsut Another Vague Acronym گرفته شده است و دلیل آن این بود که تیم برنامه نویسان جاوا به قهوه خیلی علاقه داشتند. این موضوع در لوگوی جاوا هم مشهود است.

شعار جاوا :

شعار جاوا «یکبار بنویس و هر جایی اجرا کن» (Write once, Run anywhere) است که به ویژگی اجرای شدن برنامه های جاوا بر روی هر نوع سیستم عاملی و هر گونه وسیله الکترونیکی اشاره دارد.

اهداف اولیه زبان برنامه نویسی جاوا :

  • این زبان باید ساده، شی‌گرا و مشهور باشد.
  • مطمئن و بدون خطا باشد.
  • وابسته به معماری کامپیوتر نبوده و قابل انتقال باشد.
  • باید با کارایی بالا اجرا شود.
  • باید به صورت پویا و نخ‌کشی‌شده باشد.

 

کاربرد برنامه نویسی جاوا

اگر بخواهیم در مورد کاربرد برنامه نویسی جاوا صحبت کنیم باید به سراغ این برویم که چه دستگاها و جاهایی از جاوا استفاده میکنند. به گفته شرکت سان مایکروسیستمز (سازنده زبان برنامه نویسی جاوا) سه میلیارد دستگاه از جاوا استفاده می کنند. در حال حاضر بسیاری از دستگاه ها از جاوا استفاده میکنند که تعدادی از آنها را در زیر نام برده ایم:

  • برنامه های کاربردی رومیزی از قبیل acrobat reader, media player, antivirus و…
  • برنامه های کاربردی تحت وب نظیر irctc.co.in و…
  • برنامه های کاربردی سازمانی نظیر برنامه های کاربردی بانکها
  • موبایل
  • سیستم های تعبیه شده
  • کارت های هوشمند
  • رباتیک
  • بازی ها و….

توجه: برای اینکه درک بهتری از زبان برنامه نویسی جاوا داشته باشید پیشنهاد میکنم مقاله جاوا چیست رو مطالعه کنید. در این مقاله به صورت کامل در مورد زبان جاوا صحبت کرده ایم.

جاوااسکریپت چیست؟

جاوااسکریپت یک زبان برنامه نویسی سطح بالا، چند رویه و تفسیری است که در کنار html و css، یکی از سه هسته صفحات دنیای وب می‌باشد. زبان جاوااسکریپت را میتوان به صورت ساخت یافته و شی گرا استفاد کرد. در جاوااسکریپت اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته می‌شوند. در کل برای ایجاد ارتباط بین کاربر و سایت میتوان از جاوااسکریپت استفاده کرد.

دلیل به وجود آمدن جاوااسکریپت:

وقتی از HTML و CSS استفاده میکنیم صفحات به صورت ایستا ارائه می شوند اگر بخواهیم صفحات وب رو به صورت داینامیک و متحرک طراحی کنیم بهترین گزینه برای داینامیک کردن صفحات وب استفاده از جاوااسکریپت است. شرکت Netscape برای ایجاد و کنترل ارتباط بین مخاطبان سایت و صاحبان سایت از جاوااسکریپت استفاده کرد.

نکته ۱: جاوااسکریپت به اختصار JS معرف می شود. (JavaScript)

دیدگاه اشتباه ۱: زبان جاوااسکریپت با زبان جاوا ارتباطی ندارد. 

دیدگاه اشتباه ۲جاوااسکریپت به صورت پیوسته و چسبیده نوشته می شود. نوشتن به صورت جاوا اسکریپت اشتباه است.

نکته ۲: اکثر استفاده از جاوااسکریپت در سایت ها و صفحات اینترنتی است و به کمک جاوااسکریپت میتوان به اشیا داخل صفحات HTML دستری پیدا کرد و آنها رو تغییر داد. (به همین دلیل برای پویا نمایی در سمت کاربر از جاوااسکریپت استفاده میکنند.)

تاریخچه جاوااسکریپت :

زبان جاوااسکریپت با عنوان Mocha در شرکت Netscape توسط شخصی به نام برندان ایج طراحی و ارائه شده است. Mocha بعدا به نام Livesscript و در نهایت به نام جاوااسکریپت تغییر نام داد. اولین نسخه جاوااسکریپت در سال ۱۹۹۵ معرفی شد که در روزهای اول خیلی از کاربران فکر میکردند جاوااسکریپت نسخه جدید زبان برنامه نویسی جاوا است. 
به خاطر موفقیت های زبان جاوااسکریپت، مایکروسافت مجبور شد در مرورگر خود یعنی اینترنت اکسپلورر از آن استفاده کند. یکی از دلایل موفقیت جاوااسکریپت در سال های بعدی، پشتیبانی اینترنت اکسپلورر از این زبان بود.

جاوااسکریپت در حال حاضر یکی از زبان های برنامه نویسی پر طرفدار در دنیا است. البته بسیاری از برنامه نویسان حرفه ای زبان جاوااسکریپت را در ابتدا یک زبان کم ارزش می پنداشتند.

توجه: برای اینکه درک بهتری از زبان برنامه نویسی جاوااسکریپت داشته باشید پیشنهاد میکنم مقاله جاوااسکریپت چیست رو مطالعه کنید. در این مقاله به صورت کامل در مورد زبان جاوا صحبت کرده ایم.

تفاوت جاوا و جاوااسکریپت

مقایسه جاوا و جاوااسکریپت

تا این لحظه متوجه شدیم جاوا و جاوااسکریپت چی هستند و به چه دردی می خورند حال به سراغ مقایسه جاوا و جاوااسکریپت میرویم. در ای بخش می خواهیم تفاوت جاوا و جاوااسکریپت و شباهت های این دو زبان رو مورد بررسی قرار دهیم. همین حال بگویم این دو، زبان های برنامه نویسی مستقلی هستند و ربطی به هم ندارند. در بخش زیر در قالب ۵ مورد فرق بین جاوااسکریپت و جاوا را مورد بررسی قرار داده ایم. 

  • Java از یک نوع مشخص برخوردارند. به این معنا که اگر یک متغیر را از نوع عددی تعریف کنیم، تا پایان این متغیر از نوع عددی است و نمی‌توانیم مقدار غیر عددی به آن ارسال کنیم. اما در JavaScript چنین محدودیتی وجود ندارد.
  • Java یک زبان برنامه نویسی شیء گرا است در حالیکه JavaScript یک زبان اسکریپت نویسی شیء گرا است.
  • نرم افزارهای نوشته شده با Java قابلیت اجرا بر روی ماشین مجازی و مرورگرهای اینترنتی را دارند اما کدهای JavaScript فقط بر روی مرورگرهای اینترنتی اجرا می شود و ذاتا برای همین نوع کار طراحی و پیاده سازی شده است.
  • برنامه های نوشته شده با Java بایستی کامپایل شوند در صورتیکه کدهای JavaScript فقط یک متن ساده هستند و نیازی به کامپایل ندارند.
  • هر کدام از این زبان ها نیاز به پلاگین ها و نیازمندی های متفاوتی برای اجرا شدن دارند.

شباهت ها

بعد از اینکه تفاوت جاوا و جاوااسکریپت را مورد بررسی قرار دادیم حال شباهت های این دو زبان رو هم بیان کنیم. زبان جاوا و جاوااسکریپت دو شباهت عمده با هم دارند. که در بخش زیر به این دو اشاره شده است.

  • امروزه هم Java و JavaScript می‌توانند برای پیاده سازی سرور برنامه ها استفاده شوند. در JavaScript این کار با استفاده از Node.js انجام می‌شود.
  • با استفاده از هر دو زبان می‌توانیم نرم افزار های موبایل ایجاد کنیم.

نتیجه گیری:
اولین چیزی که در مقایسه جاوا و جاوااسکریپت باید مد نظر قرار گیرد بحث مستقل بودن این دو زبان می باشد. این دو زبان کاملا با هم متفاوت و قرق دارند. و هر کدام برای یک سری کارهای خاص تولید شده اند. در این مقاله سعی کردیم توضیحی در مورد هر کدام ارائه دهیم و در آخر فرق بین جاوااسکریپت و جاوا را مورد بررسی قرار دهیم. 

زبان جاوا مفسری است یا کامپایلری


بعد از اینکه مقالاتی در باره مفسر و کامپایلر داخل سایت قرار دادیم بعضی ها در مورد زبان های مختلفی مثل جاوا سوال پرسیدند مثل اینکه: زبان جاوا مفسری است یا کامپایلری، در این مقاله ابتدا توضیح میدهم مفسر چیست و چه کاربردی دارد و بعد در مورد کامپایلر صحبت می کنم و در آخر میگم زبان جاوا مفسری است یا کامپایلری، پس همراه ما باشید تا جواب این سوال رو دهیم.

زبان جاوا مفسری است یا کامپایلری

مفسر چیست؟

اگر بخواهیم واضح بگویم مفسر در برنامه نویسی چیست؟ مفسر یک برنامه کامپیوتری است که دستورهای نوشته شده در یک زبان برنامه نویسی را اجرا می‌کند. مفسر در واقع یک زبان برنامه نویسی سطح بالا را به یک زبان قابل فهم برای ماشین تبدیل می کند. 

نکته مهم: در زبان های مفسری کد ها به صورت خط به خط تفسیر و اجرا می شوند و در اجرا بعدی برنامه نیز به همین صورت ادامه می یابد.

همینطور که می دانید هر دستگاه کامپیوتری (کامپیوترهای رومیزی، نوت بوک ها، گوشی های هوشمند، تبلت ها و …) از سخت افزار خاصی ساخته شده است که دارای قسمت های مختلفی از جمله پردازنده (Processor) است. حال اگر بخواهید برای این پردازنده برنامه ای بنویسید که این پردازنده کاری را انجام دهد باید دستورات زبان ماشین خاص آن پردازنده را یکجا نوشته و در یک فایل ذخیره کنید و برای اجرا آن فایل را یکباره به پردازنده بدهید تا اجرا کند.
چون نوشتن به زبان ماشین بسیار نیاز به حوصله و وقت دارد و اشکال زدایی (دیباگ) آن نیز کار پر مشقت و وقت گیر است معمولا از سایر زبان ها استفاده می کنند و آن زبان ها را با “برنامه های خاصی” به زبان ماشین تبدیل می کنند.

اگر آن برنامه خاص تبدیل دستورات به زبان ماشین را به جای یکباره و کامل به صورت دستور به دستور انجام دهد و همان لحظه دستور تبدیل شده (فقط و فقط همان دستور را) برای اجرا به پردازنده تحویل دهد و پس از اجرا دوباره دستور بعد را به زبان ماشین تبدیل کند و به پردازنده تحویل دهد و … این ماجرا تا به انتهای دستورات به صورت خط به خط تکرار شود و دستورات زبان ماشین توسط پردازنده فقط اجرا شوند و در فایلی ذخیره نشوند به آن برنامه خاص اینترپرتر یا مفسر می گویند.

توجه: برای درک بهتر و دقیق تر پیشنهاد میکنم مقاله مفسر در برنامه نویسی چیست رو کامل مطالعه کنید.

کامپایلر چیست؟

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

به بیان ساده، کامپایلر برنامه‌ای است که یک برنامه نوشته شده در یک زبان خاص ساخت‌یافته را خوانده و آن را به یک برنامه مقصد (Target Language) تبدیل می‌نماید. در یکی از مهم‌ترین پروسه‌های این تبدیل، کامپایلر وجود خطا را در برنامه مبدأ اعلام می‌نماید.

تعریف یکی از دوستان از کامپایلر، کامپایلر برنامه‌ای رایانه‌ای می‌باشد که به‌منظور انتقال زبان‌های برنامه‌نویسی سطح بالا به زبان‌های سطح پایین مانند زبان اسمبلی و زبان ماشین، جهت اجرایی شدن، طراحی وارائه‌شده‌اند، خروجی این نرم‌افزار برای ماشین‌هایی مانند رایانه قابل اجرا هست.

توجه: برای درک بهتر و دقیق تر پیشنهاد میکنم مقاله کامپایلر در برنامه نویسی چیست و بررسی انواع کامپایلر رو کامل مطالعه کنید.

زبان جاوا مفسری است یا کامپایلری

تا این لحظه متوجه شدیم مفسر و کامپایلر چیست و چه کاربردی دارند. حالا باید بررسی کنیم زبان جاوا مفسری است یا کامپایلری، یک برنامه جاوا در پایان مراحل توسعه همانند یک زبان کامپایلری کامپایل می شود (به Java bytecode) و در زمان اجرا همانند زبان های مفسری interpret می شود. پس باید گفت زبان جاوا هم مفسری است هم کامپایلر.

بهترین لپ تاپ برای برنامه نویسی به همراه معرفی ویژگی های آن


در این چند ماه اخیر به کرار سوال در مورد لپ تاپ مناسب برنامه نویسی داشته ایم طوری که هفته ای چند ساعت خودم برای پیدا کردم لپ تاپ مناسب برای کاربران صرف می شد. امروز تصمیم گرفتم مقاله ای با عنوان بهترین لپ تاپ برای برنامه نویسی بنویسم و به دوستان معرفی کنم. در این مقاله ابتدا ویژگی های لپ تاپ مناسب برنامه نویسی را مورد بررسی قرار میدهیم و بعد بهترین لپ تاپ برای برنامه نویسی را معرفی می کنیم. بعد از اینکه این مباحث رو پشت سر گذاشتیم چند ایت جهت خرید لپ تاپ مناسب برنامه نویسی معرفی می کنیم. 

بهترین لپ تاپ برای برنامه نویسی

ویژگی های لپ تاپ مناسب برنامه نویسی

قبل از بررسی ویژگی های لپ تاپ مناسب برنامه نویسی، باید این رو متذکر شوم شما هر سیستم یا لپ تاپی داشته باشید حتی اگر مال ۱۰ سال پیش باشد باز هم می توانید با آن برنامه نویسی کنید پس بهانه ای برای یادگیری برنامه نویسی وجود ندارد. این مقاله برای کسانی هستش که می خواهند هزینه کنند و لپ تاپ مناسب برنامه نویسی تهیه کنند.
متاسفانه می بینم کسانی که به خاطر نداشتن لپ تاپ یا سیستم قوی کلا برنامه نویسی رو شروع نمی کنند و همش بهانه نداشتن ابزار مناسب رو دارند باید بگویم شما حتی اگر سیستم یا لپ تاپ رو نداشته باشید بازم می تونید روی برگه کدهای خودتون رو بنویسید پس لطفا این بهونه رو کلا فراموش کنید.
خب اولین چیزی که باید مد نظر قرار بدیم ویژگی های لپ تاپ مناسب برنامه نویسی می باشد و باید ببینم اگر می خوایم برنامه نویسی شروع کنیم لپ تاپ ما باید چه ویژگی هایی داشته باشد. چون وقتی می خوای لپ تاپ برای برنامه نویسی تهیه کنید اینقدر تعداد برندها  و مدل های زیاد است که به شدت آدم گیج می شود. 

توجه: اولین چیزی که در هنگام انتخاب و خرید لپ تاپ مناسب برنامه نویسی باید مد نظر قرار داد بحث هزینه ای است که می خواهید برای لپ تاپ کنید. به قول معروف هر چه قد پول بدی همون قدر هم آش میخوری. پس بر اساس بودجه ای که دارید می توانید لپ تاپ انتخاب کنید. (در حال حاضر که این مقاله رو مینویسم (آذر ۹۷) قیمت سخت افزار به خصوص لپ تاپ به شدت بالا رفته و متاسفانه قدرت خرید پایین آمده است. ولی من سعی می کنم در هر رنج قیمتی چند نمونه خوب ارائه دهم.)

۱- قابلیت جابجایی
لپ تاپ ها در سایز ها و اندازه های مختلف ارائه میشوند. شما باید دریابید که لپ تاپ مورد نیاز شما تا چه اندازه قابل حمل باشد.

اگر نیاز زیادی به جابجایی لپ تاپ ندارید و گاها نیاز به جابجایی آن پیدا میکنید. بهتر است یک لپ تاپ ۱۵ اینچی را در نظر بگیرید که دارای مشخصات بالاتر و فضای صفحه نمایش بالاتر برای کار های چند وظیفه ای است.

اگر شما در مکان های مختلف کار میکند و زیاد در سفر هستید.لپ تاپ ۱۳ الی ۱۴ اینچ ممکن است بهترین انتخاب شما باشد. که دارای وزن کمتر و عمر باتری بیشتری هستند.

اگر یک لپ تاپ از نوع ۲in1 را در نظر دارید؛ برخورداری از صفحه نمایش لمسی دلیل مناسبی برای هزینه بیشتر نیست من پیشنهاد میکنم از خرید لپ تاپ با صفحه نمایش لمسی خودداری کنید.

۲- صفحه نمایش
بارها شنیده ایم که می گویند: نیازی نیست که صفحه نمایشی با کیفیت خوبی بر خوردار باشه چون کار تو برنامه نویسیه و کاری با کیفیت اون نداری. باید بگویم این جمله اشتباست و اصلا تحت تاثیر این جمله قرار نگیرید.

صفحه نمایش یکی از مهمترین ویژگی های لپ تاپ هاست؛ مخصوصا برای برنامه نویسان. اشتباه رایج افراد برای خرید یک لپ تاپ برای برنامه نویسی عدم اهمیت دادن به صفحه نمایش است. توسعه اپلیکیشن ها نیازمند خیره شدن ساعت ها به صفحه نمایش است که این باعث ایجاد خستگی چشم ها و آسیب دیدن آن ها میشود. البته نیازی به خرید یک صفحه نمایش ۴K نیست بخصوص زمانی که همراه با افزایش هزینه و مصرف زیاد باتری میشود.

با این وجود هر کاری که میکنید به هیچ عنوان صفحه نمایشی کمتر از Full HD 1920 x 1080 نخرید. همچنین مطمعن شوید که صفحه نمایش آن دارای زاویه دید مناسب باشد. حتما نوع صفحه نمایش مات باشد و از خرید صفحه نمایشی از نوع براق خودداری کنید.

۳- قدرت پردازنده (cpu)
یکی از مهمترین چیزها در انتخاب لپ تاپ مناسب برنامه نویسی، قدرت پردازنده (cpu) لپ تاپ می باشد. cpu لپ تاپ شما تاثیر زیادی بر روی عملکرد آن دارد بنابراین این گزینه اهمیت بیشتری نسبت به دیگر موارد دارد؛ انواع مختلفی از پردازنده ها و با مشخصات متفاوتی وجود دارد. اطمینان حاصل کنید که این مشخصات را در نظر بگیرید. برخی از مهمترین آنها عبارت اند از اندازه حافظه cache، تعداد هسته، فرکانس پردازنده و نوع طراحی برای تخلیه حرارت.

به طور کلی، یک پردازنده core i7 یا حد اقل core i5 با فرکانس حداقل ۲٫۵ گیگاهرتز و بیشتر مناسب است.

۴- حافظه RAM
شما به رم بیشتر نیاز دارید اگر شما از IDE هایی ازقبیل Eclipse یا android studio و… کار کرده باشید متوجه آن خواهید شد که آن ها در حال جوییدن Ram هستند. 🙂

فکر نمیکنم با کمتر از ۴ گیگابایت رم بتوان به صورت جدی برنامه نویسی کرد. حداقل رم مورد نیاز برای این کار ۸ گیگابایت میباشد. اگر پول بیشتری دارید روی ۱۶ گیگابایت رم میتوانید حساب کنید.

بیشتر از ۱۶ گیگابایت نیاز نمیباشد مگر این که کار شما خیلی خاص باشد مثل اجرای چندین ماشین مجازی روی لپ تاپ و از این قبیل کار ها.

۵- نوع حافظه و ظرفیت آن
دارا بودن یک هارد SSD را در اولویت های خود قرار دهید. این نوع حافظه باعث بهبود قابل توجهی از سرعت پردازش نسبت به هارد های HDD خواهد شد. در هر عملیاتی باعث افزایش سرعت خواهد شد در کار هایی مثل بوت شدن سیستم عامل، کامپایل کردن کد، راه اندازی برنامه ها، و لود کردن پروژه ها.

یک حافظه SSD با ظرفیت ۲۵۶ گیگابایت مناسب است و اگر میخواهید پول بیشتری خرج کنید ۵۱۲ گیگابایت و یا ۱ ترابایت میتواند ایده آل باشد.

اگر هزینه برای شما مهم است میتوانید یک هارد SSD با ظرفیت ۱۲۸ گیگابایت انتخاب کنید و در کنار آن از یک هارد اکسترنال برای نگهداری فایل هایی از نظیر فیلم ها و موسیقی و … استفاده کنید. منظور این است که سیستم عامل و برنامه های مورد نیاز (که نیازمند سرعت زیاد در اجرا شدن دارند) را بر روی هارد ssd نصب کنید و فایل های غیر ضروری را بر روی هارد اکسترنال بریزید.

۶- کیبورد
وقتی دنبال انتخاب و خرید لپ تاپ مناسب برنامه نویسی می باشد حتما حتما باید به کیبورد توجه ویژه داشته باشید. شما نمیتوانید کیفیت صفحه کلید را در نظر نگیرید. در حالی که روزانه ساعت ها باید با آن کار کنید. چیزی که باید در انتخاب کیبورد در نظر بگیرید این است که کیبورد شما دارای کلید هایی نرم و از نظر طراحی کلید ها نه خیلی به هم نزدیک باشند نه خیلی از هم دور باشند.

داشتن کیبوردی که نور پس زمینه دارد چیز بدی نیست اما برای یک برنامه نویس نیازی به نگاه کردن به کلید های صفحه نمایش، با تایپ ۱۰ انگشتی نیست بهتر است تایپ ۱۰ انگشتی را خوب یاد بگیرید زیرا در برنامه نویسی کیبورد شما صلاح شماست.

۷- باتری
اگر بیشتر وقت خود را در نزدیکی یک منبع برق صرف کنید، عمر باتری خوب ممکن است برای شما مهم نباشد. اما اگر اینطور نیست پس مهم است یک باتری با قابلیت نگهداشتن ۶ ساعت شارژ ایده آل است.

۸- گرافیک
گرافیک برای اهداف برنامه نویسی بسیار مهم نیست. میتوانید از یک گرافیک سرخود استفاده کنید و به جای هزینه آن به هارد و سی پی یو خود بیشتر بها بدهید. البته باید ببینید کار شما چیست برای مثال یک برنامه نویس php اصلا نیازی به گرافیک ندارد، اما کسی که کارش بازی سازی است قطعا نیازمند گرافیک خیلی بالا میباشد.

نکته مهم: اگر بودجه پایینی دارید پیشنهاد می کنم لپ تاپی رو انتخاب کنید که بدون سیستم عامل باشد چون اگر سیستم عامل روی آن نباشد هزینه آن مقداری کاهش پیدا می کند. 

ویژگی های لپ تاپ مناسب برنامه نویسی

بهترین لپ تاپ ها برای برنامه نویسی

بعد از اینکه ویژگی های لپ تاپ مناسب برنامه نویسی را مورد بررسی قرار دادیم حال می خواهیم در قالب یک لیست، حداقل سخت افزار مورد نیاز یک کامپیوتر برای برنامه نویسی را ارائه دهیم. اگر بخواهیم بگیم بهترین لپ تاپ برای برنامه نویسی چه لپ تاپی هست باید این حداقل ها رو داشته باشد. در دو لیست زیر، حداقل و حداکثر سخت افزار مورد نیاز یک کامپیوتر (لپ تاپ) برای برنامه نویسی را شرح داده ایم.

حداقل سخت افزار مورد نیاز یک کامپیوتر برای برنامه نویسی

  • ۴ گیگابایت حافظه Ram
  • ۱۲۸ گیگابایت هارد SSD
  • ۵۰۰ گیگابایت حافظه Hdd
  • سی پی یو مدل intel Core i5
  • صفحه نمایش با Full HD 1920 x 1080

حداکثر سخت افزارمورد نیاز یک کامپیوتر برای برنامه نویسی به صورت جدی

  • ۱۶ گیگابایت حافظه Ram
  • ۲۵۶ گیگابایت هارد SSD
  • ۱ ترابایت حافظه Hdd
  • سی پی یو مدل intel Core i7
  • صفحه نمایش بالا تر از Full HD 1920 x 1080 

قیمت لپ تاپ مناسب برنامه نویسی

قیمت لپ تاپ مناسب برنامه نویسی

خب تا این لحظه توضیحاتی در مورد ویژگی های لپ تاپ مناسب برنامه نویسی ارائه دادیم و حداقل و حداکثری ها رو مشخص کردیم حال میخواهیم در مورد قیمت لپ تاپ مناسب برنامه نویسی صحبت کنیم و چند نمونه رو ارائه دهیم. اگر به فکر خرید لپ تاپ مناسب برنامه نویسی هستید پیشنهاد میکنم حتما از لپ تاپ های زیر دیدن کنید. 

لپ تاپ مناسب برنامه نویسی تا ۳ میلیون (بین ۲٫۵ تا ۳ میلیون)

در این وضعیت نا به سامان بازار خیلی سخت هستش بخوای لپ تاپ با قیمت سه میلیون پیدا کنید. اگر می تونید دنبال لپ تاپ های استوک خوب بگردید اگر هم میخواید حتما نو باشه و تا حدودی کار برنامه نویسی شما رو راه بندازی به نظرم گزینه های زیر قابلیت بررسی رو دارند. (این لپ تاپ هایی که معرفی می کنم زیاد قوی نیستن چون با سه میلیون نمیشه بیشتر از این ها تهیه کرد.)

  • لپ تاپ ۱۵ اینچی لنوو مدل Ideapad 110 – K
  • لپ تاپ ۱۵ اینچی لنوو مدل Ideapad V310 – R
  • لپ تاپ ۱۱ اینچی لنوو مدل N22
  • لپ تاپ ۱۵ اینچی لنوو مدل Ideapad 120s N3350
  • لپ تاپ ۱۵ اینچی لنوو مدل Ideapad 110 N3060
  • لپ تاپ ۱۵ اینچی ایسوز مدل VivoBook Max X541SA N3060

لپ تاپ مناسب برنامه نویسی تا ۵ میلیون (بین ۴ تا ۵ میلیون)

اگر بودجه شما تا ۵ میلیون هستش دست شما کمی بازتر هستش و می توانید انتخاب های بیشتری داشته باشید. در بخش زیر بهترین لپ تاپ ها برای برنامه نویسی در رنج قیمت ۵ میلیون تومان رو معرفی کرده ایم.

  • لپ تاپ ۱۵ اینچی ایسوس مدل VivoBook X541UA – DM2223
  • لپ تاپ ۱۵ اینچی ایسوس مدل VivoBook X541NA – B
  • لپ تاپ ۱۵ اینچی ایسوس مدل ASUSPRO P2540NV – A
  • لپ تاپ ۱۵ اینچی ایسوس مدل X541UV – P
  • لپ تاپ ۱۵ اینچی اچ پی مدل ۱۵-bs019ne
  • لپ تاپ ۱۵ اینچی اچ پی مدل bs095nia -A
  • لپ تاپ ۱۵ اینچی اچ پی مدل ۱۵-bw096nia
  • لپ تاپ ۱۵ اینچی اچ پی مدل ۱۵-bw094nia
  • لپ تاپ ۱۵ اینچی لنوو مدل Ideapad 330 – FA
  • لپ تاپ ۱۵ اینچی لنوو مدل Ideapad 320 – AO
  • لپ تاپ ۱۵ اینچی لنوو مدل Ideapad 330 – G
  • لپ تاپ ۱۵ اینچی لنوو مدل Ideapad V310 – V

لپ تاپ مناسب برنامه نویسی تا ۸ میلیون (بین ۷ تا ۸ میلیون)

اگر می خواهید تا ۸ میلیون هزینه کنید دستتون بیشتر باز میشه و می تونید از بین تعداد زیادی لپ تاپ یکی رو انتخاب کنید. البته فکر نکنید یک ابر قول می تونید انتخاب کنید. با این قیمت می تونید یک لپ تا معمولی و نسبتا خوب انتخاب کنید. در بخش زیر ۵ مدل لپ تاپ معرفی کردیم که بین ۷ تا ۸ میلیون بودجه می خواند.

  • لپ تاپ ۱۵ اینچی ایسوس مدل – A540UP – B
  • لپ تاپ ۱۵ اینچی ایسوس مدل X541UV – N
  • لپ تاپ ۱۵ اینچی ایسوس مدل R556QG- A
  • لپ تاپ ۱۵ اینچی لنوو مدل ThinkPad E580 – B
  • لپ تاپ ۱۵ اینچی لنوو مدل Ideapad 320- AD

لپ تاپ مناسب برنامه نویسی تا ۱۱ میلیون (بین ۱۰ تا ۱۱ میلیون)

اگر می توانید مبلغی بین ۱۰ تا ۱۱ میلیون هزینه کنید شاید بتوان یک لپ تاپ قابل قبول تهیه کرد. در بخش زیر تعدادی لپ تاپ خوبی در این رنج قیمت معرفی کرده ایم که پیشنهاد می کنم حتما مورد بررسی قرار دهید. 

  • لپ تاپ ۱۵ اینچی ایسوس مدل VivoBook K570UD – A
  • لپ تاپ ۱۴ اینچی ایسوس مدل R419UN – B
  • لپ تاپ ۱۵ اینچی ایسوس مدل R542UN- F
  • لپ تاپ ۱۵ اینچی اچ پی مدل ProBook 450 G5 – C
  • لپ تاپ ۱۵ اینچی اچ پی مدل ۱۵-bs193nia
  • لپ تاپ ۱۴ اینچی اچ پی مدل Pavilion x360 – ۱۴-ba002ne
  • لپ تاپ ۱۵ اینچی لنوو مدل ThinkPad E580 – D
  • لپ تاپ ۱۵ اینچی دل مدل Inspiron 5570-DEY
  • لپ تاپ ۱۵ اینچی دل مدل Inspiron 5570-DEL

لپ تاپ مناسب برنامه نویسی تا ۱۵ میلیون (بین ۱۴ تا ۱۵ میلیون)

اگر بودجه شما به ۱۵ میلیون برسد قاعدتا می توانید گزینه های خیلی بهتری رو انتخاب کنید. در بخش زیر تعدادی لپ تاپ با این بودجه رو معرفی کرده ایم. که می توانید این مدل ها رو هم مورد بررسی قرار دهید. 

  • لپ تاپ ۱۵ اینچی ام اس آی مدل GE63 7RC Raider
  • لپ تاپ ۱۴ اینچی اچ پی مدل Pavilion x360 – ۱۴-ba105 – A به همراه قلم نوری
  • لپ تاپ ۱۵ اینچی اچ پی مدل ProBook 450 G5 – I
  • لپ تاپ ۱۳ اینچی مایکروسافت مدل Surface Book
  • لپ تاپ ۱۳٫۳ اینچی دل مدل Inspiron 5379 Y

لپ تاپ مناسب برنامه نویسی تا ۲۰ میلیون (بین ۱۸ تا ۲۰ میلیون)

شاید یکم تعجب کنید با این قیمت ها، ولی راسیتش اگر یک لپ تاپ عالی می خواید حتما باید بالای ۲۰ میلیون هزینه کنید. در بخش زیر تعدادی لپ تاپ از رنج قیمت ۱۸ تا ۲۰ میلیون معرفی کرده ایم که می توانید این مدل ها رو هم مورد بررسی قرار دهید. 

  • لپ تاپ ۱۳ اینچی اپل مدل MacBook Pro MPXT2 2017
  • لپ تاپ ۱۳ اینچی اپل مدل MacBook Pro MPXV2 2017 همراه با تاچ بار
  • لپ تاپ ۱۴ اینچی لنوو مدل ThinkPad T470P – C
  • لپ تاپ ۱۳ اینچی مایکروسافت مدل Surface Book

نتیجه گیری:
دوستان عزیز اگر شما میخواید برنامه نویسی کار کنید نیاز نیست حتما یک سیستم یا لپ تاپ خیلی قوی داشته باشید برای ابتدای کار همین سیستم ها و لپ تاپ های عادی و معمولی کافی هست، مهم شروع برنامه نویسی می باشد که استارت بزنید. سعی کنید زیاد درگیر این حاشیه ها برای یادگیری برنامه نویسی نشید. 

نکته مهم: این لپ تاپ هایی که ما معرفی کردیم فقط نمونه بود شما وقتی می خواید اقدام به خرید یک لپ تاپ مناسب برنامه نویسی کنید حتما حتما باید خودتون بیشتر تحقیق کنید و بر اساس نیاز و بودجه ای که کنار گذاشته اید خرید کنید.

زبان های برنامه نویسی مفسری


بعد از اینکه مقالات مفسر در برنامه نویسی چیست و بررسی تفاوت کامپایلر و مفسر رو در سایت منتشر کردیم حال میخواهیم در مورد زبان های برنامه نویسی مفسری صحبت کنیم و ببینیم چه زبان های برنامه نویسی مفسری هستند. البته ابتدا توضیحاتی در مورد زبان های مفسری میدیم و در نهایت می گیم چه زبان هایی مفسری هستند. در مقاله ای جدا هم در مورد زبان های کامپایلری صحبت می کنیم و می گیم چه زبان های برنامه نویسی کامپایلری هستند.

زبان های برنامه نویسی مفسری

قبل از اینکه شروع به معرفی زبان های برنامه نویسی مفسری کنیم باید بدونیم اصلا زبان های مفسری چی هستند و چگونه کار می کنند. در بخش پایین در این باره صحبت می کنیم و توضیحاتی رو ارائه میدهیم.

زبان های مفسری

اگر بخواهیم واضح بگویم مفسر در برنامه نویسی چیست؟ مفسر یک برنامه کامپیوتری است که دستورهای نوشته شده در یک زبان برنامه نویسی را اجرا می‌کند. مفسر در واقع یک زبان برنامه نویسی سطح بالا را به یک زبان قابل فهم برای ماشین تبدیل می کند. 

نکته مهم: در زبان های مفسری کد ها به صورت خط به خط تفسیر و اجرا می شوند و در اجرا بعدی برنامه نیز به همین صورت ادامه می یابد.

همینطور که می دانید هر دستگاه کامپیوتری (کامپیوترهای رومیزی، نوت بوک ها، گوشی های هوشمند، تبلت ها و …) از سخت افزار خاصی ساخته شده است که دارای قسمت های مختلفی از جمله پردازنده (Processor) است. حال اگر بخواهید برای این پردازنده برنامه ای بنویسید که این پردازنده کاری را انجام دهد باید دستورات زبان ماشین خاص آن پردازنده را یکجا نوشته و در یک فایل ذخیره کنید و برای اجرا آن فایل را یکباره به پردازنده بدهید تا اجرا کند.
چون نوشتن به زبان ماشین بسیار نیاز به حوصله و وقت دارد و اشکال زدایی (دیباگ) آن نیز کار پر مشقت و وقت گیر است معمولا از سایر زبان ها استفاده می کنند و آن زبان ها را با “برنامه های خاصی” به زبان ماشین تبدیل می کنند.

اگر آن برنامه خاص تبدیل دستورات به زبان ماشین را به جای یکباره و کامل به صورت دستور به دستور انجام دهد و همان لحظه دستور تبدیل شده (فقط و فقط همان دستور را) برای اجرا به پردازنده تحویل دهد و پس از اجرا دوباره دستور بعد را به زبان ماشین تبدیل کند و به پردازنده تحویل دهد و … این ماجرا تا به انتهای دستورات به صورت خط به خط تکرار شود و دستورات زبان ماشین توسط پردازنده فقط اجرا شوند و در فایلی ذخیره نشوند به آن برنامه خاص اینترپرتر یا مفسر می گویند.

در گذشته های دور نسخه های مختلف بیسیک جزو معروفترین زبان های اینترپرتری یا مفسری دنیا بودند نسخه هایی نظیر GWbasic و Basica و QBasic و …

بزرگترین مزیت اینترپرتر یا مفسر این است که برنامه نوشته شده اصلی وابستگی کمتری به نوع سخت افزار دارد. لذا برنامه ای که به زبان مفسر نوشته شود همانطور که می تواند روی یک کامپیوتر پردازنده اینتل اجرا شود می تواند بر روی یک تبلت با پردازنده آرم نیز اجرا شود یا روی یک موبایل یا یک اسباب بازی مدل.

توجه: برای اینکه به صورت دقیق بدونید زبان های مفسری چه هستند یا اصلا مفسر در برنامه نویسی چیست پیشنهاد می کنم مقاله مفسر در برنامه نویسی چیست رو مطالعه کنید. در این مقاله به صورت کامل و دقیق در مورد مفسر در برنامه نویسی صحبت کرده ایم

از نظر نحوه ی اجرا

از نظر نحوه ی اجرا نیز معمولا می توان زبان ها را به دو دسته تقسیم کرد.

به دسته اول زبان های کامپایلری یا کامپایل شونده ( Compiled ) گفته می شود. این زبان های برای اجرا به کامپایلر نیاز دارند. کامپایلر برنامه ای است که کد مربوط را خط به خط از نظر درستی بررسی کرده و سپس در صورت عدم وجود خطا کل کد را به زبان قابل اجرا برای ماشین تبدیل می کند. کد کامپایل شده در نهایت به صورت یک فایل قابل اجرا برای سیستم هدف درآمده و دیگر قابل تغییر نیست. در صورت نیاز به تغییر باید کد اصلی را ویرایش کرده و آن را مجددا کامپایل کنیم.

به زبان های دسته دوم مفسری یا اسکریپتی ( Scripting ) گفته می شود. این زبان ها به جای کامپایلر به مفسر نیاز دارند. مفسر کد برنامه را خط به خط بررسی کرده و همان لحظه اجرا می کند. فایل حاوی کد های یک زبان های مفسری به وسیله مفسر مستقیما اجرا می شود و با تغییر فایل و ذخیره آن نتیجه هم تغییر می کند.

یکی از تفاوت های این دو دسته مربوط خطا یابی است. در دسته اول اگر در خطی از برنامه خطایی موجود باشد کامپایلر کد را کامپایل نمی کند ولی در دسته دوم مفسر کد های قبل از خطا را اجرا می کند و وقتی به خطا می رسد ارور داده و متوقف می شود. (البته در بعضی زبان های مفسری در صورت رسیدن به خطا مفسر متوقف نمی شود و از خط دارای خطا عبور می کند و به تفسیر بقیه خطوط می پردازد)

توجه: برای درک بهتر تفاوت زبان های مفسری و کامپایلری پیشنهاد میکنم مقاله بررسی تفاوت کامپایلر و مفسر رو مطالعه کنید. در این مقاله در قالب ۱۴ مورد به بررسی تفاوت زبان های مفسری و کامپایلری پرداخته ایم.

 زبان های برنامه نویسی مفسری

تعداد زیادی زبان برنامه نویسی داریم که مفسری می باشد. که در بخش زیر تعدادی از زبان های معروف که مفسر هستند رو لیست کرده ایم.

  • پایتون
  • جاوااسکریپت
  • بیسیک
  • وی بی اسکریپت
  • زبان PHP
  • پرل
  • روبی
  • زبان Forth
  • و …

زبانهای تفسیری و کامپایلی

بسیاری از افراد زبانهای سطح بالا را به دو دسته تفسیری و کامپایلی تقسیم می کنند. کامپایلر ها و مفسر ها روی زبان ها عمل می کنند نه زبانها روی آنها، مثلا این تصور وجود دارد که الزاما BASIC تفسیر می شود و C کامپایل. اما ممکن است نمونه هایی از BASIC یا C ارائه شود که به ترتیب کامپایلری و تفسیری باشد. البته استثنا هایی نیز وجود دارد، مثلا برخی زبانها در خصوصیات خود این تقسیم بندی را مشخص کرده اند (C کامپایلری است یا SNOBOL4 و اکثر زبانهای اسکریپتی که کد منبع زمان اجرا دارند تفسیری می باشد).

نکته مهم: زبان هایی مثل جاوا، ویژوال بیسیک دات نت و سی شارپ زبان هایی هستند که هم کامپایلری هستند هم مفسری.

تفاوت کامپایلر و اسمبلر | آموزش برنامه نویسی


در مقالات قبل که در سایت منتشر کردیم در زمینه کامپایلر و مفسر صبحت هایی کردیم و گفتم هر کدوم چی هستند، چه کاربردی دارند و در نهایت تفاوت هاشون رو مورد بررسی قرار دادیم. حال در این مقاله میخواهیم در مورد تفاوت کامپایلر و اسمبلر صحبت کنیم و این دو رو مورد بررسی قرار دهیم. پیشنهاد میکنم حتما مقالات کامپایلر در برنامه نویسی چیست و بررسی انواع کامپایلر، مفسر در برنامه نویسی چیست و بررسی تفاوت کامپایلر و مفسر رو مطالعه کنید تا درک خوبی نسب به کامپایلر و مفسر داشته باشید. همراه ما باشید تا به بررسی تفاوت کامپایلر و اسمبلر بپردازیم.

تفاوت کامپایلر و اسمبلر

قبل از اینکه شروع به تفاوت کامپایلر و اسمبلر کنیم باید ابتدا بدونیم کامپایلر و اسمبلر چی هستند و به چه دردی می خورند بعد بیایم و در مورد تفاوتشون بنویسیم. در بخش زیر هر دو رو تعریف کرده ایم.

کامپایلر چیست؟

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

به بیان ساده، کامپایلر برنامه‌ای است که یک برنامه نوشته شده در یک زبان خاص ساخت‌یافته را خوانده و آن را به یک برنامه مقصد (Target Language) تبدیل می‌نماید. در یکی از مهم‌ترین پروسه‌های این تبدیل، کامپایلر وجود خطا را در برنامه مبدأ اعلام می‌نماید.

تعریف یکی از دوستان از کامپایلر، کامپایلر برنامه‌ای رایانه‌ای می‌باشد که به‌منظور انتقال زبان‌های برنامه‌نویسی سطح بالا به زبان‌های سطح پایین مانند زبان اسمبلی و زبان ماشین، جهت اجرایی شدن، طراحی وارائه‌شده‌اند، خروجی این نرم‌افزار برای ماشین‌هایی مانند رایانه قابل اجرا هست.

کامپایلرها به عنوان ابتدایی ترین و اصلی‌ترین برنامه، برای برنامه نویسان به شمار می‌آیند، در اولین نگاه ممکن هست کامپایلر ها برنامه‌های ساده و بدون تنوع باشند اما با نگاه دقیق‌تر مشخص می‌شود که آنها در برخی موارد دارای پیچیدگی‌هایی هستند که به علت ویژگی‌های متفاوت آنها پدید آمده است. برخی از این پیچیدگی‌ها به علت دشوار بودن برخی زبان‌های سطح ماشین می‌باشد؛ به عبارتی زبان‌های سطح ماشین مانند زبان‌های برنامه‌نویسی سطح بالا به سادگی قابل‌فهم برای انسان نیستند و برای همین منظور است که انسان به زبان‌های سطح بالا برنامه را می‌نویسد و با استفاده از کامپایلرها آن را به سطح پایین و سطح ماشین تبدیل می‌کند. 

اسمبلر چیست؟

به طورکلی اسمبلر نرم افزاری است که دستورات قابل فهم برای انسان را به دستورات قابل فهم برای کامپیوتر تبدیل می کند و درصورت وجود اشتباهات دستوری آنها را گزارش می کند.
توضیحات کامل: اسمبلر برنامه‌ای است که با تبدیل یادیارهای دستوری اسمبلی به آپ‌کدها و جایگزینی شناسه‌ها با آدرس‌های حافظه، کد هدف را به وجود می‌آورد. استفاده از ارجاعات نمادی از ویژگی‌های کلیدی اسمبلرها است که از محاسبات خسته‌کننده و به‌روزرسانی‌های دستی آدرس‌ها بعد از تغییر کد برنامه توسط برنامه‌نویس جلوگیری می‌کند. بیشتر اسمبلرها از قابلیت ماکرو نیز بهره می‌برند که این امکان را به وجود می‌آورد تا یک نام خاص برای یک تکه کد مشخص شود و سپس از آن نام در قسمت‌های مختلف برنامه استفاده شود و در هنگام اسمبل کردن برنامه تکه کد مربوطه جایگزین نام آن شود؛ به عنوان مثال از این روش برای تولید توالی‌های دستوری کوتاه رایج در خلال متن برنامه به جای فراخوانی رویه‌ها استفاده می‌شود.

نکته مهم: زبان اسمبلی از یادیارها برای نشان دادن هر دستور ماشین سطح پایین یا آپ‌کد استفاده می‌کند. بعضی آپ‌کدها به یک یا چند عملوند به عنوان بخشی از دستورالعمل نیاز دارند، و بیشتر اسمبلرها می‌توانند لیبل‌ها و نمادهایی را به عنوان عملوند، برای نشان دادن آدرس‌های حافظه و ثابت‌های عددی بپذیرند.

اسمبلرها از دهه ۱۹۵۰ مورد استفاده قرار گرفتند و نوشتن آن‌ها بسیار راحت‌تر از نوشتن متجرم‌ها برای زبان‌های برنامه‌نویسی سطح بالا است به‌طوری‌که هر دستور یادیاری و هر آدرس حالت ترکیبی این زبان مستقیماً به یک آپ‌کد زبان ماشین تبدیل می‌شود. اسمبلرهای جدید، به‌طور خاص برای معماری‌های ریسک، مانند اسپارک و پاور، هم‌مانند معماری ایکس۸۶ و ایکس۸۶–۶۴، با بهینه‌سازی زمان‌بندی دستورالعمل‌ها باعث استفاده کارآمد از خط لولهٔ واحد پردازش مرکزی می‌شوند.

برخی از رایج‌ترین اسمبلرهای معماری ایکس۸۶ عبارتند از:

  • مایکروسافت ماکرو اسمبلر (Microsoft Macro Assembler یا MASM)
  • نت‌واید اسمبلر (Netwide Assembler یا NASM)
  • گنو اسمبلر (Gnu Assembler یا GAS)
  • توربو اسمبلر (Turbo Assembler یا TASM)

تفاوت کامپایلر و اسمبلر

کامپایلر برنامه مورد نظر را به طور کامل بررسی و تبدیل به زبان ماشین می کند اگر به خطایی حین ترجمه برخورد کند آن خطا را نگه داشته و پس از اتمام کار لیستی از خطاهایی را که برنامه داشته به کاربر اعلام می کند.
مفسر یک برنامه را خط به خط ترجمه می کند اگر حین ترجمه به خطا بر بخورد کار ترجمه را پایان داده و روی خط مورد نظر می ایستد تا خطا رفع شود.
اسمبلر که برای زبان اسمبلی به کار میرود خط به خط شروع به ترجمه برنامه میکند از این نظر تا حدودی مانند مفسر عمل می کند اما ممکن است برای تبدیل یک برنامه با پسوند obj مجبور شود که دوبار برنامه را بررسی کند. مثلا اگر تعداد پرش ها بسیار زیاد باشد اسمبلر قسمتهایی از برنامه را خالی می گذارد و پس از یک ترجمه کلی برنامه(مانند کامپایلر) و درک منطق آن به سراغ جاهای خالی رفته و آنها را به زبان ماشین تبدیل می کند.

منبع: مقاله What is the difference between an Assembler, a Compiler & an Interpreter?

بررسی تفاوت کامپایلر و مفسر


بعد از اینکه مقالاتی در زمینه کامپایلر و مفسر در سایت با عنوان کامپایلر در برنامه نویسی چیست و بررسی انواع کامپایلر و مفسر در برنامه نویسی چیست منتشر کردیم مفسر و کامپایلر در واقع یک زبان برنامه نویسی سطح بالا را به یک زبان قابل فهم برای ماشین تبدیل می کنند. حال باید اقدام به بررسی تفاوت کامپایلر و مفسر کنیم و ببینیم مفسر و کامپایلر چه تفاوت هایی با هم دارند. 

بررسی تفاوت کامپایلر و مفسر

قبل از اینکه شروع به بررسی تفاوت کامپایلر و مفسر کنیم باید بدونیم کامپایلر و مفسر چی هستند که یه دید کلی پیدا کنیم و بعدش تفاوت هاشون رو مورد بررسی قرار دهیم. در بخش زیر در مورد این دو توضیحات مختصری ارائه داده ایم.

کامپایلر چییست؟

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

به بیان ساده، کامپایلر برنامه‌ای است که یک برنامه نوشته شده در یک زبان خاص ساخت‌یافته را خوانده و آن را به یک برنامه مقصد (Target Language) تبدیل می‌نماید. در یکی از مهم‌ترین پروسه‌های این تبدیل، کامپایلر وجود خطا را در برنامه مبدأ اعلام می‌نماید.

تعریف یکی از دوستان از کامپایلر، کامپایلر برنامه‌ای رایانه‌ای می‌باشد که به‌منظور انتقال زبان‌های برنامه‌نویسی سطح بالا به زبان‌های سطح پایین مانند زبان اسمبلی و زبان ماشین، جهت اجرایی شدن، طراحی وارائه‌شده‌اند، خروجی این نرم‌افزار برای ماشین‌هایی مانند رایانه قابل اجرا هست.

توجه: برای درک بهتر و دقیق تر پیشنهاد میکنم مقاله کامپایلر در برنامه نویسی چیست و بررسی انواع کامپایلر رو کامل مطالعه کنید.

مفسر چیست؟

اگر بخواهیم واضح بگویم مفسر در برنامه نویسی چیست؟ مفسر یک برنامه کامپیوتری است که دستورهای نوشته شده در یک زبان برنامه نویسی را اجرا می‌کند. مفسر در واقع یک زبان برنامه نویسی سطح بالا را به یک زبان قابل فهم برای ماشین تبدیل می کند. 

نکته مهم: در زبان های مفسری کد ها به صورت خط به خط تفسیر و اجرا می شوند و در اجرا بعدی برنامه نیز به همین صورت ادامه می یابد.

همینطور که می دانید هر دستگاه کامپیوتری (کامپیوترهای رومیزی، نوت بوک ها، گوشی های هوشمند، تبلت ها و …) از سخت افزار خاصی ساخته شده است که دارای قسمت های مختلفی از جمله پردازنده (Processor) است. حال اگر بخواهید برای این پردازنده برنامه ای بنویسید که این پردازنده کاری را انجام دهد باید دستورات زبان ماشین خاص آن پردازنده را یکجا نوشته و در یک فایل ذخیره کنید و برای اجرا آن فایل را یکباره به پردازنده بدهید تا اجرا کند.
چون نوشتن به زبان ماشین بسیار نیاز به حوصله و وقت دارد و اشکال زدایی (دیباگ) آن نیز کار پر مشقت و وقت گیر است معمولا از سایر زبان ها استفاده می کنند و آن زبان ها را با “برنامه های خاصی” به زبان ماشین تبدیل می کنند.

اگر آن برنامه خاص تبدیل دستورات به زبان ماشین را به جای یکباره و کامل به صورت دستور به دستور انجام دهد و همان لحظه دستور تبدیل شده (فقط و فقط همان دستور را) برای اجرا به پردازنده تحویل دهد و پس از اجرا دوباره دستور بعد را به زبان ماشین تبدیل کند و به پردازنده تحویل دهد و … این ماجرا تا به انتهای دستورات به صورت خط به خط تکرار شود و دستورات زبان ماشین توسط پردازنده فقط اجرا شوند و در فایلی ذخیره نشوند به آن برنامه خاص اینترپرتر یا مفسر می گویند.

توجه: برای درک بهتر و دقیق تر پیشنهاد میکنم مقاله مفسر در برنامه نویسی چیست رو کامل مطالعه کنید.

تفاوت کامپایلر و مفسر

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

یکی از تفاوت های این زبان ها این می باشد که زبان مفسر برای اجرا نیاز به یک نرم افزار مفسر یا interpreter دارد اما زبان کامپایلر تنها یکبار کامپایل شده و از آن پس بر روی هر سیستمی قابل اجرا می باشد. اما همین نکته این تفاوت را ایجاد می کند که، زبان کامپایلر وابسته به سیستم عامل است، یعنی در صورتی اجرا خواهد شد که در آن سیستم عامل کامپایل شده باشد و در سیستم عامل های دیگر اجرا نخواهد شد. اما زبان مفسر در هر سیستم عاملی که نرم افزار مفسر آن وجود داشته باشد اجرا و تفسیر می گردد و در واقع وابسته به سیستم عامل نیست.

دیگر تفاوت این زبان ها سرعت اجرا و میزان استفاده از منابع می باشدو با توجه به این نکته که زبان های Interpreter کد ها را به صورت خط به خط تفسیر و اجرا می کنند، این امر باعث می شود تا مقدار زیادی از CPU و RAM کامپیوتر استفاده شود و قطعا مشخص است که سرعت پایین تری نیز خواهد داشت. اما امتیاز کامپایل شدن یکباره ی زبان های کامپایلر این است که در اجرا های متعدد سبک تر بوده و سرعت بهتری خواهند داشت.

همین مزیت یک مرتبه به صورت کامل کامپایل شدن زبان های کامپایلر در بخش ایراد سنجی و رفع مشکل نقص به حساب می آید. زیرا در زبان های مفسر هنگامی که برنامه خط به خط اجرا می شود، در هر بخشی از برنامه که مشکلی وجود داشته باشد قابل پیدا کردن و رفع می باشد اما در زبان های Compiler برای رفع یک مشکل در کد ها می بایست سورس خود برنامه را مجدد بازبانی کرد و خطا را پیدا کرده و تصحیح کرد، که بسیار دشوار تر از زبان های مفسری می باشد.

برای بررسی تفاوت کامپایلر و مفسر ابتدا به صورت کلی تفاوت کامپایلر و مفسر رو مورد بررسی قرار میدهیم و بعد در قالب ۱۴ مورد این تفاوتها رو بررسی می کنیم. 

  • زبان های مفسری بصورت خط به خط کدها را خوانده و اجرا می کنند
  • زبان های کامپایلری به یکباره کد برنامه را خوانده و آن را هر زمان که نیاز باشد اجرا می کنند
  • برنامه ها در زبان های مفسری وابستگی به سیستم عامل ندارند و در هر سیستم عاملی قابل اجرا هستند
  • برنامه ها در زبان های کامپایلری برای هر سیستم عامل متفاوتی بایستی تغییر کد و مجددا کامپایل شوند
  • برای اجرا یک برنامه مفسری باید مفسیر مورد نظر بر روی سیستم عامل حتما نصب شده باشد
  • برای اجرا یک برنامه کامپایلری نیازی به وجود داشتن کامپایلر بر روی سیستم عامل نمی باشد
  • سرعت اجرای برنامه های مفسری بسیار کند است
  • سرعت اجرای برنامه های کامپایلری بسیار سریع است
  • خطایابی کدهای اجرایی در برنامه های مفسری با توجه به اجرا خط به خط آسانتر است
  • خطایابی کدهای اجرایی در برنامه های کامپایلری با توجه به اجرای کامل برنامه کمی دشوارتر است

بررسی تفاوت های کامپایلر و مفسر

۱- پروسه توسعه نرم‌افزار

کامپایلر: برنامه را می‌سازد سپس همه دستورات زبان را از نظر درستی تجزیه و تحلیل می‌کند و اگر دستوری غلط باشد، ارور می‌دهد و اگر همهٔ دستورات درست باشند، سورس‌کد را به کد ماشین تبدیل می‌کند. فایل‌های مختلفی را به برنامه اجرایی (همان فایل exe) اضافه می‌کند و در نهایت برنامه را اجرا می‌کند.
مفسر: برنامه را می‌سازد. خبری از افزودن فایلی اجرایی به برنامه یا تولید کد ماشین نیست بلکه دستورات سورس‌کد خط به خط در حین اصطلاحاً Run-time اجرا می‌کند.

۲- مزایا

کامپایلر: کد برنامه کاملاً به کد ماشین ترجمه شده است؛ بنابراین زمان اجرای آن کمتر است.
مفسر: استفاده از مفسرها به خصوص برای دولوپرهای مبتدی آسان‌تر است.

۳- معایب

کامپایلر: برای تغییر برنامه حتماً باید به سورس‌کد آن مراجعه شده و در صورت وجود باگ در برنامه، بایستی مجدد کامپایل گردد.
مفسر: اپلیکیشن‌های نوشته شده با زبان‌های تفسیری تنها بر روی کامپیوترهایی اجرا می‌شوند که مفسر مربوطه روی آن‌ها نصب باشد.

۴- سرعت اجرا

کامپایلر: کدهای کامپایل‌شده سریع‌تر اجرا می‌شوند.
مفسر: کدهای تفسیری کندتر اجرا می‌شوند.

۵- فایل خروجی

کامپایلر: یک خروجی تولید می‌کند (با فرمت exe) که می‌تواند بدون نیاز به سورس‌کد اصلی اجرا شود.
مفسر: هیچ‌گونه فایل‌اجرایی تولید نمی‌کند.

۶- اجرا

کامپایلر: اجرای برنامه از فرآیند کامپایل آن جدا است به طوری که اجرای برنامه تنها زمانی اتفاق می‌افتد که کل کدها کامپایل شده باشند.
مفسر: اجرای برنامه بخشی از فرآیند تفسیر آن است؛ بنابراین برنامه خط به خط اجرا می‌شود.

۷- بهینه‌سازی کد

کامپایلر: کامپایلر همهٔ کد را یک‌جا می‌بیند و از همین روی بهینه‌سازی‌های زیادی را برای اجرای سریع‌تر کد انجام می‌دهد.
مفسر: مفسرها کد را خط به خط می‌بینند و لذا بهینه‌سازی‌هایی که انجام می‌گیرد به اندازه کامپایلرها قوی نیستند.

۸- تایپ دینامیک

کامپایلر: پیاده‌سازی آن در کامپایلرها دشوار است چون کامپایلرها نمی‌توانند پیش‌بینی کنند که در حین اجرا چه اتفاقی می‌افتد.
مفسر: زبان‌های تفسیری به خوبی از تایپ دینامیک پشتیبانی می‌کنند.

۹- کاربرد

کامپایلر: بیشتر مناسب Production Environment است و از سرعت اجرای به مراتب بیشتری برخوردار است.
مفسر: بیشتر مناسب Development Environment است و سرعت توسعهٔ نرم‌افزار را بالا می‌برد چرا که در صورت وجود باگ در برنامه، دائم نیازی به کامپایل مجدد برنامه نیست.

۱۰- مدیریت خطاها

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

۱۱- ورودی

کامپایلر: کل برنامه را به عنوان ورودی می‌گیرد.
مفسر: یک خط از کد را به عنوان ورودی می‌گیرد.

۱۲- خروجی

کامپایلر: کامپایلرها کد ماشین تولید می‌کنند.
مفسر: مفسرها هیچ کد ماشینی تولید نمی‌کنند.

۱۳- خطاها

کامپایلر: همه خطاها را هم‌زمان پس از کامپایل نشان می‌دهد.
مفسر: خطاهای یک خط از دستورات را یکی‌یکی نمایش می‌دهد.

۱۴- زبان‌های برنامه‌نویسی تحت پوشش

کامپایلر: Scala ،C# ،C++ ،C و Java همه از کامپایلر استفاده می‌کنند.
مفسر: Perl ،PHP و Ruby از اینترپریتر استفاده می‌کنند.

نحوه کار کامپایلر و مفسر

بعد از اینکه تفاوت کامپایلر و مفسر رو مورد بررسی قرار دادیم حال برای اینکه متوجه نحوه کار کامپایلر و مفسر شوید پیشنهاد می کنم تصویر زیر رو مشاهده کنید تا کامل درک درستی از نحوه کار این دو پیدا کنید.

نحوه کار کامپایلر و مفسر در برنامه نویسی

مفسر در برنامه نویسی چیست و چه کاربردی دارد به همراه ویژگی های آن


بعد از اینکه مقاله کامپایلر در برنامه نویسی چیست و بررسی انواع کامپایلر رو در سایت منتشر کردیم حال می خواهیم در این مقاله در مورد مفسر در برنامه نویسی صحبت کنیم و توضیحاتی در مورد آن ارائه دهیم یعنی به صورت کامل میخواهیم بگویم مفسر در برنامه نویسی چیست و چه کاربردی دارد. برای درک بهتر برنامه نویسی باید مبانی ابتدایی آن را بدانید و بعد شروع به یادگیری و آموزش برنامه نویسی کنید به این صورت خیلی راحتر جلو میرید و دچار مشکل خاصی نمی شوید. 

مفسر در برنامه نویسی چیست

مفسر در برنامه نویسی چیست

اگر بخواهیم واضح بگویم مفسر در برنامه نویسی چیست؟ مفسر یک برنامه کامپیوتری است که دستورهای نوشته شده در یک زبان برنامه نویسی را اجرا می‌کند. مفسر در واقع یک زبان برنامه نویسی سطح بالا را به یک زبان قابل فهم برای ماشین تبدیل می کند. 

نکته مهم: در زبان های مفسری کد ها به صورت خط به خط تفسیر و اجرا می شوند و در اجرا بعدی برنامه نیز به همین صورت ادامه می یابد.

همینطور که می دانید هر دستگاه کامپیوتری (کامپیوترهای رومیزی، نوت بوک ها، گوشی های هوشمند، تبلت ها و …) از سخت افزار خاصی ساخته شده است که دارای قسمت های مختلفی از جمله پردازنده (Processor) است. حال اگر بخواهید برای این پردازنده برنامه ای بنویسید که این پردازنده کاری را انجام دهد باید دستورات زبان ماشین خاص آن پردازنده را یکجا نوشته و در یک فایل ذخیره کنید و برای اجرا آن فایل را یکباره به پردازنده بدهید تا اجرا کند.
چون نوشتن به زبان ماشین بسیار نیاز به حوصله و وقت دارد و اشکال زدایی (دیباگ) آن نیز کار پر مشقت و وقت گیر است معمولا از سایر زبان ها استفاده می کنند و آن زبان ها را با “برنامه های خاصی” به زبان ماشین تبدیل می کنند.

اگر آن برنامه خاص تبدیل دستورات به زبان ماشین را به جای یکباره و کامل به صورت دستور به دستور انجام دهد و همان لحظه دستور تبدیل شده (فقط و فقط همان دستور را) برای اجرا به پردازنده تحویل دهد و پس از اجرا دوباره دستور بعد را به زبان ماشین تبدیل کند و به پردازنده تحویل دهد و … این ماجرا تا به انتهای دستورات به صورت خط به خط تکرار شود و دستورات زبان ماشین توسط پردازنده فقط اجرا شوند و در فایلی ذخیره نشوند به آن برنامه خاص اینترپرتر یا مفسر می گویند.

در گذشته های دور نسخه های مختلف بیسیک جزو معروفترین زبان های اینترپرتری یا مفسری دنیا بودند نسخه هایی نظیر GWbasic و Basica و QBasic و …

بزرگترین مزیت اینترپرتر یا مفسر این است که برنامه نوشته شده اصلی وابستگی کمتری به نوع سخت افزار دارد. لذا برنامه ای که به زبان مفسر نوشته شود همانطور که می تواند روی یک کامپیوتر پردازنده اینتل اجرا شود می تواند بر روی یک تبلت با پردازنده آرم نیز اجرا شود یا روی یک موبایل یا یک اسباب بازی مدل.

تفاوت مفسر با کامپایلر

این دو در واقع یک کار را انجام میدهند ولی با هم یکسان نیستند و تفاوت هایی دارند. در مفسر کد ها خط به خط خوانده، برای کامپیوتر ارسال و اجرا می شود. اما کامپایلر تمام کد ها را یک باره ترجمه می کند و به صورت کامل در RAM نگه میدارد و شما میتوانید هر زمانی که خواستید کدهارا اجرا کنید.

تفاوت دیگر این دو، وابستگی به برنامه می باشد. برنامه یا کد های نوشته شده توسط یک زبان مفسری برای اجرا روی سیستم نیاز به نصب مفسر همان زبان روی سیستم را دارد. در غیر این صورت برنامه اجرا نمی شود. ولی کامپایلر برنامه را یک بار کامپایل می کند و بعد از آن دیگر نیازی به وجود همان کامپایلر روی سیستم نیست. خروجی یک برنامه نوشته شده با کامپایلر، فایل هایی هستند که روی هر سیستمی اجرا میشوند چه کامپایلر نصب باشد چه نباشد.

اما یک مشکل کامپایلر این است که به سیستم وابسته است. یعنی اگر سیستم عامل دستگاه عوض شود امکان اجرای آن برنامه وجود ندارد اما مفسر ها چون خط به خط کد ها را اجرا و ترجمه می کنند امکان استفاده روی سیستم های مختلف را دارند. برای رفع مشکل کدهای کامپایل شده باید آنها را روی سیستم جدید یکبار کامپایل کرد.

اینکه کدام یک برتری دارند به نویسنده برنامه بستگی دارد .اگر قابل حمل بودن اهمیت داشته باشد، مفسری بهتر است. در غیر این صورت اگر سرعت و درگیر نکردن CPU و RAM اهمیت دارد، کامپایلری بهتر است.

توجه: در آینده در مقاله ای جدا به صورت کامل تفاوت مفسر و کامپایلر رو به صورت کامل مورد بررسی قرار میدهیم.

چه زبان های برنامه نویسی، مفسری هستند؟

تعداد زیادی زبان برنامه نویسی داریم که مفسری می باشد. که در بخش زیر تعدادی از زبان های معروف که مفسر هستند رو لیست کرده ایم.

  • پایتون
  • جاوا اسکریپت
  • بیسیک
  • وی بی اسکریپت
  • زبان PHP
  • پرل
  • روبی
  • زبان Forth
  • و …

کامپایلر در برنامه نویسی چیست


بعد از اینکه مقاله IDE چیست و تفاوت آن با کامپایلر رو در سایت منتشر کردیم حال میخواهیم در مورد کامپایلر صحبت کنیم و جواب این سوال رو بدهیم که کامپایلر در برنامه نویسی چیست چه کاربردی دارد و در انتها توضیحاتی در مورد انواع کامپایلر ارائه دهیم. وقتی شما مبانی ابتدایی و اصلی رو یاد می گیرید خیلی راحتر می توانید کد نویسی کنید. در مقاله بعدی در مورد مفسر در برنامه نویسی صحبت می کنم. ولی قبل از مفسر، شما باید بدونید کامپایلر چیه و چه طور کار می کنه، پس این مقاله رو تا انتها مطالعه کنید.

کامپایلر در برنامه نویسی چیست

کامپایلر چیست

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

به بیان ساده، کامپایلر برنامه‌ای است که یک برنامه نوشته شده در یک زبان خاص ساخت‌یافته را خوانده و آن را به یک برنامه مقصد (Target Language) تبدیل می‌نماید. در یکی از مهم‌ترین پروسه‌های این تبدیل، کامپایلر وجود خطا را در برنامه مبدأ اعلام می‌نماید.

تعریف یکی از دوستان از کامپایلر، کامپایلر برنامه‌ای رایانه‌ای می‌باشد که به‌منظور انتقال زبان‌های برنامه‌نویسی سطح بالا به زبان‌های سطح پایین مانند زبان اسمبلی و زبان ماشین، جهت اجرایی شدن، طراحی وارائه‌شده‌اند، خروجی این نرم‌افزار برای ماشین‌هایی مانند رایانه قابل اجرا هست.

کامپایلرها به عنوان ابتدایی ترین و اصلی‌ترین برنامه، برای برنامه نویسان به شمار می‌آیند، در اولین نگاه ممکن هست کامپایلر ها برنامه‌های ساده و بدون تنوع باشند اما با نگاه دقیق‌تر مشخص می‌شود که آنها در برخی موارد دارای پیچیدگی‌هایی هستند که به علت ویژگی‌های متفاوت آنها پدید آمده است. برخی از این پیچیدگی‌ها به علت دشوار بودن برخی زبان‌های سطح ماشین می‌باشد؛ به عبارتی زبان‌های سطح ماشین مانند زبان‌های برنامه‌نویسی سطح بالا به سادگی قابل‌فهم برای انسان نیستند و برای همین منظور است که انسان به زبان‌های سطح بالا برنامه را می‌نویسد و با استفاده از کامپایلرها آن را به سطح پایین و سطح ماشین تبدیل می‌کند. 

تصویر نحوه کار کامپایلر

نکته مهم: کامپایلرها معمولاً توسط شرکت‌های متفاوتی تولید می‌شود و همواره شرکت‌هایی که سخت افزار ماشین را تولید می‌کنند، کامپایلر مورد نیاز آن ماشین را نیز تولید و ارائه می‌کنند، البته کامپایلر ها دارای استاندارهای جهانی هستند که این امر مانع از آن می‌شود که هر شرکت خود به صورت دلخواه استانداردهایی مشخص کند. برای مثال استاندارد زبان اسمبلی یک استاندارد جهانی می‌باشد و شرکت‌های تولید کننده چیپ و میکروچیپ مانند Intel، Motorola و غیره از این زبان استفاده می‌کنند؛ به همین منظور کامپایلرهایی برای تبدیل به این زبان توسط این شرکت‌های ارائه می‌شود. 

مهم‌ترین علت استفاده از کامپایلر

کامپایلرها دارای انواع متنوعی هستند که هر کدام به منظور استفاده برای کاربرهای خاصی تهیه شده است علی‌رغم این تنوع اعمال اساسی که هر کامپایلر بایستی انجام دهد، مشابه هم می‌باشند. مهم‌ترین علت استفاده از کامپایلر ترجمه برنامه منبع به برنامه اجرائی می‌باشد البته در شرایطی برخی کامپایلرها این کار را برعکس نیز انجام می‌دهند به طوری که زبان برنامه نویسی سطح پایین را به زبان برنامه نویسی سطح بالا ترجمه می‌کند.

انواع کامپایلرها

انواع کامپایلر

در بخش زیر سه مدل کامپایلر را مورد بررسی قرار داده ایم که می توانید با خواندن این سه مورد با انواع کامپایلر آشنا شوید. 

کامپایلرهای محلی و عبوری:
اکثر کامپایلرها به دو دسته محلی و عبوری تقسیم می‌شوند. کامپایلرهایی که به منظور اجرای برنامه های باینری هستند، کامپایلرهایی با کد محلی گوییم چرا که تنها در کامپیوترهای یک نوع با سیستم‌عامل های یکسان قابل به کارگیری است. از طرف دیگر ممکن است کامپایلرها کدهای باینری را تولید کنند که در سیستم‌های مختلف قابل اجرا باشد. به این دسته از کامپایلرها که وابستگی به سخت‌افزار ندارند، کامپایلرهای عبوری گوییم.

کامپایلرهای تک فاز و چند فاز:
کامپایلرها از نظر فاز به تک فاز و چند فاز تقسیم بندی می شوند. فاز بندی کامپایلرها در عمل به محدودیت‌های منابع سخت‌افزاری وابسته‌است. در نتیجه کامپایلرها به مجموعه برنامه‌های کوچکتر تقسیم می‌شوند هر یک بخشی از عمل ترجمه یا آنالیز را برعهده می‌گیرند.

کامپایلرهای تفسیری و کامپایلی:
زبانهای سطح بالا را به دو دسته تفسیری و کامپایلی تقسیم می‌کنند. کامپایلرها و مفسرها روی زبان‌ها عمل می‌کنند نه زبانها روی آنها! مثلاً این تصور وجود دارد که الزاماً BASIC تفسیر می‌شود و C کامپایل. اما ممکن است نمونه‌هایی از BASIC یا C ارائه شود که به ترتیب کامپایلری و تفسیری باشد. البته استثناهایی نیز وجود دارد.

بررسی نحوه کار کامپایلرها

کامپایلر چگونه کار می کند؟

بعد از اینکه گفتیم کامپایلر چیست و معنی کامپایلر رو مورد بررسی قرار دادیم حال باید ببینم اصلا کامپایلر چطور کار می کند و به صورت دقیق به آن بپردازیم.

اگر بپذیرید که کامپیوتر تنها قادر به درک مفهوم سیگنال های پذیرش و عدم پذیرش و یا همان سیگنال ها و اعداد صفر و یک است می توانید راحت تر به جواب برسید در واقع سیستم کامپیوتر شامل مدارهایی است که این مدارها فقط به دو سیگنال صفر و یک و یا فعال و غیر فعال و یا روشن و خاموش حساس است و به هیچ وجه قادر به درک الفاظ و زبان طبیعی نمی باشد و حتی از کاری که قرار است انجام بدهد نیز خبر ندارد و مدارهای الکتریکی بر اساس کدهایی که در حافظه قرار می گیرد (کلمات حافظه) و در نهایت پردازش هایی که توسط پردازنده در واحد کنترل و ALU بر روی آن ها صورت می دهد اعمالی انجام می شود. اما آن چه که در این بخش مورد توجه است همان شکل گیری صفر و یک ها در نتیجه یک برنامه به زبان فرضا سی شارپ می باشد. این کاری است که کامپایلرها انجام می دهند.

مکانیسم کلی کار کامپایلرها به این صورت است که برنامه مبدا را خوانده و یک شکل میانی از آن ایجاد نموده و سرانجام آن را به زبان دیگری مانند اسمبلی تبدیل می کند و زبان اسمبلی نیز از شکل میانی برنامه شکل قابل فهم سیستم و یا همان صفر و یک ها را ایجاد و آن ها را در قالب Memory Word برای سیستم و سخت افزار مهیا می نماید. لذا تبدیل شکل ابتدایی برنامه مقصد به یک شکل اجرایی سیستمی از وظایف کامپایلر ها می باشد. البته باید توجه کنیم که کامپایلرها بر اساس قواعد و گرامر زبان مبدا اقدام به تولید زبان مقصد می نمایند.

بررسی اجزای کامپایلر

کامپایلر نویسان برای سهولت در طراحی، اجزای کامپایلر را به بخش های زیر تقسیم بندی می کنند که هر یک عملی را انجام می دهد:

الف) تحلیل گر لغوی (Lexer): در واقع طولانی ترین پروسه را انجام می دهد، با زبان مبدا مستقیما در تعامل بوده و مستقل از زبان مقصد می باشد. تحلیل گر لغوی با خواندن زبان ورودی آن را به مجموعه ای از نشانه های قابل فهم برای تجزیه کننده تقسیم بندی می کند. میدانیم که جملات یک زبان از رشته هایی از نشانه ها تشکیل شده است و دنباله ای از این کاراکترهای ورودی که یک نشانه را تشکیل می دهند یک لغت (Lexeme) نامیده می شوند.

توضیحات، فضاهای سفید و فاصله ها توسط تحلیل گر لغوی نادیده گرفته می شود، سپس نشانه های تولیدی را در جدولی به نام جدول نمادها قرار می دهد و اشاره گری برای دسترسی پارسر به آن ها را بر می گرداند. تشخیص شناسه ها و کلمات کلیدی نیز از جمله مواردی است که Lexer باید آن ها را نیز تشخیص دهد و از سایر نشانه ها تمیز دهد.
بنابراین به طور خلاصه Lexer کاراکترها را از ورودی می خواند، آن ها را به صورت لغت دسته بندی می کند و نشانه های ایجاد شده توسط لغت ها را به همراه مقادیر خصیصه آن ها به مرحله های بعدی کامپایلر منتقل می کند. نشانه های تولید شده در پارسر و یا تجزیه کننده مورد استفاده قرار می گیرد.

ب) تحلیل گر ساختار دستور (Parser): پارسر (Parser) بررسی می کند که آیا می توان دنباله ای از نشانه های ایجاد شده را توسط گرامر زبان مورد نظر تولید نمود یا نه. در واقع پارسر مهم ترین عمل را در طراحی کامپایلر انجام می دهد و آن تولید دنباله از از رشته ها توسط گرامر زبان مبدا می باشد. به طور کل هنگام تحلیل ساختار دستور، نشانه هایی که در زبان مبدا قرار دارند را به عبارت های گرامری دسته بندی می کنیم به طوری که کامپایلر بتواند مجددا با استفاده از آن ها خروجی را ترکیب بندی کند. عبارت های تولید شده را توسط درخت تجزیه نمایش می دهند که درختی است که فرزندان هر گره عبارات سمت راست قوانین گرامر و پدر آن ها سمت چپ هر گره می باشد و گره های برگ مشتمل بر پایانی ها می باشند و یک دنباله از آن ها یک رشته از گرامر را نشان می دهند.

ج) تحلیل گر معنایی (Syntax Analyzer): فاز تحلیل معنایی برنامه مبدا را برای پیدا کردن خطاهای معنایی بررسی کرده و اطلاعات مربوط به نوع داده ها را در درخت تجزیه حاشیه نویسی می کند مثلا بررسی می کند که یک رشته حرفی با یک عدد جمع نزده شده باشد و مانند آن. مجاز بودن نوع داده ها نیز در این بخش بررسی می شود. در واقع در زمان تحلیل معنایی، کامپایلر ساختارهایی را کشف می کند که از نظر ساختار دستوری صحیح هستند اما در رابطه با عملی که انجام می دهند بی معنی هستند.

د) تولید کننده کد میانی: د راین بخش یک شکل میانی قابل فهم اسمبلر و یا یک نمایش میانی صریح از برنامه مبدا تولید می کند که می توان آن را برنامه ای برای یک ماشین انتزاعی در نظر گرفت (مفهوم انتزاعی به معنای قابل فهم بودن برای انسان است نه ماشین) و باید دارای دو ویژگی سهولت تولید و سهولت تبدیل به برنامه مقصد باشد.
نمایش میانی می تواند شکل های گوناگونی داشته باشد مانند صفر، یک، دو، سه و چهار آدرسه. در ساختار فرضا سه آدرسه در هر ثبات می توان سه آدرس را شامل عملگر، عملوند اول و عملوند دوم قرار داد. محاسبه عبارات، نظارت بر ساختارهای جریان کنترلی و احضار رویه ها نیز در این بخش توسط مولد کد میانی صورت می گیرد.

هـ) بهینه ساز کد(Optimizer): کدی که تولید می کنیم باید دو شرط صرفه جویی در حافظه و در زمان اجرا را برآورده کند. گاهی وقت ها کد ما بسیار پیچیده است و با اعمال جایگزینی ها و حذف و درج ها می توان آن را ساده تر و کاراتر نمود. تغییر ساختارهای آدرس دهی نیز می تواند کد را بهینه تر سازد. سرعت اجرا نیز باید در نظر گرفته شود.

و) تولید کد: آخرین فاز کامپایلر، تولید کد مقصد می باشد که معمولا شامل کد ماشین جابه جا پذیر یا کد اسمبلی است. تخصیص حافظه به هر یک از متغیرهای برنامه در این فاز انجام می شود. آن گاه هر یک از دستورهای میانی به یک دنباله از دستورهای ماشین که همان کار را انجام میدهند ترجمه می شوند. یک جنبه مهم آن، جایگزینی متغیرها در ثبات ها می باشد.

IDE چیست و تفاوت آن با کامپایلر


در این مدت سعی کرده ایم اصطلاحات و مبانی ابتدایی برنامه نویسی رو مورد بررسی قرار دهیم و در مورد هر کدام توضیحاتی ارائه دهیم. در این مقاله میخواهیم ببینم IDE چیست و چه تفاوتی با کامپایلر دارد. البته این رو باید متذکر شوم که ما در مورد درگاه ide صحبت نمی کنیم و در مورد IDE در برنامه نویسی صحبت می کنیم. پس اگر میخواهید بدونید IDE در برنامه نویسی چیست این مقاله رو تا انتها مطالعه کنید.

IDE چیست و تفاوت آن با کامپایلر

IDE مخفف چیست؟

قبل از اینکه بیام در مورد IDE صحبت کنیم باید بدونیم IDE مخفف چیست؟ باید بگویم IDE مخفف سه کلمه Integrated Development Enviroment می باشد که کلمه های Integrated به معنی یکپارچه یا مجتمع ، Development یا توسعه و Environment یا محیط می باشد که با در کنار هم قرار دادن این واژه ها به جمله فارسی محیط یکپارچه ( مجتمع ) توسعه می رسیم. در ادامه میگم که کلا این IDE چیست و اصلا چه کاربردی دارد. 

IDE در برنامه نویسی چیست؟

بعد از اینکه فهمیدم IDE مخفف چه کلماتی می باشد و به چه معنی دارد حال بیایم ببینیم کلا IDE چیست؟ در دنیای فناوری اطلاعات به برنامه نویس در اصل توسعه دهنده و به محیطی که یک برنامه نویس در آن برنامه نویسی می کند محیط توسعه یا Development Environment می گویند. بنابراین IDE یک محیط برنامه نویسی است که مجموعه ای از نرم افزارهای که معمولا شامل ویرایشگر کد برنامه (Code Editor)، کامپایلر (Compiler)، دیباگر (Debugger) و در نهایت رابط گرافیکی یا GUI هستند را در یکجا جمع کرده است و در اختیار برنامه نویس قرار داده است تا بتواند براحتی و بدون دغدغه کدهای برنامه خود را تولید کند. 

توجهاگر بخوام خیلی واضح بگم IDE چیست باید بگم IDE یک محیط است که تمام ابزارهایی که برای تولید یک نرم افزار احتیاج داریم به شکل منظمی کنار یکدیگر قرار میدهد که این ابزارها میتوانند شامل کامپایلر، لینکر، دیباگر (خطایاب)، مجموعهای از اشیا و ابزارهای اضافی باشند. به عبارتی دیگر IDE به ما کمک می کند که بتوانیم برنامه هایمان را سریعتر، راحت تر و با کیفیت بیشتری تولید کنیم.

IDE ها داری ویژگی های زیر می باشد

۱- ویرایشگر سورس کد
اولین ویژگی که IDE دارد این است که می توان در آنها کدهای مورد نظر رو نوشت و آنها رو ویرایش کرد. که به اصطلاح به آنها Source Code Editor می گویند. در واقع این ویرایشگر محیطی است که برنامه نویس کدهای خود را درون آن وارد می کند و کدی که نوشته است توسط کامپایلر یا مفسر تبدیل به زبان ماشین و اجرا می شود ، این ویرایشگر از نظر کارکرد بسیار شبیه به ویرایشگر های کدهای HTML متنی است.

۲- کامپایلر یا مفسر
یک کامپایلر که در IDE تعبیه شده است کد نوشته شده در Source Code Editor را تبدیل به برنامه اجرایی می کند و اگر لازم باشد برنامه بصورت خط به خط توسط مفسر یا Interpreter بدون نیاز به کامپایل شدن اجرا می شود.

۳- ابزارهای ساخت اتوماسیون
تمامی فرآیند های مربوط به کامپایل، تفسیر یا Interpret و Debug همگی توسط IDE انجام می شود

۴- اصطلاح کننده خطا
همه IDE ها دارای Debugger هستند تا متوجه شوند که کجای Source Code برنامه مشکل دارد.

Integrated Development Environment

مثال برای درک بهتر IDE 

فکر کنید شما آشپز هستید و می خواهید در یک آشپزخانه شروع به درست کردن یک کیک کنید. در دنیای برنامه نویسی آشپز می شود برنامه نویس، آشپزخانه همان IDE (محیط تولید کیک) هستش و کیک می شود همان کدهایی که می نویسید. حال هر چی این IDE یا آشپزخانه بهتر و امکانات بهتری داشته باشد شما راحتر و سریعتر کیک یا همان کدها رو می نویسید. 

چند نمونه IDE معروف

تعداد IDE های که وجود دارد زیاد می باشد اما چند IDE معروف داریم که به شدت استفاده می شوند. در بخش زیر تعدادی از این IDE ها رو لیست کرده ایم که شاید شما هم بشناید.

  • ویژوال استودیو
  • ایکلیپس
  • اندروید استودیو
  • نت بینز
  • سابلیم تکست
  • و …

IDE ها محیط های بسیار کاربر پسندی را برای برنامه نویسهای امروزی فراهم کرده اند تا جایی که برنامه نویسی به صورت یک کار لذت بخش برای آنها در آمده است ، زبان های برنامه نویسی جدیدی مثل Visual Basic ، Java و PowerBuilder دارای IDE های بسیار کاربردی و پر قابلیتی هستند که هر برنامه نویسی می تواند با آنها کد نویسی کند.

تفاوت کامپایلر با IDE چیست؟

کامپایلر وظیفه ی تبدیل کد های برنامه نویسی به زبان قابل فهم ماشین را برعهده دارد اما IDE یک نرم افزار کمکی برای راحتتر شدن برنامه نویسی است.

جواب سوال:
در این مدت چند سوال در زمینه IDE پرسیده شده مثل IDE در اندروید استودیو چیست یا IDE در جاوا چیست باید بگویم اولا اندروید استودیو خودش یک IDE یا همان محیط کد نویسی می باشد و اصلا این سوال که IDE در اندروید استودیو چیست مشکل دارد. و در جواب سوال دیگر که IDE در جاوا چیست باید بگم که IDE های زیادی برای کدنویسی جاوا وجود مثل نت بینز که یکی از بهترین های این حوزه می باشد. در دو مقاله همه چیز در مورد ماشین مجازی جاوا – دانلود Netbeans With JDK و نصب جاوا روی ویندوز – نصب NetBeans و JDK در این باره کامل صحبت کرده ایم که پیشنهاد میکنم این دو مقاله رو مطالعه کنید.

SDK چیست و تفاوت JDK و SDK


بعد از اینکه مقاله همه چیز در مورد ماشین مجازی جاوا – دانلود Netbeans With JDK رو در سایت منتشر کردیم و گفتیم JDK چیست بعضی ها پرسیدن پس SDK در برنامه نویسی چیست و چه تفاوتی بین این دو وجود دارد منم تصمیم گرفتم در یک مقاله مستقل به صورت کامل در مورد SDK صحبت کنم و بگم واقعا SDK چیه و چه کاربردی دارد و اصلا چرا باید از SDK استفاده کنیم. پس اگر میخواهید بدونید SDK چیست و چه تفاوتی با JDK دارد این مقاله رو تا انتها مطالعه کنید.

SDK چیست

SDK چیست

اگر بخواهیم جواب سوال SDK در برنامه نویسی چیست باید در ابتدا بگم SDK مخفف شده کلمات Software Development Kit به معنی بسته توسعه نرم افزار می باشد. همان طور که از اسم SDK مشخص است یک سری ابزار برای توسعه یک نرم افزار می باشد که به در جهت توسعه نرم افزار کمک می کند که توسط کمپانی در اختیار توسعه دهنده یا همون برنامه نویس قرار داده می شود تا بتواند با استفاده از آن، برنامه خود را مطابق با پلتفرم کمپانی هماهنگ کند.

برای درک بهتر این موضوع باید بگویم بطور کلی هر شرکت بزرگی (مثل اپل یا …) که برای خود یک پلتفرم دارند، یک SDK در اختیار Developer (توسعه دهنده یا همون برنامه نویس) قرار میدهند تا بتوانند برنامه های آن را توسعه دهند. باید بگویم SDK به برنامه نویس اجازه میدهد تا برای بسته ی نرم افزاری خاص، چهار چوب نرم افزار، پلتفرم سخت افزار، سیستم کامپیوتر، ویدئو گیم کنسول، سیستم عامل یا پلتفرم های مشابه نرم افزار ایجاد کنید.

تعریف عمومی: در حقیقت یک SDK شامل مجموعه ای از ابزار ها (مثلا کتابخانه ها، توابع کامپایل شده و …) است که جهت راحت تر کردن برنامه نویسی برای یک محیط یا پلتفرم خاص طراحی شده و در اختیار برنامه نویس قرار داده شده است.

مثال ۱: شرکت گوگل برای اندروید یک SDK در اختیار توسعه دهندگان اندروید قرار داده (Android SDK) که توسعه دهندگان با استفاده از ابزار موجود در این SDK میتوانند اپلیکیشن های مورد نظر خودشون رو راحت تر و سریع تر بسازند.

مثال ۲: شرکت اوراکل هم یک SDK برای توسعه دهندگان جاوا ایجاد و آن را با نام JDK انتشار داده است.

پس ما برای این که که بخواهیم یک برنامه اندرویدی بنویسیم باید قبلش SDK اندروید رو نصب کنیم تا بتونیم از ابزاری که برای ما فراهم کرده، استفاده کنیم و از آنجایی که ما اپلیکیشن های اندرویدی رو با استفاده از زبان جاوا می سازیم قبل از نصب کردن SDK اندروید، باید SDK جاوا یا همون JDK رو نصب کنیم.

تفاوت JDK و SDK

تفاوت JDK و SDK

بعد از اینکه گفتیم SDK در برنامه نویسی چیست حال میخواهیم تفاوت JDK و SDK مورد بررسی قرار دهیم. اگر محتوای بالا رو مطالعه کرده باشید و مقاله همه چیز در مورد ماشین مجازی جاوا – دانلود Netbeans With JDK رو مطالعه کرده باشید صد در صد متوجه تفاوت این دو شده اید. اگر بخواهم خلاصه و دقیق بگم JDK یک SDK می باشد. در بخش بالا هم گفتیم SDK چیست. پس به راحتی می توان تفاوت JDK و SDK رو متوجه شد. به SDK جاوا، JDK می گویند.