EN
تعلّم المسارات المرجع مقالات المحفوظات
المستوى 2: عالم البرمجيات · الدرس 7 · مسار سطح المكتب

الكود، والـ repos، والـ codebases

قراءة قصيرة

حين فتحت Claude على مجلد في المستوى الأول، وجّهته إلى مجلد my-site الخاص بك. ونظر Claude في الملفات الموجودة هناك وأجاب عن أسئلة عنها. ذلك المجلد كان codebase.

الـ code هو التعليمات المقروءة من قِبَل البشر التي تجعل قطعة من البرمجيات تعمل. والـ codebase هي كل ذلك الكود، منظّمًا في مجلد. والـ repository (أو repo) هو codebase مضافًا إليها سجلّ كامل لكل تغيير أُجري عليها على الإطلاق.

عمليًا، يستخدم الناس repo وcodebase بالتبادل تقريبًا. «افتح الـ repo» و*«افتح الـ codebase»* يعنيان الشيء ذاته.

كيف يبدو

افتح repo نموذجيًا وسترى شجرة مجلدات تشبه هذه:

my-site/
├── README.md          ← what this project is, how to run it
├── package.json       ← the run command + any libraries
├── index.html         ← the homepage
├── about.html         ← an about page
├── contact.html       ← a contact form
├── styles.css         ← the look
├── messages.json      ← saved contact messages
├── server/            ← the tiny backend
│   ├── index.js
│   ├── messages.js
│   └── email.js
└── .git/              ← the history (hidden by default)

هذا هو my-site، الموقع الشخصي الذي ما زلت تبنيه منذ المستوى الأول. المشاريع الأخرى أكبر، لكن الشكل نفسه: ملفّان أو ثلاثة تقول ما هو المشروع وكيف يُشغَّل، ثم الكود الفعلي، ثم مجلد .git/ مخفي. الأسماء تتغيّر. أما الشكل فلا يتغيّر.

مجلد .git/ هو المجلد السحري — فهناك يعيش السجلّ. سنخوض فيه كما ينبغي في المستوى الثامن.

شاهده بنفسك

تلك الشجرة ليست مخطّطًا خاصًّا — إنها ببساطة ما ستراه لو فتحت repo في Claude. حين تفتح مجلدًا في Claude Code Desktop، تعرض لك لوحة الملفات الجانبية هذا بالضبط: كل ملف ومجلد في المشروع، مع مثلّث صغير بجوار كل مجلد يمكنك النقر عليه ليتفتّح.

افتح my-site وستعرض لوحة الملفات ملف README.md، وملف package.json، وصفحات الـ HTML، ومجلد server/. انقر مجلد server/ ليتفتّح فتظهر بداخله ثلاثة ملفات صغيرة — index.js وmessages.js وemail.js، الملفات خلف نموذج الاتصال. تلك الشجرة القابلة للنقر هي الـ codebase: كل تعليمة تجعل my-site يعمل، موجودة في ملفات عادية داخل مجلدات عادية.

لست مضطرًا حتى للتنقّل بالنقر لتفهمها. اسأل Claude في المحادثة ببساطة:

ما الملفات الموجودة في هذا المشروع، وماذا يفعل كل واحد منها؟
What files are in this project, and what does each one do?

يقرأ Claude المجلد ويجيب بلغة بسيطة — «index.html هو صفحتك الرئيسية، وstyles.css يتحكّم في المظهر، ومجلد server/ هو الـ backend الصغير خلف نموذج الاتصال…» جدار المصطلحات ينقشع في اللحظة التي تدرك فيها أنها مجرد ملفات، ويمكنك أن تسأل عن أيٍّ منها.

النقطة التي تربك الناس عادةً

الـ repo ليس مجرد الحالة الراهنة للملفات. إنه كل نسخة من تلك الملفات، رجوعًا إلى وقت بداية المشروع.

تخيّل مستند غوغل يمكنك فيه أن ترجع إلى أيّ ثانية من أيّ يوم، وترى من أجرى كل تغيير، وتعمل undo لأيٍّ منها دون عمل undo للبقية. ذلك repo.

في كل مرة يُجري فيها مطوّر commit لتغيير، يتذكّره الـ repo إلى الأبد. وبعد خمس سنوات لا يزال بإمكانك أن ترى بالضبط ما الذي تغيّر يوم ثلاثاء محدّد في عام 2021. لهذا تضع الفِرَق الكود في repo وليس في دروبوكس — السجلّ هو المقصود.

الـ tool الذي يجعل هذا ممكنًا يُسمّى Git. سنتعلّم استخدامها بطريقة Claude في المستوى الثامن. أما الآن، فاحتفظ بهذه الفكرة: حين يقول أحدهم «الـ repo»، فهو يعني الكود مضافًا إليه آلة الزمن الملحقة به.

GitHub وGitLab وBitbucket

الـ repo يعيش في مجلد على حاسوبك. لكن الفِرَق تحتاج إلى مشاركة الـ repos، لذا يُنسَخ المجلد إلى hosting service على الإنترنت.

  • GitHub — الأكثر شيوعًا بفارق كبير. تملكه مايكروسوفت. ويعيش هنا تقريبًا كل مشروع مفتوح المصدر.
  • GitLab — مشابه، ويُستخدم غالبًا من قِبَل الشركات التي تريد الاستضافة الذاتية.
  • Bitbucket — في المرتبة الثالثة. ويُستخدم غالبًا من قِبَل الفِرَق التي تستعمل tools الخاصة بـ Atlassian أصلًا.

حين يقول أحدهم «أرسل لي رابط GitHub»، فهو يعني: أرسل لي الـ URL الخاص بـ repo الخاص بك على GitHub. الكود موجود على جهازك وجهازه وعلى GitHub، وكله متزامن.

ما التالي

افتح repo وسترى جدارًا من أنواع الملفات التي قد لا تتعرّف عليها: .tsx و.py و.go وpackage.json وrequirements.txt. الدرس التالي يفكّ شفرتها — ما الـ language، وما الـ framework، وما الـ package؟