برنامه نویسی چیست و به چه کسی برنامه نویس می گویند؟
برنامهنویسی یعنی نوشتن دستوراتی منطقی و پشتسر هم برای ماشینها، در حقیقت هنگامی که فردی برنامهنویسی میکند دستورات بهخصوصی را نوشته و کامپیوتر آنها را اجرا میکند، در اینجا منظور از کامپیوتر هر نوع وسیلهی دارای قدرت پردازشی و پردازنده است، این تعریف میتواند شامل رایانههای امروزی، تلوزیونها، خودروها، لوازم خانگی و… باشد.
اجازه دهید مفهوم برنامهنویسی را با یک مثال بسیار ساده برای شما شرح دهیم، کمی دربارهی نحوهی برقراری ارتباط در موجودات زنده فکر کنید، ما انسانها از طریق صحبت کردن با یکدیگر ارتباط برقرار میکنیم، حیوانات با تولید صداهای مخصوص به خود با یکدیگر ارتباط برقرار میکنند، برخی از حشرات با تولید امواج فراصوت از محیط اطراف خود آگاه میشوند…
حال بیایید همین موضوع را در مورد ماشینهای الکترونیکی بررسی کنیم، به نظر شما ما انسانها چگونه میتوانیم با ابزارهای الکترونیکی ارتباط برقرار کنیم؟ بهخوبی میدانیم که یک کامپیوتر تنها از چند قطعهی الکترونیکی مانند پردازنده و حافظه تشکیل شده و با ولتاژ الکتریسیته کار میکند.
بنابراین ما هیچگاه نمیتوانیم با زبان انسانی خود با یک ماشین الکترونیکی ارتباط برقرار کنیم و مجبوریم با زبان خود کامپیوتر با آن ارتباط برقرار کرده و دستورات خاصی را به آن منتقل کنیم، این زبان بهخصوص، زبان برنامهنویسی نامیده میشود که خود تاریخچهی بلندی دارد، در ادامهی این مقاله با همیار آیتی همراه باشید تا باهم وارد دنیای بزرگ برنامهنویسها شده و دریابیم آنها چگونه میتوانند با این ماشینهای الکترونیکی صحبت کنند.
همانطور که گفتیم رایانهها با ولتاژ کار میکنند، در حقیقت با نیروی برق یا باتری، پس تنها چیزی که میتوانیم در مدارهای یک کامپیوتر مورد استفاده قرار دهیم ولتاژ الکتریسیته است، پردازنده و سایر اجزای یک کامپیوتر از طریق ولتاژهای گوناگون قادرند مفاهیم مختلفی را منتقل، پردازش و ذخیره کنند، اما مشکل اینجاست که هر ولتاژی مورد قبول این قطعات نیست و احتیاج داریم با قوانین خاصی از این پتانسیل استفاده کنیم.
در حقیقت دو ولتاژ به خصوص را در قطعات به کار میگیریم، و از آنها به عنوان ۰ و ۱ یاد میکنیم، با توجه به ساختار قطعات مقدار ولتاژ متفاوت خواهد بود، به عنوان مثال در برخی رایانهها ولتاژ ۰ به معنای بیت ۰ و ولتاژ ۵ به معنای بیت ۱ است، در برخی دیگر ولتاژ ۵ نشاندهندهی مقدار بیت ۰ و ولتاژ ۱۰ نشاندهندهی بیت ۱ است.
در پایینترین سطح یک کامپیوتر (یعنی سختافزار) تنها و تنها قادریم با بیتهای ۰ و ۱ با دستگاه ارتباط برقرار کنیم، به عنوان مثال در برخی از پردازندههای قدیمی یا سیستمهایی که احتیاج به سرعت بسیار بالا در پردازش دارند زبان ۰ و ۱ که اصطلاحا آن را زبان باینری (دودویی) مینامیم کارساز خواهد بود، اگر دوست دارید بیشتر با این زبان آشنا شوید میتوانید مقالهی کدهای باینری را مطالعه کنید.
به زبان ساده، در سیستم باینری بیت ۱ به معنای روشن بودن و بیت ۰ به معنای خاموش بودن است، از کنار هم قرار گرفتن بیتهای گوناگون بینهایت عدد تولید خواهد شد که هرکدام از آنها نشاندهندهی یک دستورالعمل یا مفهوم خاص برای کامپیوتر هستند و اساس کار رایانههای امروزی را شکل میدهند.
مشکل تازهای که سر راه برنامهنویسان وجود داشت این بود که ارتباط با یک کامپیوتر به زبان باینری، برای انسانها کاری دشوار و تقریبا غیر ممکن بود، به همین علت تصمیم گرفتند زبانهایی را برای ارتباط با رایانهها طراحی کنند که تا حدودی به زبان انسان نزدیکتر بوده و برنامهنویسی با آنها سادهتر باشد.
نخستین زبانهای برنامهنویسی چگونه بهوجود آمدند؟
همانطور که گفتیم، کار با زبان باینری چندان آسان نبود، به همین علت انسانها برای هر دستور یک معادل کلمهای در نظر گرفتند و از آن به بعد به کمک آن کلمات برنامهنویسی میکردند، که به آن زبان اسمبلی (Assembly) گفته میشد.
به عنوان مثال به جای کد ۰۱۰۰۱۱۰۱ عبارت SUM را به ماشین تحویل میدادند و کامپیوتر زحمت تبدیل این عبارت به معادل باینری آن را بر عهده داشت، اگر تا قبل از به وجود آمدن این زبان رشتهی عددی 01001101 نشاندهندهی عملیات جمع در کامپیوتر بود، از این پس عبارت SUM برای کامپیوتر معادل 01001101 و به معنای عملیات جمع تلقی میشد.
البته که در نهایت تمام این دستورات برای فهم کامپیوتر باید به زبان باینری تبدیل میشد، که این فرایند (یعنی تبدیل دستورات اسمبلی به باینری) بر عهدهی اسمبلر بود، از آنجایی که تبدیل زبان اسمبلی خود احتیاج به پردازش جداگانهای داشت، بنابراین از سرعت کمتری نسبت به زبان باینری برخوردار بود.
به مرور زمان، زبانهای پیشرفتهای خلق شد که امکانات و قابلیتهای گستردهتری را در اختیار برنامهنویسان قرار میداد، زبانهایی مانند سی، جاوا، پایتون و… نمونههایی از این زبانها به شمار میآیند، هرچند زبانهای سطح بالا سادگی و کارایی بیشتری را در اختیار برنامهنویس قرار میدادند، اما زبانهای سطح پایین مانند باینری و اسمبلی همچنان از سرعت بیشتری برخوردار هستند، چراکه فرایند تبدیل و کامپایل در آنها وجود نداشته و پردازش کمتری توسط رایانه انجام میشود.
امروزه در سیستمهایی که احتیاج به سرعت پردازش بالایی دارند، بهعنوان مثال فضاپیماها، سیستمهای بیمارستانی یا رباتهای خاص از زبانهای سطح پایینتر مانند اسمبلی و حتی باینری استفاده میشود، اما در برنامهنویسیهای معمولی، مانند اپلیکیشنهای کامپیوتر، موبایل و وب از زبانهای سطح بالا استفاده شده و وظیفهی کامپایل یا ترجمهی دستورات برعهدهی کامپیوتر گذاشته میشود.
برنامهنویسی چیست؟ برنامهنویس کیست؟
احتمالا با خواندن این مقاله تا بهحال متوجه مفهوم برنامهنویسی شدهاید، اما به زبان ساده، برنامهنویسی عبارت است از تحلیل نیازها و تبدیل آنها به دستورات قابل فهم کامپیوتر، وظیفهی نوشتن این دستورات بر عهدهی برنامهنویسهاست، آنها قادرند دستورات انسانی را برای کامپیوتر نوشته و از آن برای پردازشهای مورد نیاز ما استفاده کنند.
به عنوان مثال دستورات زیر را در نظر بگیرید:
#include <iostream>
using namespace std;
int main() {
int a , b;
cin >> a >> b;
cout << a+b;
return 0;
}
این مجموعه دستورات به زبان C++ نوشته شده اند و از کامپیوتر می خواهند دو عدد a و b را از کاربر دریافت کرده، آن ها را با هم جمع کند و در نهایت حاصل جمع را در صفحه ی خروجی نمایش دهد.
دقیقا معادل همین کد در زبان پایتون به شکل زیر نوشته می شود:
a = int(input())
b = int(input())
print(a+b)
همانطور که مشاهده میکنید، هرچند نوع نگارش این دو زبان با هم متفاوت است، اما هردوی آنها در اصل یک کار یکسان را انجام میدهند و از رایانه میخواهند دو عدد را از ورودی دریافت کرده و حاصل جمع آنها را محاسبه کرده و نمایش دهد.
برنامهنویسها نحوهی کار با یک زبان بهخصوص را فراگرفته و به کمک آن زبان، برنامههای مورد نیاز سایرین را برای کامپیوتر نوشته و اجرا میکنند، تمام برنامههایی که این روزها مشاهده می کنیم به همین شکل توسط یک یا چند برنامهنویس نوشته شدهاند.