معرفي كامپيوتر، اينترنت و وب (مقدمه هر زبان برنامه نويسي)
به C++ خوش آمديد! ما خيلي سخت تلاش كردهايم تا كتابي به رشته تحرير در آوريم كه حاوي اطلاعات مفيدي بوده و سرگرم كننده نيز باشد و شما را وادار بهيادگيري كند. اصولازبانC++زباني است که اکثرمخاطبان آن برنامه نويسان با تجربه هستند، از اينرو سعي کردهايم تا اين کتاب براي افراد زير مناسب باشد:
|افرادي که تا حدي داراي تجربه برنامهنويسي بوده يا فاقد تجربه هستند.
|افرادي که داراي تجربه برنامهنويسي بوده و مايل هستند تا درک عميقتري نسبت به اين زبان پيدا کنند.
نقطه قوت اين كتاب وضوح و ترتيب خاص بيان انواع تكنيكهاي برنامهنويسي همانند برنامهنويسي ساختيافته، و شيگرا (OOP) است. هيچ برنامهنويسي، برنامهنويسي را بخوبي ياد نخواهد گرفت مگر آنكه از ابتدا در مسير صحيح قرار بگيرد. ما سعي كردهايم كه بطور واضح و خيلي سرراست به موضوعات نزديك شويم. اين كتاب حاوي مثالهاي فراواني است كه در يادگيري بسيار موثر واقع ميشوند. در اين کتاب خروجي تمام برنامهها آورده شده است. تمام برنامههاي معرفي شده در اين کتاب بر رويCDهمراه کتاب موجود مي باشند. فصلهاي اوليه در ارتباط با مفاهيم بنيادين کامپيوترها، برنامهنويسي کامپيوتر و زبان برنامهنويسيC++است.
عموم مردم در مورد اعمالي كه كامپيوترها انجام ميدهند آشنايي دارند. با استفاده از اين كتاب با دستوراتي آشنا خواهيد شد كه اعمال ويژهاي در يك موضوع خاص انجام ميدهند و كامپيوتر انجام اين دستورات را برعهده دارد. نرمافزار (دستوراتي كه بصورت كد نوشته شده و كامپيوتر آن دستورات را انجام داده و در مورد آنها تصميمگيري ميكند) كامپيوتر را كنترل ميكند (غالبا از آن بعنوان سختافزار ياد ميشود). C++يكي از ابزارهاي قدرتمند در توسعه نرمافزار است. در اين کتاب به معرفي اصول برنامهنويسي در زبان C++ استاندارد شده در ايالات متحده بر اساسANSI1]و استاندارد جهاني ISO2]مي پردازيم.
استفاده از كامپيوترها مستلزم سعي و كوشش زيادي است. در عصري كه هزينهها مرتباً در حال افزايش است كاهش هزينه سختافزار و نرمافزار كه بسرعت در حال توسعه است ميتواند جالب توجه باشد. كامپيوترهايي كه25 الي 30سال پيش فضاي زيادي از اطاقها را در بر ميگرفتند و هزينههاي آنها بالغ بر ميليونها دلار ميشد، امروزه بر روي يك سطح تراشه سيليكوني كه به اندازه يك ناخن دست است و فقط چند دلار قيمت دارد جا گرفتهاند. سيليكون يكي از فراوانترين فلزات موجود بر روي زمين است و عموماً جزء اجزاي تركيبي ماسه يا شن ميباشد. تكنولوژي تراشه سيليكوني باعث ساخته شدن كامپيوترهاي مقرون به صرفه شده و بيش از 200 ميليون كامپيوتر موجود در سرتاسر جهان از اين تكنولوژي استفاده ميكنند، كه مورد استفاده عمومي در زمينههاي تجاري، صنعتي، دولتي و امور روزمره ميباشند.
در طول ساليان گذشته، بسياري از برنامهنويسان شروع به يادگيري روشي بنام برنامهنويسي ساختيافته کردند. دراين کتاب به آموزش برنامهنويسي ساختيافته و همچنين مبحث جالب برنامهنويسي شيگرا(Object-Oriented) ميپردازيم. چرا به آموزش هر دو روش ميپردازيم؟ برنامهنويسي شيگرا کليد برنامهنويسي دهه بعد است. در اين کتاب شيهاي متعددي ايجاد و با آنها کار خواهيد کرد. در ضمن مطالعه ساختار داخلي شيها متوجه خواهيد شد که در ايجاد اين شيها از تکنيکهايبرنامهنويسي ساختيافته استفاده شده است. همچنين دستکاري منطقي شيها در بهترين حالت با برنامهنويسي ساختيافته صورت ميگيرد.
كامپيوتر وسيلهاي است كه توانايي انجام محاسبات و تصميمگيريهاي منطقي با سرعت ميليونها و حتي بيليونها برابر سريعتر از يك انسان را دارد. براي مثال امروزه بيشتر كامپيوترهاي شخصي ميتوانند صدها ميليون دستور در هر ثانيه انجام دهند. يك ماشين حساب بايستي تمام عمر كار كند تا بتواند همان عدد محاسبه شده توسط يك كامپيوتر شخصي را كه در عرض يك ثانيه انجام داده به دست بياورد. امروزه سوپر كامپيوترها توانايي انجام صدها بيليون دستور در هر ثانيه را دارند در حاليكه صدها هزار نفر با استفاده از ماشين حساب اين عمل را در طول يك سال ميتوانند انجام دهند. كامپيوترهايي كه توانايي انجام تريليونها دستور در هر ثانيه دارند در آزمايشگاههاي تحقيقاتي مورد استفاده ميباشند. كامپيوترها پردازش دادهها را تحت كنترل تعدادي از دستورات كه برنامههاي كامپيوتري ناميده ميشوند، انجام ميدهند و اين برنامهها توسط اشخاصي بنام برنامهنويس نوشته ميشوند.
انواع متفاوتي از قطعات همانند صفحه كليد، صفحه نمايش، ديسكها، حافظه و واحدهاي پردازش، كه يك سيستم كامپيوتري را تشكيل ميدهند بنام سختافزار شناخته ميشوند. برنامههاي كامپيوترئي كه بتوانند بر روي يك كامپيوتر اجرا شوند بنام نرمافزار شناخته ميشوند. هزينههاي سختافزاري در سالهاي اخير كاهش يافته و كامپيوترهاي شخصي بعنوان يك ابزار مناسب در دسترس قرار گرفتهاند، ولي متأسفانه هزينههاي توسعه نرمافزار افزايش يافته و برنامهنويسان برنامههاي كاربردي قويتر و پيچيدهتري ارائه ميكنند بدون اينكه قادر باشند تكنولوژي توسعه نرمافزار را بهبود بخشند. در اين كتاب سعي شده است تا بتوانيد روشهاي توسعه نرمافزار را با استفاده از كاهش هزينههاي نرمافزار از طريق به كارگيري روشهاي برنامهنويسي ساختيافته از بالا به پايين (top-down)، برنامههاي مبتني بر شي، برنامهنويسي شيگرا، طراحي شيگرا فرا بگيريد.
3-1 سازماندهي كامپيوتر
صرفنظر از تفاوتهاي فيزيكي، هر كامپيوتر به شش قسمت منطقي تقسيم ميشود كه عبارتند از:
1- واحد ورودي (Input unit):
اين قسمت "واحد دريافت" براي بدست آوردن اطلاعات (داده و برنامه كامپيوتري) از طريق انواع وسايل ورودي و قرار دادن اين اطلاعات در دسترس ساير واحدها براي پردازش اطلاعات ميباشد. بيشتر اطلاعات ورودي از طريق صفحه كليد و ماوس دريافت ميشوند. در آينده ممكن است حجم زيادي از اطلاعات بفرم ويدئوي دريافت شوند.
2- واحد خروجي (Output unit):
اين قسمت وظيفه "حمل" را برعهده دارد. اين واحد اطلاعات پردازش شده توسط كامپيوتر را دريافت كرده و به انواع وسايل خروجي منتقل ميكند تا در خارج از كامپيوتر مورد استفاده قرار گيرد. بيشتر اطلاعات خروجي بر روي صفحات نمايش و چاپ بر روي كاغذ منتقل ميشوند يا از اطلاعات خروجي براي كنترل ساير دستگاهها استفاده ميشود.
3- واحد حافظه (Memory unit):
اين قسمت "انبار" كامپيوتر محسوب ميشود و داراي سرعت دسترسي و ظرفيت نسبتاً بالايي است. اطلاعات وارد شده از واحد ورودي در اين قسمت نگهداري ميشوند. همچنين واحد حافظه ميتواند اطلاعات پردازش شده را در خود نگهداري كند، تا زمانيكه اطلاعات بتوانند بر روي دستگاه خروجي (به وسيله واحد خروجي) قرار گيرند. واحد حافظه اغلب به عنوان حافظه يا حافظه اوليه ناميده ميشود.
4- واحد محاسبه و منطق (ALU):
اين قسمت "واحد ساخت" كامپيوتر است. اين بخش مسئوليت انجام اعمال محاسباتي همانند جمع، تفريق، ضرب و تقسيم را برعهده دارد. همچنين شامل مكانيزمهاي تصميمگيري ميباشد. بطور مثال به كامپيوتر اين امكان را ميدهد كه محتويات دو محل متفاوت از حافظه را باهم مقايسه كرده و تعيين كند كه آيا برابرند يا خير.
5- واحد پردازش مركزي (CPU):
اين قسمت واحد "اجرائي" كامپيوتر است. اين قسمت وظيفه هماهنگ كردن كامپيوتر و مسئوليت نظارت بر نحوه انجام عمليات توسط ساير قسمتها را برعهده دارد. CPU به واحد ورودي اعلان ميكند كه در چه زماني ميبايستي اطلاعات به واحد حافظه وارد شده و بهALU اعلان ميكند در چه زماني اطلاعات از حافظه برداشته و بكار گرفته شوند و به واحد خروجي اعلان ميكند كه در چه زماني اطلاعات از حافظه به واحد خروجي مشخص شده ارسال شوند.
6- واحد ذخيرهسازي ثانويه:
اين قسمت "انبار" كامپيوتر است كه داراي طول عمر زياد و ظرفيت بالا ميباشد. برنامهها يا دادهها تا زمانيكه بر روي وسايل ذخيرهسازي ثانويه (همانند ديسكها) ذخيره نشوند، نميتوانند بدرستي بكار گرفته شوند. اطلاعات قرار گرفته بر روي واحد ذخيرهسازي ثانويه بدفعات زياد نسبت به حافظه ميتوانند مورد دستيابي قرار گيرند. هزينه وسايل ذخيرهسازي ثانويه نسبت به حافظه اوليه بسيار كمتر است.
4-1 تكامل سيستم عامل
زماني كامپيوترها فقط ميتوانستند يك عمل يا يك وظيفه را در هر زمان انجام دهند اينحالت در كامپيوترها به عنوان پردازش دستهاي تككاربره (single user batch processing) معروف است. كامپيوتر در هر زمان توانايي اجراي يك برنامه در زمان پردازش را دارد. در اين سيستمها كاربران معمولاً كارهايي كه ميخواستند انجام دهند بر روي كارت پانچ قرار ميدادند و به كامپيوتر مركزي ارائه ميكردند. كاربران اغلب ساعتها و حتي روزها منتظر جواب ميشد. نرمافزارهاي سيستم كه معروف به سيستم عامل هستند به منظور استفاده آسانتر از كامپيوترها توسعه پيدا كردند. سيستمهاي عامل قديمي، مديريت انتقالي بين وظايف محوله را انجام ميدادند. هنگامي كه كامپيوترها قويتر و كاراتر شدند، سيستمهاي تك كاربره در استفاده از منابع سيستم ديگر كارايي قابل قبولي نداشتند. براي مثال، بايستي تعداد متنوعي از وظايف با استفاده از اشتراك منابع براي استفاده بهينه از كامپيوتر مورد استفاده قرار گيرد كه بنامMultiprogrammingناميده ميشود. Multiprogramming چندين عمليات را بصورت همزمان در يك كامپيوتر انجام ميدهد (اين قابليت با عنوانMultiprocessing نيز شناخته ميشود). كامپيوتر با استفاده از اشتراك منابع در ميان انواع وظايف به فعاليت خود ادامه ميدهد. اما هنوز هم در اين سيستمهاي عامل، بايستي كاربران ساعتها در انتظار باقي ميماندند.
در دهه 1960 چندين گروه از صنايع و دانشگاهها پيش گام توسعه سيستمهاي عامل اشتراك زماني (Timesharing) شدند. اشتراك زماني يك حالت خاص ازMultiprogrammingميباشد، كه در آن كاربران از طريق يك ترمينال كه نوعاً يك صفحه كليد و صفحه نمايش ميباشد به كامپيوتر دسترسي داشتند. در نمونه واقعي كامپيوتري كه از سيستم اشتراك زماني استفاده ميكند ممكن است يك دوجين يا حتي صدها كاربر بصورت مشترك از كامپيوتر استفاده كنند. كامپيوتر نميتواند به درخواستهاي همزمان كاربران واكنش نشان دهد. در اينحالت كامپيوتر يك قسمت از كار يك كاربر را انجام داده و سپس سرويس را به كاربر بعدي انتقال ميدهد. كامپيوتر اين عمل را بسيار سريع انجام ميدهد و ممكن است به چندين كاربر در هر ثانيه سرويس ارائه كند. در اينحالت كاربران گمان ميكنند كه برنامهها بصورت همزمان اجرا ميشوند. مزيت اشتراك زماني اين است كه به درخواست كاربر سريعاً واكنش نشان داده ميشود.
5-1 محاسبات شخصي، محاسبات توزيع شده و سرويس دهندهها/ سرويس گيرندهها
در سال 1977، كامپيوترهاي اپل (Apple)، نماد محاسبات شخصي بودند. كامپيوترها به تدريج ارزان شدند تا مردم آنها را خريداري كرده و در كارهاي شخصي يا تجاري مورد استفاده قرار دهند. در سال 1981 شركت IBM كه بزرگترين فروشنده كامپيوتر در جهان است، كامپيوترهاي شخصيIBMرا به بازار معرفي كرد. بسرعت محاسبات شخصي در تجارت، صنايع و مراكز دولتي وارد شد. اما اين كامپيوترها هنوز هم بفرم واحدهاي منفرد عمل ميكردند. كاربران كارهاي خود را بر روي سيستم خود انجام ميدادند و سپس نتايج را بر روي ديسك منتقل ميكردند و آنرا به اشتراك ميگذاشتند. با اتصال چندين سيستم به يكديگر شبكه تشكيل داده شد. شبكههاي محلي (LAN) از اين نوع سازماندهي ميباشند. اين فرآيند سبب هدايت بسوي محاسبات توزيع شده در سازماندهي محاسباتي گرديد. كامپيوترهاي شخصي بقدر كافي قدرت پيدا كرده بودند كه ميتوانستند محاسبات جداگانه چندين كاربر را انجام داده و وظايف ارتباطي و عبور اطلاعات بصورت الكترونيكي را فراهم نمايند.
امروزه كامپيوترهاي شخصي نسبت به كامپيوترهاي دهه قبل چندين ميليون برابر، قدرت بيشتر پيدا كردهاند. ماشينهاي قدرتمند روميزي كه ايستگاه كاري (Workstation) ناميده ميشوند، توانايي بسيار زيادي در ارائه سرويس به كاربران با نيازهاي متفاوت دارند.
اطلاعاتي كه حالت اشتراكي دارند در كامپيوترهاي شبكه موسوم به سرويسدهنده (Server) قرار ميگيرند. اين كامپيوترها اطلاعات و برنامهها را در خود نگهداري ميكنند كه ممكن است توسط سرويسگيرندهها (Clients) كه در سرتاسر جهان توزيع شدهاند مورد استفاده قرار گيرند، از اينرو عبارت سرويسدهنده/سرويسگيرنده (Server/Client) وارد صحنه گرديد. زبانهاي C و C++ به عنوان زبانهايبرنامهنويسي، براي نوشتن نرمافزار سيستم عامل براي كامپيوترهاي شبكه و كاربردهاي توزيع شده Server/Client انتخاب شدهاند، امروزه سيستمهاي عامل پرطرفدار همانندUNIX، Linux، Solaris، MacOs، Windows 2000 و Windows XP داراي قابليتهاي فراواني هستند كه در مورد آنها صحبت خواهيم كرد.
6-1 تاريخچه اينترنت و www
در اواخر دهه 1960، پورفسورH.M.Deitelاز دانشجويان فارغالتحصيل دانشگاه MITبود. پروفسورDeitel بر روي پروژهMac3دانشگاهMIT كه سبب پيدايشARPA4شده كاركرده است. ARPA ميزبان كنفرانسي شد كه ميهمانان آن مجموعهاي از پديد آورندگانARPA در دانشگاه Illinoisبودند و در آن به بحث و بررسي مباحث مختلف پرداخته شد. در اين كنفرانس طرح شبكهكردن، كامپيوترهاي اصليدانشگاههاي سهيم در پروژهARPAمطرح گرديد. كامپيوترهاي متصل شده با خطوط ارتباطي با سرعت كمتر56 kbps كار ميكردند (1 kbpsمعادل، 1024 بيت در هر ثانيه است)، در آن زمان بيشتر مردم (كساني كهبه شبكه دسترسي داشتند) از طريق خطوط تلفن با سرعت 110 بيت در هر ثانيه به كامپيوترها متصل ميشدند. در اين كنفرانس در مورد مباحث گوناگوني صحبت شد و سرانجام ARPA به ARPAnet تغيير نام داد كه پدر بزرگ اينترنت است.
گروههاي مختلف بر روي طرح اوليه به روشهاي گوناگوني كار كردند. اگر چه ARPAnet امكان تحقيق به محققان خود را بر روي كامپيوترهاي شبكه ميداد، اما اصليترين مزيت آن بهبود قابليت براي ارتباط آسان و سريع بود كه امروزه بنام پست الكترونيكي (e.mial)شناخته ميشود. اين قابليت امروزه نيز در اينترنت در زمينه پست الكترونيكي و انتقال فايل در ميان ميليونها نفر در سرتاسر جهان بكار گرفته ميشود. شبكه طراحي شدة در آن زمان فاقد يك كنترل مركزي بود. به اين دليل كه اگر بخشي از شبكه از مدار خارج ميشد، مابقي بخشهاي شبكه هنوز هم قادر به ارسال و دريافت بستههاي اطلاعاتي از طريق مسيرهاي جايگزين بودند.
پروتكل (مجموعه قوانين) برقراري ارتباط بر روي شبكهARPAnetامروزه بنام TCP (Transmission Control Protocol)شناخته ميشود. اين پروتكل سبب ميشود كه پيغامها با دقت و به درستي از سوي فرستنده به گيرنده ارسال شوند. براي تشخيص بخشهاي مقابل، شبكه ARPAnet موجب توسعه پروتكل اينترنت ياIP (Internet Protocol)شد كه بدنبال آن واقعيت "شبكهاي از شبكهها" تحقق پيدا كرد و معماري جاري در اينترنت شد. مجموعهاي از اين پروتكلها بعنوانTCP/IPشناخته ميشود.
وب گسترده جهاني (World Wide Web) به كاربران كامپيوتر امكان ميدهد تا مستندات مبتني بر مولتي مديا را يافته و به آنها نگاه كنند (مستنداتي متشكل از متن، گرافيك، انيميشن، صوت يا ويدئو). در سال 1989، پورفسورTim Berners-Leeاز گروهCERN (سازمان اروپا در زمينه تحقيقات هستهاي) شروع به توسعه تكنولوژي، در زمينه به اشتراك گذاري اطلاعات از طريق فوق لينكها در مستندات متني كرد. اينكار بر مبناي زبان جديدي بنامSGML صورت گرفت (استانداردي براي تبادل اطلاعات)، كه Berners-Leeآنرا(HyperText Markup Language)HTML5ناميد. البته Lee پروتكلهاي ارتباطي براي سيستم اطلاعاتي فوق متن جديد خود نوشت كه او از آن بعنوانWorld Wide Web نام برد. امروزه اينترنت وWWWاز بخشهاي اصلي و ضروري در زندگي انسانها شدهاند. در گذشته، بيشتر برنامههاي كامپيوتري روي يك سيستم منفرد به اجرا در ميآمدند (كامپيوترهاي كه به كامپيوتر ديگري متصل نبودند). امروزه برنامههاي كامپيوتري ميتوانند براي برقراري ارتباط مابين ميليونها كامپيوتر نوشته شوند.
American Natiomnal Standards Institute
International Organization for Standardization
- هم اكنون آزمايشگاه علوم كامپيوتر و منزلگاه كنسرسيوم World Wide Web است.
- Advanced Research Project Agency of Department
[5] زبان نشانهگذاري فوق متن
پاسخ به:معرفي كامپيوتر، اينترنت و وب (مقدمه هر زبان برنامه نويسي)