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

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

برنامه نویسی چیست؟

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

اگه بخواییم نگاهی به تعریف مفهوم برنامه نویسی در سایت ویکی پدیا بندازیم، مفهوم برنامه نویسی رو اینطور تعریف کرده: «برنامه نویسی کامپیوتر یا کدنویسی، فرآیند نوشتن دنباله ای از دستورالعمل ها (که برنامه نامیده می شود) است که کامپیوتر می تواند آن ها را دنبال کند تا وظایف مختلفی را انجام دهد.

بوسیله برنامه نویسی، ما یکسری دستورالعمل ها به کامپیوتر میدیم که این دستور العمل ها توسط کامپیوتر اجرا میشن. این دستورالعمل ها می تونن شامل دستورات خیلی ساده مثل نمایش یک متن در خروجی یا جمع دو عدد باشن یا دستورالعمل های خیلی پیچیده برای انجام کارهای خاص.

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

یا وقتی تو موبایلتون به یک آهنگ گوش میدید، از یک برنامه پخش کننده موسیقی استفاده می کنید که این برنامه برنامه نویسی شده.

تعریف بالا یک تعریف ساده بود، حالا می تونیم یک پله جلوتر بریم و تخصصی تر واژه برنامه نویسی رو بررسی کنیم. همه ما انسان ها برای ارتباط با هم از یک زبان گویش استفاده می کنیم، مثلاً ما ایرانی از زبان فارسی برای ارتباط با هم استفاده می کنیم یا شخصی که تو انگلستان زندگی میکنه به زبان انگلیسی صحبت می کنه. دستگاه های دیجتیال مانند کامپیوتر و موبایل هم دارای یک زبان هستند و این زبان، زبان باینری یا دودویی یا زبان ماشین هست. زبان ماشیت فقط از اعداد 0 و 1 تشکیل شده که با کنار هم قرار دادن صفر ها و یک ها جملات برای کامپیوترها معنی پیدا می کنن. (از این به بعد، تو مقاله منظور از کامپیوتر دستگاه های دیجیتالی هستند که امکان نوشتن برنامه براشون وجود داره)

ما برای ارتباط با کامپیوترها، نیاز به یک پل ارتباطی داریم تا بتونیم دستورالعمل های خودمون رو به کامپیوتر ها بدیم و این پل ارتباطی برنامه نویسی هست.

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

برای مثال که بتونید بهتر یک مثال از یک دستورالعمل در زبان برنامه نویسی رو درک کنید، یک قطع کد ساده زیر از  زبان پایتون رو براتون میارم:

print("Hello World!")

دستور بالا، به کامپیوتر میگه که متن HelloWorld! رو در خروجی چاپ کن.

زبان برنامه نویسی چیست؟

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

معمولاً زبان های برنامه نویسی به دو دسته تقسیم میشن:

  1.  زبان های سطح بالا: زبان هایی که به زبان انسان شبیه هستند و درکشون برای ما راحت تره، مثل زبان برنامه نویسی پایتون یا سی شارپ.
  2. زبان های سطح پایین: این زبان ها، به زبان ماشین نزدیک هستند، مثل زبان اسمبلی که یکی از سخت ترین زبان ها برای یادگیری هست و در کاربردهای خیلی خاص استفاده میشه

مهمترین تفاوت زبان های سطح بالا و سطح پایین رو گفتیم، یعنی نزدیک بودن به زبان انسان. برای مثال شما در یک زبان برنامه نویسی مثل پایتون، وقتی قصد تعریف یک شرط برای کامپیوتر دارید، از دستوری به نام if استفاده می کنید. کلمه if در زبان انگلیسی به معنی «اگر» هست و میبینید که چقدر به زبان انسان نزدیکه.

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

برنامه نویس به چه شخصی گفته می شود؟

حالا که با مفهوم برنامه نویسی و زبان برنامه نویسی آشنا شدیم، وقتشه که با واژه برنامه نویس آشنا بشیم. برنامه نویس به شخصی گفته میشه که از یک زبان برنامه نویسی برای نوشتن برنامه های کاربردی استفاده می کنه.

هر برنامه نویس میتونه بر اساس موقعیت شغلی که داره با یک یا چند زبان برنامه نویسی آشنا باشه. اما معمولاً برنامه نویس ها یک زبان اصلی رو به عنوان زبان برنامه نویسی انتخاب می کنن. به عنوان مثال، من خودم با زبان هایی مثل پایتون یا جاوا اسکریپت آشنایی دارم، اما زبان اصلی من برای کار برنامه نویسی زبان سی شارپ هست که معمولاً برای بیشتر پروژه هام از این زبان استفاده می کنم.

برنامه های کامپیوتری چجوری اجرا میشن؟

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

زمانی که شما یک برنامه کامپیوتری می نویسید (مثلاً با زبان برنامه سی شارپ)، این برنامه باید به کد صفر و یک تبدیل بشه تا برای کامپیوتر قابل فهم و اجرا باشه. کار ترجمه برنامه های نوشته شده توسط زبان های برنامه نویسی توسط ابزاری به نام کامپایلر (Compiler) انجام میشه. بزارید یک مثال بزنم، اگر زمان استفاده از برنامه ها دقت کرده باشید، تمام فایل های اجرایی در محیط ویندوز پسوند exe دارن که مخفف executable هست، یعنی قابل اجرا که شامل زبان صفر و یک هست. این فایل توسط ابزاری به نام compiler تولید میشه.

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

