11

[رأي] هل انت بحاجة لتعلم كافة تفاصيل اللغة لتنجز مشروعا بها؟

هو تحد صغير قمت به منذ سنة تقريبا، يتعلق بالـPHP... حيث دار النقاش بين وبين احد الاصدقاء انه علي تعلم اللغة بالكامل قبل ان ابدا بتطبيق مشروع متكامل، او حتى نصف متكامل، لذا كعادتي اخذت التحدي بعناد وبدأت العمل في مشروع دون ان اعرف ادنى معلومة في اللغة.

البداية:

  • لم يكن التحدي على ان ابدأ من الصفر، لذا كان من المسموح ان اعتمد على script او framework جاهز، ولكن على المنتج النهائي ان يمتلك ضعف الامكانيات على الاقل، ولا يشبه المنتج الرئيسي بواجهة المستخدم نهائيا.

  • التحدي تضمن، تغيير التصميم "وهو اسوأ مرحلة مررت بها"، تعديل السكربت ليتضمن ميزات جديدة، وتحسين الميزات الحالية.

  • لم اكن ذو خبرة في الPHP ومازلت قليل الخبرة فيها، حتى انني لا اعلم ما هي وظيفة بعض التعليمات التي استخدمتها، حفظتها فقط انها تعمل كذا او كذا "ثم اطلعت لاحقا على الانترنت لاعرف اكثر عنها"

  • اخترت اضعف سكربت جربته منذ بدايتي في عالم الانترنت باسم "master auto index" وهو سكربت لموقع واب قديم من انتاج هندي، بسيط جدا من كافة النواحي... متوافر مفتوح المصدر على GitHub

العمل:

  • في البداية كنت اعمل على التجريب، لدي فهم عام للمنطق البرمجي، بالاضافة لمعرفتي للبنية الخاصة باللغة "بشكل اساسي وغير متعمق" فكنت احذف الكود، ثم اجرب، واعيده، ثم اجرب، لاكتشف كل قطعة عما كانت مسؤولة عليه.

  • بدأت في فهم كيفية عمل السكربت تدريجيا، لاحظت بعض الاخطاء والحلقات التي لا فائدة منها "بالنسبة لي" وبدأت بازالة تلك البلوكات من الكود تدريجيا.

  • الجزء الاصعب كان التجريب بعد كل ازالة، لانني لا اعرف تماما ان كنت ازلت الكود بشكل صحيح ام هناك تبعات له.

  • بعد مرور اسبوع تقريبا انتهيت من الازالات، وكان علي الدخول في مرحلة اضافة الميزات.

  • التعريب كان سهلا، فقط قلب الCSS وترجمة الSTRINGS... تخزين اللغة العربية في قاعدة البيانات على الناحية الاخرى سبب لي مشكلة اضطررت وقتها لتعلم بعض المبادئ في MySql لاستطيع تفاديها... لم اتعمق ايضا في قواعد البيانات

  • اول ميزة كانت جعل الموقع متوافقا مع الحاسوب ":P اجل مع الحاسوب، السكربت كان مخصصا للهواتف فقط" وكان الموضوع صعبا قليلا، تم نصحي باستخدام الbootstrap... لم افهمها تماما لذا قمت بحركة بسيطة للالتفاف على الموضوع "قمت بعمل سكربتين داخل السكربت، والتبديل بينهما حسب الuseragint string الخاص بالمتصفح" مما زاد من حجم السكربت "اصبح الا2.5 ميغاباايت، حجم كبير وهائل"

  • استبدلت نظام تخزين الملفات على القرص الخاص بالاستضافة ثم ربطها بقاعدة البيانات بنظام ربط مع روابط خارجية "بدلا من تحميل الملفات من الاستضافة، يتم تحميل الملف من رابط خارجي" وهذا ايضا عن طريق خدعة بسيطة "عند اضافة الملف من قاعدة البيانات كان عليك سابقا تحديد ملف ورفعه، الان فقط عليك ادخال رابط" وهذا تطلب تعديل قاعدة البيانات واسلوب العرض

  • عداد التحميلات والمشاهدات، كان الموضوع سهلا، فقط قمت بالالتفاف على الموضوع، اضفت بعض الحقول لقاعدة البيانات.

  • التصميم... حسنا كان عذابا حقيقيا... المشكلة التي واجهتني هو ان السكربت ملتف على بعضه... بعض مكونات الواجهة موجودة بين اسطر الPHP وبعضها الاخر مفصولة حسب ملفات tpl... وهو المشكلة الوحيدة التي واجهتني ضمن كل المشروع

  • حسنت البحث في الموقع، خيارات ترتيب الملفات، وغيرها.

