
آشنایی با چگونگی پیدایش و بلوغ شی گرایی خالی از لطف نیست. دیدگاه عمیق و اصیلی که پیوندی معنایی میان حیات سلولی و برنامه نویسی رایانه ای بوجود آورد .
در اوایل دهه ۱۹۷۰میلادی آلن کی (Alan Kay) بدنبال راهی برای ساده سازی برنامه نویسی بود که موفق به ابدا شی گرایی گردید. تاثیر کشف او اثر عمیقی بر دانش برنامه سازی گذاشت، بطوری که از اوایل دهه ۱۹۹۰ شی گرایی به عنوان مهمرین بستر برنامه سازی درآمد. وی از پیدایش شی گرایی چنین یاد می کند: “آنچه در ذهنم جرقه زد، مشابهت عمل در سلولهای زیستی بود .

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

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

ما در عصري زندگي مي کنيم که جامعه شناسان آن را عصر انقلاب کامپيوتر نام نهاده اند و مانند هر انقلاب واقعي ديگر، انقلابي است گسترده و فراگير و تأثير پايداري برجامعه خواهد داشت.
اين انقلاب در اقتصاد امروز و نظم جامعه، به همان ميزان انقلاب صنعتي در قرن 19 تأثير دارداين تحولات قادر است الگوي فکري و فرم زندگي هر فرد را تغيير دهد.انقلاب کامپيوتر توان ذهني ما را گسترش مي دهد.عملکرد اولية برنامه نويسي هوش مصنوعي (AI) ايجاد ساختار کنترلي مورد لزوم براي محاسبه سمبوليک است خصوصيات اين ساختارها به مقدار زيادي موجب تشخيص خصوصياتي مي شود که يک زبان کاربردي مي بايستي فراهم کند.
در اين مقدمه به يک سري خصوصيات مورد نظر براي زبان برنامه نويسي سمبوليک مي پردازيم و زبانهاي برنامه نويسي LISP و PROLOG را معرفي خواهيم کرد.

UML شامل تعدادي عنصر گرافيكي است كه از تركيب آنها نمودارهاي UML شكل مي گيرند . هدف استفاده از نمودارهاي مختلف در UML ، ارائه ديدگاه هاي گوناگون از سيستم است. همانطور كه مهندسين عمران جهت ساختن يك ساختمان پلانهاي مختلفي از ساختمان تهيه مي كنند ، ما با استفاده از نمودارهاي UML نماهاي مختلفي از نرم افزار مورد نظر را تهيه مي كنيم.
نكته اي كه بايد حتما به آن توجه كنيد اين است كه : مدل UML آنچه كه يك سيستم بايد انجام دهد را توضيح مي دهد، ولي چيزي درباره نحوه پياده سازي سيستم نمي گويد.
با توجه به رشد نرم افزارهاي پشتيباني كننده UML امروزه با استفاده از نرم افزارهايي مانند Visio ، Enterprise Architecture و rational rose شما مي توانيد بعد از كشيدن نمودارهاي UML مستقيما نمودارهاي خود را به بانك اطلاعاتي و كد تبديل كنيد (البته اين نرم افزارها ساختار كد شما را برايتان توليد مي كنند!) اين نرم افزارها همچنين كد برنامه شما را گرفته و نمودارهاي UML برنامه را توليد مي كنند. پس از آشنايي با مفاهيم شيء گرايي، در اينجا زبان مدلسازي UML را معرفي کرده و خواهيم ديد چگونه اين زبان مفاهيم شيء گرايي را پشتيباني مي كند.

همانطور كه ميدانيم براي آنكه يك برنامه نوشته شده به زبانهاي سطح بالا، در رايانه قابل اجرا باشند بايد به زبان ماشين ترجمه شوند كه اين كار توسط دو دسته از نرمافزارها قابل انجام است. به يك دسته از آنها مفسر يا Interpreter گفته ميشود و دسته ديگر مترجم ياCompiler نام دارند.
در ادامه قصد داريم به طريقه كاركرد يك كامپايلر بپردازيم و آن را با نگاهي جزئيتر بررسي كنيم. آشنايي با طرز كار كامپايلرها و مفسرها و درك مفاهيم موجود در آنها به برنامهنويس كمك ميكند تا برنامههاي بهتر و بهينهاي بنويسد.
يافتن خطا
بخش مهمي از فرآيند ترجمه مربوط به يافتن خطا در برنامه و اعلام آن به برنامهنويس است. در يك برنامه انواع مختلفي خطا ممكن است وجود داشته باشد كه بخشي از آنها توسط كامپايلر قابل تشخيص است و بخش ديگر تنها با تست و آزمون يافت ميشود و بايد توسط برنامهنويس رفع شود.

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