سلام خدمت همه دوستان عزیز و همراه های همیشگی وبسایت؛ بعد از مدتی در خدمت شما هستم تا راجع به مطلبی تخصصی یعنی توسعه نرم افزار صحبت کنیم. اگر عمری باشد در 30 جلسه با همدیگر اصول توسعه و پیاده سازی نرم افزارها را بررسی خواهیم کرد و طی یک پروژه عملی، پلاگین ساده ای برای نرم افزارهای مکس و مایا پیاده سازی خواهیم کرد. توضیح این نکته ضروری است که ما در این پروژه از شیوه کدنویسی، بصورت 3 لایه استفاده خواهیم کرد تا پلاگین ما متکی به یک Api خاص نباشد و شما بتوانید خروجی تمرین را برای هر نرم افزاری بهینه کنید. اما مطلب جاری به بررسی دنیای پر رمز و راز توسعه نرم افزار می پردازد و با هم با پیش نیازها و تاریخچه عجیب و شگرف دنیای نرم افزار آشنا میشویم؛ پس بدون حاشیه شروع میکنیم.
1. همه چیز از یک 0 و 1 شروع شد ؟
اگر بخواهیم به قدمت برنامه نویسی اشاره بکنیم، باید اعتراف کنیم که این شاخه از علوم حدود یک قرن از دنیای کامپیوترهای امروزی مسن تر است. اولین نمونه های عملی برنامه نویسی در ماشینهای بافندگی ثبت شده است؛ و اولین نامی هم که برمیخوریم جکارد برمی در فرانسه است که ماشینی تولید کرده بود با استفاده از پانچ کارتهایی مخصوص، نوع بافت را عوض میکرد و تنوعی قابل قبول در این ماشین ایجاد کرده بود. شیوه اجرا بافت در ماشین بصورت پشت سر هم بود و این تکنولوژی امکان بافتهای پیچیده به کارگران معمولی میداد. همزمان با پیشرفت ماشینهای خودکار، جنبش های مخالفی برای جلوگیری از پیشرفت این عرصه ایجاد شد که معتقد بودند ظهور این ماشینها یعنی بیکاری کارگران؛ اما این انتقادات از تحقیق و پژوهش دانشمندان جلوگیری نکرد و به نظر شخصی خودم نقطه عطف دنیای کامپیوتر با ارائه تئوری بول توسط George Boole در سال 1847 شکل گرفت. نکته کلیدی این تئوری اثبات ارتباط علم منطق با ریاضیات بود که دقیقا خلاف تصور پیشینیان که بر این باور بودند منطق بخشی از فلسفه است نه ریاضی بود !!! و این یعنی انقلاب.
اما یک نکته جالب اینجاست که تغییر این تفکر و استفاده از این منطق در علوم کامپیوتر حدود 100 سال به درازا انجامید ! اگر حدود 80 سال را بنا به اختصار فاکتور بگیریم به اوایل دهه 40 میلادی میرسیم که ماحصل پیشرفت علوم الکترونیک و مهندسی های نوین، زمینه ساز تولید اولین ماشینهای الکترونیکی که قادر به محاسبات ساده بودند شد. اگر تصور شما این است که برنامه نویسی این ماشین ها بصورت دستوری بوده سخت در اشتباهید ! در این ماشینها سوییچ ها و دستورات توسط دکمه ها و کابلهای برق انجام میگرفته و برای اجرای برنامه های ساده و کوتاه نیاز به ساعتها و شاید روزها تنظیمات بوده است !

ظهور پدرخوانده
پدرخوانده مورد نظر ما شخصیت کورلئونه فیلمی به همین نام نیست و منظور ما دقیقا جان وان نیومن میباشد که در سال 1945 اصول بنیادی و اساسی کامپیوترهای نوین را مطرح کرد و به همین دلیل بنام پدر علم نوین کامپیوتر شناخته میشود. اما این اصول چیست ؟
Shared-program technique
طبق این اصل سخت افزار کامپیوترها باید بسیار ساده باشند و نیازی نیست که برای هر برنامه به صورت دستی سیم کشی و تجهیز شوند. در عوض، دستورات نرم افزاری باید از ترکیب همان دستورات ساده سخت افزاری تشکیل شوند و یک دستور نرم افزار مرکب و پیچیده تر را بسازند. این اصل سخت افزارها را ساده و دستورات نرم افزاری را پیچیده می کرد.
Conditional control transfer
بر طبق این اصل که تاثیر عمیقی بر توسعه برنامه نویسی گذاشته است، برنامه کامپیوتری می تواند شامل بلاک های کوچکتری از دستورات بنام زیر روال (Subroutine) شود، که می توانند در هر جای برنامه اصلی جای گیرند. این بلاک ها می توانند هر چندبار که لازم است در هر کجای برنامه اصلی استفاده شوند. بخش مهم دیگری از این اصل، کنترل روند برنامه کامپیوتری توسط دستورات منطقی مانند IF…Then و حلقه هایی مانند FOR را امکانپذیر میکرد.
و این داستان ادامه دارد
اما هنوز همه چیز کامل نبود تا اینکه در سال 1948 یک پازل دیگر از علوم کامپیوتر با ارائه تئوری ارتباطات توسط شانن کامل شد. این تئوری اصول استفاده از منطق باینری (0 و 1) در محاسبات کامپیوتری را ارائه میکرد و دنیای صفر و یک ها (باینری) که اساس و پایه کامپیوترهای الکترونیکی امروزی هستند را شکل می داد. از اینجا بود که چگونگی و معماری