اصلا برنامه نویسی یعنی چه؟

سلام. این اولین پست منه اینجا. قصد دارم الان که یه بستر خوب مثل ویرگول فراهم هست یه سهم کوچیک تو بالا بردن دانش برنامه نویسی کشورم ایران داشته باشم.باور من اینه که برنامه نویسی رو هرکسی میتانه یاد بگیره، به شرط اینکه با مطالب پیچیده سردرگم نشه و منبع خوبی برای یادگیری داشته باشه. برای همین هم سعی من اینه که مطالب رو به ساده ترین شکل ممکن توضیح بدم که برای اکثر افراد قابل فهم باشه.برای همین هم از این موضوع شروع میکنم که اصلا برنامه نویسی چه هست.خیلی تعریف های مختلف تو کتاب های مختلف ارائه شده، ولی من نمیخوام مثل اونها تعریفش کنم.از دید من برنامه نویسی یعنی ''حل مسئله''. همین، به همین راحتی!(البته به این راحتی ها هم نه!)خب اول راجب ۳ گروه مباحث پایه ای صحبت میکنیم و در آخر دوباره به این مفهوم ''حل مسئله'' برمیگردیم و اینکه چرا من اینجور تعریفی رو به کار بردم.مورد اول: کامپیوتر، سخت افزار، نرم افزار، زبان های برنامه نویسی و خود برنامه نویسی!خب، قبل از هرچیزی این موضوع کاملا روشنه که ما تو برنامه نویسی داریم با یه چیزی به اسم کامپیوتر سر و کله میزنیم. یعنی در واقع ما با برنامه نویسی کردن داریم به کامپیوتر میگیم که چکار کنه! این رو یادتان باشه که کامپیوتر یه موجود کاملا احمقه! که هیچی رو خودش نمیفهمه، این ما هستیم که با برنامه نویسی بهش میگیم که چکار کنه. در واقع تنها کاری که کامپیوتر خیلی خوب انجام میده اینه که یه سری کارهای خیلی ساده رو با سرعت خیلی زیادی انجام میده که البته اینجا بیشتر از این راجبش صحبت نمی‌کنم که از بحث اصلی دور نشیم.حالا این کامپیوتر ما یه جنبه سخت افزاری داره و یه جنبه نرم افزاری.به اون قطعات فیزیکی مثل CPU، کارت گرافیک و غیره میگیم سخت افزار، اینها رو میشه با دست لمس کرد !نرم افزار چیه حالا؟ اینها رو دیگه نمیشه لمس کرد! نرم افزار اون جنبه ای از کامپیوتره که از طریق اون ما به اون سخت افزار میگیم که چکار کنه.یه مثال جالب میتانه همین انسان باشه، بعد جسمی رو میشه گفت سخت افزار و بعد روحی رو میشه گفت نرم افزار. در واقع نرم افزاره که باعث میشه اون سخت افزار یه کارای مفیدی رو بتانه انجام بده.خب حالا جناب برنامه نویس کجای این ماجرا قرار داره؟ با توضیحاتی که داده شد مشخصه که کار برنامه نویس اینه که بیاد و به کامپیوتر (به سخت افزار) بگه که چکار کنه!پس ما تا اینجای کار یه سخت افزار احمق داریم و یه برنامه نویس باهوش!سوال اصلی اینه که چطور یه برنامه نویس با این سخت افزار ما صحبت میکنه؟ یعنی در واقع چطور بهش میگه که چکار کنه؟جواب این سوال میشه زبان های برنامه نویسی.یعنی در واقع این جناب برنامه نویس میاد و با استفاده از زبان های برنامه نویسی یه سری چیزها مینویسه که به این چیزها میگن ''برنامه یا نرم افزار''. برنامه نویس ما از طریق این برنامه ها به کامپیوتر میگه که چه کاری انجام بده، به همین راحتی!حالا این زبان های برنامه نویسی هم انواع مختلفی دارن که تو این مقاله راجبش صحبت نمیکنم. مهم اینه که ما بدانیم که برنامه نویس ها با استفاده از زبان های برنامه نویسی برنامه ها رو میسازن.مورد دوم: سیستم عاملخب، حالا که میدانیم سخت افزار و نرم افزار چیه و کار برنامه نویس چیه، وقت اینه که بگیم ما ۲ نوع کلی از نرم افزار ها رو داریم.نوع اول رو میگن نرم افزار های سیستمی.نوع دوم رو هم میگن اپلیکیشن ها.خلاصه بخوام بگم، نرم افزار های سیستمی برای اینن که کار با اون سخت افزار راحت تر بشه و یک نوع از این نرم افزار های سیستمی همین سیستم عامل ها هستن.ویندوز، مک، لینوکس، اندروید، iOS، و غیره همگی مثال هایی از سیستم عامل ها هستن.مورد سوم: اپلیکیشن هاپس در واقع تا اینجای کار میشه اینطور تصور کرد که ما یه سخت افزار داریم و روی این سخت افزار یه سیستم عامل داریم که یجورایی واسطه بین ما و سخت افزار حساب میشه و کار کردن با اون سخت افزار رو راحت تر میکنه، هم برای کاربرهای معمولی و هم برای برنامه نویس ها. مخصوصا برای برنامه نویس ها که با وجود سیستم عامل، ابزار های مختلفی برای برنامه نویسی در اختیار دارن.حالا اپلیکیشن ها چیا هستن؟گفتیم که نوع دوم نرم افزار ها رو میگن اپلیکیشن ها. اینجا هم اگه بخوام خلاصه بگم قضیه از این قراره که حالا که سیستم عامل ابزارهای خوبی رو در اخیار برنامه نویس میزاره، برنامه نویس هم از این ابزار ها و همچنین زبان های برنامه نویسی استفاده میکنه برای ساختن اپلیکیشن ها.یعنی در واقع انگار که ما ۳ تا لایه داریم که روی هم قرار گرفتن:لایه اول سخت افزار که پایین تر از بقیه هست.لایه دوم سیستم عامل که واسط بین سخت افزار و لایه بالایی هست.لایه سوم اپلیکیشن ها که روی این سیستم عامل قرار میگیرن.خب حالا برگردیم به همون مفهوم برنامه نویسی.با توضیحاتی که داده شد مشخص شد که کار یه برنامه نویس چیه.ولی سوال اصلی اینه که این مفهوم برنامه نویسی اصلا یعنی چه و منظور من از اینکه گفتم ''حل مسئله'' چه بود؟ببینید، وقتی شما میخوای دستور درست کردن یه غذا رو بنویسی چکار میکنی؟ میای و مراحل انجام کار رو دقیق مینویسی. مثل این:اول پیاز رو خرد میکنیمبعد بهش ادویه میزنیمبعد انقد بهم میزنیم که خوب بپزهاگه روغن کم داشت اضافه میکنیم، در غیر این صورت ادامه میدیم.بعد فلان کارو غیره تا وقتی که دستور غذا کامل شه.شاید باورش سخت باشه ولی در واقع برنامه نویسی هم دقیقا به همین شکله!کار برنامه نویس اینه که برای حل یه مسئله خاص یه دستور پخت خاص بسازه!به این دستور پخت میگن الگوریتم، یعنی یه جور مسیر یا پله که ازش باید قدم به قدم عبور کنیم تا به جواب مسئله برسیم.یه الگوریتم ساده به عنوان مثالبرنامه نویسی یعنی حل مسئله و ساختن الگوریتم ها و به شدت هم لذت بخشه!البته همیشه هم به این لذت بخشی نیست!یه نکته:یه مسئله مهمی که وجود داره اینه که ''زبان برنامه نویسی خود برنامه نویسی نیست''!شما فقط با یادگرفتن یه زبان تبدیل نمیشید به یه برنامه نویس خوب. زبان برنامه نویسی فقط یه ابزاره که شما ازش استفاده میکنید برای صحبت کردن با کامپیوتر، برای ساختن الگوریتم ها، برای حل مسائل.برای تبدیل به یه برنامه نویس خوب شدن شما هم یه دانش فنی احتیاج داری و هم تمرین زیاد در عمل. که البته بحث راجع به این موضوع رو میزارم انشاالله تو یه مقاله دیگه.خب به آخر این مقاله رسیدیم، امیدوارم که کمک کننده باشه برای همه.بعضی از مقاله های دیگه من هم اینها هستن:کتاب «دنیا بازیچه یهود» کتابی که هرکسی باید بخواند۲ کلمه اساسی و مهم برای برنامه نویس های تازه کار!پارادایم های برنامه نویسی به زبان سادهموفق باشید.