[للنقاش]: كيف تم تطوير أول لغة برمجة عرفتها البشرية؟

19

التعليقات

10

انت طرحت أسئلة كبيرة جدا و اجابتها تتطلب كتب!

باختصار,

المكون الاساسي فى الحاسوب هو المعالج, و فكرته الاساسية انه يدخل اليه مجموعة من النبضات الكهربائية و تترتب عليها نتائج ثابتة بشكل أخر! ازاى؟ عبر ترتيب و تصميم معين من دوائر الAND و الOR الخ.

المعالج هو مجموعة من هذه العناصر المرتبة بشكل ما لتأخذ ادخال مثلا 0101010111011 التى أفترض مثلا انها امر اضافة الرقم 10.

حول المعالج هناك دوائر أخرى (هى نفسها بداخلها معالجات اخرى) بعضها ينقل اليه المعلومات و أخرى يستخدمها هو ليخرج اليها المعلومات.

فمثلا عندما تضرب المفتاح A فان الكيبورد (و التى بداخلها معالج لكنه بسيط و صغير) بارسال رقم الى المعالج (اعتبر ان الوصلة مجرد أسلاك و عليه يرسل مجموعة نبضات تدخل الى دوائر ترانزستورات المعالج لتمشى فى مسارات معينة), المعالج يتلقى نبضات كهربائية عبر المنفذ (20 مثلا), نظام التشغيل هنا يعرف ان الكيبورد هى المنفذ 20 و ان مجموعة النبضات التى تم بعثها تعنى الحرف A, فيقوم باستخدام المعالج و ليبعث الى الشاشة عبر منفذ أخر (متصل بكارت الشاشة الذى هو تقريبا حاسوب بحد ذاته له معالج و ذاكرة و مروحة تبريد احيانا) ليطبع حرف A على الشاشة.

الموضوع معقد و لكنه تطور ببطء و عبر عشرات السنين لنصل الى ما نحن عليه الأن.

أما كيف ولدت اول لغة برمجة, فينبغى ان تعرف شيئا بسيطا للغاية, لغات البرمجة تم تصميمها قبل المترجمات!!

بمعنى؟ انك فى الستينات مثلا كنت تكتب برنامج الfortran على الورق, ثم تقوم بترجمته الى لغة التجميع على الورق أيضا, ثم تقوم بترجمة لغة التجميع الى لغة الالة و تقوم بادخاله الى الحاسوب, فلم يكن هناك مترجمات و لا مجمعات.

حواسيب أبل 1 و أبل 2 الاولية قام ستيف ووزنياك بكتابة مفسر بيسك و برامج الادخال و الاخراج الاساسية بطريقة يدوية على الورق و قام بتجميعها يدويا.

مع تطور الحواسيب استطعنا ان نجعل هذه المهمة ألية.

فان الكيبورد (و التى بداخلها معالج لكنه بسيط و صغير) بارسال رقم الى المعالج

اعتقد هذه تسمى embedded chip بالنسبة للكيبكور فهي Analog في الاساس لكن الشريحة هي من تقوم بتحويل الاشارة الى ديجيل (بعد اغلاق الدارة الكهربائية لز اللوحة) لا اعرف تفاصيل لوحة المفاتيح لكن اعتقد ارسال النبضات يتم عبر سلك واحد (يعرف بالمنفد) و اشارة المقاطع هي من تشير الى انتهاء ارسال الكود الثنائي (في الغالب يكون بحجم word او 16 bit) و تكرار الضغطات تتكون من تكرار اشارات المقاطة IRQ

أعتقد امور مثل هذه كانت تسبب في مشاكل في انظمة التشغيل البدائية (تخيل الوضع لو ضغطت على جميع ازرار لوحة المفاتيح مرة واحدة )

من الطريف ان فى بعض الحواسيب المنزلية فى الثمانينات كانت دوائر الملحقات تعمل بنفس المعالج الاساسى للحاسوب 6502 لأنه كان معالج بسيط و رخيص! للأسف لم نرى كيف سوف يكون تطور هذا المعالج لأن الشركة الصانعة كانت جزءا من كومودور و أفلست معها! لربما كان لدينا معالجا رخيصا و اكثر بساطة من انتل!

