برنامهنویسی در همهجای زندگی ما وجود دارد، حتی در مکانهایی که ممکن است انتظارش را نداشته باشیم؛ در کامپیوترهای ما، تلفنهای همراه، بازیهای ویدئویی، اتومبیلها، حتی چراغهای راهنما و آسانسورها. در واقع به هرکجا که نگاه کنیم با برنامههای کامپیوتری احاطه شدهایم. شرکتهای فناوری دیگر تنها بهعنوان شرکتهای نرمافزاری شناخته نمیشوند؛ آنها غذا به خانهی ما میآورند، به ما کمک میکنند تاکسی بگیریم، بهعنوان یک مربی ورزشی برای ما عمل میکنند و… در دنیای امروز، همهی ما بهشدت به محصولاتی وابسته هستیم که بهدقت توسط برنامهنویسان، برنامهنویسی شدهاند. اما برنامه نویسی چیست ؟
اگر به دنیای کدنویسی علاقهمندید و دوست دارید بیشتر درباره آن بدانید، یا اگر سؤالاتی دارید که پاسخ داده نشدهاند، تنها چیزی که برای شروع آموزش برنامه نویسی به آن نیاز دارید، این مقاله است
معنای دقیق برنامه نویسی چیست ؟
تمام برنامههای کامپیوتری از کدهایی تشکیل شدهاند که روی کامپیوتر کاربر به اجرا در میآیند تا وظایفی مشخص، امکانپذیر شوند. این کد توسط برنامهنویسان (Programmers) نوشته میشود. برنامه نویسی (Programming) نیز به فرایند تعیین مجموعهای از دستورالعملها گفته میشود که به توصیف نحوه کارکرد یک برنامه میپردازند. برنامه نویسان معمولا بخش اعظمی از زندگی شغلی خود را صرف یادگیری زبانهای برنامه نویسی و ابزارهای گوناگون میکنند تا قادر به ساخت برنامههای کامپیوتری باشند.
در ابتدای کار، برنامهنویسان به سراغ یک «ویرایشگر کد» یا به اصطلاح «محیط توسعه یکپارچه» (Integrated Development Environment | IDE) میروند و شروع به نوشتن چیزی میکنند که تحت عنوان «سورس کد» (Source Code) شناخته میشود. سورس کد به معنی مجموعه کدهاییست که به زبانهای برنامه نویسی گوناگون نوشته میشوند و باقی برنامه نویسان هم میتوانند آنها را بخوانند.
بعد از این، سورس کد باید به «زبان ماشین» (Machine Language) تبدیل شود تا کامپیوترها و سایر دستگاهها بتوانند دستورالعملها را درک کنند و برنامه را به اجرا در بیاورند. به فرایند تبدیل سورس کد به زبان ماشین، «کامپایلینگ» (Compiling) گفته میشود. از جمله زبانهای برنامهنویسی کامپایلشده میتوان به زبانهای C و ++C اشاره کرد.
البته که زبانهای دیگری نیز داریم که نیازی به کامپایل نخواهند داشت و در عوض، از یک سیستم «مفسر» (Interpreter) برای خواندن و اجرای کد بهره میبرند. از جمله زبانهای این چنینی میشود به JavaScript و PHP اشاره کرد.
زمانی که کد به اجرا درمیآید، برنامه کامپیوتری هم اجرا خواهد شد. این را هم فراموش نکنیم که این روزها بیشمار برنامه کامپیوتری مختلف با کاربردهای گوناگون داریم و برای مثال میتوان به «پردازشگرهای کلمه»، «سیستمهای دیتابیس»، «بازیهای ویدیویی» و «وبسایتها» اشاره کرد. تمام این برنامهها به ما اجازه میدهند که با گستره وسیعی از دستگاهها و سرویسهای مختلف مانند موبایلهای هوشمند، وبسایتها و کامپیوترها تعامل کنیم.
زبان برنامه نویسی چیست ؟
شاید برایتان سؤال باشد که برنامهنویسان چطور میتوانند دستورالعملها را در اختیار کامپیوترها بگذارند و در پاسخ باید بگوییم این کار به کمک «زبانهای برنامهنویسی» (Programming Languages) انجام میشود. تمام زبانهای انسانی مثل فارسی و انگلیسی، «قواعد نحوی» (Syntax) مشخصی دارند که ساختار عبارات و جملات را تعیین میکنند. زبانهای برنامهنویسی هم از چنین قواعدی برخوردار شدهاند که برنامهنویس با توجه به آنها، منطق پشت کدهای خود را انشا میکند.
زمانی که راجع به زبانهای برنامهنویسی صحبت میکنیم، معمولا آنها را در چهار دستهبندی متفاوت براساس سطح قرار میدهیم.
۱. زبان ماشین (Machine Language)
احتمالا این موضوع به گوشتان خورده باشد که «کامپیوترها تنها ۰ و ۱ را درک میکنند». این جمله دقیقا به زبان ماشین (یا کد ماشین) اشاره دارد. زبان ماشین مجموعهای از اعداد باینری (صفر و یک) است که پردازنده مرکزی کامپیوتر، آنها را به صورت مستقیم به اجرا در میآورد.
هر کامپیوتری شامل مجموعهای از ترانزیستورها است، سوییچهای الکتریکی بسیار کوچکی که تنها دو گزینه دارند: روشن (برای اعداد یک) و خاموش (برای اعداد صفر). پردازنده کامپیوتر میتواند ترکیب این سیگنالهای الکتریکی خاموش و روشن را بخواند و خروجی مطلوب را در اختیار ما بگذارد. ناگفته نماند که کد ماشین تحت عنوان «زبان سطح پایین» (Low-Level Language) نیز شناخته میشود.
در ادامه مثالی از کد ماشین برای کلمه «Hello» را مشاهده میکنید:
01001000 01100101 01101100 01101100 01101111
۲. زبان اسمبلی (Assembly Language)
از آنجا که کد ماشین ظرافت زیادی میطلبد و مستعد خطا است، از جایی به بعد زبانهای اسمبلی از راه رسیدند. این زبانها به ما اجازه میدهند به جای استفاده از اعداد باینری، کد را با فرمانهایی بنویسیم که حاوی حروف و نمادهای مختلف هستند.
با درنظرگیری اینکه کامپیوتر تنها میتواند اعداد باینری را به اجرا در آورد، برنامهنویس باید پیش از اجرای کد، از یک «اسمبلر» (Assembler) برای ترجمه زبان اسمبلی به کد ماشین استفاده کند. باید در نظر داشت که این زبانها نیز کماکان کاربرپسند به حساب نمیآیند و نیاز به دانشی عمیق راجع به حافظه کامپیوتر و فرایندهای درونی پردازنده خواهید داشت تا از آنها سر در بیاورید. ضمنا درست مثل کد ماشین، اسمبلی هم زبانی سطح پایین به حساب میآیند.
در پایین میبینید که برای نمایش کلمه «Hello» روی نمایشگر به کمک زبان x86 Assembly باید چه کدی نوشته شود:
org 0x100
mov dx, msg
mov ah, 9
int 0x21
mov ah, 0x4c
int 0x21
msg db 'Hello', 0x0d, 0x0a, '$'
۳. زبان سطح میانی (Mid-Level Language)
همینطور که از زبانهای سطح پایین دور میشویم، به زبانهای سطح بالاتری میرسیم که اکثر مردم با شنیدن عبارت «زبان برنامهنویسی»، به یاد آنها میافتند. این زبانهای مدرن به دو زیرشاخه دیگر تقسیم میشوند و ابتدا لازم است به زبانهای «سطح میانی» بپردازیم.
این زبانها به شما اجازه میدهند که از قواعد نحوی انسانیتری پیروی کنید و در عین حال، به «لایه انتزاعی» (Abstraction Layer) در سختافزار کامپیوتر دسترسی داشته باشید. از آنجا که کماکان میتوانید سختافزار زیرین را به صورت مستقیم کنترل کنید، زبانهای سطح میانی تبدیل به پلی میان زبانهای سطح پایینتر و بالاتر میشوند.
زبانهای سطح میانی از کامپایلرها برای ترجمه قواعد نحوی به کد ماشین استفاده میکنند و بنابراین کامپیوتر میتواند کد را به اجرا درآورد. از جمله زبانهای سطح میانی میشود به C ،Pascal و Cobol اشاره کرد.
۴. زبان سطح بالا (High-Level Language)
درست مثل زبانهای سطح میانی، وقتی عبارت «زبان برنامهنویسی» به گوشتان میخورد، معمولا یاد این زبانها میافتید. اکثر برنامهنویسان کامپیوتر از زبانهای سطح بالا برای رسیدگی به کارها و وظایف روزمره خود استفاده میکنند.
این دسته از زبانها هم مترجمانی بهخصوص به نام کامپایلر دارند که به کامپیوترها اجازه میدهند منطق کد را درک و آن را اجرا کنند. زبانهای سطح بالا از قواعد نحوی مشابه به زبان انسانی بهره میبرند و زبانهای کاربرد عمومی مانند Python ،JavaScript و PHP را شامل میشوند. علاوه بر این «زبانهای اختصاصی دامنه» (Domain-Specific Languages) مانند SQL و HTML هم سطح بالا به حساب میآیند.
در ادامه قطعهای از یک کد جاوا اسکریپت را مشاهده میکنید که عبارت «Hello» را روی صفحه کنسول نمایش میدهد:
console.log("Hello")
پر کاربردترین زبانهای برنامه نویسی امروزی
اکنون که این مقاله را میخوانید، صدها زبان برنامهنویسی گوناگون داریم که به برنامهنویسان اجازه میدهند کدهایی قابل فهم برای کامپیوترها بنویسند. نظرسنجیها نشان میدهند که زبانهای جاوا اسکریپت، HTML/CSS، پایتون، SQL و تایپاسکریپت، پرکاربردترین زبانهای امروزی به حساب میآیند و بنابراین در این بخش، نگاهی کوتاه به هرکدام میاندازیم.
- جاوا اسکریپت (JavaScript): این زبان برنامهنویسی را تقریبا در تمام مرورگرهای وب امروزی پیدا میکنید. جاوا اسکریپت به شما اجازه میدهد قابلیتهای پیچیده را به صفحات وب بیاورید و برای مثال میشود به بهروزرسانی محتوا، نقشههای تعاملی، عناصر گرافیکی و انیمیشنی، ساخت بازی و مواردی از این دست اشاره کرد.
- HTML/CSS: این زبانها نیز در ساخت صفحات و اپلیکیشنهای وب کاربردی ظاهر میشوند. از HTML (مخفف HyperText Markup Language) برای فراهم آوردن ساختار کلی صفحات وب استفاده میشود و CSS (مخفف Cascading Style Sheets) هم به ما اجازه میدهد ظاهر صفحه را سفارشیسازی کنیم.
- SQL: زبان SQL (مخفف Structured Query Language) به صورت خلاصه برای برقراری ارتباط با دیتابیسها کاربرد دارد و به عنوان مثال، بهروزرسانی و بازیابی داده را امکانپذیر میکند.
- پایتون (Python): زبان پایتون بیش از هر چیز در حوزههای یادگیری ماشین، توسعه وب و همینطور توسعه اپلیکیشنهای دسکتاپ استفاده میشود. این زبان بیشترین محبوبیت را میان برنامهنویسان تازهکار دارد، چرا که یادگیری قواعد نحوی آن نسبتا آسان است.
- تایپاسکریپت (TypeScript): در نهایت به تایپاسکریپت میرسیم که زبانی رایگان و متنباز است. مایکروسافت با توسعه این زبان به دنبال تسهیل فرایند توسعه اپلیکیشنهای عظیم بود.
انواع زبان برنامه نویسی چیست ؟
با توجه به اینکه صدها (و بلکه هزاران) زبان مختلف داریم که به روشهای گوناگون دستهبندی میشوند، به عنوان یک قاعده کلی و پذیرفتهشده، میتوان آنها را در ۵ دستهبندی مختلف قرار داد:
- زبان برنامهنویسی رویهای (Procedural Programming Language): زبانهای رویهای مجموعهای از فرمانهای متوالی را دنبال میکنند تا به خروجی مطلوب دست یابند. به هر مجموعه از گامها، یک «رویه» (Procedure) گفته میشود و برنامههایی که به این زبانها نوشته شدهاند، میتوانند یک یا چند رویه در خود داشته باشند. زبانهایی مانند C، جاوا، پاسکال و BASIC در این دستهبندی جای میگیرند.
- زبان برنامهنویسی تابعی (Functional Programming Language): این زبانها به جای تمرکز بر اجرای فرمانها، روی خروجی توابع و ارزیابیهای ریاضیاتی تمرکز دارند. هر تابع (که ماژولی با قابلیت استفاده مجدد به حساب میآید) به وظیفهای مشخص رسیدگی کرده و نتیجه را بازمیگرداند. نتیجه نهایی هم بسته به دادهای که در اختیار تابع میگذارید، متغیر خواهد بود. از جمله زبانهای تابعی میشود به Scala ،Erlang ،Haskell ،Elixir و F# اشاره کرد.
- زبان برنامهنویسی شیگرا (Object-Oriented Programming Language | OOP): این زبانها، برنامه را به چشم گروهی از آبجکتها (یا اشیا) میبینند که خود از عناصری به نام «ویژگیها» (Attributes) و «روشها» (Methods) تشکیل شدهاند. از آبجکتها میتوان مجددا درون برنامه استفاده کرد یا اصلا آنها را به برنامهای دیگر انتقال داد. همین موضوع باعث میشود چنین زبانهایی گزینهای ایدهآل برای برنامههای بزرگ و پیچیده باشند، چرا که کد مجددا قابل استفاده و مقیاسپذیر است. برخی از محبوبترین زبانهای شیگرا جاوا، پایتون، PHP، سی پلاس پلاس و Ruby هستند.
- زبان اسکریپتنویسی (Scripting Language): برنامهنویسان از زبانهای اسکریپتنویسی برای اتوماسیون وظایف تکراری، مدیریت صفحات وب پویا و بهبود فرایندها در اپلیکیشنهای بزرگتر استفاده میکنند. از جمله این زبانها میشود به پیاچپی، روبی، پایتون، bash ،Perl و Node.js اشاره کرد.
- زبان برنامهنویسی منطقی (Logic Programming Language): این زبانها به جای اینکه مشخصا به کامپیوتر بگویند لازم است چه کاری انجام دهد، مجموعهای از حقایق و قوانین را در اختیار آن میگذارد تا خود کامپیوتر قادر به تصمیمگیری باشد. از برجستهترین مثالها میشود به زبانهای Prolag ،Absys ،Datalog و Alma-0 اشاره کرد.
تفاوت بین کدنویسی و برنامه نویسی چیست ؟
خیلی از اوقات، دو عبارت «کدنویسی» (Coding) و «برنامه نویسی» (Programming) بهگونهای استفاده میشوند که گویی هیچ تفاوتی با یکدیگر ندارند. اما در حقیقت شاهد تفاوتهایی میان این دو فعل هستیم:
- کدنویسی یکی از اجزای بنیادین برنامهنویسی است و در آن، منطق برنامه را بهگونهای ترجمه میکنیم که کامپیوتر قادر به درک و اجرایش باشد. در این فرایند، خطوط متعددی از کدهای تشکیلدهنده برنامه را مینویسیم و بنابراین همهچیز راجع به استفاده از قواعد نحوی زبان است تا بتوان با کامپیوتر ارتباط برقرار کرد.
- برنامهنویسی اما فرایندهای گستردهتری نسبت به کدنویسی صرف را شامل میشود و ابعاد دیگر توسعه نرمافزار – مانند شناسایی پیشنیازها، تبدیل پیشنیازها به کد، عیبیابی (Debugging)، تست، مستندسازی و مواردی از این دست – را هم در بر میگیرد.
برای درک بهتر موضوع میتوانیم یک مثال ساده راجع به نوشتن رمانهای داستانی بزنیم. کدنویسی مانند نوشتن جملات و پاراگرافهای رمان است. اما برنامهنویسی موارد گستردهتری مانند تعیین پیرنگ داستان، فضاسازی، توسعه شخصیتها، روایت و هر عنصر مشابه دیگری را شامل میشوند.
برخی از برجستهترین مشاغل در حوزه برنامه نویسی چیست ؟
برنامهنویسان با فراگیری این علم و هنر میتوانند وارد مشاغل گوناگونی شوند. در ادامه تنها برخی از برجستهترین موارد را با یکدیگر بررسی میکنیم.
- توسعهدهنده وب (Web Developer): چنین برنامهنویسانی با استفاده از زبانهایی نظیر HTML ،CSS ،PHP، جاوا اسکریپت و پایتون، به ساخت اپلیکیشنهای تحت وب مشغول میشوند. اگرچه ارقام دریافتی در این حوزه کاملا متغیر است، اما توسعهدهندگان وب معمولا جزو پردرآمدترین برنامهنویسان به حساب میآیند.
- توسعهدهنده موبایل (Mobile Developer): توسعهدهنده موبایل کسی است که با بهرهگیری از زبانهایی مانند React Native ،Swift ،Flutter ،Java و Kotlin به ساخت اپلیکیشن برای موبایلهای آیفون و اندروید مشغول میشود.
- بازیسازی (Game Development): تمام پروژههای بازیسازی فارغ از پلتفرم مقصد – که میتواند کامپیوترهای شخصی، موبایل و یا کنسولهای خانگی باشد – به برنامهنویسانی نیاز دارند که با زبانهای مانند سی، سی پلاس پلاس و Lua آشنا باشند. ضمنا این برنامهنویسان هم میتوانند در استودیوهای کوچک و مستقل مشغول به کار شوند و هم در شرکتهای بزرگ و بینالمللی مانند واحد پلیاستیشن سونی یا واحد ایکس باکس مایکروسافت.
- مهندس سیستمهای کامپیوتری (Computer System Engineer): در این حرفه، علوم کامپیوتر و مهندسی با یکدیگر ادغام شدهاند تا بتوان فرایند تولید اپلیکیشنهای تجاری پیچیده را پیش برد. افرادی که این مسیر شغلی را دنبال میکنند معمولا مدرکی رسمی در علوم کامپیوتر به دست آوردهاند و با زبانهای سی پلاس پلاس، پایتون و جاوا آشنایی دارند.
برنامهنویسان چه مهارتهایی دارند؟
زمانی که نوبت به ساخت برنامههای کامپیوتری میرسد، برنامهنویسان حرفهای باید به گستره وسیعی از وظایف رسیدگی کنند و مهارتهای گوناگون از خود به نمایش بگذارند. در ادامه میگوییم مهمترین مهارتها در دنیای برنامه نویسی چیست:
- کدنویسی تمیز و بهینه
- حل مساله
- تست اپلیکیشنها
- برطرفسازی عیوب (یا همان باگها) در کد
- مهارتهای ارتباطی و شنوندگی
- توانایی کار تیمی
- صبر و استقامت
مهمترین وظیفه برنامهنویس این است که نیازهای مشتری را شناسایی کند و اپلیکیشنی کارآمد بسازد. بنابراین بخش قابل توجهی از زمان او صرف پژوهش، توسعه، ایرادیابی و آزمودن کارایی کد میشود. بعد از عرضه اپلیکیشن نیز کار به پایان نمیرسد و توسعهدهندگان وقت خود را صرف سر پا نگه داشتن اپلیکیشن و بهبود دائمی آن خواهند کرد.
مزایا و اهمیت برنامه نویسی چیست ؟
برنامه نویسی نقشی مهم در دنیای مدرن دارد و بیشمار مزایای مختلف برای افراد حرفهای و همینطور عموم مردم به همراه میآورد. برای مثال به این خاطر میتوانید مقاله پیش روی خود را بخوانید که دستگاهتان برای نمایش مقاله، بعد از کلیک روی گزینههای صحیح، برنامه نویسی شده است.
در ادامه برخی از دلایل اهمیت برنامه نویسی را با یکدیگر بررسی میکنیم:
- سرعت بالاتر در رسیدگی به امور: کامپیوترها با سرعتی بینظیر کار میکنند و برنامهنویسی به ما اجازه میدهد از این سرعت و توان پردازشی برای برطرفسازی مسائلی استفاده کنیم که بدون کامپیوتر، زمان زیادی میبرند. به عنوان مثال میشود به تواناییهای اپلیکیشنهای پیامرسان اشاره کرد.
- سهولت: اکثر کارهایی که این روزها بدون صرف هیچگونه انرژی انجام میدهیم، به لطف برنامهنویسی امکانپذیر شدهاند. برای مثال میتوانید خیلی راحت در خانه خود بنشینید، غذا را به صورت آنلاین سفارش دهید و ظرف چند دقیقه آن را تحویل بگیرید.
- کار شبانهروزی: کامپیوترها میتوانند به صورت ۲۴ ساعته و در تمام روزهای هفته به کارها رسیدگی کنند، آن هم بدون اینکه خسته شوند یا حوصلهشان سر برود. بنابراین میشود بسیاری از کارهای خستهکننده و تکراری را به کامپیوتر سپرد و در عوض، ذهن را درگیر چالشهای خلاقانه کرد.
- فرصتهای شغلی بینظیر: زمانی که برنامهنویسی را میآموزید، به هزاران فرصت شغلی بسیار پردرآمد دسترسی پیدا میکنید. این روزها تقریبا تمام کسبوکارها در فضای آنلاین هم فعالیت میکنند و نیاز به برنامهنویسانی دارند بتوانند اپلیکیشن و بازی بسازند یا در زمینههایی مانند علم داده و هوش مصنوعی فعالیت کنند.
- کسب مهارتهای منطقی و حل مساله: در غاییترین حالت، برنامهنویسی راجع به حل مساله است. با ساخت برنامههای کامپیوتری میتوانید به بررسی چالشها، شناسایی راهکارها و بعد یافتن بهینهترین موارد مشغول شوید و مهارتهای تحلیلی و منطقی خود را بهبود ببخشید.