با عرض سلام

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

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

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

اگرچه برنامه نویسی یک اختراع جدید محسوب می‌شود اما این در حالی است که ایده ی مجبور کردن یک ماشین یا دستگاه برای انجام یکسری دستورات خاص به سال‌ها پیش (چیزی در حدود یک قرن پیش) باز می گردد. در واقع، یکی از ابتدایی ترین طرح ها برای یک ماشین قابل برنامه‌ریزی (یا همان کامپیوتر) از کسی به نام Charles Babbage در سال ۱۸۳۴ گرفته شد.

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

ایده ی ماشین‌های قابل برنامه‌ریزی توجه خانمی به نام Ada Lovelace را به خود جلب کرد که یک ریاضیدان بود. لذا او برنامه‌ای نوشت که تعدادی عدد خاص را پشت سر هم چاپ می‌کرد (با توجه به این که این خانم اولین کسی بود که کار خاصی را با Analytical Engine یا همان موتور تحلیلگرانجام داد، وی را می‌توان به نوعی اولین برنامه نویس دنیا نیز تلقی کرد که نامگذاری زبان برنامه نویسی Ada هم به احترام وی صورت گرفته است.)

چیزی پس از گذشت یک‌صد سال، اولین کامپیوتر به معنای واقعی کلمه در سال ۱۹۴۳ توسط ارتش ایالات متحده طراحی شد. این ماشین که Electronic Numerical Integrator and Computer یا به اختصار ENIAC نامیده شد، از کابل ها و سوییچ های مختلفی تشکیل شده بود و برای دستور دادن به آن، برنامه نویس می بایست جای کابل ها و سوییچ ها را تغییر دهد (جالب است بدانیم که اولین برنامه نویسان این کامپیوتر همگی خانم بوده اند!) نکته ی اصلی اینجا است که کامپیوترهای آن موقع بسیار حجیم و گران بودند و کار کردن با آن ها واقعا تخصص نیاز داشت!

الگوریتم ها

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

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

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

پایان حلسه پنجم/