علوم رایانه
یا به مجموعهٔ فنون و رشتههایی گفته میشود که به زیربناهای نظری، روشهای طرّاحی و ساخت و چگونگی استفاده از رایانه میپردازند. بنا به نظر پیتر جی. دنینگ، پرسش اساسی در علوم رایانه این است که: " چه چیزی میتواند ( به نحوی کارآمد ) خودکار انجام شود؟ "
عموما مردم عامی، بین علوم رایانه و سایر امور مرتبط با رایانه که اغلب مایهای برای کسب درآمد هستند، تمایزی قایل نمیشوند و یا فکر میکنند علوم رایانه با تجربیات روزمره آنها در کار با رایانه، مانند گشت زنی در اینترنت، انجام بازیهای رایانهای و مانند اینها، تفاوتی ندارد. حال آنکه علوم رایانه بیشتر به فهم و بررسی خصوصیاتی میپردازد که برنامهها بر پایه آنها ساخته شدهاند. و بر مبنای این فهم و درک، به ایجاد برنامههای جدید و یا بهبودی برنامههای پیشین میپردازند.
علم نظری رایانه
موضوع وسیع علم نظری رایانه، علاوه بر نظریات کلاسیک محاسبات، شامل طیف وسیعی از موضوعات دیگری میشود که بیشتر بر روی جنبههای منطقی و ریاضیاتی پردازش و محاسبه تمرکز دارند.
معماری رایانه
آموزش علوم رایانه در ایران
در ایران، دورههای آموزش علوم رایانه، به دو بخش مجزا تفکیک شدهاست. یکی تحت نام مهندسی رایانه و دیگری با عنوان علوم رایانه. که البته در بسیاری از کشورهای جهان، مهندسی رایانه، یکی از گرایشهای رشته علوم رایانهاست که در دانشکدهای با نام علوم رایانه به تدریس آنها پرداخته میشود. در ایران، دانشکدهای با این عنوان وجود ندارد و تدریس رشته علوم کامپیوتر در گروه آموزشی علوم کامپیوتر دانشکدههای علوم ریاضی صورت میپذیرد.
تعریف داده و اطلاعات
داده به آن دسنه از ورودیهایی خام گفته میشود که برای پردازش به رایانه ارسال میشوند.
اطلاعات به دادههای پردازش شده میگویند.
ورودی/خروجی
بخش ورودی/خروجی (I/O) این امکان را به رایانه میدهد تا اطلاعات را از جهان بیرون تهیه و نتایج آنها را به همان جا برگرداند. محدوده فوق العاده وسیعی از دستگاههای ورودی/خروجی وجود دارد، از خانواده آشنای صفحهکلیدها، نمایشگرها، نَرمدیسک گرفته تا دستگاههای کمی غریب مانند رایابینها (webcams). (از سایر ورودی/خروجیها میتوان موشواره mouse، قلم نوری، چاپگرها (printer)، اسکنرها، انواع لوحهای فشرده(CD, DVD) را نام برد ).
چیزی که تمامی دستگاههای عمومی در آن اشتراک دارند این است که آنها رمزکننده اطلاعات از نوعی به نوع دیگر که بتواند مورد استفاده سیستمهای رایانه دیجیتالی قرار گیرد، هستند. از سوی دیگر، دستگاههای خروجی آن اطلاعات به رمز شده را رمزگشایی میکنند تا کاربران آنها را دریافت نمایند. از این رو یک سیستم رایانه دیجیتالی یک نمونه از یک سامانه دادهپردازی میباشد.
سیستمعامل
رایانه همیشه نیاز دارد تا برای بکار انداختنش حداقل یک برنامه روی آن در حال اجرا باشد. تحت عملکردهای عادی این برنامه همان سیستمعامل یا OS که مخفف واژههای Operating System است. سیستم یا سامانه عامل بر اساس پیشفرضها تصمیم میگیرد که کدام برنامه برای انجام چه وظیفه ای اجرا شود، چه زمان، از کدام منابع (مثل حافظه، ورودی/خروجی و ...) استفاده شود. همچنین سیستمعامل یک لایه انتزاعی بین سختافزار و برنامههای دیگر که میخواهند از سختافزار استفاده کنند، میباشد، که این امکان را به برنامه نویسان میدهد تا بدون اینکه جزئیات ریز هر قطعه الکترونیکی از سختافزار را بدانند بتوانند برای آن قطعه برنامهنویسی نمایند. در گذشته یک اصطلاح متداول بود که گفته می شد با تمام این وجود کامپیوترها نمیتوانند برخی از مسائل را حل کنند که به این مسائل حل نشدنی گفته میشود مانند مسائلی که در مسیر حلشان در حلقه بی نهایت می افتند. به همین دلیل نیاز است که با کمک روشهای خاص بطور مثال به چند بخش تقسیم نمودن مساله یا روشهای متداول دیگر از رخ دادن این خطا تا حد امکان جلوگیری نمود.
برنامهنویسی
رایانه در فرهنگ واژه غیر متخصصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرآیند توسعه نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شده مهندسی نرمافزار متغیر است.
(که اغلب در انگلیسی programming یا coding گفته میشود) فرآیند نوشتن، اشکال زدایی(debug) و نگهداری کد منبع (source code) برنامه کامپیوتر میباشد. این کد منبع با یک زبان برنامه نویسی نوشته شده است. این کد منبع ممکن است تغییر داده شده یک کد قبلی و یا یک کد کاملا جدید باشد. هدف برنامه نویسی ساختن یک برنامه میباشد که یک رفتار خواسته شده را به نمایش بگذارد.
نمونه یک برنامه
یک برنامهٔ ساده در زبان برنامهنویسیBasic که از سادهترین زبانهای برنامهنویسی است میتواند به شکل زیر باشد:
REM MY FIRST TRY TO COMMAND THIS MACHINE TO DO WHAT I LIKE PRINT "HELLO NEW WORLD!" END
سطر نخست که با واژه کلیدی "REM" آغاز شده و از سوی برنامهٔ واسط درنظر گرفته نمیشود و تنها برای نگاه داشتن یک توضیح یا مانند آن برای خود برنامهنویس است. سطر دوم با واژه کلیدی "PRINT" به دستگاه فرمان میدهد تا نوشته "HELLO NEW WORLD!" ("سلام دنیای نو!") را روی نمایشگر بنویسد (چاپ کند). سطر آخر پایان فرامین و برنامه را به ماشین اطلاع میدهد.
پس از نوشتن یک برنامه مانند بالا، برنامهٔ مترجم (در اینجا Basic) دستورات را تبدیل به فرامینی میکند که لایه زیرین، که ممکن است همان سختافزار باشد، میتواند آنها را اجرا کند.
ساختار کلی زبان لیسپ
متن برنامههای لیسپ عموماً از نمادها و لیستهایی از نمادها تشکیل میشود و بدین خاطر است که این زبان لیسپ (مخفف پردازش لیست) نامیده شدهاست. یکی از ویژگیهای جالب زبان لیسپ این است که خود برنامههای لیسپ نیز لیست هستند و بنا بر این، میتوان با برنامهها به عنوان دادهها رفتار کرد و یا دادهها را به عنوان برنامه ارزیابی نمود. لیسپ دارای گویشهای مختلفی است که بعضی از آنها دارای قابلیتهای شیءگرا نیز هستند. از این میان میتوان به کامن لیسپ اشاره کرد. در ابتدا لیسپ به عنوان علامتگذاری و نمادسازی ریاضیات و برای برنامههای کامپیوتری ابداع شد.زبان لیسپ به سرعت مورد توجه برنامه نویسان از جمله برای تحقیقات علمی هوش مصنوعی قرار گرفت.لیسپ یکی از ابتدائی زبانهای برنامه نویسی میباشد، و در علوم کامپیوتر بر بسیاری از تفکرات و ایدهها پیشگام بود.لیسپ شامل ساختمان دادهٔ درخت،مدریت نگهداری اتوماتیک،برنامه نویسی پویا،برنامه نویسی شی گرا و کامپایلر مستقل میباشد.