علاوه بر کامپایلر، ما یک نوع مترجم دیگه هم داریم که بهش میگن مفسر یا interpreter. هر دوی این ابزار ها، یعنی کامپایلر و مفسر یک کار انجام میدن، تبدیل دستورات یک زبان برنامه نویسی به زبان ماشین. تفاوت مهم این دو در این هست که کامپایلر تمام کدهای نوشته شده رو یکجا تبدیل به کد ماشین میکنه و یک خروجی قابل اجرا بهمون میده، اما مفسر هر خط از کدی که نوشته شده رو ترجمه میکنه و اجرا میکنه. یک مثال هم میزنم که بهتر براتون موضوع جا بیوفته، فرض کنید که یک کتاب داستان به زبان انگلیسی هست و شما می خوایید این کتاب رو برای بچتون که زبان انگلیسی بلد نیست بخونید، یک روش اینه که خودتون خط به خط کتاب رو بخونید و برای بچتون ترجمه کنید (مفسر)، یک روش دیگه هم اینه که کتاب رو یکجا ترجمه کنید و متن ترجمه شده رو به بچتون بدید که بخونه (کامپایلر)، البته اگر بچتون خیلی کوچیک نباشه و بتونه بخونه.

مزیت های شغل برنامه نویسی چیست؟

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

  1. درآمد بالا: اولین و مهمترین دلیل اینه که کار برنامه نویسی درآمد خیلی بالایی داره و شما می تونید بعد از چند سال یادگیری مداوم و کسب تجربه و تبدیل شدن به یک برنامه نویس ارشد، درآمد بسیار بالایی کسب کنید.
  2. امکان دور کاری و فریلنسری: یکی از مزیت های شغل برنامه نویسی اینه که شما می تونید برای خودتون کار کنید. مفهوم فریلنسر دقیقاً اشاره به افرادی داره که بعد از شناخته شدن و کسب جایگاه، می تونن پروژه بگیرن، تو خونه کار کنن و کسب درآمد کنن. یا خیلی از افراد هستن که با شرکت های مختلف به صورت دور کاری کار می کنن، چه ایران و چه در خارج کشور.
  3. امنیت شغلی بالا: این مورد هم میشه گفت یکی از دلایل مهم محبوبیت شغل برنامه نویسی هست، همیشه برای یک برنامه نویس کار هست. البته اگر واقعاً برنامه نویس باشید و اسمی نباشه! خیلی از شرکت ها رو میشناسم که مدت هاست دنبال یک برنامه نویس خوب میگردن، اما نیروی کار مناسب پیدا نمی کنن. پس اگر وارد شغل برنامه نویسی بشید همیشه کار براتون هست.
  4. پیشرفت شخصی: این مورد رو من خیلی دوست دارم. شغل برنامه نویسی به صورتی هست که شما همیشه باید در حال پیشرفت باشید. اومدن تکنولوژی های پیشرفته و جدید و گستردگی مباحث باعث میشه که مثل آب راکد پشت سد نباشید و مثل یک رودخونه خروشان که جریان داره، در حال حرکت و یادگیری باشید.

معایب شغل برنامه نویسی چیست؟

نمیشه در مورد مزایای شغل برنامه نویسی صحب کرد و از معایبش نگفت، به عنوان شخصی که حدود 20 سال هست که به صورت تخصصی کار برنامه نویسی میکنم، موارد زیر جزو معایب (البته اگر بشه اسمش رو معایب گذاشت) شغل برنامه نویسی می دونم:

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

چجوری وارد شغل برنامه نویسی بشیم؟

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

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

الان هر شخصی که میخواد کار برنامه نویسی رو شروع کنه، بهش میگن که با زبان پایتون شروع کن، اما از دیدگاه من که تاکید میکنم، این موضوع کاملاً یک دیدگاه شخصی از طرف یک برنامه نویس با تجربه 20 ساله هست اینه که این موضوع اشتباه هست. من خودم زمانی که برنامه نویسی رو شروع کردم با AMIGA Basic شروع کردم و بعد رفتم سراغ یادگیری سی پلاس پلاس. البته این موضوع برای حدود 30 سال پیش و قبل از شروع فعالیت حرفه ایم هست. یا تو دانشگاه استاد یک پروژه به زبان اسمبلی بهمون میداد که یه هفته درگیر نوشتن یه ماشین حساب ساده بودیم!

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

چجوری تو کار برنامه نویسی موفق بشیم؟

طبق چیزی که من تو این 20 سال یاد گرفتم، برای موفق شدن تو کار برنامه نویسی چند تا کار باید انجام بدید:

  1. همیشه در حال یادگیری باشید. نترسید که بخوایید تکنولوژی های جدید رو یاد بگیرید و برای خودتون چالش های مختلف درست کنید.
  2. با جامعه بزرگ برنامه نویسی در ارتباط باشید و ازشون یاد بگیرید. یادتون باشه که همیشه شخصی هست که از شما بهتر باشه و این افراد رو پیدا کنید و از تجربیاتشون استفاده کنید.
  3. سورس های دیگران رو بررسی کنید و ازشون یاد بگیرید. کلی پروژه تو سایت هایی مثل GitHub هست که میشه مطالعشون کرد و ازشون یاد گرفت.
  4. برای خودتون پروژه تعریف کنید و انجام بدید. یادمه چند سال پیش که قصد داشتیم سایت جدید توسینسو رو باز نویسی کنیم (فکر کنم نسخه 3 سایت بود)، به خاطر کند بودن ابزاری به نام EF Core که برای ارتباط با بانک اطلاعاتی استفاده میشه، از پایه یک ابزار مشابه به اسم STORM رو نوشتن و چندین سال توسینسو رو بستر همین ابزار کار می کرد. نوشتن این ابزار باعث شد که کلی تجربه بدست بیارم. پس از چالش های جدید نترسید و به سمتش برید.

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

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