جوجل تهدف لتعليم المستخدمين ” الجافا سكريبت” من خلال هذا التطبيق

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

google-grasshopper

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

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

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

الاتحاد السعودى للأمن السيبرانى يوقع مذكرة تفاهم مع معهد “SANS”

غير مصنف التعليقات على الاتحاد السعودى للأمن السيبرانى يوقع مذكرة تفاهم مع معهد “SANS” مغلقة

Young hacker in data security concept

وقع الاتحاد السعودى للأمن السيبراني والبرمجة اليوم، مذكرة تفاهم مع معهد “SANS”، فى خطوة مشتركة تهدف إلى التبادل المعرفى ونقل التقنية وتوطين القدرات.

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

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

كما وجه شكره وتقديره لفريق تنسيق الاتفاقية من قبل الاتحاد، والذي يضم الدكتور عبدالله الغامدي، والدكتور جلال المهتدي، والمهندس سليمان المخيدش، والمهندس محمد الشمراني.

يذكر أن معهد SANS يعد أكبر جهة عالمية، موثوقة، يقدم دورات تدريبية متخصصة في مجال الأمن السيبراني. وقد أنشئ عام 1989م، ويضم أكثر من 140,000 خريج على مستوى العالم.

وطبقاً لمذكرة التفاهم فإن معهد “SANS” وبالتعاون من الاتحاد سيعمل على تنظيم دورات تدريبية ومسابقات وطنية موجهة لطلاب المدارس والجامعات، وتقديم برامج لاختبار وتقوية مهارات الأمن السيبراني لدى عامة الناس، كما تضمنت البنود إتاحة دورات متقدمة في مجال الأمن السيبراني، وعقد مؤتمرات وفعاليات مشتركة.

التعامل بفعالية مع الكود الموروث 4 – Unit tests

غير مصنف التعليقات على التعامل بفعالية مع الكود الموروث 4 – Unit tests مغلقة

هذا هو الجزء الثالث من سلسلة (التعامل بفاعلية مع الكود الموروث) والتي نقوم فيها بتلخيص الكتاب الذي يحمل نفس الاسم. يمكنك الاطلاع على كامل مقالات السلسلة من هنا.

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


تحدثنا أيضا في المقالة السابقة تحديدًا عن الفرق بين ال regression tests و ال unit tests. أما مقالتنا اليوم ستتناول بشكل أعمق ال Unit tests.

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

Unit tests

الفكرة وراء الـ unit tests أنها تقوم بفحص الكود ليس ككل إنما كأجزاء components محددة معزولة عن بعضها، أي تكون هذه الـ components في حالة عزل isolationنعني بهذه ال components – من وجه نظر ال unit tests – أنها عبارة عن أصغر جزء من أجزاء برنامج أو نظام ما.

أي أننا نحتاج لفهم سلوك البرنامج و الطريقة التي يعمل بها، وتقسيمها على أساس سلوكيات مستقلة عن بعضها البعض و صغيرة قدر الإمكان حتى نستطيع كتابة unit test لكل منها على حِدة.

بالنهاية فإن هذه الـ components هي عبارة عن كود. في الشيفرة غرضية التوجه Object oriented code تكون هذه الوحدات units عبارة عن classes. أما في الـشيفرة الإجرائية procedural code تكون عبارة عن الـ functions.

السؤال هنا: هي يمكننا فعلا اختبار function أو class بمعزل عن باقي الكود؟

في ال procedural systems، إختبار function بمعزل عن باقي الكود غالبا صعب. لأن طريقة تسلسل الكود تكون بأن يقوم function باستدعاء function اخر و هكذا حتى أبسط function في ال system.

أما في ال Object oriented systems فإن اختبار ال classes بمعزل عن باقي ال classes ضمن الكود يكون أسهل نوعا ما، لكن الحقيقة المرة أن ال classes لا تعيش بمعزل عن بعضها البعض. كم مرة قمت/ي بكتابة class لا يعتمد على أي class آخر؟

مفهوم ال isolation و أن يكون ال code في هذه ال components صغير قدر الإمكان هي أساسيات في مفهوم ال Unit testing.

نعم, ال tests التي تغطي أجزاء كبيرة من الكود هي مهمة ولكنها تحمل أيضا بعض السلبيات مثل:

