CodeGym /مدونة جافا /Random-AR /لقد علقت؟ أصعب الأجزاء في تعلم جافا وكيفية التغلب عليها
John Squirrels
مستوى
San Francisco

لقد علقت؟ أصعب الأجزاء في تعلم جافا وكيفية التغلب عليها

نشرت في المجموعة
كما تعلم، نوصي مبتدئي البرمجة بالبدء في تعلم لغات البرمجة باستخدام Java، ولدى CodeGym كل شيء لجعل عملية تعلم Java سهلة الهضم حتى بالنسبة للطلاب غير المستعدين. ولكن بقدر ما تساعد عناصر اللعب والقصة السهلة والشخصيات المضحكة على تسهيل هذه العملية، فإن تعلم أساسيات Java على أكمل وجه نادرًا ما يمر دون تحديات بالنسبة لغالبية المتعلمين الجدد. لقد علقت؟  أصعب الأجزاء في تعلم جافا وكيفية التغلب عليها - 1سنلقي اليوم نظرة على بعض أصعب المجالات في أساسيات برمجة Java، محاولين فهم السبب الذي يجعل العديد من الأشخاص يجدونها صعبة وما إذا كان هناك شيء يمكنك القيام به حيال ذلك.

1. الأدوية الجنيسة

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

نصائح وتوصيات

فيما يلي رأي حول الأدوية العامة في Java من رافي ريدي، وهو مبرمج ذو خبرة وأستاذ جامعي: "تقوم Java Generics بشيء واحد لا تفعله قوالب C++ - وهي تنفيذ أمان النوع. يعد تنفيذ قوالب C++ بمثابة خدعة بسيطة للمعالج المسبق ولا يضمن سلامة الكتابة. الأدوية العامة في Java تشبه قوالب C++ ولكن مع أمان إضافي للنوع. وIMHO، تعد سلامة النوع سمة أساسية لأي بيئة تطوير جيدة. ونعم! يمكن أن تكون مربكة بسبب تحولاتنا العقلية بين المعلمات والأنواع. لكنني أعتقد أن قضاء الوقت في إتقانها يستحق كل هذا الجهد. لأنني وجدت نفسي "أفكر" بشكل أفضل في Java بمجرد أن فهمت الواجهات والأدوية العامة."

2. تعدد الخيوط

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

نصائح وتوصيات

فيما يلي توصية جيدة حول كيفية التعامل مع تعدد العمليات من S.Lott، وهو مهندس برمجيات ومستخدم نشط لموقع StackExchange، وهو موقع ويب شهير للأسئلة والأجوبة: "تعدد مؤشرات الترابط بسيط. يعد ترميز تطبيق متعدد الخيوط أمرًا سهلاً للغاية. هناك خدعة بسيطة، وهي استخدام قائمة انتظار رسائل مصممة جيدًا (لا تقم بلف قائمة انتظار خاصة بك) لتمرير البيانات بين سلاسل الرسائل. الجزء الصعب هو محاولة جعل عدة سلاسل رسائل تقوم بتحديث كائن مشترك بطريقة سحرية. وذلك عندما يصبح الأمر عرضة للخطأ لأن الأشخاص لا يهتمون بظروف السباق الموجودة. لا يستخدم العديد من الأشخاص قوائم انتظار الرسائل ويحاولون تحديث الكائنات المشتركة ويخلقون مشكلات لأنفسهم. ما يصبح صعبًا هو تصميم خوارزمية تعمل بشكل جيد عند تمرير البيانات بين عدة قوائم انتظار. هذا صعب. لكن آليات التواجد المشترك (عبر قوائم الانتظار المشتركة) سهلة."

3. قضايا Classpath