صدقني يا أخي قد كنت كتبت لكـ أكثر من 3صفحات شرح للموضوع

ولكن بضغطة زر خاطئة علي BackSpace عُدت للصفحة السابقة وتم حذف كل شيء.. مشكلة رهيبه في حسوبIO.

سأكتب ملخص الشرح مرة أخري.

في البداية الحاسوب مجرد أله كهربية لا تفهم سوي

0=لا يوجد تيار كهربي

1=يوجد تيار كهربي

حسنناً كان هذا كل شيء في الماضي وكانت كتابة برنامج بهذه اللغة شيء صعب جداً.

وهذا كان سبب رئيس لظهور التجميع AssemBly

وبعدها تطورت لغات البرمجة بشكل أفضل حتي وصلنا للغات المستوي العالي HLL.

مثل ++C و Java و #C....

كل شيء حتي الأن واضح..

لنفترض أنك ضغطت علي حرف "A".

ونحن ذكرنا أن الحاسوب لا يفهم سوي 01.

ماذا يحدث هنا؟ كيف سيفهم الكمبيوتر هذا الحدث؟

ببساطة سيتم ارسال اشارة كهربية للحاسوب تحمل 1000001.

وعلي الأرجح يأخد الحاسوب هذه الاشاره ويبحث عنها في قاموس خاص به.

وبعدها يأخذ القيمة المطابقة للتيار1000001 وهي حرف "A".

ونفس الموضوع عمد الضغط علي B يتم ارسال تيار 1000010.

و C نفس الشيء 1000011..

@amdjed_forever @Rashadoo

تفضل لو لديك أي استفسار أخر..

اخي كلي شيء متعلق بالكترونات يمكن انجاز بالكترونيك الة حاسبة يمكن بالكترونيك انجاز ميزان للقيم او حاسب لزوايا

قبل ظهور الحاسوب الإلكتروني، كان هناك ما يعرف بالحواسيب الميكانيكي (إن صحّ تسميتها بالحواسيب)، مثل آلة باسكال، أو محرك الفروق، أو المحرك التحليلي، وهذا هو شكل الأخير:

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

ما يهمنا في ذلك أنه أصبح بالإمكان تكوين ثلاثة بوابات منطقية (يمكن بهن تصميم أي دائرة رقمية): بوابة "و"، وبوابة"أو"، وبوابة العاكس. فما ذكرته من قواميس، وأيضًا العمليات الحسابية، وتخزين البيانات (قد تحتاج إلى مكثفات في حالات، ولا تحتاجها في حالات أخرى).


المصادر:

بحث بعنوان: برمجة وتصميم نظام تشغيل أقرأ.

العناصر الإلكترونية، المؤسسة العامة للتعليم الفني والتدريب المهني، المملكة العربية السعودية.

ومصادر أخرى.

شكرا اخي

سبق اجبت على سؤال مشابه (مع العلم اني كنت مهووس هاردوير في فترة ما لكن تركته لانه لا توجد لها مستقل في دولنا العربية )

نتذكر ان سؤال مشابه جائنا في الامتحان النهائي في سنة التخرج . و لو لم تخني الذاكرة لرسمت لك المخطط المطلوب منا رسمه في الامتحان.

طلبعا السؤال كان تصميم دارة معالج بناء على متطلبات او خطوات معين (لا اذكرها ايضاً) . ولكن بنية تركيب المعالج الاساسية لم تتغير مند تطوير اول معالج او كمبيوتر في التاريخ , الاختلاف في التطويرات لتسريع المعالج و الاستفادة من تنفيد اكثر من تعليمة في دورة المعالجة الواحدة .

المهم في اي كمبيوتر او جهاز ديجيتل (يحوي معالج) هناك زر اسمه Reset (ليس Power on ) يقوم بتصفير دورة المعالج ليبداء قرائة قيم الذاكرة و ال Registers من اول و جديد .

طبعا المعالج (الغبي) يعتمد على الملحقات الموجودة في قلب تصميم مثل Registers و accumulator (المكدس و هو ذاكرة بدائية تقوم بتخزين الموقت للتعليمات و تجلب الى المعالج بناء على تسلسلها في طابور المعالجة )

