أهلاً بكم يا شباب في معهد ديف بوينت. في هذا الموضوع المتجدد، هنتكلم عن الجذور النظرية والأساسيات التي قامت عليها علوم البرمجة والحاسوب، وكيف تحولت الأفكار الرياضية البسيطة إلى الثورة التقنية الضخمة التي نعيشها النهاردة.
كثير من الشباب بيدخلوا مجال البرمجة فوراً للتعلم دون فهم الآلية التي تتحدث بها أجهزتنا مع الأكواد، وفي هذا المقال سنستعرض القصة من البداية لتبسيط الفكرة وتوضيح طريقة عمل البرامج على الأجهزة.
مفهوم آلة تورينغ وفكرة الحاسوب الأولى
في عام 1936، قدم العالم ألان تورينغ ورقة بحثية تناولت تساؤلاً رياضياً حول إمكانية إيجاد خوارزمية محددة للتحقق من صحة أي صيغة رياضية. بدون أن يدري، كان يضع الحجر الأساس لما نعرفه اليوم بعلوم الحاسب وشبكات المعلومات.
تعتمد فكرة "آلة تورينغ" البسيطة على التصور التالي:
على الرغم من البساطة الشديدة لهذه الفكرة، إلا أنها أثبتت قدرتها النظرية على تنفيذ أي خوارزمية حاسوبية قابلة للحل، ثم تطورت الفكرة لاحقاً إلى "آلة تورينغ الشاملة" التي استطاعت تشغيل برامج وآلات أخرى، وهي النواة الأولى لنشأة أنظمة التشغيل (Operating Systems).
النظام الثنائي ولغة الآلة
في بدايات عصر الحواسيب، كانت الأجهزة تشغل غرفاً كاملة وتعتمد على الأنابيب المفرغة والتوصيلات السلكية المباشرة. ومع اختراع الترانزستور والشرائح الإلكترونية في سبعينات القرن الماضي، تم تصغير الحجم وزيادة سرعة المعالجة بشكل هائل.
تعتمد الدوائر الإلكترونية داخل المعالجات على حالتين كهربائيتين لا ثالث لهما:
ومن هنا نبعت لغة الصفر والواحد (النظام الثنائي Binary)، والتي تُعد اللغة الوحيدة التي يفهمها المعالج بشكل مباشر.
معمارية فون نيومان وتحدي نقل البيانات
قام العالم جون فون نيومان بوضع هيكلية المكونات الأساسية للحاسوب، والتي ما زالت مستخدمة حتى يومنا هذا. تتكون هذه المعمارية من:
نقاط رئيسية يجب على كل مبرمج فهمها
قبل أن تبدأ في كتابة سطر برمجي بـ Python أو C++ أو JavaScript، تذكر دائماً القواعد التالية:
في الشروحات القادمة سننتقل للحديث عن المفاهيم العملية المباشرة للغات البرمجة مثل المتغيرات، الحلقات التكرارية، والدوال الشرطية.
هل تعتقد أن فهم طريقة عمل العتاد والمعالج يساعد المبرمج على كتابة كود أفضل؟ شاركونا آراءكم واستفساراتكم في التعليقات!
كثير من الشباب بيدخلوا مجال البرمجة فوراً للتعلم دون فهم الآلية التي تتحدث بها أجهزتنا مع الأكواد، وفي هذا المقال سنستعرض القصة من البداية لتبسيط الفكرة وتوضيح طريقة عمل البرامج على الأجهزة.
مفهوم آلة تورينغ وفكرة الحاسوب الأولى
في عام 1936، قدم العالم ألان تورينغ ورقة بحثية تناولت تساؤلاً رياضياً حول إمكانية إيجاد خوارزمية محددة للتحقق من صحة أي صيغة رياضية. بدون أن يدري، كان يضع الحجر الأساس لما نعرفه اليوم بعلوم الحاسب وشبكات المعلومات.
- الشريط اللانهائي: شريط مقسم إلى مربعات يحتوي كل مربع على رمز محدد أو مساحة فارغة.
- رأس القراءة والكتابة: جهاز يتنقل بين المربعات يميناً ويساراً لقراءة الرموز أو تعديلها.
- جدول الحالات: مجموعة من القواعد والتعليمات التي توضح للآلة التصرف المطلوب بناءً على الرمز الحالي والحالة الراهنة.
على الرغم من البساطة الشديدة لهذه الفكرة، إلا أنها أثبتت قدرتها النظرية على تنفيذ أي خوارزمية حاسوبية قابلة للحل، ثم تطورت الفكرة لاحقاً إلى "آلة تورينغ الشاملة" التي استطاعت تشغيل برامج وآلات أخرى، وهي النواة الأولى لنشأة أنظمة التشغيل (Operating Systems).
النظام الثنائي ولغة الآلة
في بدايات عصر الحواسيب، كانت الأجهزة تشغل غرفاً كاملة وتعتمد على الأنابيب المفرغة والتوصيلات السلكية المباشرة. ومع اختراع الترانزستور والشرائح الإلكترونية في سبعينات القرن الماضي، تم تصغير الحجم وزيادة سرعة المعالجة بشكل هائل.
تعتمد الدوائر الإلكترونية داخل المعالجات على حالتين كهربائيتين لا ثالث لهما:
- مرور التيار الكهربائي: ويمثل الرقم (1).
- انقطاع التيار الكهربائي: ويمثل الرقم (0).
ومن هنا نبعت لغة الصفر والواحد (النظام الثنائي Binary)، والتي تُعد اللغة الوحيدة التي يفهمها المعالج بشكل مباشر.
معمارية فون نيومان وتحدي نقل البيانات
قام العالم جون فون نيومان بوضع هيكلية المكونات الأساسية للحاسوب، والتي ما زالت مستخدمة حتى يومنا هذا. تتكون هذه المعمارية من:
- وحدة المعالجة المركزية (CPU): تحتوي على وحدة التحكم ووحدة الحساب والمنطق.
- الذاكرة الرئيسية (RAM): لتخزين البيانات والتعليمات القابلة للتنفيذ.
- وحدات الإدخال والإخراج (I/O): للتواصل مع المستخدم والأجهزة الخارجية.
- ناقل البيانات (Data Bus): الجسر الذي ينقل المعلومات بين المكونات.
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
نقاط رئيسية يجب على كل مبرمج فهمها
قبل أن تبدأ في كتابة سطر برمجي بـ Python أو C++ أو JavaScript، تذكر دائماً القواعد التالية:
- التنفيذ التسلسلي والثنائي: جميع البرامج والتطبيقات التي نراها تتحول في النهاية إلى سلسلة تسلسلية من الأصفار والآحاد.
- لغة التجميع والآلة: اللغات منخفضة المستوى تمنحك أقصى أداء ممكن للعتاد، لكنها تتطلب جهداً كبيراً في الكتابة والصيانة.
- دور نظام التشغيل: نظام التشغيل هو البرنامج الرئيسي الذي يدير ويتحكم في جميع البرامج والعمليات الأخرى داخل الجهاز.
في الشروحات القادمة سننتقل للحديث عن المفاهيم العملية المباشرة للغات البرمجة مثل المتغيرات، الحلقات التكرارية، والدوال الشرطية.
هل تعتقد أن فهم طريقة عمل العتاد والمعالج يساعد المبرمج على كتابة كود أفضل؟ شاركونا آراءكم واستفساراتكم في التعليقات!