تعتبر أخطاء Classpath أيضًا واحدة من أكثر المشكلات التي يواجهها مطورو Java في عملهم اليومي. "يمكن أن تستغرق مشكلات Classpath وقتًا طويلاً لتصحيح الأخطاء وتميل إلى الحدوث في أسوأ الأوقات والأماكن الممكنة: قبل الإصدارات، وغالبًا في البيئات التي لا يتوفر فيها وصول كبير أو معدوم من قبل فريق التطوير. يقول فاسكو فيريرا، مطور Java/Javascript ذو الخبرة ومؤلف البرامج التعليمية المتعلقة بالبرمجة ، "يمكن أن تحدث أيضًا على مستوى IDE وتصبح مصدرًا لانخفاض الإنتاجية" .

نصائح وتوصيات

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

4. تعدد الأشكال واستخدامه بالشكل الصحيح

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

نصائح وتوصيات

لا توجد طريقة أخرى للتعامل مع تعدد الأشكال سوى تعلمه. وإليك كيف يشرح Torben Mogensen، الذي يدرس البرمجة في جامعة كوبنهاجن، هذا المفهوم: "التحميل الزائد البسيط: + يمكن أن يعني إضافة عدد صحيح، وإضافة الفاصلة العائمة، و(في بعض اللغات) تسلسل سلسلة. تعدد أشكال النوع الفرعي: إذا كان B هو نوع فرعي (يرث من) A، فيمكن استخدام أي قيمة من النوع B في سياق يتوقع قيمة من النوع A. تعدد الأشكال البارامترية: يمكن تحديد معلمات النوع باستخدام معلمات النوع، بحيث تكون في يمكن للسياقات المختلفة توفير وسائط نوع مختلفة، لذلك يمكنك إنشاء مثيل للنوع ذو المعلمات لأنواع محددة مختلفة. يُطلق على هذا أيضًا اسم "القوالب" أو "الأسماء العامة" ويتم تحديده عادةً بلغات OO باستخدام الأقواس الزاوية (مثل T<A>). واجهة تعدد الأشكال. هذه في الأساس آلية حيث يتم تقييد تعدد أشكال النوع الفرعي على الأنواع الفرعية التي تنفذ واجهة معينة أو تعدد الأشكال البارامترية لكتابة المعلمات التي تنفذ واجهة معينة.

5. التأمل

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

نصائح وتوصيات

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

6. تيارات الإدخال/الإخراج

تتيح لك التدفقات العمل مع أي مصدر بيانات: الإنترنت، أو نظام ملفات الكمبيوتر الخاص بك، أو أي شيء آخر. التدفقات هي أداة عالمية. إنها تسمح للبرنامج بتلقي البيانات من أي مكان (تدفقات الإدخال) وإرسالها إلى أي مكان (تدفقات الإخراج). مهمتهم هي نفسها: أخذ البيانات من مكان وإرسالها إلى مكان آخر. هناك نوعان من التدفقات: تدفقات الإدخال (تستخدم لتلقي البيانات) وتدفقات الإخراج (لإرسال البيانات). ما يجعل من الصعب على العديد من الأشخاص فهم استخدام التدفقات هو حقيقة أن Java تحتوي على فئات دفق إدخال/إخراج متعددة.

نصائح وتوصيات

"تحتوي Java على العديد من فئات تدفق الإدخال/الإخراج ويرجع ذلك أساسًا إلى عاملين مساهمين. الأول هو الإرث. لا تزال بعض الفئات موجودة لأسباب تاريخية ولم يتم إهمالها لأنها لا تعتبر ضارة. ثانيا، المرونة. التطبيقات المختلفة لها متطلبات مختلفة، وبالتالي، لديك خيارات متعددة حسب متطلباتك. يقول جوناس ميلين، خبير جافا من السويد: " إن التجريدات المفيدة تضفي الوضوح عندما تقرأها، وباستخدام بضعة أسطر من التعليمات البرمجية يمكنك فعل الكثير" . ما هي جوانب Java التي وجدت صعوبة في فهمها أو كنت عالقًا فيها لبعض الوقت؟ تبادل الخبرات الخاصة بك في هذه التعليقات.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION