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


پیش از هر چیز ما نیاز به یک سیستم عامل داریم. در ساده‌ترین کلام، سیستم عامل یک برنامه ی خیلی بزرگ و پیچیده است که کلیه ی بخش‌های یک کامپیوتر را به یکدیگر متصل می‌سازد لذا ما می‌توانیم از کلیه سخت افزارهای سیستم خود مثل کیبورد، مانیتور، اسپیکر، ماوس و ... استفاده کنیم . سیستمی که سیستم عامل یا OS روی آن نصب نباشد، صرفاً مجموعه ای از سخت‌افزارهایی است که به هیچ کاری نمی آیند. از معروف ترین سیستم عامل های دنیا می‌توان به ویندوز، لینوکس و مکینتاش اشاره کرد.

پس از آن که ما یک زبان را از میان انواع زبان‌های برنامه نویسی انتخاب کردیم، نیاز به نرم افزاری تحت عنوان Editor یا ویرایشگر کد داریم تا با استفاده از آن بتوانیم کدنویسی کنیم. یکی از ویرایشگرهای کد معروف که در سیستم عامل ویندوز به صورت پیش‌فرض نصب شده است، Notepad نام دارد که حتماً با آن آشنا هستید اما این در حالی است که نرم افزارهای بسیار پیشرفته‌تر از آن هم وجود دارند که در ادامه، بیشتر با آن‌ها آشنا خواهیم شد. ادیتور پیش فرض سیستم عامل گنو/لینوکس VIM نام دارد و مکینتاش اپل هم از ادیتوری تحت عنوان TextEdit برخوردار است.

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

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

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

