بعض المهارات التقنية التي يجب على كل مبرمج معرفتها والإلمام بأساسياتها
هذه تغريدات كتبتها بالأمس على موقع تويتر، وأحببت نشرها على المدونة ليسهل الوصول إليها.
أسفل هذه التغريدة سأقوم بسرد بعض المهارات التقنية التي يجب على كل مبرمج معرفتها والإلمام بأساسياتها.#حزب_المبرمجين
— فؤاد المالكي 🇸🇦 (@engineer_fouad) February 8, 2019
1- أسفل هذه التغريدة سأقوم بسرد بعض المهارات التقنية التي يجب على كل مبرمج معرفتها والإلمام بأساسياتها. #حزب_المبرمجين
2- الخوارزميات وحل المشاكل برمجياً: بحيث يتمكن المبرمج من تحليل مشكلة معينة وتحويلها إلى أكواد باستخدام عناصر البرمجة الأساسية مثل الجمل الشرطية (مثل if) وجمل التكرار (مثل for و while) واستخدام المصفوفات (arrays) وغيرها.
3- البرمجة الكائنية Object-Oriented: بحيث يتمكن المبرمج من تمثيل الأشياء في الحياة الواقعية على هيئة Classes و Objects، واستخدام المفاهيم المساعدة مثل Inheritance و Abstraction و Encapsulation و Polymorphism.
4- تراكيب البيانات Data Structures: وهي حاويات لحفظ عناصر داخلها بترتيب معينة، بحيث يكون الوصول إلى عناصرها وإجراء بعض العمليات عليها (مثل search و sort) ذو كفاءة عالية. ومن أمثلتها: List, Queue, Set, Tree, Map.
5- أنماط التصميم البرمجية Design Patterns: وهي عبارة عن حلول ونماذج جاهزة تستخدم لتصميم هيكلة الـ Objects وطرق إنشائها وكيفية التواصل بين بعضها البعض. من أمثلتها: Singleton, Builder, Factory method, Adapter, Composite, Decorator, Facade, Command, Iterator, Strategy, Visitor.
6- البرمجة المتوازية Concurrent Programming: بحيث يتم تنفيذ البرنامج باستخدام أكثر من Thread. كل Thread يقوم بتنفيذ عدة أوامر متتالية، والـ Threads جميعها يتم تنفيذها بشكل متزامن أو في آن واحد. توجد مفاهيم ذات علاقة، مثل: synchronization, locks, mutex, semaphore, race condition.
7- التعامل مع الملفات: يجب على المبرمج أن يفرق بين الملفات النصية والملفات الغير نصية (binary) (مثل ملفات الصور والفيديو وغيرها) وكيفية قراءتها وتخزينها على المساحة التخزينية، ويتعرف على مفهوم الـ Encoding (مثل UTF-8) وهي الطريقة المستخدمة لتمثيل النصوص على هيئة binary.
8- الملفات النصية الشائعة: هناك عدة أشكال formats تستخدم لتخزين البيانات على هيئة نصوص. مثل: CSV, XML, JSON, YAML.
9- التعابير المنطقية Regular Expressions أو اختصاراً Regex: وهي سلسلة من الحروف تستخدم للبحث عن تطابق داخل نص معين، ويمكن استخدامها أيضاً لتبديل كلمات بأخرى داخل النص أو للتحقق من مدخلات نصية Text Validation. أنصح باستخدام هذا الموقع أثناء بناء regex معين: https://regex101.com
10- التعامل مع قواعد البيانات Databases: بحيث يتمكن المبرمج من كتابة برنامج يتصل بقاعدة بيانات ويستخدم لغة SQL للبحث داخل الجداول أو لإضافة أو تعديل سجلات. معظم لغات البرمجة بها أدوات تساعد في هذه العملية. فمثلاً في لغة جافا، يمكن استخدام JDBC.
11- استخدام أدوات إدارة وحفظ الأكواد Version Control Systems: وهي أدوات تساعد في حفظ الأكواد مع جميع التغييرات التي طرأت عليها، مع إمكانية استرجاع نسخ سابقة من الكود. من أشهرها: git أيضاً GitHub.com يعتبر أشهر المواقع التي تستضيف برامج مفتوحة المصدر داخل مستودعات git.
12- استخدام بيئات التطوير IDEs: وهي برامج ومحررات نصوص مع العديد من الأداوت التي تسهل من عملية كتابة الأكواد. أنصح باستخدام الاختصارات shortcuts والتعود عليها بشكل دائم للقيام بالمهام والعلميات داخل الـ IDE والتي تزيد من الإنتاجية. أنصح الجميع بالـ IDEs الرائعة من تطوير @JetBrains
13- قراءة التوثيق الرسمي للغة البرمجة documentation: وهو مستند يحتوي على وصف لجميع الـ classes والدوال الموجودة في مكتبات اللغة الرسمية مع توضيح لطريقة عملها. مثلاً في لغة جافا، لا غنى عن JavaDoc.
https://docs.oracle.com/en/java/javase/11/docs/api/index.html
14- مهارة الـ debugging: بحيث يتمكن المبرمج من إيجاد الأخطاء البرمجية داخل الكود. ويمكن استخدام الـ debugger Tools التي تزودها اللغة أو تجدها داخل الـ IDE. ملاحظة: أحياناً طباعة جمل معينة على الـ console بداخلها قيم لمتغيرات داخل الكود تكون عملية كافية وسريعة لإيجاد الأخطاء.
15- استخدام الـ Build Tools: وهي أداوت تسهل عملية الترجمة compiling وإدارة الـ dependencies وبناء الحزم النهائية للبرنامج مع الأخذ بالاعتبار اختلاف البيئات. في لغة جافا مثلاً، يوجد maven و gradle.
16- اختبار البرمجيات: وهي القيام بكتابة أكواد جانبية تختبر جميع وظائف البرنامج الأساسية للتأكد من صحة عملها. بحيث لو تم تغيير جزء من البرنامج الأساسي، تكشف هذه الاختبارات عن أي خلل في التغيير. أشهر مثال على هذه الاختبارات: Unit Testing. وفي لغة جافا، أشهر مكتبة للقيام بذلك هي JUnit.
17- التعامل مع HTTP: وهو بروتوكول الإنترنت الأشهر، ويستخدم للتواصل بين الـ Client والـ Server لإرسال بيانات. يجب معرفة الفروقات بين الـ HTTP Methods، وأشهرها GET و POST. أيضاً يجب معرفة مكونات الـ HTTP Request والـ HTTP Response ومعرفة أشهر الـ HTTP Headers و HTTP Status Codes.
18- التعامل مع RESTful Web Services: الـ REST هو آلية لتنظيم الخدمات الموجودة على سيرفر على هيئة APIs، بحيث يمكن لأي Client استخدام هذه الخدمات بالاتصال عبر البروتوكول HTTP. أنصح أي مبرمج بالاطلاع على GitHub REST API كمثال وكتابة HTTP Client يستخدمها: https://developer.github.com/v3
التعليقات (2)
أضف تعليقك
أداة البحث
التصنيفات
- أمن معلومات (1)
- برمجة (7)
يعطيك العافيه يامهندس على هذا الشرح الوجيز والشامل
حبذا لو تستمر في إفادتنا بمثل هذه المعلومات القيمة سواء على
مدونتك أو حسابك في تويتر
شرح جميل وموفق ، لمن يريد التعمق أكثر في البرمجة المتوازية أنصح بقراءة هذه التدوينة :
http://pythonation.com/البرمجة-المتوازية/