في النهاية استطعت ان انهي المشروع، اطلقه، احوله لمكتبة الكترونية تجذب 150 زائر يوميا على الاقل، بالاضافة لكونه مميز ومحبوب من الزوار "حسب ما اعرفه"

النهاية:

  • ربحت التحدي، قمت بانشاء مشروع بلغة لا اعرف فيها سوى الاساسيات، وذلك عن طريق البحث عن كل معلومة تفيدني في عملي "فقط" دون التوسع في اللغة بشكل كلي.

  • برأيي، من الممكن ان تنشئ مشروعا "متكامل الى حد ما" في لغة برمجة لا تدري عنها سوى الاساسيات، بشرط ان تتعلم تدريجيا ما تحتاجه في المشروع... بالاضافة للصبر الطويل... والوقت، الكثير من الوقت

  • لا يعني هذا ان تترك التعمق في اللغة التي تستهدفها، او ان تكتفي بالقشور، ولكنه يعني انه بامكانك البداية الان، والزيادة لاحقا، والتطور مع الوقت ولكن الامر ليس سهلا

ما رأيك انت؟ هل تعتقد بانني احمق وقد ضيعت وقتك في هذا الموضوع ووقتي في عمل المشروع؟ ام تعتقد ان الطريقة جيدة -التعلم خلال العمل- في البرمجة؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

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

تماما، المنطق البرمجي واحد، فقط تعلم ما تحتاجه للانطلاق

هل يمكنك اخبارنا ماهي اهم الفروقات الي وجدتها بين اوبجكتف و سويفت وايضا ايهما تراه الاسهل بالنسبة للمبتدئين كبداية؟

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

بالتوفيق

شكرا لك

و كمبتدأ بماذا تنصحني بأيهما ابدأ؟

حاول ان تختار اللغه الاقرب بالنسبه لك ولاضرر لو كانت الاقدم والاصعب "حتى" لو كانت الاوبجكتف سي ،المهم ان تختار ماتفضله واذا اجبرت على الانتقال لن تجد صعوبه

 

وشخصيا لو كنت مكان شخص جديد على هذه اللغات ساختار السويفت حتما لانها المستقبل

لست بحاجة أبدًا لتعلّم اللغة كاملة لتنجز مشروعك، فأنت من تُحدد ماهي الميّزات التي تُريدها٬ ومع الوقت وعندما تتعلم شيء جديد قد تدخل إلى المشروع وتعدل عليه وتستخدم ماتعلمته.

مثلًا في لغة جافا سكريبت هناك دوال مسؤولة عن فرز محتويات المصفوفة، لكننا في الجامعة كُنا نكتب هذه الدوال بإيدينا كنوع من التدريب٬ لذا لا تعتقد أبدًا أنك أضعت وقتك.

هذا درس كتبته عام ٢٠٠٦

إقرأ المُحتوى ولاحظ المُستوى المُستخدم :D ولاحظ البساطة، لكن مع الوقت تعلمت فصل البرمجة عن التصميم واستخدام نظام القوالب وغيرها الكثير.

تقريبا هو مستواي في اللغة الان... واقل :"D

حاليا الطريق مفتوح امامي لتعلم البرمجة ولكنني ساجرب حظي في الترجمة والكتابة اولا

هل تحتاج لمعرفة كامل كلمات وقواعد اللغة الالمانية لكتابة كتاب ؟

هل تحتاج لمعرفة كامل كلمات اللغة الالمانية لترجمة كتاب؟

نعم الترمجة تبدو مقارنة منطقية أكثر, شكرا.

