شاید شما هم قصد داشته باشید که شروع به برنامه نویسی کنید و این سوال برای شما پیش اومده که چگونه برنامه نویسی را شروع کنیم و یا چطور برنامه نویسی کنیم این سوال اکثر کسایی هست که با شغل محبوب برنامه نویسی آشنا می شوند و قصد دارند برنامه را حرفه ای شروع کنند . خوندن این مقاله کمکت می کنه با ویژگی های مختلفی که بین زبان های برنامه نویسی تمایز ایجاد می کنه آشنا بشی. این کار باعث میشه بتونی راحت تر مسیرت رو انتخاب کنی. به علاوه انتخابت منطقی تر و مطمئن تر میشه. پس تا پایان مقاله همراهم باش!
[note] عجله نکن، دوست داری برنامه نویسی یاد بگیری؟ دکتر لقمان آوند در دوره الفبای برنامه نویسی خیلی قشنگ با زبان ساده بهت مسیریادگیری برنامه نویسی رو آموزش داده، فقط کافیه در این دوره رایگان شرکت کنی و از مشاوره مشاوران ما هم بهره مند بشی! [/note] 
برای انتخاب زبان برنامه نویسی مورد علاقه ات لازمه ویژگی ها و کاربرد های زبان های برنامه نویسی رو بدونی. باید بدونی که می خوای برای چه پلتفرمی برنامه بنویسی. اصلا چی می خوای بنویسی! دوست داری چه جور شغلی داشته باشی؟ اون ویژگی چه مزایایی رو در اختیارت قرار میده و... هر ویژگی که یک زبان برنامه نویسی خاص داره نباید به دید مزیت یا عیب مطلق اون زبان برنامه نویسی دیده بشه. نکته مهم اینه که معیار خوبی و بدی، انتخاب هر زبان برنامه نویسی در جای درست خودشه.
برنامه نویسی سطح بالا و برنامه نویسی سطح پایین
اگر به دنبال یادگیری یک زبان برنامه نویسی باشی به احتمال زیاد اسامی زبان های "سطح بالا" و "سطح پایین" تا به حال زیاد به گوشت خورده. باید بگم که مفهوم سطح بالا یا سطح پایین بودن یک زبان مسئله ای نسبیه یعنی بسته به زبان هایی که دارن با هم مقایسه میشن یک زبان برنامه نویسی ممکنه سطح بالا یا سطح پایین محسوب بشه.
به این خاطر که تنها مفهوم قابل فهم برای کامپیوتر اعداد صفر و یکه، زبان ماشین به عنوان تنها زبان قابل فهم برای کامپیوتر فقط از اعداد صفر و یک تشکیل شده. اما حرف زدن با کامپیوتر به زبان صفر ها و یک ها کار خیلی طاقت فرساییه بنابراین زبان های برنامه نویسی وارد میدان شدن. زبان برنامه نویسی اسمبلی به عنوان نزدیک ترین زبان به زبان کامپیوتر به وجود اومد و بنابراین از لحاظ نزدیکی به زبان انسان در پایین ترین سطح ممکنه. هرچه میزان نزدیکی به زبان انسان و abstraction یا انتزاع یک زبان برنامه نویسی زیادتر باشه اون زبان سطح بالاتر و از زبان ماشین دور تره!

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

بر خلاف زبان های برنامه نویسی سطح پایین، خوندن، نوشتن و نگهداری و بهبود برنامه های نوشته شده به زبان های برنامه نویسی سطح بالا مثل جاوا، سی شارپ و PHP بسیار راحته. زبان های سطح بالا به معماری سخت افزار وابسته نیستن و با اون ها شما به جای سر و کار داشتن با خونه های حافظه، با توابع، اشیا و ... سر و کار دارید.
انواع پلتفرم های برنامه نویسی
برای اینکه به مبحث انواع پلتفرم ها بپردازیم نیازه که اول بدونیم پلتفورم چیه. پلتفورم در واقع بستریه که یه نرم افزار می تونه در اون اجرا بشه. معمولا پلتفورم با سیستم عامل اشتباه گرفته میشه در حالی که پلتفورم به مجموع سخت افزار (مثل موبایل، کامپیوتر های دسکتاپ یا لپتاپ، کنسول ها و...) و سیستم عامل های مختلف (مثل ویندوز 32 بیت یا 64 بیت، مکینتاش، اندروید، IOS و...) و حتی نسخه های اون ها (مثل ویندوز 2008 یا مک او اس سیرا) گفته میشه.
با احتساب توضیحات بالا به طور کلی ما می تونیم روی سه بستر یا پلتفورم مهم موبایل، وب و دسکتاپ برنامه بنویسیم. البته من توی این مقاله با این سه نوع از پلتفورم های اصلی سر و کار دارم و صد البته که پلتفورم های دیگه ای مثل ساعت های هوشمند، لوازم خانگی هوشمند و... با سیستم های عامل و نسخه های مختلف وجود دارن.
برنامه نویسی موبایل

