أول برنامج Java
سبق أن شغّلت هذا الملف، وعرضت الشاشة mint. تبقى هذه الصفحة مع الملف نفسه وتطرح سؤالًا آخر: أي سطر داخل الملف كتب تلك الكلمة، وأي الأسطر لم تكتب شيئًا. لن تثبّت Java من جديد، وتبقى أسطر الإصدار من الصفحة السابقة كما هي. افتح Mint.java واقرأه من أعلاه. الشاشة التي تريد أن تشرحها ما زالت سطرًا واحدًا، وهذا السطر هو mint.
في الملف أكثر من سطر، ولهذا يتبادر إلى الذهن أن كل سطر في الملف يصير سطرًا على الشاشة. هذا التخمين خطأ، وبقية الصفحة تبيّن السبب. ثلاثة من الأسطر تسمّي شيئًا، وواحد منها فقط يكتب. أمّا الأقواس المعقوفة فتجمع هذه الأسطر ولا تكتب هي الأخرى. حين تستطيع أن تضع إصبعك على السطر الكاتب والملف أمامك، تكون قد أنهيت هذه الصفحة. الصفحة التالية تضيف ملاحظة لا تعرضها الشاشة، ولا تغيّر mint.
public class Mint {
public static void main(String[] args) {
System.out.println("mint");
}
}
السطر الأول يسمّي الملف
السطر الأول هو public class Mint. اقرأه على أنه ثلاث كلمات لكل منها وظيفة، لا على أنه جملة ستطبعها الشاشة. تعني public أن شيفرة أخرى مسموح لها باستعمال هذا الملف؛ ولا ترى الكلمة public على الشاشة. وتعني class أن هذا الملف يعرّف وحدة واحدة مسمّاة في Java؛ والكلمة class ليست على الشاشة أيضًا. أمّا Mint فهو اسم تلك الوحدة. اسم الملف على القرص Mint.java لأن هذا الاسم هو Mint. لو غيّرت الاسم في هذا السطر لوجب أن يتغير اسم الملف معه، وإلا رفض javac الملف. هذه القاعدة تخص اسم الملف، ولا تخص الشاشة. انظر مرة أخرى إلى الشاشة في الصفحة السابقة: لا تعرض Mint، بل تعرض mint. فالحرف M الكبير والحرف m الصغير ليسا كلمة واحدة. السطر الأول لا يكتب اسمه على الشاشة أبدًا.
العلامة التي تلي ذلك السطر هي قوس معقوف مفتوح، {. والقوس المغلق المقابل له هو آخر سطر في الملف، }. كل ما بين القوسين يتبع الوحدة Mint. القوسان سياجان يبيّنان لـ Java أين تبدأ هذه الوحدة وأين تنتهي. والسياج ليس نصًّا للشاشة، فلن ترى { أو } بجانب mint. إذا حذفت القوس المفتوح تعطّل الملف وكتب javac خطأً بدل أن يبقى صامتًا. ذلك الخطأ ليس موضوع هذه الصفحة. في هذه الصفحة يبقى القوسان معًا، وتبقى الشاشة mint.
سطر main هو المكان الذي تبدأ منه Java
السطر التالي هو public static void main(String[] args). حين يُسأل الناس من أين يبدأ البرنامج يشيرون إلى هذا السطر، وهم محقّون في أمر البداية. لكنهم يخطئون إن قالوا بعد ذلك إن الشاشة تعرض main. حين تكتب java Mint تبحث Java عن سطر بهذا الشكل وتبدأ التنفيذ منه. البدء ليس هو الكتابة. فالكلمات في هذا السطر تعليمات عن كيفية البدء، وليست كلمات للشاشة.
خذ الكلمات واحدة واحدة، وقارن كلًّا منها بالشاشة. تعني public هنا أيضًا أن السطر يمكن بدؤه من خارج الملف. وتعني static أن Java تستطيع بدء هذا السطر دون أن تبني كائنًا أولًا. لم تتعرّف إلى الكائنات بعد، فالمعلومة الوحيدة التي تحتاجها أن كلمة static لازمة في هذا السطر وأنها لا تُطبع. وتعني void أن هذا السطر لا يعيد قيمة إلى من استدعاه. لا مستدعي في هذه الصفحة، وvoid ليست على الشاشة. أمّا main فهو الاسم الذي تبحث عنه Java. يجب أن يكون الاسم main بهذه الحروف الأربعة، وإلا لم يبدأ java Mint هذا الملف. ومع ذلك لا تعرض الشاشة تلك الحروف الأربعة. وأخيرًا String[] args مكان للكلمات التي قد تكتبها بعد اسم البرنامج. أنت لم تكتب كلمات إضافية؛ كتبت java Mint فقط. فـ args فارغة في هذا التشغيل، ولا تظهر String ولا args على الشاشة.
إذن قد يكون سطر main صحيحًا من جهتين في وقت واحد. Java بدأت عنده فعلًا، والشاشة لم تتلقَّ من هذا السطر كلمة واحدة. فإن استقرت عيناك على main لأنه في وسط الملف، فحرّكهما. الكلمة التي تتذكرها من الشاشة هي mint، وmint ليست مكتوبة في هذا السطر.
السطر الداخلي يكتب mint
داخل سطر main، بين قوسيه المعقوفين، يوجد سطر آخر هو System.out.println("mint"). هذا هو السطر الذي يكتب على الشاشة. وهو مزاح إلى الداخل قليلًا في الملف لترى أنه جالس داخل main. والإزاحة مسافات، والمسافات لا تُكتب على الشاشة أيضًا. تنفّذ Java هذا السطر الداخلي لأنه داخل السطر الذي يبدأ منه البرنامج. وتأخذ الشاشة ما يكتبه هذا السطر الداخلي، ولا تأخذ اسم السطر الخارجي.
اقرأ السطر الداخلي من اليسار. System.out هي الشاشة، أي المكان الذي تُكتب فيه الأسطر. وprintln معناها: اكتب هذا ثم أنهِ السطر. وما بين القوسين هو ما يُكتب. داخل القوسين تقف الكلمة mint بين علامتي اقتباس مزدوجتين. تعلّم علامتا الاقتباس الكلمة mint على أنها نص، وهما نفسهما ليستا من النص. أزلهما في ذهنك فتبقى الكلمة mint، وهذه هي الشاشة كلها. اترك علامتي الاقتباس في الملف. فمن دونهما لا يعدّ javac الكلمة mint نصًّا. أمّا الفاصلة المنقوطة في آخر السطر فتنهي السطر عند Java. ولا ترى فاصلة منقوطة على الشاشة. ترى mint، ثم ينتهي السطر لأن println أنهته.
وهذا هو السطر الكاتب وحده، حتى لا تخفيه الأسطر الأخرى.
System.out.println("mint");
لا شيء في الأمر java Mint يختار الكلمة mint. فالأمر يسمّي الملف فقط. والكلمة تأتي من علامتي الاقتباس. لو كانت بينهما كلمة أخرى لعرضت الشاشة تلك الكلمة، لكن هذه الصفحة لا تفعل ذلك. العلامتان هنا تحتويان mint، فالشاشة mint. سطر واحد. لا سطر ثانٍ. لا علامات اقتباس على الشاشة. لا كلمة main. لا كلمة Mint.
📊 أي سطر تعرضه الشاشة
| السطر | الشاشة |
|---|---|
| public class Mint | لا شيء من هذا السطر |
| public static void main(String[] args) | لا شيء من هذا السطر |
| System.out.println("mint") | mint |
ما يخطئ الناس في قراءته
الخطأ المعتاد أن تقرأ الملف من أعلاه وتفترض أن أكثر الكلمات ألفة هي الناتج. تبدو main مهمة، وهي مهمة فعلًا لأن Java لا تبدأ الملف من دونها. لكن الأهمية ليست ناتجًا. يمكنك أن تغطي سطر main بإصبعك ويبقى السطر الكاتب System.out.println("mint"). لكنك لا تستطيع أن تغطي السطر الكاتب وتبقى قادرًا على شرح الشاشة. والخطأ الثاني أن يقال إن الشاشة تعرض Mint لأن الملف وclass كليهما اسمه Mint. فالشاشة تستعمل الكلمة التي بين علامتي الاقتباس، وتلك الكلمة تُكتب بحرف m صغير. والخطأ الثالث عدّ الأسطر. يظهر في الملف عدة أسطر وعدة أقواس، وتظهر على الشاشة سطر واحد. الأقواس والكلمات public وstatic وvoid والاسم main والاسم Mint كلها تبقى في الملف بعد التشغيل. فالتشغيل لا يحذفها، ولا يطبعها كذلك.
يمكنك أن تمتحن هذا بالتشغيل الذي أجريته من قبل. javac Mint.java لم يكتب أي سطر. ذلك الصمت يعني أن الملف قُبل، بسطر main وأقواسه. وjava Mint كتب mint. تلك الكلمة الواحدة هي عمل سطر println. ولو شغّلت java Mint مرة أخرى الآن، من المجلد نفسه، لكانت الشاشة mint من جديد. الملف لم يتغير في هذه الصفحة، فلا يمكن أن تتغير الشاشة.
صار بوسعك الآن أن تضع إصبعك على System.out.println("mint") وتقول إن الشاشة تأخذ كلمتها من هذا السطر. وأن تضعه على public static void main(String[] args) وتقول إن Java تبدأ من هنا وإن الكلمة main ليست على الشاشة. وأن تضعه على public class Mint وتقول إن هذا الاسم يطابق الملف ولا يطابق الشاشة. الصفحة التالية تضع ملاحظة في الملف. الملاحظة لشخص يقرأ الملف. وستبقى الشاشة mint، لأن الملاحظة ليست println ثانية.
الشاشة تأخذ كلمتها من سطر واحد
تعرض الشاشة mint. والسطر System.out.println("mint") هو الذي يكتب تلك الكلمة. علامتا الاقتباس ليستا على الشاشة. وسطر main ليس على الشاشة. والسطر الأول، public class Mint، ليس على الشاشة. ولا يوجد سطر ثانٍ.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى