اعتمادنا كبشر على الحاسب الآلي في معظم جوانب حياتنا سبب زيادة في الطلب على التطبيقات التي تعتمد على علم الحاسوب، هذا شجع المنصات والمؤسسات العلمية حول العالم على توفير آلاف المصادر المجانية للراغبين في دخول هذا المجال وامتهانه.
في هذا المقال نعرفك على أساسيات علم الحاسوب، ونقدم لك عدة مصادر يمكن الاعتماد عليها لدراسته والتخصص فيه.
شرحنا في مقال سابق علم الحاسوب وأهم مجالاته… ننصحك بالإطلاع عليه لفهم هذا المقال بشكل أوضح.
فيما يلي أهم الجوانب التي تقوم عليها أساسيات علم الحاسوب:
1. مكونات الحاسب الآلي الأساسية
علم الحاسوب يعتمد على الهندسة الموجودة بين شقي مكونات الحاسب الآلي وهما:
- المعدات أو المكونات الملموسة أو ما يعرف بـ Hardware.
- البرامج والتطبيقات أو ما يعرف بـ Software.
مثل أي جهاز إلكتروني تقوم القطع الملموسة بأداء الوظائف الأساسية للحاسب الآلي، والتي تتلخص في معالجة البيانات. يمكننا القول أن أي عملية تتم على الحاسب الآلي تعتبر شكل من أشكال معالجة البيانات بهدف تحويلها إلى شكل يستطيع البشر التعامل معه.
تتواصل قطع الحاسب الآلي بعضها البعض بلغة الأرقام الثنائية أو binary system، هذا النظام قائم على رقمين ( 1و 0 )، والذي سوف نشرحه بصورة أكثر تفصيلاً لاحقاً.
تعتبر البرامج وأنظمة التشغيل هي حلقة الوصل بيننا وبين مكونات الحاسب الآلي الملموسة، إذ نستخدمها للتواصل مع هذه المكونات، فإذا أردنا طباعة ورقة مثلاً نستخدم برنامج خاص من أجل إعطاء أمر الطباعة للطابعة لتتم طباعة هذه الورقة بالشكل الذي نريده.
بالطبع تتكون عملية التواصل من عدة خطوات وتفاصيل أخرى سوف نوضحها بشكل أكبر في الفقرات القادمة.
أ) المعدات أو المكونات الملموسة أو ما يعرف بـ Hardware
تنقسم المكونات الملموسة إلى تقسيم شهير وهو المدخلات والمخرجات أو input and output. عدد هذه القطع يتغير يوماً بعد يوم، حيث يتسبب التقدم التكنولوجي المستمر في الاستغناء عن قطع وابتكار قطع جديدة.
مع ذلك تعتبر القطع التالية هي أشهر القطع التي تعتبر من المدخلات في عالم الحاسب الآلي في الوقت الحالي:
- لوحة المفاتيح Keyboard.
- الفأرة Mouse.
- الماسح الضوئي Scanner.
- كاميرا الويب Webcam.
- الميكروفون Microphone.
أما بالنسبة إلى المخرجات فأشهرها هو:
- الشاشة.
- الطابعة.
- السماعات.
على صعيد أداء الوظائف فالمكونات التالية هي المسؤولة عن أداء الوظائف الرئيسية للحاسب الآلي وعلى رأسها معالجة البيانات:
- وحدة المعالجة المركزية CPU.
- اللوحة الأم Motherboard.
- وحدات التخزين بأنواعها المختلفة (ميكانيكية- ثابتة خارجية وداخلية) Storage devices.
- ذاكرة التخزين العشوائية أو RAM.
- مزود الطاقة Power Supply.
ب) البرامج والتطبيقات
تعتبر لغات البرمجة أهم عناصر البرامج والتطبيقات، وعلى عكس المعتقد الشائع لغات البرمجة تختلف فيما بينها، يأتي هذا الاختلاف من نواحي كثيرة ولا نقصد هنا الفرق ما بين لغة الجافا ولغة البايثون مثلاً، بل نقصد الفرق بين اللغات على المستوى الوظيفي.
يمكننا تلخيص لغات البرمجة من ناحية وظائفها إلى 3 أنواع وهم:
1. لغة الآلة أو Machine language
لغة الآلة هي اللغة الوحيدة التي يمكن للحاسب الآلي فهمها ومعالجتها، تعرف هذه اللغة أيضاً بلغة الأرقام الثنائية (1 و 0)، والتي تعتبر لغة برمجة بسيطة تحول سيران وعدم سريان التيار الكهربائي إلى آحاد وأصفار.
ببساطة 1 يساوي تيار كهربائي ساري في مكون إلكتروني، وصفر معناه لا يوجد تيار كهربائي يمر في هذا المكون، بالطبع لا تقتصر أوامر الحاسب الآلي على واحد وصفر مكررين مرة أو اثنان بل إن كل تكرار معين معناه أمر أو كلمة محددة.
فمثلاً عندما نكتب اطبع هذا أو print this على أحد برامج الحاسب الآلي مثلاً لا يستطيع الأخير فهمها بها الشكل، بل ما يحدث هو أنها تتحول من خلال اللغات وعبر المراحل التي سوف نشرحها لاحقاً إلى الشكل التالي:
01110000 01110010 01101001 01101110 01110100 00100000 01110100 01101000 01101001 01110011
هذا الشكل يستطيع الحاسب الآلي فهمه واستيعابه ومن ثم تنفيذ أوامر المستخدم.
2. لغة التجميع
لغة التجميع أو المعروفة باسم assembly language هي لغة برمجة منخفضة المستوى يمكن للبشر قراءتها وفهمها، تستطيع لغة التجميع تحويل النظام الثنائي إلى تعليمات التجميع.
عملية التحويل تتم في اتجاهين مختلفين، الاتجاه الأول يكون من النظام الثنائي إلى تعليمات التجميع عند إصدار مخرجات عملية معالجة البيانات مثل عرض صورة، أما الثاني فيتم عند تواصل البشر مع الحاسب الآلي.
يستخدم البشر لغة التجميع (من خلال البرامج وأنظمة التشغيل) لإصدار الأوامر التي تحولها لغة التجميع إلى النظام الثنائي.
لغات التجميع هي جسر بين لغة الآلة ولغات البرمجة عالية المستوى مثل لغة الجافا، منذ اختراع الحاسب الآلي تم ابتكار عدد متنوع من لغات التجميع… مع ذلك تعتبر اللغات التالية هي أشهر لغات هذا المجال:
- ARM
- MIPS
- X86
لهذه اللغات برامج متخصصة (يطلق عليها برامج التجميع أو assembly programs) تقوم بتحويلها إلى لغة الآلة.
3. لغات عالية المستوى
اللغات عالية المستوى أو High-level languages هي لغات البرمجة الشهيرة مثل:
- بايثون Python.
- سي ++ أو ++ C
- جافا سكريبت أو JavaScript.
- جافا أو Java.
- فيجوال بيسك Visual Basic.
من خلال هذه اللغات يقوم المطورون بتطوير أنظمة التشغيل والبرامج والتطبيقات التي تتعامل مع لغات التجميع. تسمح هذه اللغات بإنشاء برامج وتطبيقات مفيدة دون الحاج إلى كتابة أوامر كثيرة كما هو الحال مع لغة التجميع أو التعامل مع النظام الثنائي.
تعمل لغات البرمجة عالية المستوى جنباً إلى جنب مع برنامجين مهمين هما:
- Compiler
- Interpreter
Compiler: هو برنامج يقوم بتجميع الأكواد المكتوبة باللغات السابقة ثم يقوم بتحويلها إلى صفية لغة الآلة.
Interpreter: هو برنامج يقوم بنفس مهمة البرنامج السابق لكن يتعامل مع كل سطر من الأكواد على حدا.
نستطيع القول أن الفارق بين البرنامجين هو أن interpreter يتعامل مع الأكواد سطر بسطر، بينما يتعامل Compiler مع البرنامج الذى يتكون من هذه الأسطر ككل (بالطبع هذا التفسير المبسط).
للمزيد من المعلومات حول البرمجة ننصحك بالإطلاع على مقالنا الذي يشرحها بشكل عملي ومختصر.
ج) نظام التشغيل Operating System
نظام التشغيل يمكن اعتباره برنامج ضخم يحتوي على عدة برامج فرعية يؤدي من خلالها الحاسب الآلي وظائفه الأساسية، لعلك سمعت عن نظام تشغيل ويندوز نظام تشغيل الحواسب الآلية الأشهر على الإطلاق و نظام تشغيل أوبونتو ولينكس وغيرها.
2. هياكل البيانات وخصائصها
تعتبر هياكل البيانات أو data structure من أهم أساسيات علم الحاسوب، هياكل البيانات هي تنسيق يهدف لتنظيم ومعالجة واسترجاع وتخزين البيانات. هناك عدة أنواع من هياكل البيانات وكلها مصممة لترتيب البيانات لتناسب هدفاً بعينه.
تسهل هياكل البيانات على المستخدمين عملية الوصول إلى البيانات التي يحتاجون إليها والعمل معها بطرق مناسبة. هياكل البيانات تقوم أيضاً بتنظيم المعلومات بحيث يستطيع الحاسب الآلي والبشر فهمها والعمل معها بشكل أفضل.
في علم الحاسوب (تحديداً في البرمجة) يمكن اختيار أسلوب هيكلة البيانات لتخزينها بغرض استخدامها مع خوارزميات مختلفة، في بعض الحالات ترتبط العمليات الأساسية للخوارزميات ارتباطاً وثيقاً بالأسلوب الذي تمت من خلاله هيكلة البيانات.
بمعنى آخر هياكل البيانات قد تتحكم في طبيعة عمل الخوارزميات التي تتولى إدارتها. تحتوي هياكل البيانات على معلومات حول قيم البيانات والعلاقات بين بعضها البعض، أحياناً تحتوي هياكل البيانات أيضاً على الوظائف والأوامر التي يمكن تطبيقها عليها.
مثل مكونات الحاسب الآلي يحتوي مجال هيكلة البيانات في طياته على عدة مفاهيم أساسية يدرسها علماء الحاسوب، هذه المفاهيم تعتبر أساليب هيكلة البيانات.
أشهر أساليب هيكلة البيانات
أ) هيكلة البيانات عبر أسلوب المجموعة أو Array
المجموعة هي عدة عناصر تمتلك نفس نوع المتغير أو variable يتم تخزينها في الذاكرة العشوائية، تتم فهرسة كل عنصر في المجموعة بترتيب يبدأ من الرقم صفر، تستخدم المجموعة في استدعاء البيانات من أجل الإطلاع عليها في وقت ما.
راجع الصورة التالية لفهم هيكلة البيانات بأسلوب المجموعة بشكل أفضل:
لاحظ أن Array Elements تعني عناصر المجموعة و Array Indexes تعني ترتيبها أو فهرستها.
ب) هيكلة البيانات عبر أسلوب القائمة المرتبطة أو linked list
تتكون القائمة المرتبطة من عدة عناصر من البيانات كل عنصر يعرف باسم عقدة أو node. بعكس المجموعة لا تتم فهرسة العناصر الموجود في القائمة المرتبطة بشكل منتظم ولا يوجد لها سجل خاص بها أو فهرس.
حسناً هذا قد يكون محير كيف يتم ترتيب هذه العقد أو كيف يمكن تحديد مكان كل عقدة بالنسبة للأخرى؟ الإجابة على هذا السؤال تكمن في تكوين كل عقدة الذي ينقسم إلى حقلين، حقل يحتوي على بيانات وحقل آخر يحتوي على عنوان خاص بالعقدة التالية.
بمعنى أخر تحتوي كل عقدة على جزئين؛ جزء يحتوي على البيانات المسجلة داخلها وآخر يحتوي على تفاصيل العقدة التالية، بهذا الشكل تستطيع القائمة المرتبطة فهم ترتيب العقد وعرضها بالترتيب الصحيح. (راجع الصورة التوضيحية التالية):
في الصورة السابقة تفاصيل البيانات تحتل الجزء الأول من كل عقدة بينما يترك الجزء الثاني منها للإشارة للعقدة التالية.
ج) هيكلة البيانات بنظام الشجرة أو Tree
الشجرة هي هيكلة البيانات بشكل غير خطي، المقصود بغير خطي هنا هو أن هيكلة البيانات في هذا الأسلوب لا تتبع ترتيب متسلسل مثل تسلسل الأرقام مثلاً، هيكلة البيانات بأسلوب الشجرة يستخدم لتمثيل البيانات الهرمية.
البيانات الهرمية هي تلك البيانات التي ينبثق منها بيانات وعناصر أخرى، يمكنك تخيل الأمر على أنه رسم لشجرة العائلة. فتمثيل البيانات من خلال هذا الأسلوب يستخدم شكل هرمي يوضح البيانات والبيانات المنبثقة منها وهكذا تواليك.
راجع الصورة التالية لمزيد من التوضيح:
د) هيكلة البيانات بأسلوب أفقي
يطلق على هذا الأسلوب في هيكلة البيانات أسلوب التكديس (من مكدس أو Stack). يعتمد هذا الأسلوب على ترتيب البيانات بشكل أفقي، وفيه تكون البيانات مرتبة على شكل عناصر عنصر فوق الآخر.
يعتمد هذا النظام على عمليتين أساسيتين هما؛ Push ودورها هو إضافة العناصر إلى هيكل البيانات، أما العملية الثانية فهي Pop، ودورها هو إزالة العناصر التي عرضها لإفساح المجال عرض عناصر جديدة.
يقوم هذا الأسلوب من هيكلة البيانات بعرض البيانات بطريقة الوارد أخيراً يصرف أولاً، المعرفة لدى خريجي كليات التجارة والأعمال باسم Last in first out أو LIFO.
تخيل مجموعة لوحات مكدسة فوق بعضها البعض… اللوحة الأخيرة التي تضعها فوق باقي اللوح هي أول لوحة تخرجها للعرض، هذا معناه أن آخر بيانات تمت إضافتها إلى هيكل البيانات هي أول بيانات يتم عرضها.
(راجع الصورة التالية لمزيد من التوضيح):
هـ) هيكلة البيانات بأسلوب الطابور
الطابور أو queue هو نظام يقوم بهيكلة البيانات بشكل خطى متتابع شانه شان أسلوب التكديس السابق، ومع ذلك يختلف هذا الأسلوب في أن البيانات يتم تم عرضها بأسلوب first in first out أو الوارد أولاً يصرف أولاً (FIFO).
يعمل هذا الأسلوب بنفس أسلوب الطابور التقليدي الشائع الذي نستخدمه للدخول إلى الأماكن، تطبيق هذا الأسلوب على البيانات يتم كالتالي: البيانات التي يتم إضافتها أولاً إلى هيكل البيانات هي أول بيانات يتم إخراجها منه.
راجع الصورة التالية لمزيد من التوضيح:
كما لاحظت enqueue تعني في الطابور أو في الانتظار بينما تعني dequeue خارج الطابور أو عليه الدور.
و) هيكلة البيانات بأسلوب الرسم البياني أو Graph
هيكلة البيانات من خلال هذا الأسلوب يعرضها في شكل هندسي يتكون من رؤوس وحواف، يشار إلى الرؤوس أحياناً باسم العقد Nodes والحواف أو بـ Edges، وعادة ما يتكون الشكل من خطوط أو أقواس تربط أي عقدتين في الرسم البياني.
بصورة أوضح هيكلة البيانات بأسلوب الرسم البياني يتكون من الرؤوس (V) ومجموعة من الحواف (E).
راجع الصورة التالية لمزيد من التوضيح:
ما هي أهم استخدامات هياكل البيانات؟
أ) تخزين البيانات
لا نقصد هنا التخزين بالمفهوم الشائع له في مجال الحاسب الآلي أو حفظ البيانات على مساحة تخزينية، بل أبعد من ذلك. مفهوم تخزين البيانات في مجال هيكلة البيانات هدفه ضمان وجود البيانات التي تحفظها هذه الهياكل باستمرار.
أيضاً تستطيع هياكل البيانات جمع عدة بيانات تمتاز بسمات معينة وحفظها في سجلات يسهل فهمها والإطلاع عليها في أي وقت، تعتبر عملية تخزين البيانات عملية مهمة في مجال إعداد قواعد البيانات.
ب) إدارة الموارد والخدمات
تقوم هياكل البيانات بتوفير الموارد (موارد الحاسب الآلي مثل وحدة المعالجة والذاكرة العشوائية) لخدمات نظام التشغيل، بمعنى آخر توفر هذه الهياكل الموارد التي يحتاجها نظام تشغيل ويندوز مثلاً ليعمل بصورة سلسة هو والبرامج والوظائف التي يؤديها.
تقوم هياكل البيانات التي تعتمد على أسلوب القوائم المرتبطة أو Linked Lists بإدارة موارد الحاسب الآلي بشكل ممتاز. تقوم هذه الهياكل بتخصيص الذاكرة العشوائية وقدرة المعالج المركزي لكل دور يقوم به الحاسب من تشغيل البرامج وإدارة الملفات وغيرها.
ج) تبادل البيانات
تحدد هياكل البيانات طرق تنظيم المعلومات التي يتم مشاركتها بين التطبيقات، هذه الوظيفية تعتمد عليها تقنيات الاتصال بين الأجهزة المختلفة مثل حزم TCP / IP الخاصة باتصال الحاسوب ببعضها البعض وبالإنترنت.
د) الترتيب والفرز
توفر أساليب هياكل البيانات (مثل هيكلة البيانات من خلال أسلوب نظام أشجار البحث الثنائية) طرق فعالة في فرز عناصر البيانات.
أيضاً عبر استخدام أسلوب معين من أساليب هيكلة البيانات يمكن للمبرمجين إدارة العناصر المنظمة وفقاً لأولوية معينة، هذا يمكن إتمامه بسهولة من خلال هيكلة البيانات بأسلوب قوائم الانتظار ذات الأولوية أو Priority Queue.
فمثلاً عندما يطلب المستخدم من برنامج ما عدة أوامر يقوم هذا الأسلوب بإدارة هذه الأوامر، وتنفيذها طبقاً إلى أهمية كل أمر.
هـ) الفهرسة
يتم استخدام أسلوب هيكلة البيانات المعقدة مثل أسلوب أشجار B أو B-trees لفهرسة عناصر البيانات، تعد قواعد البيانات أشهر مجال يتم استخدام هذا الأسلوب فيه.
و) البحث
أساليب فهرسة وتنظيم البيانات تسهل عمليات البحث عن البيانات، تعمل هذه الأساليب على تسريع القدرة على العثور على المعلومات في قواعد البيانات.
ي) القابلية للتوسع والنمو
تستخدم تطبيقات البيانات الكبيرة هياكل البيانات لتخصيص وإدارة وحدات تخزين البيانات عبر مواقع التخزين الموزعة، هذا يوفر قابلية التوسع في جمع وإدارة هذه البيانات كما يساهم في تحسين أداء مراكز البيانات أو Data centers.
3. الخوارزميات
الخوارزميات هي سلسلة من الأوامر والخطوات المعدة مسبقاً للتنفيذ بواسطة الحاسب الآلي، تعتبر الخوارزميات الدليل الذي يلجأ إليه الحاسب الآلي لحل أي مشكلة يواجهها، وبما أن علم الحاسب يهتم بحل المشكلات فلا عجب أن تكون الخوارزميات من أساسياته.
يتم تطبيق الخوارزميات على أغلب أساليب هيكلة البيانات السابقة، تعتبر الخوارزميات مجال ضخم يتم الاعتماد عليه في علم الحاسوب بشكل مكثف، مجالات مثل الذكاء الاصطناعي وتعلم الآلة تعتمد بشكل أساسي على الخوارزميات بأنواعها لتحقق أهدافها.
الحديث عن الخوارزميات يحتاج إلى مقال ضخم إن لم يكن أكثر، لذلك ننصحك بقراءة مقالنا عن الخوارزميات وأنواعها المختلفة بشكل مفصل، أما إن كنت مهتم بمجال الذكاء الاصطناعي، فأنصحك بقراءة مقالنا المفصل عن هذا المجال وتأثيره على التوظيف.
مصادر تعلم علم الحاسوب
1. موقع جامعة هارفرد Harvard الأمريكية
يوفر موقع جامعة هارفرد الأمريكية عدد ضخم من الدورات التدريبية الخاصة بمجال أساسيات علم الحاسوب والمجالات التابعة له، هناك دورات خاصة بمجالات عديدة مثل علم البيانات والأمن السيبراني وغيرها الكثير.
مع ذلك أشهر وأقوى دورة تدريبية تقدمها جامعة Harvard الأمريكية هي CS50’s Introduction to Computer Science، تعتبر هذه الدورة اشهر دورة تدريبية على الإنترنت في مجال علم الحاسوب.
CS50’s Introduction to Computer Science هي دورة مجانية يمكنك دراستها من خلال موقع EDX الشهير. الإطلاع على كافة محتوى الدورة مجاني أما إذا أردت الحصول على شهادة تفيد بإتمام الدورة فسوف تدفع 149 دولار أمريكي.
مدة الدورة هي 3 أسابيع فقط ومحتواها ممتاز، الدورة توضح لك المفاهيم الأساسية الخاصة بمجالات مثل البرمجة والخوارزميات وتكوين البيانات وتطوير التطبيقات والمواقع الإلكترونية.
أخيراً CS50’s Introduction to Computer Science تعتبر الخيار الأمثل للمبتدئين في مجال علم الحاسوب.
2. منصة Udemy
يوفر موقع Udemy عدة دورات تدريبية قوية في مجال علم الحاسوب أهمها:
1- Foundations of Computer Science: Theory and Practice
دورة Foundations of Computer Science: Theory and Practice من أهم دورات أساسيات علم الحاسوب، هذا يرجع لعدة أسباب على رأسها هو محتوى هذه الدورة والفئة الموجهة لها.
تشرح الدورة أغلب أساسيات علم الحاسوب التي ناقشتها في هذا المقال بأسلوب بسيط ومفصل في آن واحد، الدورة درسها أكثر من 19 ألف طالب كما أن مدة محتواها قصيرة نسبياً (حوالي 4 ساعات).
أخيراً سبب الإقبال الشديد على هذه الدورة من قبل مستخدمي منصة Udemy هو أنها موجهه للمبتدئين كما أنها مجانية بالكامل.
2- Computer Science 101 – Computers & Programming for Beginners
Computer Science 101 – Computers & Programming for Beginners دورة ممتعة للغاية، تم تصميم طريقة عرض محتوى هذه الدورة بشكل شيق يسهل على المبتدئين تذكره وفهمه.
نستطيع عرض مميزات هذه الدورة إلا أنها تتمتع بميزة هامة غير موجودة في الدورات المنافسة وهو أهميتها بالنسبة للشركات، شركات مثل ووردبريس و NetApp تنصح العاملين فيها بدراسة هذه الدورة… هذا معناه أنها تقدم فائدة حقيقية في هذا المجال.
سعر هذه الدورة حالياً حوالي 180 جنيه مصري بدلاً من 230 لفترة محدودة.
3- Introduction to Computer Science
Introduction to Computer Science هي دورة تدريبية ممتعة في مجال أساسيات علم الحاسوب. الدورة تغطي أساسيات هذا المجال بشكل بسيط وتوفر عدة أسئلة بعد كل قسم للمساعدة على تذكر أهم المعلومات التي تطرق لها الأخير.
مدة الدورة حوالي 3 ساعات، ومحتواها يشرح عدد متنوع من أساسيات علم الحاسوب مثل الخوارزميات وعلم الروبوتات وغيرها، سعر هذه الدورة حالياً حوالي 200 جنيه مصري بدلا من 1200 لفترة محدودة.
خاتمة
حاولنا في هذا المقال تعريفك على أهم أساسيات علم الحاسوب. يحتوي هذا المجال عدد ضخم من المجالات والعلوم الفرعية التي تتطور باستمرار وبوتيرة مرتفعة، مع ذلك تظل الأساسيات التي عرضنا في هذا المقال أهم ركائز هذا العلم قديماً وحديثاً ومستقبلاً.
هل تفكر في دراسة أحد أساسيات علم الحاسوب؟ شاركنا رأيك في التعليقات حول أكثر مجال تراه يناسبك في هذا العلم.
شكرا..
لدي سؤال بخصوص بيانات اختفت من الحاسوب.. حذفت ولا أثر.. هل يمكن استرجاعها؟ وما الجزء داخل الحاسوب الذي يحتفظ بها؟
عفواً أخي.
اقرأ هذا المقال:
أفضل برامج استعادة البيانات للويندوز (استرجع ملفاتك المحذوفة)