المتغيرات 101: معرفة جهاز الكمبيوتر الخاص بك

للأسف ، رأيت أنه لا يرغب الكثير في تعلم البرمجة لعام 2018 ولكن حتى لو كنت قد قرأت فقط المادة السابقة شخص وبعد قليل من الوقت قادر على إرسال التزام بمشروع برمجيات حرة ، سأكون راضيًا عن عملي 🙂

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

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

بت

أعتقد أن هذا موضوع أتطرق إليه دائمًا عندما أكتب عن البرمجة ، إنه بالتأكيد شيء يسحرني وقد ساعدني ذلك على فهم أشياء كثيرة ، سأحاول الآن أن أشرح قليلاً كيف هي ، وكيف تتم قراءتها ، و ما هم ل 🙂

فكر في مفتاح الضوء ، عندما تكون الدائرة مغلقة ، يكون لدينا 0 على الشاشة ، عندما نقوم بتغيير موضع المفتاح ، لأن أ 1🙂 بسيط أليس كذلك؟

الآن أ 0 وعلى 1 يمكن أن تعني أشياء كثيرة ، كل هذا يتوقف على الإبداع الذي تأخذه ، لنفترض أنني أريد أن أعرف ما إذا كان شخص ما سيذهب إلى الشمال أو الجنوب ، 1 يمكن أن تعني الشمال و 0، بالتأكيد ، لنفترض أنني أريد أن أعرف ما إذا كان شخص ما رجلًا أم امرأة ، 1 يمكن أن يكون رجلا و 0يا امرأة 🙂. الآن أريد أن أعرف ما إذا كان هذا الشخص صغيرًا أم كبيرًا (> 22) ، 0 يمكن أن تعني الشباب و 1، أعلى. دعنا نتخيل ... هل لديك أي حيوانات أليفة؟ 1 سأقول نعم ، بينما 0 سأقول لا الآن أريدك أن تقرأ معي السطر التالي:

1001

هذه هي الطريقة القصيرة لقول ...

Una jóven mujer de no más de 22 años se dirige al norte acompañada de su mascota.

وهو مختلف تمامًا عن:

0110 o Un hombre con más de 22 años de edad se dirige solo hacia el sur.

بايت

الآن دعنا نذهب خطوة أخرى إلى الأمام ، دعنا نتعلم كيفية قراءة البايت. البايت هو تسلسل مكون من 8 بتات ، تقرأ من اليمين إلى اليسار وكل منها 1 يمثل قوة 2 رفعت إلى n حيث n هو موضع البت. نظرًا لأنها تبدو صينية ، فلنضع مثالًا صغيرًا 🙂

01001011 لدينا هذا البايت ، والآن سننتقل من اليمين إلى اليسار (<-) سأضعها من أعلى إلى أسفل لأتمكن من كتابة معناها:

1: البت عندما تكون في الموضع 0 يشير إلى أن لدينا 2 التالية مرفوعة إلى الصفر أو 2^0. هذا جيد نعرفه يعادل 1.

1: البتة الثانية ، الآن الموقف 12^1 وهو نفس القول 2

0: بت ثالث ... يجب أن يكون هذا 2^2، ولكن نظرًا لعدم تشغيله ، فسنقوم بتركه 0

1: بت رابع، 2^3 u 8 ؟؟؟؟

0: كمثل 0

0: آخر 0

1: الآن نحن في 2^6 o 64

وأخيرا 0 ، نحن نعلم بالفعل ما يعنيه ذلك 🙂 الآن سنضيف نتائجنا ومقارنتها بالجدول التالي 🙂 لدينا 75 لذلك دعونا نبحث عنه في العمود عشري وسنرى ما يظهر في فحم

نتيجة الصورة لجدول أسكي

لدينا واحدة K!! تهانينا ، أنت تعرف بالفعل كيف تقرأ بالثنائي 🙂 ولكن ربما يكون الأكثر حكمة قد لاحظ أننا حصلنا أيضًا على رقم عشري ، وأن له حدًا (عندما تكون جميع القيم 1) تم العثور على هذا الحد في الرقم 255.