و لأن كثير من المعللومات افتقدها الآن اجيب على سؤال الصعب " ما هو الذي يجرى عند مرور التيار الكهربائي داخل هذه اللوحات الخضراء "

اللوحات الخطراء التي تراها مرتبطة كلها بالمعاج سواء بشكل مباشر او غير مباشر . و المعالج نفسه (رغم كل التعقيدات) مبني على اساس بسيط للغاية

النظرية الاساسية في عمل المعالج هو تنفيد المهام على شكل دورات (او نبظات) و الجزء المسؤال إنشاء النبظات لباقي ملحقات المعالج يسمى

مولد نبضات Clock generator وضيفته بسيطة للغاية توليد إشارة كهربائية بقيمة فولتية +5 او 0 عدة مرات في وقت محدد في الثاني .

حيث تصبح الاشارة +5 V مثلا مقابلة للعدد 1 (إفتراضياً) و الاشارة 0 V مقابلة للعدد 0 . و لهذا السبب كل الكمبيوترات الموجودة تستخدم نظام العد الثنائي في تنفيد التعليمات .

الآن نرجع لمعالجنا البائس المعالج توجد به عدد من المسجلات Registers (و هي دوائر الكتورنية بالطبع) و وحدتين إلكترونين لا ثالث لهما (على حد علمي)

وحدة الحساب وو حدة المنطق [البعض يجمعهما في وحدة واحدة ] . المهم وحدة الحساب تقوم بالعمليات الحسابية الأسيسية [في الواقع هي تقوم بعملية حسابية واحدة الجمع فقط خخخخ لأن الحاسوب أغبى مما تتصور] . المهم لتنفيد العمليات الحسابية الاكثر تعقيدا (من الجمع) لجائ مطوري الحاسوب الأوائل الى طريقة إلتفافية حتى تتم عمليات الضرب و الطرح و القسمة (طبعا المعادلة ضاعت في الزمن لا تحظرني الآن ربما احد الاخوة يذكرنا بها )

الجزء الاهم في العالج هو بوابة المنطق [لأنها اساس عبقرية اختراع الكمبيوتر] بوابوة المنطق تحوي على دارات عدة لتنفيد المعمليات المنطقية (بناء على البرنامج المرسل من خلال ايعازات Assembly ) طبعا المقارنة المنطقة البسيطة هي أكبر من > او اصغر من < او = المهم الدارات هذه مصممة بشكل جيد بحيث ترجع الاشارة 0 في حالة False و 1 في حال True و حتى تكون الامور اكثر امتاعا هذه الدارات مصممة الكترونيا لقبول عبارات منطقية مثل OR و AND و XOR و NOT و NAND إلخ .

المسجلات Registers حاليا لا اذكر دورها بالضبط لكن اللي اتذكرها انها كانت تستخدم في العمليات الحسابية كمخزن مؤقت لتخزين الكلمات Words و الايعازات التي يرسلها برنامج Assembly اذكر اننا كنا نقوم بمقارنات منطقيا على تتطابق نصوص معينة و تتبع مسار تنفيده خطوة خطوة عبر المعالج (طبعا كل شيء مكتوب على شكل صفر و واحد 010101010 إلخ ) (و الله كانت أيام سودة بعيد عنك )

المهم الضغط على زر التشغيل Power on يفعل دارات المعالج و تبداء الدورة الأولى للمعالج و على حسب التصميم الداخلي من المصنع يبحث المعالج عن التعليمات الموجودة في شريحة BIOS طبعا هذه الشريحة تحمل نظام التشغيل الأساسي BIOS و هذا النظام بإختصار يقوم بتنظيم و ربط مكونات الحاسوب عبر المعالج و حجز عناوين الذاكرة لبرامج التشغيل الاساسية و البدائة جدا للأجهزة و ملحقات الحاسوب بداء من الكيبورد و الشاشة و لاحقيا الهارديسك محرك الاقراص DVD إلخ

الى أن يبداء نظام التشغيل الإضافة و يستلم مهام تشغيل الجهاز يبقى نظام BIOS في القيام بدوره في إبقاء الجهاز يعمل في إنتظار إيجاد مسار الإقلاع لنظام التشغيل النهائي من القرص الصلب او من DVD او حتى عبر الشبكة .

