أهلاً بكم يا شباب في معهد ديف بوينت للتطوير والتقنية. كتير مننا بيدخل مجال البرمجة وهو فاكر إن الموضوع مجرد كتابة سطور كود وخلاص، لكن الحقيقة إن ورا التكنولوجيا دي تاريخ عبقري غير مجرى البشرية تماماً، وحوّل المطورين من مجرد ناس بتكتب أكواد لأشخاص بيصنعوا السحر الحقيقي في عصرنا الحالي. تعالوا مع بعض في رحلة سريعة وبسيطة نفهم فيها إزاي البرمجة بدأت وإزاي الكمبيوتر بيفكر.
البداية من عند العبقري آلان تورينج وآلته السحرية
في سنة 1936، نشر عالم الرياضيات البريطاني آلان تورينج ورقة بحثية شهيرة جداً غيرت شكل العالم. تورينج كان بيبحث عن حل لمعضلة رياضية حول إمكانية إيجاد طريقة أو خوارزمية تحدد مدى صحة أي مسألة رياضية بشكل تلقائي.
من غير ما يقصد، تورينج فتح الباب على مصراعيه لثورة المعلومات والتقنية اللي عايشينها النهاردة، وحط حجر الأساس النظري لوظيفة من أهم الوظائف: مطور البرمجيات.
فكرة آلة تورينج بسيطة جداً لكنها عبقرية:
التطور الطبيعي للفكرة دي كان ابتكار "آلة تورينج الشاملة"، وهي آلة مش بس بتنفذ أوامر بسيطة، لا دي بتقدر تقرأ وتتحكم في آلات تورينج تانية! ومن هنا ظهر المفهوم الأولي لنظام التشغيل (Operating System) اللي بيتحكم في البرامج التانية.
لغة الصفر والواحد: كيف تتحدث مع المعالج؟
في البدايات، كانت الكمبيوترات بتشغل غرف كاملة ومليانة صمامات مفرغة وأسلاك معقدة جداً. ومع ظهور الترانزستور والدوائر المتكاملة، صغر حجم الأجهزة وزادت قوتها بشكل مرعب لحد ما وصلنا للميكروبروسيسور (المعالج) في سبعينيات القرن الماضي.
المعالج بيتكون من ملايين البوابات المنطقية الدقيقة جداً، والبوابات دي بتشتغل بحالتين بس: إما بتسمح بمرور التيار الكهربائي (1) أو بتمنعه (0). ومن هنا ظهرت اللغة الأساسية للكمبيوتر: اللغة الثنائية (Binary Language).
وفي سنة 1945، وضع العالم جون فون نيومان معمارية لتصميم الحواسيب لسه بنستخدمها لحد النهاردة، وبتعتمد على تقسيم الجهاز إلى:
بما إن كتابة ملايين الأصفار والوحايد أمر مستحيل ومرهق جداً للبشر، تم ابتكار "لغة الآلة" و"لغة التجميع" (Assembly)، وهي لغات بتوفر تعليمات مباشرة للمعالج ومكتوبة مسبقاً جواه عشان تسهل استدعاء الأوامر البرمجية من غير ما نضطر ننزل لمستوى الصفر والواحد بشكل يدوي.
خلاصة الدرس ونقاط لازم تحفرها في دماغك
عشان ننهي الجزء الأول من رحلتنا دي، دي أهم النقاط اللي لازم تكون واضحة في دماغك كمطور برمجيات:
في الموضوع الجاي إن شاء الله، هندخل في الجد وهنتكلم عن المفاهيم الأساسية اللي موجودة في كل لغات البرمجة زي المتغيرات (Variables)، الحلقات التكرارية (Loops)، والجمل الشرطية (Conditionals).
شاركونا في التعليقات يا شباب: إيه أول لغة برمجة بدأتم تتعلموها؟ وهل كنتم تعرفوا قصة آلة تورينج وتاريخ نشأة البرمجة قبل كده؟
البداية من عند العبقري آلان تورينج وآلته السحرية
في سنة 1936، نشر عالم الرياضيات البريطاني آلان تورينج ورقة بحثية شهيرة جداً غيرت شكل العالم. تورينج كان بيبحث عن حل لمعضلة رياضية حول إمكانية إيجاد طريقة أو خوارزمية تحدد مدى صحة أي مسألة رياضية بشكل تلقائي.
من غير ما يقصد، تورينج فتح الباب على مصراعيه لثورة المعلومات والتقنية اللي عايشينها النهاردة، وحط حجر الأساس النظري لوظيفة من أهم الوظائف: مطور البرمجيات.
- الشريط اللانهائي: تخيل شريط ورقي طويل جداً ومقسم لمربعات صغيرة.
- رأس القراءة والكتابة: جهاز صغير بيتحرك يمين وشمال على الشريط، ويقدر يقرأ أو يكتب رموز معينة في المربعات دي.
- جدول الحالات والأوامر: الآلة بتمشي بناءً على قواعد محددة، مثلاً: لو واقف على مربع فيه الرمز (أ) وحالة الآلة هي (البداية)، امسح الرمز واكتب مكانه مسافة فاضية واتحرك خطوة لليمين.
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
التطور الطبيعي للفكرة دي كان ابتكار "آلة تورينج الشاملة"، وهي آلة مش بس بتنفذ أوامر بسيطة، لا دي بتقدر تقرأ وتتحكم في آلات تورينج تانية! ومن هنا ظهر المفهوم الأولي لنظام التشغيل (Operating System) اللي بيتحكم في البرامج التانية.
لغة الصفر والواحد: كيف تتحدث مع المعالج؟
في البدايات، كانت الكمبيوترات بتشغل غرف كاملة ومليانة صمامات مفرغة وأسلاك معقدة جداً. ومع ظهور الترانزستور والدوائر المتكاملة، صغر حجم الأجهزة وزادت قوتها بشكل مرعب لحد ما وصلنا للميكروبروسيسور (المعالج) في سبعينيات القرن الماضي.
المعالج بيتكون من ملايين البوابات المنطقية الدقيقة جداً، والبوابات دي بتشتغل بحالتين بس: إما بتسمح بمرور التيار الكهربائي (1) أو بتمنعه (0). ومن هنا ظهرت اللغة الأساسية للكمبيوتر: اللغة الثنائية (Binary Language).
وفي سنة 1945، وضع العالم جون فون نيومان معمارية لتصميم الحواسيب لسه بنستخدمها لحد النهاردة، وبتعتمد على تقسيم الجهاز إلى:
- وحدة المعالجة المركزية (CPU): وهي عقل الجهاز المسؤول عن العمليات الحسابية والمنطقية والتحكم.
- الذاكرة الرئيسية (RAM): اللي بتتخزن فيها البيانات بشكل مؤقت.
- نظام الإدخال والإخراج (I/O): للتواصل مع المستخدم والملحقات.
- ناقل البيانات (Bus): الممر اللي بتتنقل فيه البيانات بين الأجزاء دي.
بما إن كتابة ملايين الأصفار والوحايد أمر مستحيل ومرهق جداً للبشر، تم ابتكار "لغة الآلة" و"لغة التجميع" (Assembly)، وهي لغات بتوفر تعليمات مباشرة للمعالج ومكتوبة مسبقاً جواه عشان تسهل استدعاء الأوامر البرمجية من غير ما نضطر ننزل لمستوى الصفر والواحد بشكل يدوي.
خلاصة الدرس ونقاط لازم تحفرها في دماغك
عشان ننهي الجزء الأول من رحلتنا دي، دي أهم النقاط اللي لازم تكون واضحة في دماغك كمطور برمجيات:
- كل الطرق تؤدي للثنائي: أي كود بتكتبه بأي لغة برمجة، في النهاية بيتحول لتتابع من الأصفار والوحايد عشان المعالج يفهمه.
- لغة الآلة هي الأسرع: البرمجة بلغة قريبة من العتاد بتدي أقوى أداء ممكن، لكن تكلفتها وصعوبتها في الكتابة والصيانة عالية جداً.
- نظام التشغيل هو المايسترو: ببساطة، هو البرنامج الأساسي اللي بيدير وبيتحكم في كل البرامج التانية على جهازك.
في الموضوع الجاي إن شاء الله، هندخل في الجد وهنتكلم عن المفاهيم الأساسية اللي موجودة في كل لغات البرمجة زي المتغيرات (Variables)، الحلقات التكرارية (Loops)، والجمل الشرطية (Conditionals).
شاركونا في التعليقات يا شباب: إيه أول لغة برمجة بدأتم تتعلموها؟ وهل كنتم تعرفوا قصة آلة تورينج وتاريخ نشأة البرمجة قبل كده؟