كلمة

الآن سيخبرني أكثر من واحد ، ولكن ماذا لو كنت بحاجة إلى رقم أكبر من 255؟ أو أين يمكنني أن أجد شخصيات أخرى مثل اليابانية؟ حسنًا ، الإجابة بسيطة ، دعنا نضعها معًا 2 bytes. الآن بعد أن أصبح لدينا اثنان ، فإن العدد المحتمل للتوليفات التي لدينا هو 2^16 o 65536 النتائج المحتملة ، مثل 0 واحد من هؤلاء ، أقصى حد ممكن هو 65535. هل هذا الرقم يدق جرسًا لأي شخص؟ تذكر الحد الأقصى لعدد المنافذ على نظام لينكس؟ أترك لهم واجباتهم المدرسية

كلمة مزدوجة ورباعية

لمزيد من الرياضيات ، توجد أيضًا تنسيقات محددة ، مثل كلمة مزدوجة تحتوي ، كما قد يتصور الكثيرون بالفعل 2 word o 4 bytes (o 32 bits) من المعلومات ، مثل قول:

11111111111111111111111111111111 أو 0 a 4 294 967 295

في هذه المرحلة ، سيتساءل الكثيرون عما يحدث للأرقام السالبة ، أي في مكان ما يجب التفكير فيها ، أليس كذلك؟ لكي تتمكن من تخزين رقم سالب ، اختار مطورو المعالج احتلال البت الأول على اليسار كقيمة تسجيل. هذا يعني أنه إذا كان البت الأول هو 0 نحن نتحدث عن رقم موجب ، ولكن إذا كان كذلك 1 لدينا سلبي. الآن انظر لماذا البتات مميزة جدًا ، يمكن أن تكون ما تريد 😀

لكن من الواضح أن هذا يتركنا في موضع واحد أقل لإجراء الضرب! لذلك لدينا0 a 4 294 967 295 يصبح:

-2,147,483,648 a +2,147,483,647

الآن ، الكثير منا لديه بالفعل 64 bits، وهذه هي قيمة رباعي كلمة، يمكن أن يكون لدينا قيم تتراوح من 0 a 18 446 744 073 709 551 615. هذا رقم كبير 🙂

لماذا 8 بت؟

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

مع مرور الوقت وحتى اليوم ، طورت المعالجات القدرة على تحريك 16 بت و 32 بت و… 64 بت.

ما علاقتها بالكتابة؟

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

دعونا نرى ما يحدث إذا حاولنا كسر إحدى القيم:

خاصة. كريستوفر دياز ريفيروس

على اليمين لدينا قيم الملف limits.h وعلى اليسار اتخذنا إحدى هذه القيم (unsigned short int) وقمنا بتعيين رقم أعلى من الرقم المقابل. نتيجة لذلك ، يحذرنا المترجم من أننا نسيء استخدام الذاكرة لأن الصيغة الثنائية لـ 66666 لا يمكن أن يتناسب مع الشكل الثنائي لـ 65535. هذا يقودنا إلى درس في أداء عندما نبرمج ، إذا كانت قيمتك لن تنمو كثيرًا بمرور الوقت ، أو إذا كنت لا تتطلب قيمًا كبيرة مثل تلك الخاصة بـ مضاعفة o رباعي كلمةيؤدي استخدام النوع الصحيح إلى تقليل حجم الذاكرة المطلوبة بواسطة وحدة المعالجة المركزية ، مما يعني زيادة سرعة الحصول على البيانات إذا تم حسابها جيدًا.

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

خاصة. كريستوفر دياز ريفيروس

كما ترى ، ليس علينا أن نشرح لمترجم بايثون نوع المتغير لدينا ، لأنه يهتم بتعيين نوع وتخزينه في الذاكرة 🙂