طبعا الخطوات هذه تنطبق على جميع الاجهزة الرقمية Digital مهم كان نوع المعالج المستخدم فيها فكلها تعامل بالاصفار و الاحاد و الي هم في الاساي إشارة كهربائية مولدة من جهاز اسمه Clock generator طبعا لك ماكتبته من ذاكرتي الخاص و هناك اشياء كثيرة ناقصة لاني لخصت منهج سنة كاملة في رد واحد فالبتاكيد هناك تفاصيل أوسع بكثير .

  • هكذا كان المُبرمجون الأوائل :)
  • لا توجد لغة قبل لغة التجميع (الأسمبلي) غير لغة الآلة الـ 0 و 1

  • باختصار شديد كل شيء يبدأ في التدرج والتطور حسب الحاجة وما تراه الآن هو تراكم معرفة حوسبية على مر الزمن، بدأ التعامل بارسال اشارات كهربية تم اصطلاح الرقم 0 كفتاح كهربي مُغلق (عدم مرور تيار) و 1 مفتاح كهربي مفتوح(مرور تيار كهربي) وكان التعامل يعتمد على تلك المفاتيح وتم تطوير عمليات الإدخال بحيث تكون أسهل لأن التعامل مع الحاسب بلغة الآلة به كثير من الأوامر المُكرر التي تُستخدم باستمرار ولهذا كانت الحاجة التي تفرض نفسها باستمرار والتي أدت لاصلاح مجموعة كلمات كل كلمة(امر) مكون من 0 و 1 عُرفت تلك اللغة باسم لغة التجميع واسمها يدل عليها فهي عباره عن مجموعة كلمات تجمع في طياتها مجموعة اوامر لإختصار الكتابة باستخدام الـ 0 و 1 مُباشراً، وببساطة يتم استبدال كل امر في لغة التجميع بما يدل عليه من الـ 0 و 1 فيظهر لنا البرنامج في صورته النهائية عبارة عن 0 و 1 صرف.

  • وهكذا توالت تطويرات اللغات البرمجية بنفس مبدأ الحاجة الذي يفرض نفسه، وتم اصطلاح تعليمات برمجية يتم تحويلها إلى أوامر لغة التجميع ومن ثَم إلى لغة الآلة وهكذا ...

  • لتفهم الأمر بدقة وبشكل أكبر عليك بدراسة علم الحاسب من البداية ودراسة النبائط الإلكترونية المكونة له وكيفية عملها من الدوائر الكهربية المنطقية وعمل المعالج ودراسة معماريته وماهيتها وكيف تؤثر معماريته على سير العمليات التي تجري عليه وكيفية استقباله للعمليات وكيفية معالجتها وتنفيذ أوامر بسيطة مكونة من 0 و 1 ودورة معالجتها على الحاسب.

بالنسبة للصورة: هذا ليس صحيحًا تمامًا!

فلم تكن لها لوحة مفاتيح أصلًا، فهي كانت بهذا الشكل:

من باب التسلية وتقريب الصورة ألم تلحظ الإبتسامة :)

لو كنت جاهلًا لرسخت تلك المعلومة في رأسي، ولن ألحظ حينها أن الإبتسامة تعني مزحة!

لكن لو كان عندي خلفية عن الموضوع فسأعلم أنها مزحة. وفي هذه الحالة صاحب الموضوع ليس لديه خلفية.

  • أظنني أعقبتها ببعض من الشرح يُزيل ما تحدثت عنه من فهم خاطئ لشكل الحاسوب الأول.

بل هناك ما يرسخه:

تم اصطلاح الرقم 0 كفتاح كهربي مُغلق (عدم مرور تيار) و 1 مفتاح كهربي مفتوح(مرور تيار كهربي) وكان التعامل يعتمد على تلك المفاتيح

  • وهل هذا وصف لوحة مفاتيح؟ هذا وصف أبسط الدوائر الدوائر الكهربية المنطقية!

تلك الصورة + الكلام الذي ذكرته = أن الحواسيب الأولى هي كما في الصورة.

لم أعلم بتلك المُعادلة من قبل :) أنت من كتبتها اعتماداً على ما فهمته!

