التخطي إلى المحتوى الرئيسي

ما الفرق بين " الكتابة البرمجية " و"التفكير البرمجي " ؟

كثيرا ما أقرأ اسئلة من أناس يرغبون ان يصبحوا مبرمجين او عن " أي لغة أفضل من لغة ؟ " او " أي لغة أبدأ بها ؟ " . سأجيب - ان شاء الله - في هذه التدوينة عن هذه الاسئلة .

في البداية يجب أن تعي أخي المتعلم الفرق بين " الكتابة البرمجية " - كما اسميها - وبين "التفكير البرمجي " , فالأولى هي المقدرة على الكتابة بلغة معينة -c++ مثلا - وهي مجرد ان تعلم الـ syntax للغة المعينة . ولكن مجرد مقدرتك على كتابة اوامر صحيحة لا يعني انك قادر على البرمجة وحل المشاكل . فالبرمجة في نهاية الطريق هي المقدرة على حل المشاكل .

وهنا يأتي الشق الثاني وهو الأهم والأصعب ( التفكير البرمجي ) , وهو مقدرتك على حل المشكلة و ترجمتها برمجيا بطريقة صحيحة . وعند وصولك لهذه النقطة ستتمكن من البرمجة بأي لغة كانت .. كل ما عليك هو تعلم الـ syntax المعين للغة وستجد نفسك تبرمج وكأنها لغتك الأم . سأعطيك في هذه التدوينة مسار او خطوات حصولك على الشقين وعليك بالباقي .

الخطوة الأولى :

ولأن " التفكير البرمجي " هو الأهم والأصعب أفضل أن تبدأ مسيرتك البرمجية عبر scratch .

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

هدف scratch الاساسي هو تعليم الأطفال البرمجة بطريقة سلسة وممتعة ولكن يمكنك كمبتدأ البدأ بها . تتميز الـ scratch بأنها تحتوي على كل اساسيات البرمجة مثل الـ Loops و الـ conditions وتتخطى تماما مشكلة الكتابة , لذلك البدأ بها أفضل لأنك كمبتدأ قد تصاب بالضجر اذا بدأت بلغة متقدمة وقام الـ Compiler بالصياح عليك كل دقيقة على حرف نسيته او فاصلة منقوطة غير موجودة ^_^ .

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




الخطوة الثانية :

الآن وقد حصلت على التفكير البرمجي - تقريبا - يمكنك البدأ بلغة حقيقية و برمجة أي شيء . من متابعتي للدورات الغربية ومن تجربتي الشخصية أفضل البدأ بلغة صعبة , لأن الذي يبدأ بلغة صعبة مثل C++ أو لغة C واستطاع ان يقهر صعوبتها يجد باقي اللغات مثل " اللعب " بالنسبة له , عكس الذي بدأ مثلا بلغة python أو php فعندما ينتقل للغة ثانية لأي سبب سيجدها كالجحيم بالنسبة له . وذلك ليس السبب الوحيد , فلغة C مثلا عليك ان تتعامل مع الذاكرة بيديك وان تقوم بأمور معقدة لكي تنجز شيء بسيط , وتجد هذه الأمور مجهزة لك في لغة حديثة كـ python , فاحتكاكك بلغة دنيا يتيح لك معرفة خفايا الأمور وقد تحتاج هذه الخبرة في اللغات المتقدمة لتنتج تطبيقات أكثر جودة .

الخطوة الثالثة :

الآن وقد تعلمت c++ مثلا حان وقت اكتساب الخبرة . قد تكون الآن تستطيع البرمجة ولكن بدون خبرة انت لا شيء . قد تسأل الآن ما هي الخبرة في هذا المجال ؟ , اذا قمت بكتابة برنامج يتكون من 100 سطر – على سبيل المثال – ربما استطيع انا - بنفس الجودة - ان انهيه في 50 سطر فقط . و يجب أن تعلم ان كل حرف تقوم بكتابته يقوم الـ Compiler بقراءته مما يجعل وقت الاستجابة أبطأ , عندما يكون برنامجك 100 سطر فلن يظهر الفارق .. ولكن تخيل انه مليار سطر , ويمكنك اختصاره الى 400 الف بنفس الجودة , هل تعي كمية الخسارة هنا ؟ . في الواقع عدد السطور ليس المقياس الوحيد ولكنه على سبيل المثال لا الحصر .

كيف أحصل على الخبرة ؟ , ببساطة ( ألعب ) ^_^ . نعم يمكنك اللعب بالبرمجة وتعلم بالتسلية قم ببرمجة الألعاب والأشكال وكل ما يأتي في بالك فأنها افضل طريقة . ويمكنك ان تطّلع على برمجة غيرك لتكتسب الخبرة ولكن أفضل الّا تطّلع على برمجة أحد قبل ان تبدأ بنفسك لكي لا تنسخ من أحد بل أن تبني بنفسك 


لماذا لا أقوم ببرمجة لعبة الثعبان ؟! .. ولم لا ؟



