جلسه اول: علم کامپیوتر چیست؟
دائرةالمعارف بریتانیکا علم کامپیوتر را چنین تعریف میکند
Computer Science: the study of computers, including their design (architecture) and their uses for computations, data processing, and systems control.
دانشنامه اینترنتی ویکیپدیا این تعریف را میدهد:
Computer science, or computing science, is the study of the theoretical foundations of information and computation and their implementation and application in computer systems
در دهه ???? اصطلاح علم کامپیوتر یا علوم کامپیوتر در فارسی در برابر computer science یا computer sciences رایج شد. این اصطلاحات انگلیسی نام رشتهای تحصیلی در برخی دانشگاههای کشورهای انگلیسی زبان بود. همین رشته را در دیگر کشورهای اروپائی انفورماتیک مینامیدند. این واژه از دو جزء انفورماسیون (اطلاعات) و آتوماتیک (خودکار) درست شد که به معنی پردازش خودکار اطلاعات بود. اگر چه واژه informatics درزبان انگلیسی نیز معنائی نزدیک به علم کامپیوتر ولی متفاوت با آن پیدا کرده و به هرحال چندان رایج نیست. لزوم نامگذاری و عرضه مطالب مختلفی که برای طراحی سیستمهای کامپیوتری سختافزاری و نرمافزاری لازم بود با رشد و گسترش کامپیوترها در دهه ?? و ?? میلادی احساس شده بود و در دهه ?? نام کامپیوتر ساینس به عنوان رشته دانشگاهی رواج یافت و به ایران هم رسید.
چون تلاشها برای ساختن دستگاهی که محاسبات را خودکار انجام بدهد عمدتا به دست ریاضیدانها و مهندسان برق انجام میگرفت، درسهائی که برای این رشته نو پا تعیین میشد از دو رشته ریاضی و برق میآمد. به تدریج درسهای ویژه این رشته نیز شکل گرفت. فن برنامهسازی نیز زمینه جدیدی بود و نیاز به آموزش داشت. بنابراین رشتهای جدید ظهور کرد و احتیاج به نام داشت و بالاخره نام علم کامپیوتر بر آن ماند. در سالهای اخیرا اصطلاح رایانش رایج شده است و لی هنوز در فارسی به علم کامپیوتر علم رایانش نمیگویند. (گویا رایانش را از رایاندن یا رایانیدن که ظاهرا در فارسی قدیم سابقهای داشته است گرفتهاند و رایانه به معنای کامپیوتر را هم از آن ساختهاند)
در مورد نام مناسب برای این رشته هنوز بحث ادامه دارد و دانشگاه های معتبر جهان نامهای مختلفی برای دانشکدههای این رشته انتخاب کردهاند. سه گفتاورد (نقل به معنی) از سه تن از بزرگان این رشته را نقل میکنم:
ادسخر دایکسترا دانشمند هلندی علم کامپیوتر: علم کامپیوتر همانقدر به کامپیوتر مربوط است که جراحی به چاقو یا ستارهشناسی به تلسکوپ
دانلد کنوت: علم کامپیوتر اساسا علم الگوریتمها است و باید به آن الگوریتمیکس (algorithmics) یا علم محاسبات (computing science) گفت. اگر این حرف کنوت را بپذیریم نام فارسی رشته ما میشود علم رایانش.
فردریک بروکس: علم کامپیوتر علم نیست. تمام رشتههائی که در نام خود کلمه علم دارند علم نیستند. علوم تربیتی، علوم اجتماعی، علوم نظامی... اینها علم نیستند. فیزیک و شیمی علم هستند.
علم
واژه علم در فارسی اقلا دو کاربرد دارد: یکی به معنی دانسته و مجموعهای از دانستهها است. «علم حضور معلوم است نزد عالم.» دیگر به معنی کوشش سازمان یافته و منظم برای شناخت جهان است. به این معنی علم کامپیوتر علم نیست. ولی مانند هر رشته علمی دیگری برخوردی علمی به پدیدهها دارد.
ریاضیات
چون کار کامپیوتر اساسا اجرای الگوریتمها است کار طراحی و ساخت کامپیوتر و برنامههای آن بسیار با منطق و ریاضی مربوط بود و هست. بسیاری از کامپیوتردانان ریاضیدان بودند.
کامپیوتر
کامپیوتر ماشین محاسبهگر قابل برنامهریزی است. استفاده از ابزارهائی برای ساده کردن کار محاسبات گوناگون پیشینه زیادی دارد و در بخش تاریخ کامپیوتر به آن خواهیم پرداخت ولی رشد کامپیوتر رقمی در اواخر دهه ?? میلادی مفهوم و کلمه کامپیوتر را به آن صورت که فعلا میشناسیم و ارد زبان کرد.
علم کامپیوتر؟
تعریف من: بررسی علمی امور مربوط به طراحی و ساخت و استفاده از سیستمهای کامپیوتری
رشتههای دیگری که با نام مهندسی کامپیوتر یا فنآوری اطلاعات یا مهندسی نرمافزار مطرح هستند از یک نظر همه جزئی از رشته وسیع علم کامپیوترند. البته باید توجه کرد که این رابطه جزء و کل مانند مثلا مهندسی مکانیک است که از دید کلی بخشی از علم فیزیک است.
جلسه دوم: محاسبات و علم محاسبه
حساب و محاسبه سابقهای قدیم دارد و کهنترین قسمت ریاضیات است. ارشمیدس، اقلیدس و دیگران روشهای محاسباتی به نام خود دارند. خوارزمی روشهای محاسباتی مهمی را برای حل معادلات در کتاب خود «الجبر والمقابله» نوشت که سالها مورد استفاده بود. ترجمه کتاب او به لاتین نام او را به غرب برد و در زبانهای غربی الگوریتم به معنای روش محاسبه جا افتاد.
جلسه سوم: تاریخچه کامپیوتر و برنامهسازی
تاریخ کامپیوتر با تاریخ ریاضی و فن محاسبه نقاط اشتراک زیادی دارد. از وقتی که انسان با شمارش آشنا شد تاریخ علم کامپیوتر (یا علم رایانش) هم شروع شد. ابزارهای کمک به محاسبه مانند چوبخط و تسبیح از اجداد دور کامپیوتر هستند. اختراع انواع خطکش محاسبه و بعد کوششهائی که در ساختن ماشین حساب خودکار انجام گرفت به ساختن ماشینهای حساب برنامهپذیر و نهایتا کامپیوتر منجر شد. الگوریتمهای باستانی در دست است و مهمترین کتاب الگوریتمها در سدههای میانه کتاب خوارزمی بود. نام خوارزمی به صورت لاتین الگوریتم در جهان باقی مانده است. بلز پاسکال نوعی ماشین حساب ساخت. چارلز بابیج «ماشین تفاضلی» را طرح کرد که برنامهپذیر بود. ماشین تفاضلی بابیج را ایدا آگوستا، کنتس لاولیس برنامه سازی میکرد. در آستانه جنگ جهانی دوم تلاش برای ساختن کامپیوتر برنامهپذیر در آلمان و آمریکا جریان داشت. کنراد زوسه اولین کامپیوتر الکترونیک برنامهپذیر را ساخت. کسانی مانند آلن تورینگ و جان فون نویمان مبانی نظری کار کامپیوتر را بناگذاردند. با ظهور انیاک و بعد یونیواک و آمدن شرکت آیبیام به عرصه تولید کامپیوتر صنعت کامپیوتر پا گرفت و همچنان از موتورهای اقتصادی جهان است.
جلسه چهارم: برنامهسازی
میگویند نخستین برنامهساز کامپیوتر ایدا آگوستا، کنتس لاولیس (دختر لرد بایرون) بود. او با چارلز ببیج کار میکرد و برای ماشین تفاضلی او برنامه میساخت.
برنامهسازی برای ساختن الگوریتمها به زبان ماشین است. در آغاز که چنین بود. بعدها با ظهور زبانهای سطح بالا لزوم آشنائی به زبان ماشین کمرنگتر شد و برنامهسازان بدون نیاز به آگاهی از ساز و کار درونی ماشین بیشتر توانستند به الگوریتم بپردازند.
الگوریتم
الگوریتم روش حل مسئله است. مانند دستور آشپزی. ابتدا گوشت را کمی با پیاز سرخ میکنیم بعد نمک و فلفل و زردچوبه میزنیم بعد آب میریزیم و جوش میآوریم و رب اضافه میکنیم میشود آبگوشت. یا نشانی دادن. از کسی نشانی جایی را میپرسیم. میگوید مستقیم برو. اولین چهارراه دست چپ. بعد اولین کوچه دست راست. شماره ?? طبقه سوم. این الگوریتم رسیدن از مبدا شما به مقصد شماست.
تحلیل الگوریتمها
برای آبگوشت درست کردن چند روش هست. برای رسیدن به مقصد از مبدا هم همینطور. برای محاسبه هم چند روش هست. این را که کدام روش سریعتر است یا حافظه کمتری لازم دارد میتوان با تحلیل و بررسی الگوریتم تعیین کرد. تحلیل الگوریتمها کارش این است. کنوت میگوید این اساس علم کامپیوتر است و نام علم الگوریتم (algorithmics) را ترجیح میدهد.
زبانهای برنامهسازی
در آغاز زبان برنامسازی همان زبان ماشین بود. زبان ماشین مجموعه دستورالعملهائی است که به ماشین میدهند تا مثلا جمع یا ضرب یا مقایسه را انجام دهد. طبعا زبان هر ماشین با ماشین دیگری که ساختمان و کارکرد دیگری دارد متفاوت است و زبان متفاوتی دارد. زبانهای سطح بالا به همین منظور ساخته شد که برنامهسازی مستقل از نوع ماشین باشد. زبانهای مشهور سطح بالای اولیه فرترن و کوبول بودند. با گسترش کاربرد کامپیوتر و زیاد شدن برنامهها و نیز پیچیدهتر شدن و بزرگ شدن برنامهها، اشکالات برنامه نویسی بیضابطه و درهم و برهم آشکار شد. برنامه نویسی ساختیافته مطرح شد. زبانهای سطح بالا مانند الگول و پاسکال که بنا به تعریف ساختیافته بودند ابداع شد. در دهه ?? اندیشههای مربوط به برنامهسازی شیءگرا شکل گرفت و در دهه ?? و ?? کاملا جا افتاد و رایج شد.
جلسه پنجم: هوش مصنوعی
از همان اوئل پیدایش کامپیوتر به آن مغز الکترونیک میگفتند. یعنی آرزوی اینکه کامپیوتر جای انسان را بگیرد یا در بعضی کارها مانند او عمل کند از همان ابتدا وجود داشت. از همان آغاز هم دو نظر شکل گرفت: عدهای معتقد بودند که مغز انسان را میتوان مدلسازی کرد و ماشینی بر اساس آن مدل ساخت که عین مغز انسان عمل کند. دیگران میگفتند که نمیشود. تورینگ آزمون معروف خود را مطرح کرد که میگوید اگر ماشینی در اتاقی باشد و شخصی در اتاق دیگر و با سوال و جواب با ماشین نتواند قطعا بگوید که در اتاق دیگر ماشینی به او جواب میدهد یا انسانی، آنگاه آن ماشین هوشمند است. در کوشش برای افزودن هوش به ماشین دو راه متصور بود: سعی در ساختن ماشینی که سازوکار مغز را تقلید کند و سعی در ساختن ماشینی که معادل مغز عمل کند، فارغ از سازوکارش.
سیستمهای خبره
هدف از سیستمهای خبره (expert systems) ایجاد سیستمهای کامپیوتری است که مانند کارشناس در رشتهای معین صاحب تخصص باشند. این سیستمها بکار کارشناسان میآید و در مواردی مانند مشاور عمل میکند. در این سیستمها مجموعهای از قاعدهها و بسیاری اطلاعات در رشته مورد نظر قرار دارد و سیستم اطلاعات را بر اساس قاعدهها عرصه میکند.
ترجمه ماشینی
هدف ترجمه ماشینی برگرداندن متنی از زبان مبدا به زبان مقصد است. سیستمهای زیادی برای این منظور درست شده ولی بخاطر ابهام زبان طبیعی و مشکلات دیگر حاصل کار آنها به بازبینی انسان نیاز دارد.
تشخیص الگوها
برنامههای تشخیص الگو توانایی تشخیص الگوها را در زمینههای مختلف دارند. تشخیص متن دستنوشته و بیرون آوردن و مشخص کردن تصویری با خصوصیات مطلوب از میان تصویرهای مختلف (مثلا تشخیص تصویر یک نفر در میان میلیونها تصویر) از کاربردهای رشته تشخیص الگو است.
شطرنج
شطرنج کامپیوتری از نخستین زمینههای فعالیت در هوش مصنوعی بود هرچند که برنامههای شطرنج کامپیوتری که کاسپاروف را هم شکست دادهاند بر اساس قدرت زیاد محاسباتی این کار را میکنند و بسیاری این کار را نشانه هوش کامپیوتری نمیدانند.
|