في أغلب مناهج الحاسب داخل المُقدمة يتم الحديث عن الحواسيب الأولى وضخامتها وصور حقيقة لها مما يرسخ الصورة الحقيقة لتلك الحواسيب ولا أظن أحد داخل أو خارج مجال الحاسب لم تمر عليه تلك المُقدمة، بالإضافة لأن الصورة رسومية وليست صورة حقيقة.

ومن قال لك إنه يدرس الحاسوب، فلو كان فعلًا، لما سأل هكذا أسئلة. فهو (على ما أظن، وصححني إن أخطأت) رجل بسيط مثلي يريد أن يعرف، وليس له علاقة بأي منهج حاسوب.

  • معلومات كهذه -مقدمة الحاسب والحواسيب الأولى- لا تحتاج تخصص حاسوب لدراستها فهي تُدرس في مراحل التعليم الأساسي.

نقلاً عن @ABU_HUSSAM :

لدي خلفية سابقة، ولكنني لم أرغب بالرد، لعدم تغيير مسار الموضوع أو الخروج من مساقه!

وقد ذكرت أيضاً:

ولا أظن أحد داخل أو خارج مجال الحاسب لم تمر عليه تلك المُقدمة.

إجابة الأخ @فادى هي الأشمل و الأدق من الناحية العلمية و التقنية و قد غطت كل شيء، إلا أني أريد أن أضيف أن الموضوع له جانب علمي يتعلق بعمل الكهرباء في المواد و لشرحه أحتاج شرح كثير من المبادئ في فيزياء الكهرباء لكن لنتخطى هذا الآن. في الواقع ما نتعامل معه في الحاسب هو المعالج، و الأوامر تعطى لجزء من المعالج يسمى وحدة الحساب و المنطق أو Arithmetic & Logic Unit أو ALU. الأوامر التي تعطى له سلسة من الأصفار و الآحاد و يتبعها سلسة أخرى من الأصفار و الآحاد لكن للبيانات المراد معالجتها. بعض التفاصيل ذكرتها في أحد المواضيع في مدونتي.

-1

معك حق ولا تنسى نفسك @ABU_HUSSAM

هناك مساق دراسي إسمه architecture des ordinateurs/Computer architecture

إذا تبعته ستجد إجابة كل الأسئلة ، يجب أن تلم قليلا بالإكترونيات .

الأمر عبارة عن دوامة كبيرة :p قطع الhardware تتشكل من ملايين ما يعرف بال transistors هذا الترانزيزتور يحمل أحد القيمتين و هي إما 0 أو 1 الاشارة السالبة تعني 0 و منه عدم مرور اشارة كهربائية ,,, الاشارة الموجبة تعني 1 وهي تعني مرور اشارة كهربائية في الحقيقة الأمر أكبر من هذا بكثير

تخيل معي لو أنك مع أحدهم و لا تفهم لغته و هو كذلك لا يفهم كذلك لغتك !! كيف ستحاول التخاطب معه ,,, الاجابة هي عبر الاشارات ( signal ) و من هنا أتت فكرة الsignal و ال 0 و ال 1 و ,,,,,

لكن لكي تتكون لك فكرة بسيطة عن الأمر اليك هذا المقال على ويكيبيديا

البرمجة هي ناتج ذكي لتطور الالكترونيات ,, نعم اعني ذلك حرفيا !

عندما نخوض بعض الصراعات في صناعة خطوط الانتاج و الالات الصناعية او اي ريبوت الكتروني بشكل عملي سنجد انه امامنا حل من اثنين !

plc || ما يسمى "بادي دايكرام"

انت تبحث عن اصل الاشياء فلنكف النظر عن البي ال سي لانه كمبيوتر مصغر وبسيط ولكنه معقد لنفهم المبدا ! .. سنتجه نحو تصميم الاجهزة بالادوات والقطع البسيطة "بادي دايكرام" .. ان كنت لا تجيد البوابات المنطقية فتعرف عليها انها بسيطة !

حسنا كل هذا بعيد عن الاجابة التي تحتاجها رغم انه يحتويها ..