اعرف متغيراتك

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


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   لويس قال

    مكتوبة بشكل جيد وموجزة وواضحة ، وفي نفس الوقت مثيرة للاهتمام لجميع الجماهير. عمل جيد.

    1.    كريساد قال

      شكرا جزيلا لك تحياتي 🙂

  2.   يوحنا يسوع قال

    شرح رائع. أنت آلة.

    1.    كريساد قال

      شكرا لك

  3.   روبين قال

    شرح جيد جدا شكرا

    1.    كريساد قال

      شكرًا لك على قراءتها بالكامل 🙂

  4.   دييغو قال

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

    1.    كريساد قال

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

  5.   بيدرو قال

    أنت معلم ممتاز وكريم جدًا لتدريس ما تعرفه. مبروك وشكرا.

    1.    كريساد قال

      شكراً جزيلاً لك بيدرو still ما زلت أبحث عن أماكن للتدريس ، للأسف هنا في بيرو يكون الأمر صعبًا عندما يكون لديك شهادة مهنية تقنية فقط ، لذلك أنا الآن أبحث في إمكانية مواصلة دراستي الجامعية هنا أو حيث يمكنني ذلك أو حتى التقدم للحصول على درجة الماجستير في الأجنبي ، من يدري ، ربما قريبًا يمكن إعطاء شيء كهذا 🙂 لكن التدريس بالتأكيد شيء يجعل يومي 🙂 تحياتي

  6.   شيء قال

    لم أقرأ شرحا أفضل للموضوع ، المثال الأول رائع

    على الرغم من أنني لم أسمع هذه الكلمة (مثل متغيرات 16 بت) أو كلمة مزدوجة أو كلمة رباعية

    بغض النظر عن "أنا أبرمج بالفعل" ، فإن المنشورات مثيرة للاهتمام. إذا كان هناك أي مشكلة ، فإن المنشور يجب أن يستخدم C (limits.h) كمثال للأحجام المتغيرة ، C لها أقل المواصفات المحددة الموجودة

    1.    كريساد قال

      مرحبًا بشيء 🙂 شكرًا جزيلًا لك ، جئت بالمثال على الطريق 😛 لأنه بالتأكيد بيانات معروفة لأولئك الذين قرأوا القليل من التجميع ، وهذا ما يفهمه المعالج 🙂 هاهاها بالتأكيد C ليست محددة جدًا ، لكنني أعتقد أن ذلك يرجع إلى حقيقة أن قابلية النقل والبنى المختلفة التي تدعمها كانت متنوعة جدًا لدرجة أن C يجب أن تستوعب كل نوع من المعالجات لتكون محمولة حقًا
      تحياتي وشكرا على المشاركة.

  7.   سيرجيو قال

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

    1.    كريساد قال

      مرحبًا سيرجيو ، سيكون من المثير للاهتمام بالتأكيد ، لقد سمعت أن جنوم يخطط لتطبيق Rust ضمن مجموعة البرامج الخاصة به ، ولم أر المدى الكامل له بعد ، ولكن الهجرة قادمة.
      بالنسبة للغات ، فأنا شخصياً ما زلت أتعلم لغة C ، وأريد أن أكون قادرًا على البدء في تطوير النواة في الأشهر القليلة المقبلة ، وأنا أفضل تعلم بعض اللغات بعمق قبل أن أبدأ في مراجعة اللغات الجديدة ، لكن يمكنني ابحث بالتأكيد عن شيء مثير للاهتمام وقم ببعض الأمثلة في Rust ، لأن توثيقه يبدو جيدًا من تلقاء نفسه.
      تحياتي وشكرا على المشاركة 🙂

  8.   ديفيد قال

    تفسيرات جيدة جدًا ، سواء في هذه المقالة أو في المقالة السابقة. أتمنى أن تستمر في هذا الموضوع الذي أجده ممتعًا للغاية.

    1.    كريساد قال

      مرحبًا ديفيد ، آمل أيضًا أن أكون قادرًا على الاستمرار في الكتابة وتحفيز الأشخاص بشكل خاص على المشاركة مع البرامج المجانية ، فهناك العديد من المشاريع والاحتياجات الآن التي سيكون من الرائع تطويرها 🙂
      تحياتي

  9.   سوق قال

    هل يمكنك عمل منشور عن آلة تورينج؟

    1.    كريساد قال

      مرحباً مارت 🙂 أعتقد أننا قد لمسناه في بعض التعليقات من قبل ، أليس كذلك؟ أنا متأكد من أنه يمكنني وضع شيء مثير للاهتمام حول هذا الموضوع - لنرى ما يمكن أن يخرج. تحياتي وشكرًا على قراءة جميع مقالاتي ، من اليوم الأول حتى اليوم ، كنت دائمًا ما أراك مهتمًا جدًا 🙂

  10.   ألان لارا قال

    واو ، شكرا جزيلا لك يا له من تفسير جيد.

    تحياتي

    1.    كريساد قال

      شكرا جزيلا لك آلان تحياتي

  11.   رامون هيدالجو قال

    قرأت منشورك السابق! شكرًا جزيلاً لك على التوضيح ، رغم أنني أعتقد أنني لن أكمل فهم الكلمة أبدًا.

    1.    كريساد قال

      مرحبًا رامون ، شكرًا جزيلاً لك على قراءة كليهما. إذا كانت مفيدة ، فإن «الكلمة» هي تطور البايت ، فهي مثل المعالجات ، قبل أن يكون هناك 8 بتات ، بعد 16 بت ، إلخ ... هذا لأنه في كل مرة نحتاج إلى مساحة أكبر عملية وسرعة أو قوة أفضل ... ولدت "الكلمة" لأن مساحة "البايت" كانت قصيرة ، ونفس الشيء مع كلمة "مزدوج" و "رباعي" - إنه التطور الطبيعي الذي يجعلنا نضيف القوة ومساحة لمواصلة التطور 🙂

      تحياتي

  12.   مجهول قال

    في عام 2018 أتعلم البرمجة بنعم أو نعم ، شكرًا لك

    1.    كريساد قال

      أنا سعيد 🙂 حاول بجد !! في صحتك

  13.   غييرمو قال

    شكرا جزيلا لك ، استمر. أنا أعرف بالفعل كيف أبرمج ولكني أنتظر تعاليمك ، أن برمجتي الذاتية مليئة بالممارسات السيئة.

    1.    كريساد قال

      شكرًا Guillermo 🙂 حسنًا ، آمل أن تجد أشياء مثيرة للاهتمام أيضًا في المنشورات التالية 🙂 تحياتي

  14.   إدغار قال

    الشرح البسيط هو دائما الأفضل .. ممتاز ..
    أود أن أقترح git ... بالنسبة للمبرمجين ، من الأساسي عندما تريد العمل كفريق وترتيب عملك .. الإصدارات ..

    1.    كريساد قال

      إدغار صحيح جدًا ، سأحاول نشر محتوى عنه ، على الرغم من أنه من الصعب جدًا قول شيء جديد لأن وثائق git متوفرة بالفعل والعديد من الأشياء تمت ترجمتها بالفعل إلى عدة لغات. سأرى ما يمكنني فعله ، تحياتي وشكرًا للمشاركة

  15.   تيريري قال

    مرحبًا ، هل الرقم من 0 إلى 18 يتوافق مع القيمة العشرية 446 بت أم أنه يشير إلى قيمة أخرى؟ حسنًا ، بحساب القوة 744 ^ 073 ، النتيجة التي أحصل عليها هي: 709 551 615.

    1.    كريساد قال

      مرحبًا Tiririri ، أعتقد أنك تواجه مشكلة في التقريب ، يمكنك محاولة استخدام الأمر bc؟ هي لغة برمجة مصممة لتكون دقيقة قدر الإمكان ، وبمجرد دخولها من الضروري القيام بذلك 2^64ربما سيحل ذلك 🙂 اسمحوا لي أن أعرف كيف سارت الأمور ، تحياتي

      . القيمة الحقيقية هي 18 ، لكننا نطرح 446 لأن 744 يعتبر قيمة محتملة 🙂

      1.    تيريري قال

        شكرًا ، لقد حسبت ذلك باستخدام حاسبة الطاقة التي وجدتها على الشبكة (https://es.calcuworld.com/calculadoras-matematicas/potencias/) وكانت هذه هي النتيجة التي أعطاني إياها.
        ونعم ، لقد جربت بالفعل الأمر bc ، وهو يعطيني بشكل فعال القيمة التي كتبتها.

  16.   تيريري قال

    مرحبًا مرة أخرى ، الصورة التي تشير فيها إلى limits.h مكتبة صغيرة جدًا ولا يمكن قراءتها (على الأقل لم أتمكن من قراءتها ، لأنني أرى أن الجميع فعلوا ذلك ، على ما يبدو) ، وبما أنني لا أفهمها لم أعد أكمل القراءة. لا أعرف ما إذا كان بإمكانك تغييره ، آمل ألا أزعجك بذلك.

    1.    كريساد قال

      يمكنك تجربة إصدار الهاتف المحمول ، الذي يبدو أكثر وضوحًا ، إنه سمة ووردبرس: / من ناحية أخرى ، يمكن العثور على جميع رؤوس C في / usr / include / ، وفي هذه الحالة يمكنك اختيار قراءتها مباشرةً إذا كنت الأمر أسهل 🙂 سأحاول تحميل صورة أكبر لمعرفة ما إذا كانت تساعد 🙂

      1.    تيريري قال

        شكرًا ، أعتقد أنني يجب أن أتحلى بالصبر مع هذا ، هيه هيه.

  17.   كاتيكيو قال

    شكرًا على المقالة منذ الآن ، فهمت بشكل أفضل قليلاً المتغيرات ونطاق تمثيل اللغة ، ولكن الآن أعتقد أنني يجب أن أبدأ في استخدام مكتبة "stdint.h" لأنهم يوصون باستخدامها عند البرمجة في c منذ أن كان لدي تم تعليمه للمدرسة القديمة لأن الذاكرة كانت ثمينة وكان على المرء أن يكون حذرًا فيما تم استخدامه

    1.    كريساد قال

      لا يوجد Katekyo ، فمن الأفضل بالتأكيد استخدام المكتبة القياسية ، لكن يمكنني أن أؤكد لك أنه من الأفضل معرفة ما يميز uint_least8_t عن uint_fast8_t ويتم تحقيق ذلك من خلال معرفة أنواع البيانات البدائية ، والذي كان هدف post شكرا جزيلا على التعليق وعلى قراءة المقال ، تحياتي

  18.   منتصر قال

    : أو شرح بارع! كنت أعرف جزءًا من المفاهيم ولكني حصلت على الكثير من المعرفة الجديدة من هذا المنشور

    1.    كريساد قال

      شكرًا جزيلاً لك فيكتور؟ كيف يمكن أن تكون هذه المقالة مفيدة ، تحياتي

  19.   جيلي قال

    لقد أحببت لغة Python حقًا لجعل البرمجة أسهل ، لقد رأيت دورة تدريبية فيها http://zetcode.com/gui/pyqt4/ أحببت التتريس الأخير حول: http://zetcode.com/gui/pyqt4/thetetrisgame/
    لقد قمت بتنقيح هذه tetris خلال فصل الصيف لوضع النقاط ، متعددة اللاعبين والموسيقى ، شيئًا فشيئًا ، لكنها مسلية للغاية.

    1.    كريساد قال

      مرحبًا Guille ، إنه بالتأكيد ممتع للغاية أن ترى البرنامج الذي تعمل عليه ينمو شيئًا فشيئًا - إنها تجربة لا تضاهى ، وحتى عندما يجد شخص ما ما تقوم بتطويره مفيدًا ، فهذا من عالم آخر شكرًا جزيلاً لك للمشاركة 🙂

      1.    جيلي قال

        الشخص الذي قمت بتحميله (30 ميجا بايت للموسيقى) إليه http://guillermo.molleda.com/Tetris9.7z
        يجب عليك تكوين سرعة أولية مختلفة لكل لاعب أو إذا قمت بإعادة تشغيل النقاط بعد لعبة جديدة ، ... وهناك ثلاثة لاعبين لابنتاي لتلعبوا معي. حتى أنها تسبب الإدمان.