1- Error localization:

يصعب تحديد مصدر الخطأ عندما يغطي ال test مساحة كبيرة من ال code. يجب فحص ال variables والعمليات التي تجري عليها على طول تنفيذ الكود و كل الاحتمالات الواردة حتى يتم تحديد مصدر الخطأ. إذًا، كل ما كان الكود الذي يغطيه ال test أكبر كلما تشعبت الاحتمالات و كبرت. نعم، سنقوم بنفس العملية في الـ unit tests لتحديد مصدر أي خطأ ولكن الجهد المبذول حتما أقل لأننا اتفقنا أن ال unit tests تغطي components صغيرة قدر الإمكان.

2- Execution Time

ال tests الكبيرة تحتاج لوقت أطول حتى تتم عملية الاختبار. وربما سيتفادى المبرمج إجراء هذه ال tests الكبيرة التي تستغرق وقتًا طويلًا بعد كل تعديل صغير في الكود تجنبًا لإهدار الوقت. ولكن في حالة ال unit tests، فإن الفحص سيقتصر على ال tests الصغيرة التي تغطي ال component الذي قمنا بالتعديل عليه فقط.

ال Unit test الجيد هو السريع في تنفيذه والذي يساعد في تحديد مصدر المشكلة.

خصائص يجب عدم توافرها في الـ Unit tests

بكل وضوح, ال Unit test يجب أن تحترم مايلي:

١-  يجب أن تكون سريعة في تنفيذها، و إلا لا يمكن إعتبارها unit tests.

٢-   لا يجب أن تتخاطب أو تتواصل مع قاعدة البيانات database.

٣-   لا يجب أن تجري أي عمليات على أي شبكة network.

٤- لا يجب أن تجري أي تخاطب مع ال file system.

٥- لا يمكن اعتبارها unit tests في حال كان عليك كمبرمج أن تجري تغيرات محددة على النظام  لجعلها تعمل، مثل تعديل configuration file.

ال test المخالفة للقواعد السابقة ليست سيئة بالطبع,، ولكن لا يمكن اعتبارها unit tests إذا أنها لا تساعد على تحقيق الهدف المرجو من كتابة هذا النوع من الاختبارات.

الخلاصة:

أي test جيد هو test مفيد. ولكن ال unit tests تحديدًا تساعدنا في حماية التفاصيل الصغيرة في البرنامج و التأكد من أنها تعمل كما هو متوقع.

ونتذكر دائما: الـ unit test الجيد يجب أن يكون سريعًا ويساعدنا في تحديد مصدر المشكلة bug بسهولة.

 

المصدر: التعامل بفعالية مع الكود الموروث 4 – Unit tests

التعامل بفعالية مع الكود الموروث 3-دلالات عند تغيير الكود

غير مصنف التعليقات على التعامل بفعالية مع الكود الموروث 3-دلالات عند تغيير الكود مغلقة

هذا هو الجزء الثالث من سلسلة (التعامل بفاعلية مع الكود الموروث). يمكنك الاطلاع على الجزء الأول من هنا، والثاني من هنا.

نحاول في هذه السلسلة تلخيص كتاب “التعامل بفعالية مع الكود الموروث”. نحن الآن في الوحدة الثانية التي تتحدث عن  working with feedback بمعنى الإشارات والدلالات التي يجب أن ننتبه لها عندما نقوم بالتعديل على الكود لتساعدنا على فهم فيما إذا كنا نمشي في الطريق الصحيح أم لا.

تختلف أساليب التعديل على أي نظام برمجي بإختلاف المبرمج, بشكل عام هناك نوعين:  

  • Edit and pray
  • Cover and modify

الممتع في هذه الفكرة أنها يمكن تطبيقها على كثير من نواحي الحياة, و كأن البرمجة ماهي إلا انعكاس لإسلوب حياة وطريقة تفكير المبرمج. إما أن يكون المبرمج حذرًا بحيث لا يخطو خطوة دون أن تكون محسوبة بأمان، أو أن يقفز بتهور و يدعو الله أن تكون خطواته مباركة.

Edit and pray

 

