diff --git a/GUIDE_ar.md b/GUIDE_ar.md index e64858b87b48..43c9938409cf 100644 --- a/GUIDE_ar.md +++ b/GUIDE_ar.md @@ -1,7 +1,8 @@ -# دليل GitHub Code Vault +#
دليل GitHub Code Vault
-## مقدمة +##
مقدمة
+
تم إنشاء هذا الأرشيف، GitHub Code Vault، من خلال برنامج GitHub Archive، الذي يعمل على الحفاظ على البرامج مفتوحة المصدر للأجيال القادمة. ربما تقرأ هذا بعد عام من الآن، أو بعد ألف عام، إلا أن نأمل أن تكون محتوياته، ومفهوم المصدر المفتوح، مفيدة لك. فهذا ما يطلق عليه بشكل أساسي اسم أرشيف البرامج. فالبرنامج عبارة عن سلسلة من الأوامر المستخدمة للتحكم في عمل الكمبيوتر. وجهاز الكمبيوتر عبارة عن أداة قادرة على القيام بالعمليات الحسابية تلقائيًا بشكل أسرع بكثير من العقل البشري الذي يتمتع بقدرات وإمكانيات هائلة. ويتم استخدام أجهزة الكمبيوتر للمساعدة في استكشاف أسرار الكون، وربط البشرية جمعاء بشبكة معلومات متاحة في كل مكان، ومعالجة الإشارات بسرعة كافية لنقل الأصوات وعرض الصور المتحركة المفصلة على الشاشات الكهربائية، والتحكم في الآلات الضخمة التي تتجاوز قدرات وإمكانيات العمل البشري. @@ -20,24 +21,31 @@ فيما يلي وصف لما نعتقد أنك ستحتاج إلى معرفته والاستفادة منه على أفضل وجه في أرشيف البرامج هذا. فإذا كنت لا تعرف أو تفهم بعضًا من هذا أو أي منه، فلا تيأس! لقد قمنا أيضًا بتضمين دليل حول كيفية تحقيق هذه المتطلبات. إذا لم تستطع أن تحقق أي لأي سبب من الأسباب، فإن من يتبعونكم يستطيعون ذلك. -## ما تحتاجه لاستخدام الأرشيف +
+##
ما تحتاجه لاستخدام الأرشيف
+ +
من حيث المبدأ، كل ما تحتاجه للوصول إلى محتويات هذا الأرشيف هو مصدر إضاءة ومكبر. إلا أن معظم (وإن لم يكن كل) بياناته قد تم تعبئتها بإحكام شديد على بكرات الأفلام في شكل مشفر ومضغوط. وتتطلب قراءة هذه البيانات وفك تشفيرها وإلغاء ضغطها حسابًا كبيرًا بحد ذاته. فمن الناحية النظرية، يمكن أن يتم ذلك بدون أجهزة كمبيوتر، ولكنه سيكون مملاً وصعبًا للغاية. وتوقعنا هو أنك لست بحاجة إلى تعريفاتنا للبرامج والكمبيوتر والمصطلحات الأخرى. نحن نتخيل أن لديك أجهزة كمبيوتر خاصة بك، وربما تكون أكثر تطوراً بشكل كبير من أجهزة الكمبيوتر لدينا، وربما يتم تخزينها بطريقة مختلفة بشكل أساسي. وبمجرد فهم النظرة العامة والدليل أدناه، ستتمكن بسهولة من الوصول إلى جميع البيانات. ويحتمل أن يكون لديك أجهزة كمبيوتر أقل من أجهزتنا، أو حتى لا توجد أجهزة كمبيوتر على الإطلاق. وعند ذلك، قمنا بإعداد بكرة بيانات غير مضغوطة وغير مشفرة يمكن قراءتها من جانب أي شخص ونطلق عليها Tech Tree. حيث تحتوي Tech Tree على معلومات حول تقنياتنا الأساسية وأجهزة الكمبيوتر والبرامج الخاصة بنا، على أمل أن تتمكن من استخدام هذه المعرفة بمرور الوقت لإعادة إنشاء أجهزة الكمبيوتر التي يمكن أن تستخدم البرامج مفتوحة المصادر في هذا الأرشيف. -## ماذا يوجد في الداخل +
+ +##
ماذا يوجد في الداخل
+
الأرشيف كبير جدًا - حوالي 24 تريليون بايت (موضح أدناه) - حيث أنه شامل وديمقراطي. ويتيح ملايين الأشخاص البرامج الذي يكتبونها للجميع. ويتضمن هذا الأرشيف لقطة شاشة - أي نسخة واحدة، في لحظة واحدة وفي الوقت المناسب - لجميع البرامج العامة التي يقوم مستخدمو GitHub بتطويرها بنشاط. وهذا يعني أنه يتضمن عشرات الملايين من المراكز المنفصلة. وأملنا هو أن هذا النهج الديمقراطي الواسع سيكون ذا أهمية للمؤرخين في المستقبل. تم تحديد مركز التخزين المدرج في هذا الأرشيف حسب وقت الإيداع الأخير، حيث آخر مرة تم فيها التحديث وعدد النجوم. (يستطيع مستخدمو GitHub جميعهم "تمييز" المراكز العامة، للإشارة إلى أنهم مهتمون أو يهمهم.) لقد سجلت لقطة الشاشة في 2/2/2020، أي في اليوم الثاني من شهر فبراير في عام 2020، ونحن نحسب الوقت. كما أن مركز التخزين المضمن هو: جميع مراكز التخزين خلال مدة 80 يومًا السابقة؛ وجميع المركز ذات نجمة واحدة على الأقل مع أي إيداع خلال مدة 365 يومًا السابقة؛ وجميع المركز التي تضم 250 نجمًا على الأقل، بغض النظر عن تاريخ آخر تحديث لها. -بالطبع، ليست كل هذه المراكز مهمة بنفس القدر من حيث نفوذها وتوابعها. حيث يتضمن Tech Tree فهرسًا ووصفًا موجزًا لأهم مركز في الأرشيف، والقوائم التي يمكن أن نجد عليها بكرة لكل منها، بحيث يمكن الوصول إليها دون الحاجة إلى التنقل عبر ملايين المراكز لتحديد أكثرها إفادة. +بالطبع، ليست كل هذه المراكز مهمة بنفس القدر من حيث نفوذها وتوابعها. حيث يتضمن Tech Tree فهرسًا ووصفًا موجزًا لأهم مركز في الأرشيف، والقوائم التي يمكن أن نجد عليها بكرة لكل منها، بحيث يمكن الوصول إليها دون الحاجة إلى التنقل عبر ملايين المراكز لتحديد أكثرها إفادة.
-## نظرة عامة على الأرشيف +##
نظرة عامة على الأرشيف
+
يتكون الأرشيف من 201 بكرة فيلم: "بكرة توجيه" للمعلومات والإرشادات القابلة للقراءة من جانب أي شخص، و200 بكرة من البرامج المحفوظة. وتتضمن كل بكرة 65,000 إطار فردي. وتشتمل الإطارات الموجودة في بداية كل بكرة وإطارات بكرة التوجيه على نصوص وصور يمكن قراءتها من جانب أي شخص. وتتكون جميع إطارات الأفلام الأخرى من بيانات رقمية مخزنة في شكل مرئي تعرف باسم كود الاستجابة السريعة (QR). وتعني البيانات الرقمية البيانات المخزنة بشكل نهائي بتنسيق ثنائي، مثل 0s و1s، حيث أن أجهزة الكمبيوتر نفسها يتم التحكم فيها من خلال إشارات كهربائية "تعمل" أو "لا تعمل"، وتوافق 1 أو 0، وهكذا فإن البيانات الثنائية هي أسهل بكثير لأجهزة الكمبيوتر للتعرف عليها أكثر من أي شيء آخر. @@ -58,8 +66,11 @@ وإذا كان هذا التعقيد صعبًا ومكلفًا بالنسبة لك، فنحن نعتذر، ولكننا نتوقع أنه إذا كان هذا هو الحال، فإن هذا الدليل وTech Tree المقروءة من جانب أي شخص سوف يخففا من هذا التعقيد، وربما يكونان أكثر فائدة لك من أرشفة المحتويات، على الأقل حتى يتم تطوير أجهزة الكمبيوتر الخاصة بك بما فيه الكفاية بحيث يكون من السهل التعامل مع تعقيد بيانات الأرشيف. -## الملفات والأدلة ومراكز التخزين وتنسيقات البيانات +
+##
الملفات والأدلة ومراكز التخزين وتنسيقات البيانات
+ +
قد يكون من المفيد مناقشة كيفية تقسيم الأرشيف منطقيًا. ويحتمل أن تكون مناقشة الملفات والأدلة وتنسيقات البيانات أمر مفيد. والملف عبارة عن مجموعة من البيانات التي تم تجميعها معًا في كيان متماسك باسم واحد: فكر في البيانات على أنها رمال، والملف كنوع من الحقائب يمكنه حمل الرمال، والرمال فقط. والدليل عبارة عن مجموعة من الملفات: فكر في الأمر كنوع من الحقائب يمكنه فقط حمل الحقائب الأخرى. وبعد هذه الاستعارة، يتكون كل مركز تخزين من دليل خارجي، يعرف باسم الدليل الجذر، والذي يحتوي على عدد من الملفات و/أو عدد من الأدلة. يمكن أن يحتوي كل دليل بدوره على الملفات والأدلة نفسها. @@ -82,8 +93,11 @@ لا توجد لاحقة واحدة تشير إلى الملفات النصية. وبدلاً من ذلك، فيما يتعلق بكود المصدر، من الأرجح أن تشير اللاحقة إلى لغة البرمجة أو الترميز التي تتم كتابة الشفرة فيها. سيتم وصف لغات البرمجة والترميز بمزيد من التفاصيل أدناه. -## كيفية استخراج محتويات الأرشيف +
+ +##
كيفية استخراج محتويات الأرشيف
+
نقدم هنا نظرة عامة حول كيفية فك مركز تخزين مؤرشف معين في ملفاته المكونة المختلفة. مرة أخرى، تتكون هذه العملية من: 1. تحديد البكرة والإطارات المحددة التي يتم أرشفة بيانات المركز عليها. @@ -95,9 +109,11 @@ 4. تفريغ ملف الأرشيف في الملفات الفرعية المنفصلة التي يحتوي عليها. لاحظ أن بيانات الأرشيف تكون مفهومة بشكل عام، رغم الفوضى، حتى عند حذف هذه الخطوة. 5. أخيرًا، تحويل هذه الملفات الفرعية - وهي تسلسل من 1s و0s وتتراوح من قصيرة جدًا إلى طويلة جدًا - إلى أحرف مكتوبة، إذا كانت ملفات نصية. +
-### تحديد بكرة وإطارات محددة يتم أرشفة بيانات مركز الإيداع عليها +###
تحديد بكرة وإطارات محددة يتم أرشفة بيانات مركز الإيداع عليها
+
تبدأ كل بكرة فيلم بدليل فيلم فارغ، ثم الإطار المرجعي Zero، الذي يتكون من مستطيل أسود صلب في زاوية واحدة من إطار فارغ آخر. الإطار التالي القابل للقراءة من جانب أي شخص هو إطار التحكم، مع معلومات حول البكرة. فيما يلي جدول المحتويات، والذي بدوره يتضمن قائمة بملفات بيانات المستخدم. يعد كل مركز تخزين على بكرة أحد ملفات بيانات المستخدم هذه. تحتوي القائمة على معرّف فريد ومعرف ملف واسم لكل من هذه الملفات. فمثلا قد يحتوي مركز تخزين CPython الخاص بحساب Python على معرف الملف المدرج كـ 12345، والاسم المدرج كـ python_cpython.tar. @@ -106,8 +122,11 @@ وهذا يعني، للحصول على بيانات CPython: انتقل إلى الإطار 54321 من بكرة الفيلم هذه. قم بفك تشفير جميع الإطارات من إطار البدء، 54321، إلى إطار النهاية، 54545، إلى قيم ثنائية، بالوسائل الموضحة أدناه. سيوفر لك هذا 225 قطعة من البيانات المرقمة من 54321 إلى 54545، والتي ستبدأ بمجموعة من القطع الفارغة بدون بيانات. تجاهل أول 3210320 بايت في أول وحدة بيانات غير فارغة. إلحاق جميع وحدات البيانات "الوسطى" بالترتيب. وأخيرًا، إلحاق البايت 12321232 الأولى من وحدة البيانات الأخيرة، 54545. لقد قمت الآن بتجميع مركز تخزين CPython الكامل، كملف أرشيف مضغوط واحد. -### فك تشفير كود الاستجابة السريعة في ملف ثنائي +
+###
فك تشفير كود الاستجابة السريعة في ملف ثنائي
+ +
تم العثور على تفاصيل كيفية فك تشفير إطارات الفيلم إلى بيانات ثنائية في بيانات التمثيل المقروءة من جانب أي شخص والتي تم العثور عليها بعد جدول المحتويات في بداية كل بكرة فيلم في الأرشيف. تم العثور على هذه المعلومات في كل بكرة بحيث، حتى لو تم فصل بكرة فردية عن الأرشيف، فسيظل من الممكن فك محتوياتها. تتضمن بيانات التمثيل هذه، بالترتيب: 1. دليل برنامج أرشيف GitHub (هذه الوثيقة) @@ -146,8 +165,11 @@ وفي حالة عدم وجود تابع لهذا الأرشيف في أجهزة الكمبيوتر، فيجب أن يحتفظوا بالأرشيف كاملاً وآمنًا حتى القيام بذلك. ويتمثل أحد أغراض Tech Tree القابلة للقراءة من جانب أي شخص في المساعدة في تسريع عملية تطوير التقنيات وأجهزة الكمبيوتر في حالة حدوث هذا الاحتمال. (والغرض الآخر هو ترميز تقنيتنا وتطويرها للمؤرخين في المستقبل.) -### فك ملف الأرشيف إلى ملفات فرعية منفصلة يحتوي عليها +
+ +###
فك ملف الأرشيف إلى ملفات فرعية منفصلة يحتوي عليها
+
الملف الثنائي لكل مركز تخزين هو تنسيق معروف باسم TAR، لأرشيف الشريط. يتكون ملف TAR بشكل أساسي من خلال تجميع عدد من الملفات معًا عن طريق ربط نهاية أحد الملفات ببداية التالي، مثل تسجيل أجزاء فردية من الورق معًا في تمرير واحد. يمكن أن يتضمن ملف TAR أي عدد من الملفات، من أي حجم، مقسومًا إلى أي عدد من الأدلة والأدلة. يتم وضع كل ملف فرعي داخل ملف TAR بسجل رأس 512 بايت، والذي يعمل مثل الشريط في استعارة التمرير. يحتوي سجل الرأس على معلومات حول الملف، مثل الاسم والحجم. يشار إلى نهاية الأرشيف من قبل اثنين على الأقل من 512 بايت كتل. @@ -156,16 +178,19 @@ من الممكن تداخل ملفات TAR داخل ملفات TAR، حيث حاوية واحدة داخل أخرى، وذلك طريقة تخزين معظم البيانات المؤرشفة لدينا. بالنسبة لأي مركز تخزين، فسوف يحتوي ملف TAR الخارجي على الأقل على ما يلي: -* ملف تعريف واحد غير مضغوط يسمى META، والذي يتضمن اسم المركز واسم الحساب والوصف واللغة وعدد النجوم وعدد التفريعات -* ملف مضغوط (انظر أدناه) باسم COMMITS، والذي يتضمن سجل التغييرات التي تم إجراؤها على المركز بمرور الوقت -* ملف باسم repo.tar.xz، وهو ملف TAR مضغوط يتضمن محتويات مركز التخزين الفعلي +- ملف تعريف واحد غير مضغوط يسمى META، والذي يتضمن اسم المركز واسم الحساب والوصف واللغة وعدد النجوم وعدد التفريعات +- ملف مضغوط (انظر أدناه) باسم COMMITS، والذي يتضمن سجل التغييرات التي تم إجراؤها على المركز بمرور الوقت +- ملف باسم repo.tar.xz، وهو ملف TAR مضغوط يتضمن محتويات مركز التخزين الفعلي قد يتم أيضًا تضمين بيانات التعريف الأخرى، مثل الويكي وصفحات gh والمشكلات وطلبات السحب، كملفات مضغوطة منفصلة. ويمكن العثور على تفاصيل محددة لملفات TAR والبرنامج لتشفيرها وفك تشفيرها في بيانات التمثيل في كل بكرة من الأرشيف. -### فك ضغط الملفات المضغوطة في ملفات قابلة للقراءة وغير مضغوطة +
+ +###
فك ضغط الملفات المضغوطة في ملفات قابلة للقراءة وغير مضغوطة
+
لتضمين أكبر عدد ممكن من مراكز التخزين وأكبر قدر ممكن من البيانات، تم ضغط معظم البيانات. والضغط يعني استخدام كمية صغيرة من البيانات لتمثيل كمية أكبر، عن طريق استخدام الأنماط والتكرار في هذه الكمية الأكبر. فمثلا بدلاً من كتابة الحرف تسع مرات متتالية، يمكن للمرء فقط كتابة النص المضغوط 9a، إذا كان المرء واثقًا من أن القارئ يفهم أن 9a تعني aaaaaaaaa كنص غير مضغوط. بينما خوارزميات الضغط الفعالة أكثر تعقيدًا من ذلك بكثير، لكن يطبق المبدأ نفسه. يستخدم هذا الأرشيف برنامج ضغط يعرف باسم "XZ"، والذي يستخدم بدوره خوارزمية تعرف باسم "LZMA". يحتوي ملف البيانات الثاني في كل بكرة على كود المصدر والوثائق لـ XZ في ملف أرشيف TAR واحد غير مضغوط، موصوف أدناه. (يحتوي ملف البيانات الأول على الإعلان العالمي لحقوق الإنسان بجميع اللغات المكتوبة المتوفرة.) @@ -174,16 +199,22 @@ يتم وصف الخطوات المحددة للخوارزمية المراد استخدامها لفك ضغط البيانات من خلال كود المصدر XZ الموجود في ملف البيانات الثاني في كل بكرة. وعلى الرغم من أنه من الممكن نظريًا إلغاء الضغط باليد، إلا أنها ستكون عملية كثيفة الاستخدام للوقت والعمل. وفي الممارسة العملية، سيتم استدعاء جهاز كمبيوتر يعمل. -### تحويل كل ملف فردي إلى أحرف مكتوبة +
+###
تحويل كل ملف فردي إلى أحرف مكتوبة
+ +
وقد استخدم الإنسان العديد من الأحرف المكتوبة على مدى آلاف السنين. يُعرف الترميز المستخدم لتمثيل هذه الأحرف كـ 1s و0s داخل هذا الأرشيف باسم "UTF-8". يمكن أن يشغل حرف UTF-8 فرديًا، أي رمزًا مكتوبًا واحدًا، في أي مكان من 1 إلى 4 بايت من البيانات الثنائية. لأسباب تاريخية، نظرًا لأنها كانت الأكثر استخدامًا في الوقت والمنطقة ومكان وزمان بدء تطوير البرامج، يتم ترميز مجموعة من الأحرف (والمفاهيم) المعروفة باسم "ASCII" بكفاءة أكبر، بمعدل 1 بايت لكل حرف. يتم تشفير أي شيء بخلاف ASCII كـ 2 بايت أو أكثر لكل حرف. معظم الملفات النصية في هذا الأرشيف هي ASCII، لكن العدد الكبير ليس كذلك. وسيكون أكثر من ذلك بكثير ASCII مع أحرف ASCII غير عرضية. يمكن العثور على المواصفات التفصيلية الخاصة بـ ASCII في بيانات التمثيل في كل بكرة من الأرشيف. ويمكن العثور على المواصفات التفصيلية لـ UTF-8 في بكرة التوجيه. سوف يحتوي ملف البيانات الأول على كل بكرة من الأرشيف على نص الإعلان العالمي لحقوق الإنسان بكل لغة مكتوبة متوفرة. سيكون هذا بمثابة أداة ترجمة وكمثال على ASCII وUTF-8. -## أنواع الملفات +
+ +##
أنواع الملفات
+
هناك العديد من أنواع الملفات النصية المختلفة التي تم إنشاؤها لأسباب مختلفة. النوع الأساسي هنا، والسبب في وجود هذا الأرشيف، هو كود المصدر. كود المصدر هو نص كثيف ومنظم للغاية، يحتوي على رموز مثل '{' و';' ذو أهمية كبيرة. والعنصر الرئيسي في كود المصدر هو أنه مكتوب لقراءته من قبل برنامج التحويل البرمجي. نظرًا لأن برنامج التحويل البرمجي عبارة عن برنامج، فإن الطريقة الأخرى لصياغة هذا هي كتابة كود المصدر لقراءتها من خلال أجهزة الكمبيوتر. يتم كتابة الرمز الجيد أيضًا حتى يتمكن الآخرون، إذا كانوا مهرة ومتعلمين في مجال البرامج، من فهمه؛ ويكون هذا صحيح فقط إذا تمكن برنامج التحويل البرمجي من فهمه. @@ -200,18 +231,24 @@ _لـ (int i=0; i<5; i++) { }_ نظرة عامة مختصرة على أكثر أشكال الملفات النصية شيوعًا والتي قد تكون مفيدة أيضًا. رمز برنامج التحويل غير نصي. تقوم ملفات JPG وPNG بترميز الصور بالتنسيق الرقمي، بينما يقوم تشفير MP3 وWAV بترميز الصوت. تقوم ملفات PDF بترميز المستندات بدقة وتنسيق مثالي. وملفات ZIP وTAR، كما ذكرنا سابقًا، هي ملفات حاويات والتي قد تتضمن بدورها أكثر من ملف آخر. -## اللغات البشرية ولغات البرمجة +
-### اللغات البشرية +##
اللغات البشرية ولغات البرمجة
+###
اللغات البشرية
+ +
هناك الآلاف من اللغات المكتوبة التي يستخدمها الإنسان اليوم، وحتى أكثر اللغات المنطوقة. ويتم استخدام معظمها فقط من قبل مجموعات صغيرة نسبيًا، ولكن هناك ما لا يقل عن عشرين لغة تستخدم كلغة أولى أو ثانية من قبل 60 مليون شخص على الأقل. أكثر اللغات استخدامًا في العالم هي الإنجليزية والصينية. لأسباب تاريخية، حدث معظم تطوير البرامج في الدول الناطقة باللغة الإنجليزية لسنوات عديدة، لذا فقد أصبحت اللغة الإنجليزية هي اللغة الافتراضية للبرنامج لفترة من الزمن. وتستخدم معظم لغات البرمجة الكلمات الإنجليزية في بناء الجملة الخاصة بهم. إنها اللغة التي كتب بها هذا الدليل للأرشيف لأول مرة. ليس مضمونًا أن يعرف الحاصلون على هذا الأرشيف اللغة الإنجليزية، على الرغم من أنها تبدو لغة من المرجح أن تستمر إلى أجل غير مسمى. وفي حالة وجود بعض التوجيهات للغات الأخرى المفيدة، فإننا نقوم بتضمين أكثر من 500 ترجمة متوفرة للإعلان العالمي لحقوق الإنسان كملف UTF-8 غير مضغوط في بداية كل بكرة، وأيضًا ضمن Tech Tree. وهذا الإعلان هو قائمة بحقوق وحريات كل فرد في عصرنا، والتي يجب ألا يلقى بها جانبا. -### لغات البرمجة +
+ +###
لغات البرمجة
+
لغات البرمجة هي تلك المستخدمة من قبل الإنسان لتوصيل التعليمات إلى أجهزة الكمبيوتر. وهي اللغات التي يتم التعبير عن البرامج بها. ويجب أن يكون الآخرون (المدربون) قادرين على قراءة البرنامج المكتوب بلغات البرمجة، لكن هذا هدف ثانوي. لغة البرمجة عبارة عن مجموعة من العناصر المحددة مسبقًا، معظمها عبارة عن كلمات، يمكن ترتيبها بطريقة منظمة لتوجيه الكمبيوتر إلى تنفيذ الإجراء المحدد بالطريقة المحددة. تُعرف مجموعة من هذه التعليمات بالبرنامج أو كود المصدر. كود المصدر هو برنامج في شكل مكتوب ومجمد في الأساس. @@ -220,40 +257,42 @@ _لـ (int i=0; i<5; i++) { }_ فهناك المئات من لغات البرمجة المختلفة، تنتشر عبر العديد من الأشكال والمناهج والفلسفات المختلفة. ويتم تجميع بعضها في ملفات ثنائية منفصلة، والتي يتم تنفيذها بعد ذلك؛ ويتم تجميع بعض اللغات، المعروفة باسم اللغات "المفسرة"، بشكل فعال وتشغيلها مرة واحدة، دون أي مرحلة مؤقتة. تشتمل معظم اللغات الحديثة على مكتبات وظائف مكتوبة مسبقًا، ويمكن أن تكون هذه المكتبات ضخمة جدًا ومتقنة. وتتضمن بعض لغات البرمجة الأكثر شيوعًا اليوم: -- C، واحدة من أقدم وأسرع اللغات وأكثرها شمولية وقوة، فهي بسيطة من بعض النواحي ولكنها محدودة للغاية في لغات أخرى، ولا تكون دائمًا سهلة الاستخدام أو سهلة القراءة أو سهلة التعلم. +- C، واحدة من أقدم وأسرع اللغات وأكثرها شمولية وقوة، فهي بسيطة من بعض النواحي ولكنها محدودة للغاية في لغات أخرى، ولا تكون دائمًا سهلة الاستخدام أو سهلة القراءة أو سهلة التعلم. -- C ++، تطور أكثر تعقيدًا وتجريدًا وقوة لـ C. +- C ++، تطور أكثر تعقيدًا وتجريدًا وقوة لـ C. -- C #، تطور إضافي تم تجميعه ليس في رمز الجهاز الثنائي ولكن "وقت التشغيل" الذي تم تفسيره. +- C #، تطور إضافي تم تجميعه ليس في رمز الجهاز الثنائي ولكن "وقت التشغيل" الذي تم تفسيره. -- Java، التي تشبه (ولكن تسبق) C #، هي اللغة الأكثر استخدامًا اليوم. +- Java، التي تشبه (ولكن تسبق) C #، هي اللغة الأكثر استخدامًا اليوم. -- JavaScript، على عكس جافا تمامًا على الرغم من التشابه في الاسم، والمعروف أيضًا باسم "ECMAScript"، هي لغة مستخدمة مبدئيًا بالكامل داخل مستعرض الويب، مثل برنامج الحصول على البيانات وتفسيرها وعرضها من كمبيوتر بعيد يعرف باسم خادم الإنترنت؛ اليوم، ويستخدم رغم ذلك على نطاق واسع على تلك الخوادم أيضًا. +- JavaScript، على عكس جافا تمامًا على الرغم من التشابه في الاسم، والمعروف أيضًا باسم "ECMAScript"، هي لغة مستخدمة مبدئيًا بالكامل داخل مستعرض الويب، مثل برنامج الحصول على البيانات وتفسيرها وعرضها من كمبيوتر بعيد يعرف باسم خادم الإنترنت؛ اليوم، ويستخدم رغم ذلك على نطاق واسع على تلك الخوادم أيضًا. -- TypeScript، وهو شكل من أشكال جافا سكريبت مع قواعد أكثر صرامة بحيث تكون الأخطاء، والمعروفة أيضًا باسم المشكلات، أقل عرضة للعثور على البرامج. +- TypeScript، وهو شكل من أشكال جافا سكريبت مع قواعد أكثر صرامة بحيث تكون الأخطاء، والمعروفة أيضًا باسم المشكلات، أقل عرضة للعثور على البرامج. -- Python، لغة أنيقة تحظى بشعبية كبيرة بين العلماء، كلغة قوية ولغة أولى جيدة. +- Python، لغة أنيقة تحظى بشعبية كبيرة بين العلماء، كلغة قوية ولغة أولى جيدة. -- Ruby، لغة بديهية غالبًا ما تقرأ بياناتها مثل اللغة الإنجليزية المكتوبة. +- Ruby، لغة بديهية غالبًا ما تقرأ بياناتها مثل اللغة الإنجليزية المكتوبة. -- Go، لغة بسيطة وقوية تتفوق بشكل خاص في البرامج المتوازية، أي البرامج المكتوبة بحيث تعمل وظائف متعددة بشكل مستقل في نفس الوقت. +- Go، لغة بسيطة وقوية تتفوق بشكل خاص في البرامج المتوازية، أي البرامج المكتوبة بحيث تعمل وظائف متعددة بشكل مستقل في نفس الوقت. -- Swift، لغة جديدة تستخدم في الكتابة للهواتف والأجهزة الأخرى التي يستخدمها نحو مليار شخص. +- Swift، لغة جديدة تستخدم في الكتابة للهواتف والأجهزة الأخرى التي يستخدمها نحو مليار شخص. -- Rust، والمقصود بها بديل C، وهو ما يجعل المشكلات الخطرة أقل احتمالا بكثير. +- Rust، والمقصود بها بديل C، وهو ما يجعل المشكلات الخطرة أقل احتمالا بكثير. -- PHP، وهي لغة واضحة تستخدم لخوادم الإنترنت. +- PHP، وهي لغة واضحة تستخدم لخوادم الإنترنت. -- Lisp، وهي لغة قديمة جدًا لها نهج وظيفي مختلف تمامًا في البرمجة. +- Lisp، وهي لغة قديمة جدًا لها نهج وظيفي مختلف تمامًا في البرمجة. -- SQL، نوع مختلف تمامًا من اللغة المستخدمة في الحصول على البيانات من مخازن منظمة وفعالة للغاية للبيانات المعروفة باسم قواعد البيانات. +- SQL، نوع مختلف تمامًا من اللغة المستخدمة في الحصول على البيانات من مخازن منظمة وفعالة للغاية للبيانات المعروفة باسم قواعد البيانات. -- المجمع (أو التجميع)، وهي عائلة لغات خفية ومحدودة ولكنها سريعة وقوية حيث توجد علاقة مباشرة بين بنيات اللغة ورمز جهاز الكمبيوتر المعني؛ وقد يعتبر رمز نصف برنامج محول. +- المجمع (أو التجميع)، وهي عائلة لغات خفية ومحدودة ولكنها سريعة وقوية حيث توجد علاقة مباشرة بين بنيات اللغة ورمز جهاز الكمبيوتر المعني؛ وقد يعتبر رمز نصف برنامج محول. +
-## التطوير، التبعيات، والمصدر المفتوح +##
التطوير، التبعيات، والمصدر المفتوح
-### التطوير +###
التطوير
+
تعتبر عملية الحصول على ملف ترميز مصدر واحد بسيط وتحويله إلى نبضات كهربائية داخل جهاز كمبيوتر عملية معقدة للغاية. فنحن نتعامل مع هذا التعقيد باستخدام درجات من الاستخراج. يسمح الاستخراج المعروف باسم مجموعة التعليمات باستخدام استخراج رمز الجهاز من برنامج التحويل البرمجي الواحد على العديد من أنواع أجهزة الكمبيوتر المختلفة. ولا يحتاج مؤلف كود المصدر عادةً إلى معرفة أو الاهتمام بنوع الكمبيوتر، أو حتى مجموعة التعليمات، التي سيتم استخدامها لتشغيل هذا الرمز؛ فهذا ما يتم استخلاصه من قبل برنامج التحويل البرمجي. البرامج الحديثة، بدورها، أكثر تعقيدًا من مؤلف واحد يعمل على برنامج واحد لجهاز كمبيوتر واحد. يتكون من العديد من المؤلفين الذين يعملون على العديد من الملفات داخل مشروع واحد، في وقت واحد، وغالبًا ما يستخدمون لغات برمجة متعددة. وعلاوة على ذلك، يعتمد كل مشروع على مشاريع أخرى منفصلة وذاتية كأدوات و/ أو مكونات، في حين أن هذه المشروعات هي نفسها قيد العمل وبشكل نشط، وتعتمد بدورها على مشاريع أخرى. كما أن القيام بتشغيل كل هذه الأجزاء المتحركة معًا بشكل أنيق وكفء هو في الواقع تحدي تطوير البرامج الحديثة. @@ -264,8 +303,11 @@ _لـ (int i=0; i<5; i++) { }_ وعندما يأخذ عدة مطورين مشروعًا على مسارات مختلفة متعددة في وقت واحد، يُعرف هذا باسم تشعب المشروع، وتُعرف هذه المسارات باسم الفروع. ويُعرف الفرع الرئيسي المتفق عليه للمشروع باسم الجذع أو الفرع الرئيسي. تتيح Git كيان يمكن للمطورين استخدامه لتلخيص الاختلافات بين فرعين واقتراح الانضمام إلى فروعهم في الكيان الآخر. ويعرف ذلك باسم طلب السحب. يتكون تطوير البرامج الحديثة إلى حد كبير من تفرع مشروع ما أو كتابة البرنامج أو تحريره على الفرع الخاص بك، وعند الانتهاء من ذلك، يتم إرسال طلب سحب لإعادة إدراج عملك في الفرع الرئيسي. -### التبعيات +
+###
التبعيات
+ +
تدعم كل لغة برمجة بشكل أساسي البناء على عمل الآخرين. وبدون إعادة استخدام عمل الآخرين، سيكون كل مشروع أكثر صعوبة، وأبطأ إلى حد كبير، وسوف يختفي عدد قليل من المشاريع من الاستخدام الفعلي في العالم الحقيقي. وإذا احتاج المشروع "أ" إلى إدراج المشروع "ب" لكي يقوم "أ" بعمله، فيُعرف "أ" بكونه يعتمد على المشروع "ب"، ويعرف "ب" بتبعية "المشروع أ". ويمكن أن يكون لـ "أ" تبعيات كثيرة، ولكل منهم تبعيات كثيرة خاصة بهم، وهكذا. وعلاوة على ذلك، فإن كل تبعية مخصصة لإصدار معين، أو مجموعة من الإصدارات، لمشروع معين. ويُعرف التصنيف الكامل لجميع طبقات التبعيات المتعددة للمشروع باسم شجرة التبعية الخاصة به. @@ -274,10 +316,15 @@ _لـ (int i=0; i<5; i++) { }_ وفي حالة هذا الأرشيف، يحتمل أن تكون التبعيات لأي مشروع معين موجودة في مكان آخر في الأرشيف. ومن أجل العثور على التبعية في الأرشيف، يجب على المرء أولاً اكتشاف اسم التبعية في كود المصدر أو قائمة الحزم، حيث تختلف التفاصيل الدقيقة حسب اللغة والإطار، ثم استخدام الفهرس الرئيسي في بكرة التوجيه، أو، في حالة عدم وجودها، فهارس في مقدمة كل بكرة، لتحديد أي بكرة وإطار (إطارات) يمكن العثور عليهما. -### المصدر المفتوح +
+ +###
المصدر المفتوح
+
نظرًا لأن تشغيل برنامج على جهاز كمبيوتر لا يتطلب سوى رمز الجهاز المجمع، فمن الممكن توزيع ذلك مع الحفاظ على سرية كود المصدر. وهذا ما يعرف باسم نموذج مغلق المصدر. وفي الأيام الأولى للحوسبة، كان يتم عادةً توزيع كود المصدر مع رمز الجهاز الخاص بها، ولكن فيما بعد، حيث أصبح البرنامج صناعة مربحة، أصبح نموذج المصدر المغلق أكثر شيوعًا. -لقد تعلمنا منذ ذلك الحين أن جعل كود المصدر عام، بحيث يمكن لأي شخص نسخه، وتحسينه، يعد وسيلة أكثر فاعلية لتطوير البرامج. ويعني إتاحة المزيد من الأشخاص الذين يمكنهم قراءة ترميز مصدر المشروع عددًا أكبر من الأشخاص لتحديد الاحتياجات المحتملة والميزات الجديدة المفيدة، والمزيد من الأشخاص الذين يفهمون المشروع بما يكفي للمساهمة فيه، والمزيد من الأشخاص الذين قد يرصدون الأخطاء ويقدمون الحلول، والمزيد من الأشخاص لاختبار والتحقق من عمل هذا الرمز الجديد. +لقد تعلمنا منذ ذلك الحين أن جعل كود المصدر عام، بحيث يمكن لأي شخص نسخه، وتحسينه، يعد وسيلة أكثر فاعلية لتطوير البرامج. ويعني إتاحة المزيد من الأشخاص الذين يمكنهم قراءة ترميز مصدر المشروع عددًا أكبر من الأشخاص لتحديد الاحتياجات المحتملة والميزات الجديدة المفيدة، والمزيد من الأشخاص الذين يفهمون المشروع بما يكفي للمساهمة فيه، والمزيد من الأشخاص الذين قد يرصدون الأخطاء ويقدمون الحلول، والمزيد من الأشخاص لاختبار والتحقق من عمل هذا الرمز الجديد. + +وبشكل عام، يؤدي المصدر المغلق إلى مجتمعات أصغر معزولة ومجزأة تسعى لإيجاد وتبني أفكار جديدة وأفضل. ويؤدي المصدر المفتوح إلى مجتمعات كبيرة ومترابطة، يساعد كل منها على نمو مشاريع الآخر وازدهارها ونجاحها، باستخدام عمل بعضهم البعض كتبعية و/ أو إعادة استخدام الرمز، والتعلم من بعضهم البعض. كما أن برامج المصدر المفتوح عبارة عن مجموعة أدوات للاستخدام الجماعي للجميع، وكلما كانت الأدوات المتوفرة لدينا أكثر وأفضل، تمكنا بشكل أسرع من التقدم كأنواع وفصائل. -وبشكل عام، يؤدي المصدر المغلق إلى مجتمعات أصغر معزولة ومجزأة تسعى لإيجاد وتبني أفكار جديدة وأفضل. ويؤدي المصدر المفتوح إلى مجتمعات كبيرة ومترابطة، يساعد كل منها على نمو مشاريع الآخر وازدهارها ونجاحها، باستخدام عمل بعضهم البعض كتبعية و/ أو إعادة استخدام الرمز، والتعلم من بعضهم البعض. كما أن برامج المصدر المفتوح عبارة عن مجموعة أدوات للاستخدام الجماعي للجميع، وكلما كانت الأدوات المتوفرة لدينا أكثر وأفضل، تمكنا بشكل أسرع من التقدم كأنواع وفصائل. \ No newline at end of file +