برنامه های موبایل معمولا به دو دسته برنامه های اندرویدی و برنامه های IOS تقسیم میشن. حتما با این دو سیستم عامل از قبل آشنا هستی. برای نوشتن اپلیکیشن های اندروید می تونی از زبان های برنامه نویسی مثل جاوا، سی شارپ، کاتلین، سی پلاس پلاس و... استفاده کنی. اما توی ایران زبان جاوا برای این کار رایج تره.
به علاوه برای نوشتن اپلیکیشن های IOS می تونی از زبان هایی مثل swift و objective c استفاده کنی.
برنامه نویسی وب
برنامه های وب به دو دسته برنامه های سمت کاربر (client side) و برنامه های سمت سرور (server side) تقسیم میشن. برنامه های سمت کاربر برنامه هایی هستن که روی مرورگر کاربر اجرا میشن و برنامه های سمت سرور برنامه هایی هستن که روی یک کامپیوتر سرور اجرا میشن ونتایج اجرای اون ها، به کامپیوتر کاربران نرم افزار ارسال میشه.

اگر قصد وارد شدن به حوزه برنامه نویسی وب رو داری برای انتخاب زبان برنامه نویسی اول باید مشخص کنی اون زبان رو برای سمت کاربر می خوای یا برای سمت سرور. البته معمولا در موقع شروع کار برنامه نویسی وب اولین قدم ها، چه قصد رفتن به سمت کلاینت رو داشته باشید و چه سمت سرور یادگیری زبان های html و css هست. چون این دو زبان پایه برنامه نویسی وب محسوب میشن ولی بدون اون ها هم شروع یادگیری برنامه نویسی سمت سرور ممکنه.
برای حوزه سمت کاربر زبان جاوا اسکریپت رو یاد بگیر. برای حوزه سمت سرور به تناسب نیاز و هدف گذاریت می تونی بین زبان های برنامه نویسی زیادی مثل PHP، جاوا اسکریپت، روبی و... زبان برنامه نویسی مورد علاقه ات رو انتخاب کنی.
برنامه نویسی دسکتاپ
برنامه نویسی دسکتاپ بیشتر به برنامه نویسی برای نرم افزارهای ویندوز و مکینتاش (به علاوه لینوکس) اشاره می کنه. می تونی با استفاده از زبان هایی مثل جاوا، سی شارپ، پایتون و... که اغلب کراس پلتفورم هستن برنامه بنویسی.
برنامه نویسی کراس پلتفرم
با برنامه نویسی کراس پلتفورم می تونی برای همه پلتفورم ها مثل اندروید، ios، کامپیوتر های ویندوزی و ... فقط با یک بار کد زدن برنامه بنویسی. برنامه نویسی کراس پلتفورم همینطور با عنوان برنامه نویسی مالتی پلتفورم شناخته میشه. این نوع برنامه نویسی به دو دسته اصلی تقسیم میشه:
برنامه نویسی کراس پلتفورم بومی native cross-platform
هر سیستم عامل موبایلی روی بسته توسعه نرم افزاری یا software development kit (SDK) خاص خودش اجرا میشه. هر SDK از زبان برنامه نویسی خاصی پشتیبانی می کنه. مثلا اپلیکیشن های IOS روی swift و objective c اجرا میشن و اپلیکیشن های اندروید روی java. اپلیکیشن هایی که مستقیما تحت این SDK ها اجرا میشن به اپلیکیشن های بومی یا native معروف هستن.
اما میشه کاری کرد که یک API یا framework واحد بین این SDK و اپلیکیشن به عنوان یک واسط قرار بگیره .به این ترتیب اجرای اون اپلیکیشن از زبان برنامه نویسی مستقل میشه! سازنده این API معمولا یک نرم افزار IDE یا محیط توسعه نرم افزار یکپارچه رو در اختیار برنامه نویس ها قرار می ده تا برنامه نویس ها بتونن به راحتی و با استفاده از اون IDE ها با نوشتن یک بار کد، برای همه پلتفورم های پشتیبانی شده خروجی بگیرن.
با این روش این اپلیکیشن ها در نهایت از SDK بومی هر پلتفورم برای اجرا شدن استفاده می کنن .یعنی در نهایت تفاوت آنچنانی با برنامه های بومی ندارن. به طور مثال Xamarinو React Native جز این دسته هستن!
روش برنامه نویسی کراس پتلفورم مزایا و معایب خاص خودش رو داره:
مزایا شروع برنامه نویسی کراس پلتفورم
- رابط کاربری تقریبا بومی
- پرفورمنس یا کارایی بالا تقریبا نزدیک به اپلیکیشن های بومی
- کاهش هزینه های منابع انسانی و مالی
- توسعه سریع
- امکان استفاده از API های بومی هر پلتفورم مانند مکان یابی، دسترسی به حافظه و...
معایب شروع برنامه نویسی کراس پلتفورم
- نیاز به تایید مجدد مارکت های اپلیکیشن مثل اپ استور برای هر بار به روزرسانی
- کاملا بومی نبودن رابط کاربری بخاطر تفاوت های زیاد رابط کاربری اندروید و IOS
- امنیت پایین

شروع برنامه نویسی کراس پلتفورم ترکیبی hybrid cross-platform
در برنامه های موبایلی بیشتر بار پردازشی در سمت سرور یا بک اند انجام میشه. بنابراین بزرگ ترین بخش این برنامه ها به رابط کاربری یا GUI اختصاص داره. بسته های نرم افزار یا SDK های اندروید و IOS امکانی به اسم Webview در خودشون دارن که با استفاده از اون یک مرورگر به اپلیکیشن اضافه میشه. این موضوع چه خبر خوشی برای ما داره؟
با استفاده از webview می تونی به سادگی با استفاده از HTML، CSS و جاوا اسکریپت اپلیکیشن های موبایل بسازی! به همین دلیل به این برنامه ها، برنامه های ترکیبی میگن. اما مشکل این نوع از برنامه نویسی اینه که برای ارتباط با API های بومی مثل مکان یابی و دسترسی به حافظه به یک واسط بین جاوا اسکریپت و زبان برنامه نویسی بومی احتیاج هست. این روش هم مثل روش قبل مزایا و معایب خاص خودش رو داره:
مزایا کراس پلتفرم
- نوشتن یک بار کد برای همه پلتفرم ها
- کم کردن هزینه های نگهداری اپلیکیشن به دلیل مشترک بودن کد ها
- دیباگ و اشکال گیری بدون احتیاج به شبیه ساز هر پلتفورم
- صرفه جویی در هزینه های منابع انسانی و زمان (به همین دلیل برای موقعیت های با مهلت زمانی کم یکی بهترین انتخاب هاست!)
- راحتی کدنویسی برای برنامه نویسان وب
معایب کراس پلتفرم
- دسترسی محدود به برخی امکانات پلتفورم
- احتیاج به وجود یک واسط جاوا اسکریپت به native برای دسترسی به API های بومی
- آسیب پذیری و امنیت پایین
- وجود نداشتن رابط کاربری مجزا و بومی برای هر پلتفورم
[hook type=inline id=55][/hook]
نتیجه گیری
توی این مطلب با انواع زبان های برنامه نویسی آشنا شدی و فهمیدی چطور برنامه نویسی را شروع کنیم. همینطور متوجه شدی پلتفرم چیه و برای برنامه نوشتن برای هر پلتفرم به چه زبان های برنامه نویسی احتیاج داری. حالا نوبت توست که تصمیم بگیری! یادت نره که حتما تمام تلاشت رو بکنی قبل از شروع برنامه نویسی مسیر و چشم انداز روشنی برای خودت داشته باشی. تو باید مزایا و معایب هر مسیر رو با دید باز و بدون تعصب بسنجی.
اگر ایده خاصی داری و دلت می خواد برای اجرای اون، برنامه نویسی رو یاد بگیری بررسی کن که بهترین پلتفرم برای اجرای ایده ات کدومه. با کدوم پلتفورم از نظر بازاریابی و تجربه کاربری می تونی ارتباط بهتر و مستقیم تری با مشتری ها یا کاربر هات داشته باشی؟ چقدر زمان برای اجرای اون داری؟ اگر دوست داری در یک شرکت برنامه نویسی استخدام بشی علاقه داری فیلد کاریت در چه سمتی باشه؟ در چه صورت می تونی حقوق بیشتری دریافت کنی؟ در چه صورت می تونی زودتر به نتیجه برسی؟
اینا همه شرایط مختلفی هستن که ممکنه هر شخص علاقه مند به وارد شدن به حوزه برنامه نویسی لازم داشته باشه بهشون فکر کنه. پس سعی کن با دید باز و منطقی تصمیم بگیری. تصمیم تو چیه؟ اونو با ما در میون بذار تا برای ادامه مسیر کمکت کنیم!
ممنون از سایت خوبتون
ممنونم از همراهی شما :)
سایتتون خیلی خوبههههه.یه سوال این قسمتو من اصلا نفهمیدم یعنی چی میشه بیتر توضیح بدین؟؟برنامه های وب به دو دسته برنامه های سمت کاربر (client side) و برنامه های سمت سرور (server side) تقسیم میشن
سلام خسته نباشید ممنون از مطالب خوبتون.
یه سوالی هست که ذهنم رو درگیر کرده
بیشتر سایت های معروف(مثلا دیجیکالا و سون لرن و سنجش و...) از چه ساخته شده؟ توسط وردپرس یا کدنویسی ؟
ممنون میشم که جوابم بدید.
سلام. ممنون از سایت خوبتون بابت آموزشها و مقاله های مفید. یه سوال دارم: برنامه نویسان برندهای معروف مثل دیجی کالا و آپ و ... به صورت کراس پلتفورم برنامه نویسی می کنند؟ ممنون میشم پاسخ بدید.
باتشکر
سلام
اگر امکان داره راهنمایی بفرمایید
من هدف خاصی رو برای برنامه نویس شدن دنبال نمیکنم . کلا از کار کردن با کامپیوتر لذت میبرم
و میخوام یادگیری برنامه نویسی رو هم شروع کنم
با توجه به مطالبی که در این مقاله گفته شده و همچنین مقاله دیگر در همین سایت :
"برنامه نویسی چیست؟ یادگیری بهترین زبان های برنامه نویسی" ، نوشته ی آقای مهدی علامه
در انتخاب یکی از این سه زبان برنامه نویسی ، برای شروع یادگیری تردید دارم
1-پایتون
2- یکی از زبان های خانواده C (اگر برای شروع بخوام انتخاب کنم فکر کنم برم سراغ #C )
3-جاوا
تصویر ذهنی ای که از یادگیری برنامه نویسی دارم ، برنامه نویسی برای موبایل و وب نیست
اما چیزی که درباره این سه زبان خوندم ، به نوعی با هر سه پلتفرم در ارتباطه و به همین خاطر این سه تا به نظرم بهتر اومد
از طرف دیگه فکر میکنم اگر بتونم زود ازش خروجی بگیرم ، بیشتر بهم انگیزه میده
همچنین به زبان های سطح پایین علاقه مندم . مثل ++C , C . نه اینکه آشنایی داشته باشم ، بلکه چون اساس زبان های دیگه از این ها شروع شده
به نظرم میاد که تسلط بیشتری در برنامه نویسی خواهم داشت
بازی های کامپیوتری و نرم افزارهای سه بعدی ، هوش مصنوعی و واقعیت مجازی هم برام جالب و جذاب هستند
با همهی این اوصاف توصیه میفرمایید با کدوم یکی شروع کنم؟
سلام.
انتخاب بسیار سختی هست...بخصوص اینکه هر سه زبانی که قصد دارید یاد بگیرید جزو زبانهای رده بالا و کاربردی حساب میشن و هرکدوم مناسب یکی از زمینه هایی هست که بهشون علاقه دارید.
برای بازی سازی: سی شارپ
برای هوش مصنوعی: پایتون
برای واقعیت مجازی: هردو
جاوا هم که به همه این حوزهها ورود میکنه اما قدرت زبانهای بالا در اون زمینههایی که گفتید بیشتر هست.
با سی شارپ یا جاوا عمقی تر برنامه نویسی رو یاد میگیرید. چون معمولا صفر تا صد توابع رو خودتون باید پیاده سازی کنید. اما پایتون دارای توابع آماده زیادی هست و ممکنه کسانی که اول با پایتون شروع میکنند، نسبت به کدنویسی تنبل بشن. برای همین تو دانشگاه ها معمولا از جاوا یا سی شارپ برای شروع برنامه نویسی استفاده میکنند.
بنظرم ببینید علاقه تون روی کدوم زمینه بیشتر هست و از اون شروع کنید. اگر سرعت براتون مهم هست و دچار مشکل بالا نمیشید، اول پایتون رو شروع کنید.
سلام اسم من میثم محمدی هستم۱۳سالم از برنامه نویسی هیچئ نمیدونم صفر صفر الان به نظر شما با کدوم زبان شروع کنم و یه لپ تاپ دلE6420هم دارم.
سلام دوست عزیز
برای شروع برنامه نویسی اول باید تصمیم بگیرید که به چه زمینه ای علاقه دارید (وب-موبایل-بازی و...)
بعد براساسش مقالات مرتبط رو دنبال کنید.
سلام من ۱۶ سالمه
میخام شروع به کار کنم صفر هستم
از کجا شروع کنم؟
سلام
همونطور که در کامنت قبل گفتم، برای شروع برنامه نویسی اول باید تصمیم بگیرید که به چه زمینه ای علاقه دارید (وب-موبایل-بازی و...)
بعد براساسش مقالات مرتبط رو دنبال کنید.
درود برشما
سپاس از شما بابت سایت ساده و روانتون
بابت همکاری در یک پروژه میخواستم صحبت کنم باهاتون ممنون میشم اگر امکانش هست یک راه ارتباطی برای ایمیل من ارسال کنید
سلام
میتونید درخواستتون رو با بخش پشتیبانی سایت یا تلگرام مطرح کنید تا رسیدگی بشه.
سلام ؛ چطور میشه فهمید برای برنامه نویسی در وجودمون علاقه نهادینه سازی کنیم ؟
سلام
متوجه سوالتون نشدم متاسفانه :)
سلام. به نظرتون برای کسب درآمد کدوم یک از زبانهای برنامه نویسی پر کاربردتره؟
درود
به طور کلی شما باید اول یک حوزه رو انتخاب کنید بعد براون اساس میتونم بگم که کدوم زبانها پولساز تر هستند.
مثلا برای بازی سازی سی شارپ و سی پلاس
برای فرانت جاوا اسکریپت
برای بک اند جاوا و پی اچ پی و...
برای هوش مصنوعی پایتون
من مهندسی مکانیک خوندم ، و سطح زبانم بالاتر از متوسط هستش ، اما بابت مهاجرت میخام وارد فیلد برنامه نویسی بشم ، به نظرتون رشتم کامپیوتر نیس مشکلی بر نمیخورم ؟
درود
برای مهاجرت از طریق کار باید حداقل دوسال سابقه شغلی خوب داشته باشید و این دیگه به میزان تلاش خودتون برمیگرده.
در سالهای اول ممکنه موقعیت های شغلی چندان چشم گیری نداشته باشید، اما بعد رو غلتک میفتید. در اصل هرچقدر سابقه و تجربه بیشتری داشته باشید هم حقوق هم مزایای بیشتری خواهید داشت.
حتما با یک مشاور مشورت کنید شاید خواندن ارشد کامپیوتر هم بتونه بیشتر بهتون کمک کنه.
پاینده باشید.
سلام وقت بخیر . من 44 سال دارم و می خوام برنامه نویسی رو شروع کنم . اولا اینکه الان برام دیر نیست ؟ دوم اینکه هیچ چیزی از برنامه نویسی و اصطلاحاتش نمی دونم . و اینکه برنامه ای که بیشتر مربوط به حوزه کاری است رو یاد بگیرم . لطفا راهنماییم کنید. سپاس
درود
حقیقتا برای برنامه نویسی هیچ وقت دیر نیست و حتی اگر بدشانس باشید و به درآمد اضافه نکنه، برای باز شدن فکر و بهبود مهارت حل مساله بسیار مفید هست.
چون چیزی از برنامه نویسی نمیدونید، باید یه مدت کدنویسی کنید تا مطمئن شید آیا به این حوزه علاقه دارید یا نه.
حتما کتاب راهنمای ورود به دنیای برنامه نویسی رو مطالعه فرمایید. همچنین قبل از شرکت در هر دوره ای، آموزش برنامه نویسی از صفر رو بگذرونید تا از انتخاب تون مطمئن شید.