عند البدء بتغيير كود ما,  تبدأ بقراءته ومحاولة فهمه , ثم تبدأ بإجراء التغيير, وعند الانتهاء تختبر الميزات الجديدة التي قمت بإضافتها، تتأكد أن البرنامج مازال يعمل. تتوسع تقوم بتجريب أشياء أخرى ضمن البرنامج تتأكد أنه مازال يعمل كما هو متوقع منه. إذا كان هذا أُسلوبك كمبرمج, يجب أن تعلم أنك تعمل بإسلوب Edit and pray.

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

لا أعتقد أن أحدا من يختار لإجراء عمل جراحي معقد, طبيب جراح يعمل بسكين المطبخ، فقط لان هذا الجراح سيجري العملية بحذر شديد. تغيير الكود بطريقة إحترافية يشبه لحد ما إجراء عملية جراحية , يتطلب الأمر كلٌ من المهارات والأدوات الكافية.

العمل بحذر جيد ولكن غير كافي أبدا في حال غياب الأدوات و التقنيات الصحيحة

 

Cover and modify

أسلوب التعديل على الكود هنا مختلف تماما. الفكرة الأساسية هنا هي تغطية الكود شبكة أمان safety net قبل التعديل عليه.

بمعنى اخر cover and modify تعني: عند البدء بتغيير الكود, قم بتغطية جزء يليه جزء أخر من الكود بشبكة من ال tests ومن ثم قم بالتعديل عليه بثقة. إذا كنتم تتابعون هذه السلسلة منذ البداية، ستلاحظون تكرار هذا المصطلح و ارتباطه دائما بال tests، أصدقاؤنا الحقيقيون.

في الحالة المثلى في حياة المبرمج، يكون ال code مغطى بعدد كافي من ال tests التي تساعد على التأكد من أن التغييرات الجديدة جيدة و تؤدي الهدف منها أم لا.

الهدف من وجود هذه ال Tests هو إعطاء feedback فيما إذا كانت التغييرات الجديدة تجعل نظامنا البرمجي يعمل كما هو متوقع أم أنها تعقد الكود و تجعله مليء بال Bugs.

Tests لكشف التغييرات في الكود

هناك أنواع عديدة من ال tests تختلف باختلاف الهدف من كتابتها:

Regression test

ال Regression tests يكتب حتى يتم التأكد من أن البرنامج يعمل بالطريقة المتوقعة .يعتبر هذا النوع من ال tests مثل وجود Software Vise. ال Vise هي نفس الأداة في الصورة التالية.

تبقي هذه ال Software vise الكود ثابت لا يتغير و تجعلنا نتأكد من أن التغييرات لم تؤثر في عمل البرنامج.

هذا النوع من ال tests فعال ولكنه غالبا ما يتم على مستوى واجهة المُستخدم user interface. كما أن نتائجه تكون عامة مثل أن “الكود لم يعد يعمل بالطريقة المتوقعة” دون تفاصيل دقيقة عن السبب الذي أدى إلى فشل ال test أو الجزء من الكود المسؤول عن هذا الفشل.

تخيل أن الكود الذي نريد تعديله كبير و معقد, في هذه الحالة نحن بحاجة لمعلومات أدق في حالة فشل ال test، ما يساعد في تقليل احتمالات أماكن الخطأ في الكود. في هذه الحالة يجب أن نستخدم نوع أخر من ال Testing هو ال Unit Tests.

Unit Tests

لنتخيل السيناريو التالي: لدينا كود نريد التعديل عليه. لحسن الحظ قام المبرمجون بكتابة unit tests له. نجري هذه الإختبارات و نرى أن جميعها تتم بنجاح. نبدأ بمحاولة فهم الكود عن طريق قراءته و قراءة ال tests. نشعر بالرغبة في تغيير الكود لجعله سهل القراءة readable. نقوم ببعض التعديلات، و نقوم بإجراء ال tests ونرى أن جميعها يتم بنجاح. إذًا نحن الآن متأكدون أنه رغم التغييرات الجديدة ما زال الكود يعمل بالطريقة المطلوبة. نكمل بإجراء ال test بعد كل تعديل، ونرى أحيانًا أن بعض هذه ال tests يفشل. في هذه الحالة لدينا feedback وهو أن التعديلات التي جرت في هذا الجزء من الكود الذي يغطيه هذا ال test هي المسؤولة عن الخطأ، أي أنها غيرت من الطريقة التصرف المتوقعة والمطلوبة من البرنامج. هنا تحديداً نرى أهمية ال unit tests و الفرق بينها و بين ال regression test.

ال Unit tests هي واحدة من أهم مكونات العمل مع الكود الموروث

الخلاصة

  • ال tests بكل أنواعها مهمة لأنها تعطي feedback عن حالة الكود عند كل تعديل.
  • وجود ال Regression test ضروري و مهم و لكن وجود unit tests صغيرة ومسؤولة عن أجزاء محددة من الكود أكثر أهمية بسبب وضوح ال feedback التي يعطينا إياها عن سبب المشكلة، ما يوفر علينا وقت لإصلاح المشاكل بأمان أكثر.

 

المصدر: التعامل بفعالية مع الكود الموروث 3-دلالات عند تغيير الكود

التعامل بفعالية مع الكود الموروث 2 – تغيير الكود

غير مصنف التعليقات على التعامل بفعالية مع الكود الموروث 2 – تغيير الكود مغلقة

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

Changing Software تغيير الكود

في بداية تعلمنا للبرمجة، نبدأ بكتابة برامج قصيرة ينتهي العمل عليها بانتهاء الهدف من كتابتها، مثل تعلم الأساسيات أو تطبيق فكرة لإثبات أنها تعمل – proof of concept. ويمكننا القول بأن الوضع الطبيعي اليومي في حياة أي مبرمج أنه يقوم بالتعديل على الكود، أكثر من الاستمرار في كتابة كود جديد دون تغيير القديم.

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

أسباب تغيير الكود

يمكننا أن نلخصها بأربع نقاط :

  1. إضافة ميزات جديدة للبرنامج – Adding features
  2. إصلاح مشكلة –  Fixing bugs
  3. تطوير تصميم الكود – Design improvement
  4. تحسين في استخدام الموارد – Optimizing resources usage

Adding features – إضافة ميزة جديدة

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

Design improvement – تطوير تصميم الكود

من ميزات تطوير تصميم الكود :

  • لا يجب أن تتغير الطريقة التي يعمل بها البرنامج
  • والنتائج قبل تطوير تصميم الكود و بعده يجب أن تبقى كما هي.

و في حال التغير في عمل البرنامج يعتبر هذا التغير Bug. لذا يعتبر ال Design improvement حالة حرجة التي يحاول أكثر المبرمجون تجنبها لأنها غالبا ما تنتهي بقائمة من ال Bugs إذا كان تصميم الكود ضعيف. 

عملية تطوير تصميم الكود من دون تغيير الطريقة التي يعمل بها البرنامج تسمى بال Refactoring. إذ يكمننا جعل التصميم أسهل للتطوير في المستقبل .

ال refactoring ليس عملية تنظيف للكود، هو تغييرات في تصميم الكود – structure modifications- ولكن كيف نضمن أن الطريقة التي يعمل بها البرنامج  لن تتغير عندما ننتهي من عملية ال Refactoring؟

للعمل باحترافية يجب أن يسبق مرحلة ال Refactoring مرحلة كتابة tests قدر المستطاع. تغطي هذه ال tests أكبر جزء ممكن من الكود القديم ونتأكد من أن هذه ال tests تعكس الطريقة التي يجب أن يعمل بها البرنامج. وبعد عملية ال Refactoring يجب أن تؤكد هذه ال tests لنا أن البرنامج ما زال يعمل كما يجب. تلعب هذه ال tests دور العقد المبرم بين المبرمج و الكود، و كما قلنا في المقال الأول، في هذه النقطة بالذات فإن أكواد التجربة tests هم فعلا أصدقاؤنا الحقيقون.

عملية ال Refactoring بدون كتابة Tests هو تصرف يجلب عواقب. وتذكر دائما تسلق الجبال بدون حبال نجاة وبدون حظ ربما يجلب نتائج خطيرة. الأمر ليس سهل بسهولة سرده في هذه المقالة، لكنه يحمي المبرمج من الوقوع في مشاكل لا مفر منها.

ال Refactoring  هي عملية تطوير تصميم الكود من دون تغيير ال behaviour. 

Optimizing – التحسينات على الكود

تشبه لحد ما عملية Refactoring مع اختلاف الهدف من العملية. إذ أن كلاهما يبقيان البرنامج يعمل بالطريقة نفسها قبل هذه الخطوة. ولكن :

  • يتحسن تصميم الكود في الـ Refactoring
  • ويتحسن استخدام الموارد في ال optimization كأن يستهلك البرنامج ذاكرة وبطارية أقل.

الصورة العامة

تغيير الكود يجب أن يكون الهدف منه أحد مما يلي : بنية الكود – structure , الطريقة التي يعمل بها الكود – functionality , أو الموارد – resources changes.

 

ما الهدف مما سبق ؟

الهدف من كل ما سبق هو معرفة أين يجب أن يتجه تركيزنا عند البدء بتغيير الكود. والأهم هو معرفة ما هو الخط الأحمر أي ما الذي يجب أن لا يتغير أبدا, وهذه ليست بالمهمة السهلة.

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

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

برأيي الشخصي, كتابة الكود ليس بالأمر الصعب. المهمة الأصعب و الأمتع هي تطوير البرمجيات واحترافها. وهذه  المصطلحات هي أدوات مساعدة.

المصدر: التعامل بفعالية مع الكود الموروث 2 – تغيير الكود

التعامل بفاعلية مع الكود الموروث [برمجة]

غير مصنف التعليقات على التعامل بفاعلية مع الكود الموروث [برمجة] مغلقة

لا يوجد مُبرمج مهما كان خبيرًا لا يخشى التعامل مع الكود الموروث Legacy Code. لكن هناك عدد من النصائح التي يمكن اتّباعها للتعامل مع الكود الموروث بهدوء واحترافية، سنتعرّف عليها من خلال سلسلة المقالات هذه.

لمصطلح الكود الموروث legacy code أكثر من تعريف وردّة فعل واحدة من أي مبرمج بمجرد ذكر الكلمة أمامه:

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

كما يمكننا تعريفه على أنه الكود الذي قمنا نحن أنفسنا بكتابته و بدأ بالتحول لوحش خارج عن السيطرة غير قابل للإصلاح أو للتطوير، تماما ذاك الشعور عندما تبدأ بكتابة برنامج من نقطة الصفر, نكون حريصين على أن كل سطر يجب ان يكون صحيح منطقيا وبرمجيا، و في نقطة ما يصبح الكود مُعقّدًا أكثر وأكثر. و إصلاح المشاكل bugs يصبح أصعب و يأخذ وقتا أطول. والأسوأ هو أن تصل لنقطة تشعر معها أن هذا الكود لا فائدة من إصلاحه أبدا. يمكن أن يكون البرنامج يعمل بوجود أخطاء معروفة. يحدث أن نقوم بكتابة كود وبعد عدة أشهر نحتاج لإعادة قراءة جزء معين منه ويظهر السؤال : “هل حقا أنا من قام بكتابة هذا الكود ؟؟” .  كل ما سبق هو تعريف لمعنى الكود الموروث.

أي بإختصار:

 مصطلح ال legacy code يشير إلى الكود الصعب التغيير، صعب الفهم.

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

في سلسلة العمل مع الكود الموروث سأقوم بتلخيص ما قرأت في كتاب Working effectively with legacy code للرائع Michael C. Feathers .

هدفي من هذه السلسلة أن نتعرف معًا على زاوية جديدة في عالم البرمجة،  وتقديم مفاهيم جديدة لم ندرسها في الجامعات و المعاهد، بل هي خلاصة تجارب كبار المبرمجين على فترات طويلة.

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

ال Tests هم أصدقاؤك الحقيقيون

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

كما يمكننا القول بأن الكود بدون Tests هو كود سيء، لا يهم مدى إتقان كتابة الكود، ولا يهم كم أحسنت استخدام مفاهيم البرمجة غرضية التوجّه Object-oriented.

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

مهمتنا كمبرمجين أن نقوم بتصميم برمجيات يمكنها ان تتأقلم مع أي تغيير بسهولة و بسرعة نسبية قدر المستطاع. وحتى يكون من السهل التعديل على الكود يجب حتما أن يتم دعمه دائما و أبدا بال tests.

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

في المقابل, كتابة كود نظيف و دعمه ب tests هو بمثابة شبكة حماية, وعقد بينك و بين الكود، بأنه يتصرف دائمًا بنفس الطريقة التي كتب بها، وبأن أي تغيير في المستقبل يؤثر أو يغير من التصرف المتوقع من الكود سيؤدي إلى تنبيهك من قبل ال tests.

الخلاصة :

كتابة كود نظيف شئ جيد ولكن ليس كاف. ال Tests هم أصدقاؤك الحقيقيون.

المصدر: التعامل بفاعلية مع الكود الموروث [برمجة]

تعرف على أهم لغات البرمجة للمبتدئين

غير مصنف التعليقات على تعرف على أهم لغات البرمجة للمبتدئين مغلقة

ربما صادفت في كثير من المرات مصطلح البرمجة أو لغة البرمجة ولا تعرف ما هو، وربما تجد الأمر معقدا، ولكن هذا غير صحيح، حيث تعتبر لغة البرمجة هي اللغة التي يتعامل بها الإنسان مع الآلة.
فجهاز الكمبيوتر يسمى آلة يعمل وفقا لأوامر وتوجيهات تُسمى “برامج”، والذي قام بتوجيهها الإنسان، والذي يسمهى هنا “مبرمج”، وهذا من خلال ما يعرف بـ”لغة البرمجة”، فهي الطريقة التي تسمح للمبرمج بكتابة الأوامر “المبرمجة”.

أهم لغات البرمجة :

Drag & Drop
هذا النوع للمبتدئين في مجال البرمجة، حيث يمكنهم من نسخ الأكواد المكتوبة مسبقا ووضعها داخل مساحة الكتابة، من خلال ما يسمى السحب والإلقاء.
تدعم المتصفحات Internet Explorer 9 و Firefox و Chrome و Safari 5 لغة السحب و الإفلات.

free-604353432497991332

Ruby
تعد من أسهل لغات البرمجة، ففي 20 دقيقة يمكنك أن تحصل على العديد من المفاهيم المتعلقة بها، وتعتبر لغة روبي مصممة للإنتاجية وللمرح، حيث يشدد مصمم اللغة، “Yukihiro Matsumoto”، على أن تصميمه اي نظام يحتاج إلى التركيز على احتياجات الإنسان، بدلا من جهاز الكمبيوتر.
ومن أهم مميزات تلك اللغة إنها : مفتوحة المصدر، محمولة، كائنية المنحى، ذات أغراض عامة.

05bb2_ruby

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

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

ومن أهم مميزاتها : السهولة، آمنة، سهولة الحصول عليها، داعمة و موجهة للكيانات، بالإضافة إلى توفير بيئة تفاعلية عبر الشبكة العنكبوتية وبالتالي تستعمل لكتابة برامج تعليمية للإنترنت عبر برمجيات المحاكاة الحاسوبية للتجارب العلمية وبرمجيات الفصول الافتراضية للتعليم الإلكتروني والتعليم عن بعد.

free-1964047932582356163

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

cpp-logo

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

free-2964723971874532281

حسم 25% على دورات موقع “يوديمي” عبر الكوبون الحصري 25ARDROID

أخبار أندرويد التعليقات على حسم 25% على دورات موقع “يوديمي” عبر الكوبون الحصري 25ARDROID مغلقة

إن أردت تعلّم مهارة جديدة، كتطوير التطبيقات، البرمجة، الويب، التسويق، ومئات المواضيع المختلفة الأخرى، يسرّنا أن نقدّم لقرّاءنا عرضًا حصريًا بموقع أردويد، يتم من خلاله تقديم حسم بقيمة 25% على دورات موقع “يوديمي” Udemy باستخدام الكوبون الخاص بموقعنا 25ARDROID.

للحصول على الحسم تستطيع إدخال الكوبون 25ARDROID لدى عملية الشراء، أو تصفّح الدورات عبر هذا الرابط الذي يتضمن الكوبون بشكلٍ مُسبق. 

العرض مستمر حتى تاريخ 23 نيسان/أبريل 2016 وهو يشمل معظم الدورات المتوفرة على الموقع. لكننا سنقدم لكم هنا أيضًا مجموعة من الدورات العربية التي ننصح بها:

الإصدار الثاني من الدورة الكاملة لتطوير الويب متوفّر الآن

أخبار أندرويد التعليقات على الإصدار الثاني من الدورة الكاملة لتطوير الويب متوفّر الآن مغلقة

تطوير الويبتطوير الويب

دورة تطوير الويب الكاملة The Complete Web Developer Course هي الدورة الأعلى مبيعًا على الإطلاق في موقع الدورات “يوديمي” Udemy، وذلك بفضل تقديمها لمنهج مُتكامل يبدأ من الصفر، لا يتطلّب أية خبرة مُسبقة، وينتقل حتى تعليم كُل ما يلزم لتطوير تطبيقات ويب تفاعلية، أو تطبيقات للهواتف الذكية اعتمادًا على تقنيات الويب.

اليوم تم إطلاق الإصدار الثاني والجديد كُليًا من الدورة الأكثر مبيعًا، ورغم مضي أقل من يوم واحد على إطلاقها، أصبح هناك الآن بالفعل أكثر من 19,000 طالبًا في هذه الدورة الضخمة التي تحتوي أكثر من 30 ساعة فيديو.

هذا جزء مما تُقدمه هذه الدورة:

  • تم إعادة تسجيل جميع الدروس في الدورة القديمة وتحديثها إلى تقنيات HTML 5 و CSS 3 Bootstrap 4 و  WordPress 44.2 و PHP 7.
  • تم إضافة ثلاثة أقسام ضخمة جديدة حول بعض الميزات الخاصة في Python و HTML 5 و CSS 3 مع مثال جديد يشرح تطوير خدمة شبيهة بتويتر وفق منصّة MVC
  • شرح تطوير تطبيقات الهواتف الذكية بسرعة وسهولة من خلال منصتي App.js و Phonegap
  • ثلاثة ثيمات احترافية مجانية مبنية على منصة Bootstrap (بقيمة $99 لكل منهما)
  • نسخة جديدة من الكتاب الإلكتروني المجاني للطلاب (كيف تربح 10,000 دولار أثناء تعلّمك البرمجة)
  • استضافة مجانية غير محدودة لمدة سنة (بقيمة 199 دولار) تتيح تطبيق ما تعلّمته وإطلاق موقعك على مُخدّم حقيقي

في حال أتممت الدورة ووجدت أنك لم تستطع الاستفادة فيما تعلّمته لصناعة مواقع ويب أو تطبيقات تُدخل عليك أرباحًا تعوّضك عن تكلفة الدورة على الأقل، سيتم إعادة نقودك حتى فترة تصل إلى 60 يومًا من تاريخ إتمام الدورة. 

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

مركز ITS للتدريب يطلق دورات تطوير أندرويد عبر الإنترنت للمستخدمين العرب

أخبار أندرويد التعليقات على مركز ITS للتدريب يطلق دورات تطوير أندرويد عبر الإنترنت للمستخدمين العرب مغلقة

android_vector

android-development

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

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

تعتمد الدورة على كتاب Professional Android 4 Application Development وتبدأ بمقدمة شاملة في لغة جافا، قبل الانتقال إلى مواضيع أندرويد بشكل تدريجي حيث يتعلم المتدرب بدايةً كيفية إنشاء تطبيق بسيط ثم التدرج في شرح النشاطات Activities وبناء الواجهات والنوايا Intents والتعامل مع الملفات وقواعد البيانات ومزوّدات المحتوى Content Providers والخدمات التي تعمل في الخلفية وحساسات الجهاز وغير ذلك. يمكن الاطّلاع على ما تقدمه الدورة بشكل كامل من هنا.

مدة الدورة 6 شهور تتضمن محاضرة واحدة إسبوعيًا مدتها 4 ساعات. تبلغ التكلفة الكاملة للدورة 1000 دولار شاملةً النسخة الأصلية من الكتاب مع تكاليف شحنه، وشهادة حضور الدورة مع تكاليف شحنها.

لمعرفة المزيد من التفاصيل والتسجيل يمكن مراجعة موقع ITS.

ملحوظة: موقع أردرويد ينشر الخبر للفائدة العامة، ليست لنا أية علاقة بالدورة التدريبية أو بشركة ITS.

أندرويد للعرب © 2024 WP Theme & Icons by N.Design Studio | تعريب قياسي
التدويناتRSS | التعليقاتRSS | تسجيل الدخول