أخي هذه هي الطريقة التي أستعمل دائما، وأسميها "بيه فيه"، فقط أبدا باستعمال لغة جديدة مباشرة وأبحث على كل شيء أريد بدءا بكيفية طباعة جملة.

بيه فيه

ما معناها بالفصحة؟

حرفيا به وفيه. المعنى فقط ابدأ ولا تكثرت...

لها استعمالات أخرى أيضا...

" منو وفيه" يمكن

السلام عليكم

في الحقيقة أخي العزيز لا أظنك تحتاج حتى لنصف اللغة لكي تبدأ إنتاج مشاريع ذات مستوى متوسط.

بل عليك في البداية تعلم أساسيات اللغة من خلال دورة أو كتاب يشرح تلك الأساسيات و من الأفضل أن لا يكونا طويلين. و من ثم أبدأ مشروعك و دعه هو يعلمك و يزد من خبراتك البرمجية.

فعلى سبيل المثال انا ابرمج بلغة c++ و رغم اني متأكد اني لا اعلم عنها الكثير اللا اني انتج بها ما تشتهي نفسي من برامج متنوعة.

هذا رأيي الشخصي

و أرجو لك التوفيق.

أعتمد نفس طريقتك بالضبط في إنجاز المشاريع , لاأستطيع مشاهدة الدورات أو الإنتظار حتى انتهي من تعلم اللغة

DeltaForce أضف ردا

بداءت مع PHP من خلال echo فقط تصور كنت أكره اللغة و تعلمت الشيء القليل عنها بسبب ووردبريس و محاولتي تصميم قوالب خاصة بي .

بعدما تعلمت اللغة بشكل أفضل أصبحت أستصغر wordpress , و الأكواد الغير مفهومة و المعقدة أصبحت لدي كالكتاب المفتوح , حتى برمجة الاضافات و اكوادها كنت اجدها شيء مرعب في بداية تعامل مع ووردبريس (سنة 2010 ) .

لكني الآن فقط فهمت لماذا علي تعلم اللغة قبل التعامل مع اي framework يتبعها .

بالتاكيد ولكن اذا كنت تتطور مشورع سيستخدمه عدد كبير (100000+) فانت بحاجه لتعلم افضل طريقه لبرمجته حتي لا تواجه مشاكل في المستقبل في حاله:

تعديل بعض الخصائص

اضافه بعض الخصائص

العمل مع اكثر من مبرمج ربما لن يفهم المبرمج الاخر طريقه برمجتك اذا لم تتكن تتبع (best practices)

أن أتعلم لغة/تقنية صعبة التعلم وسريعة الانجاز مثل ASP.NET MVC

أفضل من أن أضل مستخدما لغة/تقنية سهلة ولكن مليئة بالمصاعب مثل ASP.NET Web Forms

DeltaForce أضف ردا

صعبة التعلم وسريعة

هذه مشكلة جميع اطر العمل , انك لا تفهم ماذا يعني الامر و هناك الكثير من الدوال التي تحتاج لحفضها احيانا اجد نفسي اسرع في العمل ادا كتبت الدوال لوحد . لا ادري لماذا لكن حتى اكبر اطر العمل دائما تجد شيء ناقص فيها و عندما تكتبه لوحد تقول لم اختر على نفس الكثير .

أوافقك إلى حدٍ ما

ولكن بالطبع سيكون هنالك الكثير من العقبات وستأخذ الكثير من الوقت مقارنةً بلغة أنت متعمق بها

أنا معك في بعض النقاط لكن من الاحسن التعلم بشكل صحيحأي عندما تبني اساس قوي لن يسقط و اذا بنيت الاساس مغشوش سيسقط و بنسبة للبرمجة نفس الشيء و انت كانك هدفك فقط هو تنفيد التحدي بين صديقك و ليس التعمق في اللغة

تماما كما قلت... هدفي ليس التعمق وانما انشاء المشروع... الذي هو التحدي

طريقتي

أتعلم الأساسيات : ابدأ بمشروع واحد

وأتعلم بالتدريج كلما أحتاجه من تقنية في المشروع الأول

ثم الثاني

  • أتعلم كل نقطة تفصيلية عند الحاجة لها -