بدأت القصة بتصميم هذه الدارات البسيطة بدون برمجة ثم تطور الامر عند الحاجة للتعديل عليها ووضع زر او مقبض للتعديل على عملها ثم تطور الامر اكثر لعدة ازرار لاحتمالات اكثر و وصول اكثر لكن لتلافي الخطأ وتسهيل الاستخدام تم اضافة مصابيح صغيرة .. ثم تم فصل وحدة المعالجة للتخاطب مع الالة حيث تم اضافة الشاشات و تقليل عدد الازارا .. لكنهم احتاجو للتعديل ايضا ! فقررو صنع جزء ليحفظو عليه الاوامر وناتج حالات تلك الازرار "المدخلات" بجانب وحدة المعالجة وكما هو حال اصل هذا التطور من خلال البوابات المنطقية 0 او 1 تم بناء وحدات التخزين لان المعالج يعتمد على ذلك ايضا فالاصل واحد ! ثم تطورت المعالجات وبدأ المطورين بالشعور بصعوبة كتابة البرامج بوحدة التخزين بملىء تلك الفراغات الكهربائية و ترك بعضها ! فحددو جزء من وحدة المعالجة يتم من خلاله ادخل اوامر المعالجة بشكل ابسط .. حيث ان هذا الجزء يحول لغة الاسيمبلي للغة الالة الماشين ويرسلها لوحدة التخزين ليتم استخدام نفس الالة بتطبيقين مختلفين تماما ..

اعتذر عن الخروج عن المصطلحات التي لا اجيدها اصلا ولكني اعبر عنها بوجهة نظري لاوصلها لك بالشكل الصحيح .. لاتنسى البحث عن البوابات المنطقية and , or , not ان كنت لا تجيدها ^_^

اخي انا ايضا لدي الكثير من التساؤلات حول لغات البرمجة وهي

-لما لم يستعملوا اللغات العادية في انشاء لغات البرمجة

-لما الحاسوب يفهم 1 و 0 فقط

-نفس سؤالك

-كيف يتم انشاء لغات البرمجة

_ماهو الصدار الاحدث xhtml5 او html5 وبأيهما علي ان ابدأ

-لما الحاسوب يفهم 1 و 0 فقط

لانها تمثل وجود نبضة كهربائية او عدم وجودها

شكرا اخي

شكرا اخي

اخي توجد xhtml 5 حسب موقع

كما توجد html 5.1 صدرت في مارس 2016

-لما لم يستعملوا اللغات العادية في انشاء لغات البرمجة

لما لا تذهب إلى السيارة وتطلب منها (بلغة عادية) أن تذهب بكل إلى المكان الفلاني، وحينها تذهب بك السيارة، بدلًا عن أن تقودها بنفسك؟!

-لما الحاسوب يفهم 1 و 0 فقط

كما قلت في تعليق سابق الحاسوب لا يفهم، بل يستجيب. راجع تعليقي على الموضوع.

-كيف يتم انشاء لغات البرمجة

ببرمجتها مثل أي برنامج.

أول لغة برمجة كانت لغة الآلة و التي تتكون من مجموعة من الأصفار و الآحاد و التي تعود لبنية وحدة التحكم داخل المعالج، بالنسبة لطريقة الإدخال فبالتأكيد كانت معقدة و أول حاسوب استعمل فكرة الاكواد كان system/360

أتساءل هل فعلاً هنالك لغة إسمها 1 و 0 يعني لغة الباينري؟ هل تم تطويرها؟ وكيف ذلك؟

ليست هناك لغة ثنائية، بل هناك نظام عدّ ثنائي، هذا النظام إما أن يستخدم كرمزًا لعملية ما، أو لقمية لعدد ما. وهذا الأخير على الأرجح تعرفه، لكن ماذا تعني رموز العمليات، أولًا وقبل الخوض في هذا لا بد أن نعلم أن الإشارة في الأنظمة الرقمية تنقل بطريقتين: تزامنية، ولاتزامنية؛ ففي النظام التزامني تنقل البيانات بشكل متتالي؛ أي لو كان عندنا سلك واحد وأردنا أن نرسل هذا الرقم 1011: سنرسل 1 ثم 1 ثم 0 ثم 1، وقد يعكس الترتيب إذا نظرنا إلى الرقم من الجهة الأخرى، ويعتمد الفاصل الزمني بين كل قيمة وأخرى، على تردد الساعة التزامنية. ولنقل نفس الرقم في النظام غير التزامني فلا بد عندها من وجود أربعة ممرات (أسلاك) ينقل في الأول 1، وفي الثاني 1، وفي الثالث 0، وفي الرابع 1، وذلك في نفس اللحظة.

