یادگیری برنامهنویسی شاید در بدو امر کمی ترسناک به نظر بیاید، اما در حقیقت اینطور نیست. امروزه به لطف منابع متعدد، انجمنهای تخصصی و وبسایت آموزش آنلاین کدنویسی، یادگیری زبانهای برنامهنویسی آنقدر ساده شده که حتی کودکان هم میتوانند شروع به یادگیری کنند. آنچه در این مقاله قصد داریم مورد بررسی قرار دهیم، نگاهی اجمالی به زبانهای برنامهنویسی جاوااسکریپت، جاوا، سیشارپ، روبی، پایتون، سی و سیپلاسپلاس است با این فرض که هر کدام از زبانهای فوقالذکر دارای کاربردها، نقاط ضعف و قوت خود هستند؛ لذا بسته به ماهیت حوزهای که به آن علاقه داریم و نوع کاری که قرار است انجام دهیم، میتوانیم یکی از آنها را برای ورود به دنیای برنامهنویسی انتخاب کنیم.
JavaScript
استفاده از جاوااسکریپت به دلیل قابلیت کدنویسی با آن هم در بخش فرانتاند و هم بکاند، بسیار رایج است. شما حتی برای کدنویسی با جاوااسکریپت نیاز به کامپایلر ندارید، چرا که مرورگر شما به طور طبیعی کدهای جاوااسکریپت را اجرا میکند. برای شروع، فقط به یک ادیتور نیاز دارید که نوتپد، سابلایم، جیادید و اتم انتخابهای خوبی هستند. اگر علاقمند به ورود به صنعت توسعهٔ وب هستید، #جاوااسکریپت برای شروع عالی است.
زبان برنامهنویسی جاوااسکریپت به عنوان زبانی پیشنهاد میشود که مسیر یادگیری زبانهای سختتر را هموارتر میکند (البته به یاد داشته باشیم که هنوز هم بعضی از دولوپرها اعتقاد دارند که جاوااسکریپت یک انتخاب نامناسب برای شروع است زیرا این زبان نمونهٔ خوبی برای یک زبان شیئگرا نیست!)
کاربردها:
- طراحی فرانتاند سایت
- توسعهٔ گیم
- کدنویسی سمت سرور با استفاده از Node.js
- توسعهٔ اپهای هیبریدی موبایل
ویژگیهای مثبت:
- مالتیپلتفرم بودن (اجرا بر روی پلتفرمهای مختلف)
- عدم نیاز به کامپایلر
- راحتتر کردن یادگیری زبانهای دیگر
ویژگیهای منفی:
- نمونهای ضعیف و نامناسب برای یک زبان شیئگرا است (البته در نسخهٔ ES6 شرایط تاحدودی بهبود یافته است.)
- دشواری در یافتن باگها
Ruby
زبان برنامهنویسی روبی بیشتر به خاطر وجود فریمورک محبوبش تحت عنوان Ruby on Rails شناخته میشود چرا که سورسکد نوشته شده با این فریمورک به راحتی خوانده شده و این بزرگترین لطفی است که این فریمورک در حق افراد مبتدی میکند.
از ویژگیهای این زبان پرکاربرد در توسعهٔ وب میتوان به دینامیک (پویایی) و شیئگرا بودن اشاره کرد. روبی یک زبان سمت سرور قدرتمند است و به همین دلیل وبسایتهای زیادی از جمله GitHub و Groupon از روبی استفاده میکنند (از جمله وبسایتهای ایرانی که در توسعهٔ آنها از زبان روبی استفاده شده است هم میتوان به تسکولو اشاره کرد.)
همانطور که پیش از این گفتیم، Ruby on Rails یک فریمورک محبوب برای زبان برنامهنویسی #روبی است و به همین علت مجموعهای از میانبرهای این زبان را در خود دارد. برای یادگیری این فریمورک، با یک سرچ ساده در گوگل، احتمالاً منابع بسیاری خواهید یافت که به آموزش RoR میپردازند (برای آشنایی بیشتر با این زبان، میتوانید به پادکست مصاحبه با سمیر رحمانی در رادیو فولاستک مراجعه نمایید.)
کاربردها:
- توسعهٔ وب
ویژگیهای مثبت:
- برخورداری از فریمورک محبوبی تحت عنوان Ruby on Rails
- کدنویسی سریع با استفاده از RoR
- کاملاً شییٔگرا
ویژگیهای منفی:
- فریمورک RoR اساساً بر پایهٔ مجموعهای از میانبرها است و به خاطر سپردن همین میانبرها تاحدودی کار را برای مبتدیها دشوار میسازد.
Python
پایتون یک زبان برنامهنویسی ساده و بسیار عالی برای مبتدیها است. این زبان هم در وب کاربرد دارد و هم در اپهای دسکتاپی و این در حالی است که پروژههایی که با پایتون نوشته میشوند، بسیار قدرتمند هستند. از ویژگی این زبان میتوان به پویایی (دینامیک) اشاره کرد که سبکهای مختلف برنامهنویسی همچون OOP (شیئگرایی)، Functional (تابعی) و Procedural (رویهای) را ساپورت میکند. پایتون یک زبان برنامهنویسی اپنسورس است، به این معنی که شما میتوانید به رایگان آن را دریافت کنید و یادگیری آن را شروع کنید.
نکتهای که در مورد زبان پایتون حتماً باید به خاطر سپرد این است که رعایت فاصلهگذاری در حین کدنویسی مهم است و همین مورد تاحدودی دست و پاگیر، زبان پایتون برای تازهکارها کمی گنگ و پیچیده کرده است اما روی هم رفته، انعطافپذیری، نزدیکی سینتکس آن به زبان انگلیسی، وجود انجمنهای فراوان برای پرسش و پاسخ و همچنین آموزشهای آنلاین و رایگان این زبان، پایتون را به کاندیدای مناسبی برای مبتدیها تبدیل کرده است (برای شروع یادگیری این زبان از پایه، میتوانید به دورهٔ رایگان آموزش پایتون در سکان آکادمی مراجعه نمایید.)
کاربردها:
- توسعهٔ وب
- توسعهٔ برنامههای دسکتاپی
ویژگیهای مثبت:
- چندمنظوره بودن
- اپنسورس و رایگان
- سینتکس نزدیک به زبان انگلیسی
ویژگیهای منفی:
- نیاز به رعایت جزئیات رعایت اسپیس در سینتکس
- برخی لایبرریها فقط برای نسخهٔ ۲ این زبان نوشته شدهاند
Java
زبان برنامهنویسی جاوا یکی از زبانهای برنامهنویسی باسابقه در دنیای برنامهنویسی محسوب میشود. جاوا یکی از پایههای برنامههای تحت وب، دسکتاپ و حتی سیستمعاملها است. جاوا یک زبان شیئگرا به معنای واقعی کلمه است. مهمتر از همه اینکه تا پیش از سال ۲۰۱۸، اکثر اپهای اندرویدی نِیتیو با استفاده از همین زبان نوشته میشدند اما با آمدن زبان کاتلین و ساپورت آن توسط گوگل، به نظر میرسد که کاربرد این زبان در توسعهٔ اپهای اندرویدی به مرور کمرنگ و کمرنگتر شود!
با وجود کاربرد فراوان و محبوبیت بسیار زیاد، #جاوا هنوز برای برنامهنویسان کمتجربه و تازهکار کمی چالشبرانگیز است. همچنین بخش قابلتوجهی از سینتکس Java از زبانهای C و ++C گرفته شده است؛ شاید به همین علت است که بسیاری از بوتکمپها ابتدا از زبانهای C و ++C شروع میکنند و سپس به آموزش جاوا میپردازند.
به طور کلی، با وجود انجمنهای تخصصی فراوان مثل استک اورفلو و فرمانروایی طولانی مدت جاوا بر زبانهای دیگر، به نظر میرسد که هر سؤالی که در ابتدای مسیر یادگیری این زبان برایتان پیش بیاید، از قبل پاسخ به آن سؤال داده شده است (برای شروع یادگیری این زبان، میتوانید به دورهٔ آموزش رایگان جاوا در سکان آکادمی مراجعه نمایید. همچنین از جمله دولوپرهای زبان جاوا که در رادیو فولاستک حضور یافتهاند میتوان به دکتر صادق علیاکبری اشاره کرد که برای آشنایی بیشتر با وی، توصیه میکنیم به پادکست مصاحبه با صادق علیاکبری: مدرس برنامهنویسی و از مؤسسین انجمن جاوا کاپ مراجعه نمایید.)
کاربردها:
- توسعهٔ وب
- توسعهٔ اپهای اندرویدی
- توسعهٔ نرمافزارهای دسکتاپ
ویژگیهای مثبت:
- محبوبیت و کاربرد فراوان
- زبانی با سابقهٔ زیاد
- منابع فراوان برای یادگیری
- امکان خلق کدهایی با پایههای قدرتمند
- پشتیبانی شرکت بزرگی همچون اوراکل از این زبان
ویژگیهای منفی:
- جاوا سینتکسهای خود را عمدتاً از ++C گرفته است، لذا برای درک بهتر شاید منطقیتر این باشد با ++C آشنایی داشته باشید.
- جاوا تفکر تحلیلی بالایی میطلبد.
- برای یافتن یک شغل مناسب، این زبان را در حد نسبتاً خوبی باید بلد باشید.
C و ++C
C و ++C زبانهای برنامهنویسی پایهای و اصطلاحاً مادر هستند. این دو زبان در توسعهٔ بسیاری از سیستمعاملها و همچنین نرمافزارهای مختلف کاربرد دارند؛ همچنین سینتکس C و ++C بر بسیاری از زبانهای برنامهنویسی دیگر تأثیر گذاشته که از آن جمله میتوان به جاوا، سیشارپ، پیاچپی و ... اشاره کرد. بنابراین با فرا گرفتن C و ++C، یادگیری زبانهایی مثل جاوا یا حتی زبانهای سختتر هم چندان مشکل نخواهد بود.
اگر علاقهمند به ساخت و توسعهٔ #گیم هستید، ++C یک انتخاب مناسب برای شروع است زیرا علاوه بر استفادهٔ گسترده از این زبان در بازیها و موتورهای بازیسازی مثل Unity، کاربردهای فراوانی هم در ساخت برنامههای دسکتاپی، موبایل و وب دارد.
به طور کلی، یادگیری C و ++C یک شروع عالی است، نه فقط برای برنامهنویسی بلکه حتی در زمینهٔ سایر علوم کامپیوتری هم به کارتان خواهد آمد. حتی اگر تمرکز خود را بر روی زبانهای دیگر گذاشتهاید، طبیعتاً میدانید اصول و قواعدی که C و ++C ارائه میدهند بسیار ارزشمند هستند و یادگیری یکی از این دو زبان خالی از لطف نیست.
البته نیاز به توضیح نیست که ++C برای تازهکارها بسیار چالشبرانگیز است، اما اگر قدرت غلبه بر سختی این زبان را دارید، میراثی بسیار بزرگ در انتظارتان خواهد بود (یکی از دولوپرهای این زبان که در رادیو فولاستک حضور پیدا کردند، مهندس میلاد ناصری است که برای آشنایی بیشتر با وی، توصیه میکنیم به پادکست میلاد ناصری: دولوپر گوگل مراجعه نمایید.)
کاربردها:
- توسعهٔ سیستمعاملهایی همچون ویندوز، لینوکس و مکینتاش
- توسعهٔ سیستمعامل موبایل محبوب اندروید
- توسعهٔ اپها و نرمافزارهای دسکتاپ مختلف مثل فتوشاپ
ویژگیهای مثبت:
- یک زمینه و مقدمهٔ عالی برای علوم کامپیوتری
- مناسب برای توسعهٔ نرمافزارهای مختلف و بازیهای سنگین
ویژگیهای منفی:
- این زبانها نسبت به زبانهای سطح بالایی همچون جاوا یا سیشارپ سختتر هستند.
#C
سیشارپ برای اهداف مختلفی استفاده میشود که از آن جمله میتوان به توسعهٔ وب و کنسول اپلیکیشنها اشاره کرد. سینتکس این زبان بر پایهٔ زبان C است، بنابراین طبیعی است که شبیه به زبانهای C و++C باشد (البته با توجه به اینکه شرکت بزرگ مایکروسافت این زبان را در پاسخ به ابداع زبان جاوا توسط اوراکل توسعه داد، بخش قابلتوجهی از سینتکس این زبان شبیه به زبان جاوا نیز هست!)
کاربردها:
- توسعهٔ وب
- توسعهٔ اپلیکیشنهای تحت ویندوز
- توسعهٔ اپ برای پلتفرم ویندوزفون
ویژگیهای مثبت:
- استفادهٔ گسترده
- این زبان به لطف ویژوال استودیو شروعی آسان را فراهم میکند.
- پشتیبانی غول نرمافزاری دنیا -مایکروسافت- از این زبان
- استفادهٔ آسان از IDE اختصاصی این زبان (ویژوال استودیو)
ویژگیهای منفی:
- منحصر به اکوسیستم مایکروسافت
PHP
اگر علاقمند به برنامهنویسی وب اپلیکیشن (نرمافزارهای تحت وب) هستید، بایستی بدانید که زبان برنامهنویسی PHP یکی از پرکاربردترینها است (البته برخی اعتقاد دارند که PHP یک زبان برنامهنویسی نیست و صرفاً یک زبان اسکریپتینگ میباشد) به طوری که سیاماسهای مختلفی همچون وردپرس، دروپال، جوملا و غیره بر پایهٔ این زبان نوشته شدهاند و از جمله وبسایتهای معروفی که در بدو امر با این زبان ظهور پیدا کردند نیز میتوان به فیسبوک و ویکیپدیا اشاره کرد (البته شبکهٔ اجتماعی فیسبوک پس از مدتی زبان برنامهنویسی Hack که بر پایهٔ PHP است را ابداع کرده و ادامهٔ توسعهٔ این شبکهٔ اجتماعی با این زبان صورت گرفت. برای آشنایی بیشتر با این زبان، توصیه میکنیم به مقالهٔ Hack: زبان برنامهنویسی اختصاصی فیسبوک مراجعه نمایید.)
پیاچپی هم همچون زبانهای سیشارپ، جاوا، سیپلاسپلاس و غیره، اصطلاحاً یک زبان C-Like است؛ به عبارت دیگر، بسیاری از ویژگیهای خود را از زبان برنامهنویسی C به ارث برده است. کمپانی Zend با عرضهٔ نسخهٔ ۷ از این زبان، سعی کرده بسیاری از نواقص ورژنهای گذشته را مرتفع سازد (برای آشنایی بیشتر با این زبان از پایه، میتوانید به دورهٔ آموزش رایگان PHP در سکان آکادمی مراجعه نمایید و اگر هم علاقمند به پادکستی فنی در خصوص این زبان هستید، میتوانید به پادکست سعید فرضیان: برنامهنویس ارشد و همبنیانگذار سامانه تلوبیون در رادیو فولاستک مراجعه نمایید.)
کاربردها:
- توسعهٔ وب
- توسعهٔ کنسول اپلیکیشن
ویژگیهای مثبت:
- استفادهٔ گسترده
- یادگیری خیلی سریع
- تعامل خوب با زبان HTML
- رایگان
- مالتیپلتفرم
- استفاده شده در سیاماسهای معروف مثل وردپرس
ویژگیهای منفی:
- شییٔگرایی ضعیف در مقایسه با زبانهایی همچون جاوا و روبی (البته در نسخهٔ ۷ اوضاع بهتر شده است.)
- بیشترین کاربرد را در توسعهٔ وب دارا است و به سادگی سایر زبانهای فوقالذکر برای توسعهٔ اپهای دسکتاپی و ... نیست.
سخن پایانی
شاید در این لیست جای خالی زبانی همچون HTML را حس کرده باشید. احتمالاً فکر کردهاید که HTML آنقدر ساده است که حتی دانشآموزان ابتدایی هم میتوانند آن را یاد بگیرند. در واقع، باید این نکته را خاطر نشان کرد که HTML یک زبان نشانهگذاری است نَه یک زبان برنامهنویسی! به عبارت دیگر، با استفاده از تگهای مختلف، ما میتوانیم یک صفحهٔ وب ساده درست کنیم و به همین دلیل HTML معیارهایی که بتوان برچسب برنامهنویسی را رویش زد، ندارد. به هر حال، این زبان نشانهگذاری که کاربرد گستردهای هم دارد، میتواند شروعی مناسب برای علاقمندان به طراحی وب باشد.
شما فکر میکنید سادهترین زبان برنامهنویسی برای مبتدیها کدام است و خودتان کدام زبان برنامهنویسی را اول یاد گرفتید؟ لطفاً نظرات، تجربیات و دیدگاههای خود را در بخش نظرات این پست با سایر کاربران سکان آکادمی به اشتراک بگذارید.