بسیاری از کامپایلرها صرفاً برای یک سیستم عامل خاص و یک نوع پردازنده سورس کد را به زبان ماشین تبدیل می کنند. لذا، یک کامپایلر ویندوزی صرفاً خواهد توانست برنامه‌هایی که تحت سیستم عامل ویندوز اجرا می‌شوند را ایجاد کند (البته گفته می‌شود که بسیاری از برنامه‌های نوشته شده برای سیستم عامل مکینتاش دارای دو فایل اجرایی هستند؛ یکی برای پردازنده های PowerPC که در مک استفاده می‌شوند و دیگری برای پردازنده های Intel که در سایر سیستم‌ها من جمله سیستم‌های جدید مکینتاش مورد استفاده قرار می گیرند.

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

با توجه به این که کامپایلرها خیلی کند بودند، دانشمندان علوم کامپیوتری چیزی جدیدی تحت عنوان Interpreter یا مفسر طراحی کردند. دقیقاً همانند مترجم یک زبان زنده که به صحبت‌های فردی گوش می‌دهد سپس خط به خط آن‌ها را به زبانی دیگر ترجمه می کند، Interpreter هم خیلی سریع خط به خط دستوراتی که ما نوشته‌ایم را به زبان ماشین تبدیل می کند. مسأله ای که در ارتباط با Interpreter ها وجود دارد این است که بر خلاف کامپایلرها، این نرم افزارهای جدید نمی‌توانند دستوراتی که به زبان ماشین تبدیل شده‌اند را در فایل اجرایی جداگانه ای ذخیره سازند و در عوض، دستورات تبدیل شده به زبان ماشین را در جایی در حافظه ی سیستم نگهداری می کنند. لذا اگر بخواهید برنامه ی خود را به فروش برسانید، هیچ فایل اجرایی ندارید که در اختیار مشتریان قرار دهید بلکه می بایست سورس کد ارزشمند خود را به فروش برسانید که بعداً ممکن است کسی نام آن را تغییر داده و با نامی جدید، مجدد شروع به فروش کند!

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

دیدیم که استفاده از کامپایلرها کند بود و اینترپریترها ها هم منجر به لو رفتن سورس کد می شدند، لذا نیاز به راه‌کار سومی می‌بود تا برنامه نویسان بتوانند برنامه‌های خود را منتشر کنند و این شد که راه‌کار سومی تحت عنوان Byte-code یا Pseudocode که غالباً تحت عنوان P-code شناخته می‌شود ابداع شد. برخلاف روش اول که برنامه نویسان می‌آمدند و سورس کد خود را با استفاده از کامپایلر یک سیستم عامل خاص به زبان ماشین مبدل می ساختند، در روش سوم برنامه نویس برنامه اش را به یک فایل P-code کامپایل می کرد.

حال با استفاده از این فایل P-code و یک اینترپریتر اختصاصی -نام این فایل اصطلاحاً Virtual Machine یا ماشین مجازی است- می‌توان دستوارت قرار گرفته داخل این فایل را به کدهای باینری قابل فهم برای هر سیستم عاملی مبدل ساخت.

مزیت این روش این است که برنامه نویس می‌تواند یک نسخه از P-code برنامه اش را منتشر کرده، سپس کاربران سیستم عامل های مختلف از آن استفاده کنند. به هر حال برنامه‌هایی که به فایل P-code کامپایل می‌شوند مشکلاتی هم دارند. عمده ترین مشکل آن‌ها این است که به سریعی برنامه‌هایی که به زبان ماشین کامپایل می‌شوند نمی باشند. علاوه بر این، اگر روی سیستم مد نظر ما ماشین مجازی نصب نباشد، برنامه قابل اجرا نخواهد بود!

معروف ترین زبانی که از P-code استفاده می‌کند زبان برنامه نویسی جاوا است. پس از آن که شما برنامه‌ای با این زبان نوشتید، ابتدا می بایست آن را به یک فایل P-code کامپایل کنید سپس روی هر سیستمی که ماشین مجازی جاوا یا JVM نصب باشد، برنامه ی شما قابل اجرا خواهد بود.

ایده ی پشت P-code این است که برنامه نویس یک بار برنامه اش را می نویسد، سپس در هر جایی و روی هر سیستم عاملی آن را اجرا می‌کند (شعار زبان جاوا دقیقاً همین است؛ به عبارت دیگر، Write Once, Run Everywhere) توجه داشته باشیم که احتمال وجود دارد برنامه‌هایی که به این روش اجرا می‌شوند روی یک سیستم عامل به خوبی کار کنند اما روی سیستم عامل دیگری با کمی مشکلات مواجه باشند البته این در حالی است که زبان‌هایی همچون جاوا توانسته اند تا حد زیادی این مشکل را رفع کنند.

آشنایی با IDEها
با گسترش نیازهای برنامه نویسان از یک سو و همچنین حرفه ای تر شدن -یا بهتر بگوییم گسترده تر شدن- زبان های برنامه نویسی، این نیاز احساس گردید تا ویرایشگرهای کد به چیزی بیش از یک ادیتور سورس کد مجهز شوند و نتیجه این شد که IDE ها توسط شرکت های نرم افزاری طراحی شده و روانه ی بازار شدند.

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

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
محمدمن یک کاربر مهمان هستم
سلام وقتتون به خیر
من میخواستم borlnd C رو نصب کنم برای ویندوز ده ولی نسخه ی 64 بیتی نداره….واقعا نداره یا از جایی میشه پیدا کرد؟؟؟
محسن
محسن
اگر در زمینه موبایل اپلیکیشن ها برنامه نویسی می کنیم شاید نیاز باشه تا بتونیم اپلیکیشنمون رو در گوشی ها و سیستم عامل های مختلف یا ورژن های مختلفشون تست کنیم، اما به صورت سخت افزاری دیوایس رو نداشته باشیم، راه حل این مورد استفاده از simulator ها و emulatorها است که مثلا در android studio میشه انواع گوشی های اندرویدی رو به صورت مجازی لانچ کرد و عملکرد اپلیکیشن رو در اونها بررسی کرد
برای نسخه های IOS هم میشه از نرم افزار xcode استفاده کرد تا انواع گوشی های آیفون رو به صورت مجازی در اختیار داشت

این مجازی سازی برای سیستم عامل های مختلف هم با استفاده از نرم افزاری هایی مثل VMware قابل اجرا هست
در مورد ابعاد اسکرین، گوگل کروم هم قابلیت اسکرین های مختلف رو در developer tools خودش داره
Insight
Insight
یکی دیگه از ابزارهایی که در این چند سال اخیر استفاده‌ی بیشتری از اونها میشه، Transpilerها هستن.
اغلب ترنسپایلر، به ابزاری گفته میشه که کدهای نوشته شده به زبانی با یک سطح از انتزاع رو به کدهای نوشته شده به زبانی دیگر با همون سطح انتزاع تبدیل میکنه.
برای مثال، اغلب توسعه‌دهندگان جاوااسکریپت با Babel آشنا هستن. این ابزار به عنوان یک Transpiler در نظر گرفته میشه. چرا که کدهای نوشته شده با مثلا ES2015 رو به نسخه‌‌‌های قدیمی‌تر جاوااسکریپت تبدیل میکنه.
البته بعضی از برنامه‌نویسان هم Compiler و Transpiler رو به‌جای همدیگه به کار میبرن و تفاوتی براشون قائل نیستن.
دانیال
دانیال
تا اینجا که مطالب رو خوندم واقعا لذت بردم.
دست مریزاد.
عالی بود.
کاربر میهمان
امینمن یک کاربر مهمان هستم
آموزش ها تون فوق العاده است
کاربر میهمان
مسیحمن یک کاربر مهمان هستم
واقعا اموزش هاتون عالی و بی نظیر هست. ONLY SOCAN ACADEY
عرفان
عرفان
استادان گرامی یه سوال؛ آیا نرم افزار ویژوال استودیو هم یک IDE محسوب میشه؟ ممنون
محمد پارسا
محمد پارسا
سلام
خوب بود
ولی من نتونستم به شکل صحیحی ide رو بفهمم.
کاربر میهمان
Shariatمن یک کاربر مهمان هستم
سلام از شما بابت نحوه نگارش روان و ساده متشکرم اساتید دانشگاه هم به این خوبی مطالب رو برای دانشجویان جا نمیندازن .من خودم لیسانس نرم افزارم و بسیار لذت بردم .ممنونم دوست بسیار خوبم مهندس آموس که من رو دوباره با حال و هوای کد نویسی روبرو کرد.و از اینکه من رو با این سایت اشنا کرد.
javad
javad
با سلام مجدد

بسیار عالی،مثل همیشه واقعا از آموزشهای بی نقصتون خوشحالم