نعود مرة أخرى إلى رموز العمليات: يكون لكل معالج مسارات (أرجل)، هذه المسارات تخدم أغراض متعددة، ما يهمنا فيها هي مسارات البيانات (ويمكن إفراده، فيقال: مسار البيانات)، ومسارات العنونة، عدد مسارات البيانات يحدد حجم البيانات التي يتلقها المعالج في النبضة الواحدة، وعدد مسارات العنونة يحدد حجم الذاكرة الذي يمكن أن يعنونه. وعند تنفيذ اي برنامج على المعالج يطلب المعالج تعليمات البرنامج بشكل متسلسل (ما لم يأت أمر قفز)، تعليمات البرنامج هذه تكون بشكل شفرة (أرقام) ثنائية، هذه الأرقام يستقبلها المعالج ويحدد نوع الأمر المقصود من وراء تلك الشفرة، وذلك بستخدام حشد من الدوائر المنطقية، هذه الدوائر أساس بنئها ثلاثة بوابات: بوابة "و"، وبوابة "أو"، وبوابة العاكس. وفي العادة هذه العمليات التي ينفذها المعالج تكون عمليات أولية، مثل: جمع عددين، نقل قيمة إلى منطقة في الذاكرة، المقارنة بين قيمتين، إلخ... .

كيف فهم الحاسوب الـ 1 والــ 0 ؟ وهل كان هنالك كيبورد (لوحة مفاتيح) لكي يتم إدخال الأوامر إلى الحاسوب؟

الحاسوب لا يفهم، بل يستجيب!، فمثلًا المصباح لا يفهم أن عليه أن يضيء عندما يوصله بالتيار الكهربائي، بل هو يضيء لأن التيار أضاءه، وهكذا الحاسوب.

وأما عن هل كان هنالك لوحة مفاتيح، لا أظن، وحسب ما أذكر، فقد استخدمت البطاقات المثقوبة في بداية ظهور الحواسيب، حيث تُدخل هذه البطاقات على أجهزة تقرأها وتحولها إلى إشرات كهربائية، ترسل هذه الإشارات إلى المعالج، ومن ثم ينتظر صاحب البرنامج إلى أن تظهر المخرجات. هذا حسب ما أعلم.

عني هل طّورت لغة البرمجة عن طريق الكيبورد؟ أم كان هنالك طرق أخرى؟

كما ذكرت سابقًا كانت هناك قائمة برموز التعليمات تكون بالمعالج (هذه التعليمات لا تبرمج، بل تصمم كجزء من معمارية المعالج)، ولم يكن هناك لغة برمجة، بل تعامل مباشر مع رموز العمليات.

أنا أتحدث عن شيء أعمق هنا بكثير عن كيف تنتقل الإشارة الكهربية من الزر هذا (مثل حرف A) وكيف تتفسر داخل الحاسوب؟ وكيف تم بناء ذلك القاموس الذي تحدثت عنه؟ وكيف يفهم الحاسوب أن 1000001 هي حرف A بمعنى كيف يفهم عندما يمر التيار (1) ثم يتوقف (0) أن يتم تنفيذ أمر معين، سواء طباعة حرف على الشاشة أو عمل مهمة ما؟ وكيف تنتقل المعلومات من الـMotherBoard إلى الشاشة؟ وكيف تنتقل الإلكترونات وتتصرف عند المستوى الإلكتروني (شحنات كهربية)؟

المسالة طويلة جدًا، لكن ابحث عن مشروعين: "نظام تشغيل إقرأ"، و"الدراسة التحليلة لبناء، وتصميم نظام تشغيل للحاسب الشخصي". ففيهما كثير مما تبحث عنه. وهناك أكثر لو بحثت في المكتبتات.

تحتاج لدراسة

Computer Architecture

هذا الكورس سيجيب عن كل تساؤلاتك


برمجة

مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.

24.9 ألف متابع