الآن أنت مبرمج كامل الأهلية . ويمكنك الانطلاق الى أي لغة تريدها , وهنا تأتي اجابة السؤال في المقدمة " أي اللغات أفضل ؟ " . ببساطة لا توجد أفصل وأسوأ , فكل لغة تكون الأفضل في مجال معين . ولكن من يهتم ؟ , انت الآن تستطيع البرمجة بأي لغة كأنك من برمجها , ستأخذ منك اللغة يومين – على الأكثر – لتعلم الـ syntax لها و تنطلق بكل حرية .

على سبيل المقارنة تجد أن لغة C ولغة C++ يتميزان بالسرعة والمتانة , ولكنهما غير جاهزتان لبرمجة الشاشات مثلا , وستستغرق زمنا طويلا جدا لبرمجة تطبيق بهما لأنك - حرفيا - ستبنيه من الصفر , فهما مناسبتان أكثر لبرمجة البرامج التي تتعامل مع الـ Hardware والتي تحتاج السرعة ولا تحتوي على Interface . أما مقارنة بالجافا فهي أبطأ في التنفيذ قليلا ولكنها مجهزة بمكاتب و دوال تساعدك في عملك , وهي مناسبة اكثر للتطبيقات التي تتعامل مع المستخدم وللألعاب. يمكنك ان تقول ان التطبيق الذي يستغرق منك شهرا في لغة جافا سيستغرق منك عامان في لغة C ! . انه اختيارك الآن ^_^ .

نصائح عامة :

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

اجعل Google رفيق دربك دائما , فليس على المبرمج ان يحفظ اسماء الدوال او جميع الأمور البرمجية ولكن عليك ان تعلم ماذا تريد ودع Google يقم بالباقي ! .

كن متابعا للتطورات . حدث معي اني اكتشفت بعد فترة طويلة من البرمجة اني استخدم لغة C++ اصدار عام 1998 ^_^ . بعد الانتقال الى العالم المعاصر وجدت معظم الصعاب التي كنت أعاني منها قد اختفت بالفعل !

اذا كنت تدرس البرمجة في الجامعة او في الثانوي لا تأمل كثيرا فيهم ... فهم من درسوني C++98 ^_^ .

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




اذا اعجبتك التدوينة رجاءً شاركه لتعم الفائدة .

أتمنى أن أكون قد أفدتكم ولو قليلا ^_^ , بالتوفيق .


الموضوع من طرف: مصطفى أحمد
ضمن مسابقة المحترف لأفضل تدوينة لسنة 2017

تعليقات

المشاركات الشائعة من هذه المدونة

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

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

الآن يمكنك الحصول على 30 جيغابايت مجانا على خدمة OneDrive

بسم الله الرحمن الرحيم . تعتبر خدمة OneDrive واحدة من أشهر خدمات التخزين السحابي , و هي الخدمة الإفتراضية لمستخدمي الويندوز بإعتبارها تابعة لشركة مايكروسوفت . و قد أعلنت الشركة اليوم عبر مدونتها الرسمية  أنّه أصبح بإمكانك الآن أن تضاعف المساحة التخزينية المجّانية التي تتيحها لك الخدمة من 15 جيغابايت إلى 30 جيغابايت , و ذلك فقط من خلال تفعيل ميزة رفع الصور التي تلتقطها تلقائيا إلى خدمة  OneDrive . و تجدر الإشارة إلى أنّ هذا العرض لا يقتصر فقط على تطبيق الخدمة على الأجهزة الذكية بل يمكنك تفعيلها أيضا على حسابوك . و يمكنك الحصول على تطبيق الخدمة على أجهزة الأندرويد من هنا . كما يمكنك تحميل تطبيقها للأجهزة العاملة بنظام ال iOS من هنا .

الشرح 660 : كيف تعرف سيريال اللوحة الأم و تفاصيل أخرى دون فتح الحاسوب

بسم الله الرحمن الرحيم . كما قد يذكر بعض متابعي و محبّي مشروح فقد سبق و تعرّفنا في حدى التدوينات القديمة على اللوحة الأم  أو الماذربورد بالتفصيل . كما تعرّفنا عليها أيضا في حلقة التعرّف على مكوّنات الحاسوب . أمّا في ثاني حلقات هذا اليوم فأحببت أن أشارككم طريقة معرفة تفاصيل اللوحة الأم مثل الإسم و النوع و السيريال و رقم الإصدار .  و معرفة هذه التافاصيل ليست أمرا ثانويا كما قد يظنّ البعض . فهي أمر مهم و أساسي نحتاجه في عدّة حالات . فقد تحتاجها عندما ترغب في تحديث تعريف ما , و خصوصا عندما ترغب في ترقية أو تبديل قطعة ما من قطع الحاسوب . فلا بدّ من أن تكون متوافقة معها حتى تعمل بدون مشاكل .  حلقاات أخرى قد تهمّك : ~  كيف تعرف تاريخ صناعة حاسوبك ~  كيف تعرف وقت و تاريخ تثبيت الويندوز ~  شرح تركيب الاقراص الصلبة الخارجية و الداخلية للاب توب و الحاسوب المكتبي إذن لن أطيل عليك أكثر و أتركك مباشرة مع الشرح ففرجة ممتعة و مفيدة . " و الروابط مباشرة أسفل هذا الفيديو " . رابط تحميل  برنامج Speccy رابط تحميل  برنامج CPU-Z