This article is currently in the process of being translated into Arabic (~99% done).
Hello world explained
في الفصل السابق حاولنا ان نكتب مقطعا من نص الى كونسول (الحاسب) في تطبيقنا الاول في لغة سي شارب . لكن لكي نرى تقدما ملحوظا نحن لم نذهب الى تفاصيل كثيرة عن أسطر البرمجة التي إستخدمناها لذا هذا الفصل هو تفسير لمثال "أهلا العالم " كما ترى من أسطر البرمجة التي بعضها يبدو متشابها. سنقوم بإحضارهم في مجموعات من أجل شرحهم كل على حدى. دعنا نبدأ بأقصر وأكثر خاصيات شائعة في أسطرنا البرمجية ال : {و } في معظم الأوقات يرمز إليهم بالحاضنات المجعدة وفي لغة سي شارب يرمزون لبداية ونهاية جزء من السطر البرمجي . الحاضنات المجعدة تستخدم في العديد من لغات البرمجة الأخرى كلغة سي "++C" جافا جافاسكريبت. كما تلاحظ من السطر البرمجي تستخدم الحاضنات للف عدة أسطر برمجية التي تنتمي لبعضها البعض في مثال لاحق سيكون الأمر أكثر وضوحا حول كيفية إستخدامها.
والآن لنبدأ من الأعلى.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
"using"عبارة عن كلمة مفتاحية موضحة باللون الأزرق من قبل المحرر . "using"تقوم بإستخدام "namespace". "namespace" هو مجموعة من الأقسام أو"class"."class" تقوم بمنحنا الوظائف وتنجز المهام -في حالات العمل مع محرر متطور ك"visual studio" غالبا ما ينجز لنا العمل المكرر حيث السطر بمجرد بداية الكتابة . -في هذه الحالة قام المحرر بإنشاء "class قسم" لنا وإستخدم "snamespace" والتي هي مهمة أومن المتوقع إستعمالها في هذه الحالة . في مثالنا هذا خمسة من "namespaces" تم إستخدامها كل منها يحتوي على كثير من"classes الأقسام" نحن نستخدم قسم كونسول"class console" والتي هي بدورها قسم من" system namespace".
من جهة أخرى نحن لم نستخدم بعد System.Linq في هذا المثال لذا ان كنت مصرا يمكنك حذف هذا السطر لكن ذلك لن يحدث أي فرق في هذه اللحظة.
كما ترى يمكننا الحصول على "namespace" الخاص بنا
namespace ConsoleApp1
"namespace console app1" هو الأن ال"namespace" الرئيسي لهذا التطبيق لذا أي قسم جديد "class" سيكون جزء منه تلقائيا يمكنك تغيير هذا الإعداد و إنشاء أقسام أخرى "classes" في "namespace" آخر في هذه الحالة سوف تكون بحاجة لإضافة ال"namespace" الجديد لكي تستخدمه في تطبيقك بإستعمال الكلمة المفتاحية "using" كأي "namespace" اخر
تاليا سوف نقوم بتعريف "class" لأن #c هي لغة كائنية التوجه "Object Oriented language" كل سطر برمجي يقوم بعملية ما هو ملفوف داخل "class" في هذه الحالة ال "class" بكل بساطة يدعى "Program" :
class Program
يمكننا إنشاء عدة "classes" في نفس الملف حاليا نحن نحتاج "class" واحد فقط . "class" يمكنه ان يحتوي على عدة متغيرات "variables" خصائص "properties" و دوال "methodes" مفهوم "concepts" سوف في كل هذا لاحقا. حاليا كل ما تحتاجه هو أن تعلم أن "class" الحالي يحتوي فقط على دالة "method" واحدة ولا شيء اخر تم كتابتها على هذا الشكل :
static void Main(string[] args)
هذا السطر هو على الأرجح أكثر سطر معقد في هذا المثال لذا دعنا نحاول تقسيمه الى قطع . أول كلمة هي static . كلمة "static" تخبرنا أن هذه الدالة "method" يمكن الوصول إليها دون الحاجة ل "instantiating" ال"class" .المزيد عن هذا في فصلنا عن "class"
الكلمة المفتاحية التالية هي void وهي تخبرنا ما الذي سوف ترجعه الدالة "method" في هذه اللحظة يمكن أن يكون "integer" رقم صحيح أو نص "string" لكن في هذه الحالة نحن لا نريد دالتنا "method" أن ترجع أي شيء ( لغة #c تستعمل الكلمةvoid لكي تعبر عن مفهوم "nothing"
الكلمة التالية هيMain والتي هي ببساطة أسم دالتنا "method" هذه الدالة"method" تدعى نقطة الدخول "entry-point" لتطبيقنا أي أول سطر يتم تنفيذه في مثالنا هي السطر الوحيد الذي سوف يتم تنفيذه.
الآن بعد الإسم مجموعة من المعطيات "arguments" يمكن تحديدها داخل الأقواس . في مثالنا هذا دالتنا تأخذ معطا واحد يدعىstring . نوع هذا المعطى هوargs .أو من أجل الدقة مصفوفة من "string" المزيد عن هذا لاحقا . إذا كنت فكرت به سوف يبدو منطقيا لأن بعض تطبيقات الويندوز تستدعى بمجموعة إختيارية من المعطيات هذه الأخيرة سوف تمرر "string" كنص الى الى الدالة الرئيسية"Main method" .
هذه هي لديك الأن الفهم الأولي لتطبيقنا الأول في لغة #C وأيضا المفاهيم الأولية التي تسمح ل"console application" بالعمل.