نگاهی به روند تکاملی زبانهای برنامهنویسی و تفاوت آنها با هوش مصنوعی
دو مطلب مهم ماند؛ یکی اینکه روند تکامل این برنامهها به چه صورت بوده. راجع به زبان ماشین عرض کردم. خود این زبانهای سطح بالا هم یک روالی داشته. اگر توضیح مختصری در مورد این روال بدهم، ذهن شما مدام نزدیک میشود که چطور است که پایه میتواند کارهایی انجام بدهد که شبیه هوشمندی است. اصلاً کسانی که به اینجا رفتهاند، مدام میگویند ذهن ما چیزی جز همین محاسبهگری نیست؛ خب محاسبهگری و منطق را پیاده کردهاند. این یک مطلب؛ روال تکاملی زبانها از روالنویسی تا شیءنویسی.
شاگرد: روالنویسی؟
استاد: بله. ابتدا که کدهای برنامهنویسی را مینوشتند، کلمه به کلمه و سطر به سطر دستور میداد که به هر سطر، «Statement» میگفتند. اینطور دستور میداد؛ مثل کسی که وقتی به او میگویند کاری را بکن؛ میگوید تو کاری نداشته باش که من میخواهم مثلاً غذا بپزم یا نپزم، بلکه میگوید دستت را بالا بیاور و این شیر را باز کن؛ این یک روال بود. بعد، برنامههای ساختیافته آمد. بعد از ساختیافته هم شیءگرا آمد. خود شما در اینترنت مراجعه کنید؛ مفصل منابع هست. الآن در زمان ما از معلومات عمومی هم عمومیتر شده.
نکته دیگر، تفاوت این زبانها است با چیزی که شما از هوش مصنوعی انتظار دارید. این هم نکته مهمی است. یعنی شما از زبانهای سطح بالا -چه ساختیافته و چه شیءگرا- انتظار هوش مصنوعی ندارید؛ هوش مصنوعی یک چیز اضافهای دارد. صرف شیءگرائی برای شما هوش نمیآورد؛ شیءگرائی برای خودش یک چیزی است که تسهیل امر میآورد، اما اضافه بر آن، شما در هوش مصنوعی چیزی را انتظار دارید. آن چیست؟ دو-سه امر است. در ذهنم هست که اینها را در فضای اعتباریات، مکرر برای شما گفتهام، اما در اینجا هم هست. آنها میگویند تعریف هدف، کشف قاعده و بعد، استنتاج. یعنی ما در هوش مصنوعی هدف، قاعده و بعد، اضافه کردن خروجی به پایگاه داده و معرفت بسیار مهم است؛ تفاوت سائر زبانها با چیزی که در هوش مصنوعی انتظار داریم.
شاگرد: شیء که در اینجا میگفتید، منظور، مفهوم است؟
استاد: نه، یک اصطلاح برنامهنویسی است؛ «Object-Oriented». باید توضیح آن را عرض کنم که به چه صورت میشود. تا شما ندانید در حافظه کامپیوتر چه میگذرد و این برنامهنویسها چکار میکنند، خوب متوجه نمیشوید. هر قدر برنامهنویس قویتر باشد، ذهنش به سختافزار نزدیکتر است. یعنی برنامهنویسهای فنی، خیلی دوست ندارند با زبانهای سطح بالا کار کنند، مگر اینکه بخواهند راحت کار کنند و الا آن دستشان را میبندد. هرچه زبانها سطح بالاتر میشود، دست برنامهنویس قوی را میبندد. او دوست دارد خودش برود از نزدیک با سختافزار و با بایتها کار کند؛ دوست دارد حافظه را خودش مدیریت کند تا اینکه یک نرمافزار سطح بالا بخواهد سهولت بدهد. شیئی که آنها میگویند، توضیح خاص خودش را دارد، ولی شبیه آن شیئی است که ما میگوییم. وقتی همه اینها را کنار هم میگذاریم و جلو میرویم، بعداً میبینیم به چه صورت میشود؛ یعنی یک سطحی از نرمافزار در همان پایه، میتواند یک چیزهایی را برای ما بیاورد.