برنامه نویس نبـــــــــــــود!  ۱و ۲و ۳

کسانی که تازه با برنامه نویسی اشنا می شوند معمولا این مسئله برایشان جای سوال که چطور یک فرد این همه دستورات و مباحث رو حفظ کرده، اما واقعیت این طور نیست. مباحث در حال حاضر انقدر زیاد که حتی آلبرت اینشتین هم نمی تونه همه این ها رو بخاطر بسپاره.باید بسیار کلی نگاه کنید و پایه های اساسی یک برنامه را یاد بگیرید، شاید برای بعضی ها خنداره باشه ولی پایه اساسی رو عملا در دانشگاه اموزش می‌دهند. شاید الان بعضی بگن که الان دانشگاه چیزی رو یاد نمی دهند ولی باور کنید پایه های اساسی گفته می‌شه فقط ما نسبت به این مسائل کمی کم لطفی می‌کنیم.در دانشگاه زبان برنامه نویسی که استفاده می شود C و ++C است. شاید با خودتون بگوید چرا از زبان های دیگری استفاده نمی شود با سی که برنامه ای نمی شه نوشت، ولی نکته از یادمان می‌رود این است که ساختار حافظه را خیلی خوب می‌توانیم درک کنیم. این نکته خیلی مهم درکی از ساختار حافظه داشته باشیم که داده چطوری در سیستم عامل قرار می‌گیرند.شاید باورتون نشه ولی زبان برنامه نویسی پایتون خیلی کندتر عمل می کند نسبت به زبان برنامه نویسی سی، می گوید چرا، تفاوت کاملا مشخص است، پایتون زبان برنامه نویسی مفسری و سی کامپایلری است.برای مفسر یک زمانی می برد تا این برنامه قابل فهم برای کامپیوتر کنه برنامه تبدیل نمی شود بلکه خط به خط خوانده می شود و سیستم عامل با ابزارها مختلف ان را جرا میکند، ولی در سی معمولا برنامه تبدیل به اسمبلی و از اسمبلی به برنامه باینری یا دودویی تبدیل می شود. این نکته خیلی مشخص می شود وقتی برنامه مرتب سازی اعداد بنویسید، و هر دو برنامه رو از نظر زمانی با یک دیگر مقایسه کنید. بحث نمی خوام زیاد تخصصی کنم، بهتر یک جوری باشه که همه بفهمند.یک مشکل دیگری که هست در راه برنامه نویسی الگوریتم است که اگر کمی دقت کنید تمامی کارهای روزانه ای که انجام می دهید خودش یک الگوریتم از کارهای مشخص شده است.برنامه نویس الگوهای روزانه رو تبدیل به برنامه می‌کند، برای مثال، در دانشگاه شاید با مفهوم مرتب سازی حبابی اشنا شدید، این مرتب سازی چیز جدید نیست حتی قبل از اینکه رایانه ها به وجود بیایند بوده، کجا در ذهن ما.یکم با خودتون فکر کنید اسون ترین روشی که برای مرتب کردن می‌رسه چیست؟ اینکه بریم عدد کوچکتر رو پیدا کنیم و بیارم بزاریم سرجای خودش به نظر شما این کار سختی، اما کامپیوتر از این حرف ها هم خنگ تر و کند ذهن تر است. برای مثال:8 5 6 1 2 این چشم شماست که سریع عدد کوچکتر رو تشخیص می دهد ولی در کامپیوتر اینطور نیست. کامپیوتر از یک نقطه شروع به خوندن می‌کند تا نقطه پایانی که معمولاحتی نقطه پایانی و شروع رو هم باید مشخص کرد.از عدد ۱ شروع به خواندن می‌کند تا برسد به عدد8، خب اگه اینطوری باشد باید ۲ رو با ۱ مقایسه و هم طوری دو به دو مقایسه کنیم. می بینید این روش وجود دارد فقط خیلی خیلی ساده تر شده تا قابل فهم کامپیوتر باشد.حالا به نظر شما برای اینکه این موضوع رو درک کنید، باید چه مباحثی رو یاد داشته باشید؟ این اعداد کجا قرار می گیرند روی ابرها که نیستند، روی حافظه قرار می‌گیرند. پس شما باید درک کاملی از حافظه ها داشته باشید که فقط زبان برنامه نویسی سی به شما اموزش می دهدچون در زبان برنامه نویسی پایتون خیلی از این مسائل و سر کله زدن با حافظه برداشته شده تا برنامه نویسی رو راحت کنه، ولی هرکدوم خوبی ها و بدی هایی رو دارند.فکر می کنید ارایه چیست؟ ارایه خونه های از حافظه هستند که به یک دیگر اشاره می‌کنند، یعنی چی؟یعنی خونه اول به ادرس خونه دوم اشاره می‌کنه و همین طور تا اخر. این مفهوم کلی اشاره گر ها در برنامه نویسی است. نکته اینجاست برای اینکه یک خونه بتونه به خونه دیگر اشاره کنه نیاز به قسمتی از حافظه داره تا اشاره گر در ان جایی بگیرد، اشاره گر هم حافظه نیاز دارند. یعنی اگر ارایه ۵ خونه باشه، به همون اندازه یعنی ۵ تا دیگر به ان اضافه می‌شود که اشاره گرها بتوانند به ادرس یک دیگر اشاره کنند.مگه داریم فردی بدون ادرس بره به مکان B حتی در زندگی واقعی غیر ممکن است. هارد دیسک خود رو درنظر بگیرد فکر می‌کنید وقتی فرمت اش می‌کنید دارید چیکار می‌کنید، اگر فکر می‌کنید هارد پاک می‌کنید که کاملا اشتباه تصور کردید تنها کاری که دارید انجام میدهد فهرست ادرس ها رو پاک می‌کنید. وقتی بهش می گید برو به این ادرس، ادرس نداره بره. فایلها روی هارد موجود ولی ادرس نداریم که بریم این کم ترین کاری که یک برنامه ریکاوری انجام می‌هد. من فقط خیلی از کلیات گفتم داستان ها داریم برای اینکه درک داشته باشیم باید مفاهیم اساسی و پایه ای کامپیوتر را یاد بگیریم و گرنه for برنامه نویسی سی با for برنامه نویسی پایتون فقط در طرز نوشتاری فرق می‌کند، تمام.در برنامه نویسی امروزی خیلی از روش ها فرمول ها ساخته شده دیگه نیازی نیست دوباره ان ها رو از نوع بنویسیم، ولی شاید چیزی که باعث گمراهی افراد بشه اینکه که پایه و اساس مفاهیم رو درک نکنند.کد کپی نکید اون رو بخونید برای خود توضیح بدید چطور به این مرحله رسید این عملگرها چیکار می‌کنند بعد از اون استفاد کنید. اگر کپی کنید با صحیح و خطا اینکار رو انجام دهید هیچی یاد نمی گیرید(منظورم از: صیح وخطا در یادگیری برنامه نویسی نیست).ازتون یک سوالی می پرسم چقدر وقت گذاشتید که یک برنامه بازگشتی رو برای خود بازکنید و درک کنید که این برنامه چطوری کار می کند؟ درست که سیستم اموزشی نقص های دارد ولی این خود دانشجوها هستند که کم کاری در بعضی از قسمت می‌کنند، هروقت تونسیتد استادتون رو به چالش بکشید اون موقع استاد هم شما ها رو به چالش می‌کشاند و این راهی است برای یادگیری بیشتر.خوش خندان باشید