من الصعب تعريف علوم الحاسوب. ربما يرجع هذا إلى الاستخدام المؤسف لكلمةالحاسوب في الاسم. كما تعلم، فإن علوم اللحاسوب ليست مجرد دراسة أجهزة الكمبيوتر. على الرغم من أنها تلعب دورًا داعمًا مهمًا كأداة في هذا التخصص، إلا أنها مجرد أدوات.
علوم الحاسوب هي دراسة المشكلات وحلها والحلول التي تخرج من عملية حل المشكلات. عند مواجهة مشكلة ما، فإن هدف عالم الحاسوب هو تطوير خوارزمية، وهي عبارة عن قائمة تعليمات خطوة بخطوة لحل أي مشكلة قد تنشأ. الخوارزميات هي عمليات محدودة والتي إذا تم اتباعها سوف تحل المشكلة. الخوارزميات هي الحلول.
يمكن اعتبار علم الحاسوب بمثابة دراسة الخوارزميات. ومع ذلك، يجب أن نكون حريصين على إدراج حقيقة أن بعض المشاكل قد لا يكون لها حل. وعلى الرغم من أن إثبات هذا البيان يقع خارج نطاق هذه المقالة، إلا أن حقيقة عدم إمكانية حل بعض المشكلات أمر مهم بالنسبة لأولئك الذين يدرسون علوم الحاسوب. يمكننا إذن تعريف علوم الحاسوب بشكل كامل من خلال تضمين كلا النوعين من المشكلات والإشارة إلى أن علوم الحاسوب هي دراسة حلول المشكلات وكذلك دراسة المشكلات التي ليس لها حلول.
ومن الشائع جدًا أيضًا تضمين الكلمة القابلة للحساب عند وصف المشكلات والحلول. نقول أن المشكلة قابلة للحساب في حالة وجود خوارزمية لحلها. التعريف البديل لعلوم الحاسوب، هو دراسة المشكلات القابلة للحساب والتي لا يمكن حسابها، ودراسة وجود وعدم وجود الخوارزميات.
علم الحاسوب، فيما يتعلق بعملية حل المشكلات نفسها، هو أيضًا دراسة التجريد. يتيح لنا التجريد رؤية المشكلة والحل بطريقة تفصل بين ما يسمى بالمنظور المنطقي والمادي. الفكرة الأساسية مألوفة لنا في مثال شائع.
فكر في السيارة التي قد تقودها إلى المدرسة أو العمل اليوم. باعتبارك سائقًا، أو مستخدمًا للسيارة، فإن لديك تفاعلات معينة تحدث من أجل استخدام السيارة للغرض المقصود منها. يمكنك الدخول، وإدخال المفتاح، وتشغيل المحرك، والتبديل، والفرامل، والتسريع، والتوجيه من أجل القيادة. من وجهة نظر مجردة، يمكننا القول أنك ترى المنظور المنطقي للسيارة. أنت تستخدم الوظائف التي يوفرها مصممو المركبات بغرض نقلك من مكان إلى آخر. يُشار إلى هذه الوظائف أحيانًا باسم الواجهة.
من ناحية أخرى، فإن الميكانيكي الذي يجب عليه إصلاح سيارتك يأخذ وجهة نظر مختلفة تمامًا. فهو لا يعرف كيفية القيادة فحسب، بل يجب أن يعرف جميع التفاصيل اللازمة لتنفيذ جميع الوظائف التي نعتبرها أمرًا مفروغًا منه. إنه بحاجة إلى فهم كيفية عمل المحرك، وكيفية نقل التروس، وكيفية التحكم في درجة الحرارة، وما إلى ذلك. يُعرف هذا بالمنظور المادي، أي التفاصيل التي تحدث “تحت الغطاء”.
نفس الشيء عندما نستخدم أجهزة الكمبيوتر. يستخدم معظم الأشخاص أجهزة الكمبيوتر لكتابة المستندات، وإرسال واستقبال البريد الإلكتروني، وتصفح الويب، وتشغيل الموسيقى، وتخزين الصور، وممارسة الألعاب دون أي معرفة بالتفاصيل التي تحدث للسماح لهذه الأنواع من التطبيقات بالعمل. إنهم ينظرون إلى أجهزة الكمبيوتر من منظور منطقي أو منظور المستخدم. يأخذ علماء الحاسوب والمبرمجون وموظفو الدعم التكنولوجي ومسؤولو النظام وجهة نظر مختلفة تمامًا عن الكمبيوتر. يجب أن يعرفوا تفاصيل كيفية عمل أنظمة التشغيل، وكيفية إعداد بروتوكولات الشبكة، وكيفية ترميز البرامج النصية المختلفة التي تتحكم في وظائف الكمبيوتر. يجب أن يكونوا قادرين على التحكم في التفاصيل ذات المستوى المنخفض التي يفترضها المستخدم ببساطة.
النقطة المشتركة بين هذين المثالين هي أن مستخدم التجريد، الذي يُطلق عليه أحيانًا اسم العميل، لا يحتاج إلى معرفة التفاصيل طالما أن المستخدم على علم بالطريقة التي تعمل بها الواجهة. هذه الواجهة هي الطريقة التي نتواصل بها كمستخدمين مع التعقيدات الأساسية للتنفيذ.
كمثال آخر على التجريد، فكر في وحدة بايثون math
. بمجرد استيراد الوحدة، يمكننا إجراء عمليات حسابية مثل:
import math
math.sqrt(16)
4.0
هذا مثال على التجريد الإجرائي. نحن لا نعرف بالضرورة كيف يتم حساب الجذر التربيعي، ولكننا نعرف إسم الدالة وكيفية استخدامها. إذا قمنا بالاستيراد بشكل صحيح، يمكننا أن نفترض أن الدالة ستزودنا بالنتائج الصحيحة. نحن نعلم أن شخصًا ما قام بتنفيذ حل لمشكلة الجذر التربيعي، ولكننا نحتاج فقط إلى معرفة كيفية استخدامه. يُشار إلى هذا أحيانًا باسم عرض الصندوق الأسود للعملية. نحن ببساطة نصف الواجهة: اسم الدالة، وما هو مطلوب (المعلمات)، وما سيتم إرجاعه.
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.