لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 12/08/23 في كل الموقع
-
كنت اريد ان اسأل ما هو ال ajax , DOM Manipulation في javascript وما هي استخدماتها2 نقاط
-
سلام عليكم هل سوف اتعلم في كورس JavaScript مفاهيم solid و design patterns1 نقطة
-
السلام عليكم ، لقد أنهيت 4 مسارات و هي أساسيات البرمجة و أنظمة التشغيل و قواعد البيانات و الويب هل هذا كاف لأجتاز الإختبار و كيف أعرف أنني مستعد1 نقطة
-
بالطبع تستطيع إنشاء مواقع ديناميكية من خلال جانغو، ومن الممكن تحسين تجربة المستخدم من خلال تطوير الواجهة الأمامية من خلال React لكي يتم تحديث البيانات بشكل سريع وبدون الحاجة إلى تحديث الصفحة، أي جانغو في الواجهة الخلفية كـ API وإدارة لقاعدة البيانات وReact في الواجهة الأمامية. وبخصوص منصات الـ Low-code أو No-code فهي موجودة دائمًا ولها عملاؤها ويمكنك إنشاء موقع لتلك النوعية من العملاء من خلالها ولا مشكلة في استخدامها، لكن لن تستبدل مطوري الواجهة الأمامية بالطبع. ولكن عليك تطوير مهارات وتعلم التقنيات المتقدمة لكي تتمكن من إنشاء موقع وتطبيقات متقدمة لا تقدر تلك المنصات على إنشائها، فلا تشغل بالك بذلك واشغل نفسك بتطوير مهاراتك ولا تكتفي بتعلم اللغات الأساسية فقط بالرغم من أهميتها وضرورة تعلمها بشكل صحيح، إلا أنه عليك تعلم التقنيات القائمة على تلك اللغات مثل React أو جانغو، وتعلم كيف تقوم بتطوير مشاريع من خلالهم. وستجد تفصيل هنا:1 نقطة
-
ما هو التعقيد الزمني والمكاني لخوارزمية البرمجة الديناميكية لو سمحتم عندي بحث واحتاجه ضروري1 نقطة
-
بعد حصولي على الشهادة, كيف يمكنني العمل في الشركة على الانترنت ؟1 نقطة
-
1 نقطة
-
كيفية إدراج ملفات المشاريع لدورة تصميم واجهات المستخدم في إطار العمل Laravel10 وتشغيلها.1 نقطة
-
1 نقطة
-
في تطبيق ويب JS الحالي الذي أعمل عليه، أقوم حاليًا بعرض rendering صفحاتي بمعلومات محددة من مجموعة بيانات MongoDB Atlas. للأسف، لا أعرف ما يكفي عن JS لإصلاح مشكلة رئيسية، حيث أن الكود الحالي يستعلم قاعدة البيانات في كل مرة يتم فيها تقديم صفحة حسب ما أفهم، ويبدوا أن تلك مشكلة كبيرة بالنسبة لسرعة تطبيقي، لذا، أرغب في معرفة كيف يمكن استدعاء تلك الاستعلامات وتخزينها في بداية تشغيل تطبيق الويب بحيث لا يحدث ذلك مرة أخرى. const express = require('express'); const Link = require('./models/link'); const Site = require('./models/site'); const app = express(); const port = 3000; const dbURI = 'censored'; mongoose.connect(dbURI, { useNewUrlParser: true, useUnifiedTopology: true }) .then((result) => app.listen(port)) .catch((err) => console.log(err)) const db = mongoose.connection; app.set('view engine', 'ejs'); app.use(express.static('public')); app.get('/', async (req, res) => { try { const [links, sites] = await Promise.all([ Link.find({}).sort({ order_no: 'asc' }), Site.find({}).sort({ order_no: 'asc' })]); res.render('index', { title: "Home", links, sites }) } catch (e) { console.log(e); res.sendStatus(500); } }); app.get('/page01', async (req, res) => { try { const [links, sites] = await Promise.all([ Link.find({}).sort({ order_no: 'asc' }), Site.find({}).sort({ order_no: 'asc' })]); res.render('page01', { title: "Home", links, sites }) } catch (e) { console.log(e); res.sendStatus(500); } }); app.get('/page02', async (req, res) => { try { const [links, sites] = await Promise.all([ Link.find({}).sort({ order_no: 'asc' }), Site.find({}).sort({ order_no: 'asc' })]); res.render('page02', { title: "Home", links, sites }) } catch (e) { console.log(e); res.sendStatus(500); } });1 نقطة
-
ازاي ارسم مخطط انسيابيا لجمع الاعداد الزوجيه من 0ل 20 علي برنامجflowgorithm1 نقطة
-
السلام عليكم عندي مشكلة في بوت التليجرام الخاص بي ، فهو لا يعمل ولا يستجيب للاوامر عندي او عند المشتركين ف ماالحل ؟1 نقطة
-
يوجد العديد من الأسباب التي يمكن ان تكون السبب، أهمها ان تتأكد من الtoken الخاص بالبوت و انه مربوط مع الكود، إذهب الى botfather على تلغرام، و بعدها اختر البوت الخاص بك و سيتم ارسال ال api token اليك مرة أخرى قم بنسخة و وضعه في الكود الخاص بك. تأكد من خلال الكود الخاص بالبوت انه ليس مقيد لمستخدمين محددين فقط. حاول دائما ان تبدأ برمجة البوت بأوامر سهلة مع تجربتها لتتأكد انه شغال و هذا كود بسيط لبوت تلغرام: from telegram.ext import Updater, CommandHandler # استبدال "YOUR_TOKEN" بتوكن البوت الخاص بك TOKEN = "YOUR_TOKEN" def start(update, context): update.message.reply_text('مرحبًا بك في البوت!') def main(): # إعداد البوت باستخدام التوكن updater = Updater(TOKEN, use_context=True) # الحصول على مدير التحديثات dp = updater.dispatcher # إضافة معالج الأمر "/start" dp.add_handler(CommandHandler("start", start)) # بدء البوت updater.start_polling() # البقاء على البوت نشطًا حتى يتم الضغط على Ctrl-C updater.idle() if __name__ == '__main__': main() بعد التأكد انه شغال قم بإضافة الأوامر التي تريدها مع التعديل اللازم على الكود.1 نقطة
-
عندما يتعلق الأمر بفترة التعلم، يمكن استخدام ChatGPT كأداة إضافية للمساعدة في فهم الكود وحل المشكلات بعد المحاولة في حل المشكلة لفترة حيث أن البحث والتفكير في حل المشكلة هما من أفضل المهارات التي يمكنك تعلمها وعند استخدام chatgpt بدلاً من الخطوة السابقة يتم الإهمال في هذه المهارات فإنه إذا كنت تحتاج إلى مساعدة دقيقة حول الكود، فإن البحث في المصادر الأكثر تخصصاً أو الاستعانة بمجتمعات البرمجة عبر الإنترنت يمكن أن يكون ذا فائدة كبيرة. لذلك، لا ينبغي أن يكون الاعتماد الرئيسي على chatgpt1 نقطة
-
سؤالك غير واضح، هل تريدين موقع اونلاين لتنفيذ الاكواد عليه أو مكتبة بايثون تستخدم في ترجمة من لغة إلى اخرى في حال كان ما تقصدينه الاول يوجد الموقع التالي لكتابة اكواد بايثون وتنفيذها https://www.online-python.com/ أما اذا كان ما تقصدينه الثاني يوجد هذه المكتبة لإضافتها ضمن الكود الخاص بك https://pypi.org/project/translate/1 نقطة
-
الإصدار 1.0.0
8141 تنزيل
لغة جافاسكربت JavaScript هي لغة برمجة شهيرة موجودة حيث وجدت متصفحات الويب فهي أحد الركائز الثلاثية لتطوير الويب مع لغة HTML ولغة CSS فبها مجتمعة تُبنى واجهات الويب وبذلك لا غنى للغة جافاسكربت في مجال الويب إذ تساهم في إضفاء التفاعلية على صفحات الويب وبدونها تصبح الصفحات جامدة، كما أنها تُنجز أي عمليات برمجية ومنطقية في الصفحات مثل التحقق من مدخلات المستخدم وسلامة البيانات. استخدام جافاسكربت لا ينحصر في المتصفح بل يمتد إلى تطبيقات أوسع إذ تُشغل شيفرات لغة جافاسكربت خارج المتصفح في بيئة Node.js وبذلك يمكن استخدام لغة جافاسكربت في بناء مختلف التطبيقات أشهرها حاليًا بناء خوادم الويب وهنا أصبح بالإمكان استعمال لغة جافاسربت في تطوير الواجهات الأمامية والواجهات الخلفية لصفحات الويب بمختلف أنواعها والحديث عن اللغة وميزاتها يطول لذا لن أتوسع في التمهيد بالتحدث عن اللغة لأن الكتاب كله عنها وخصوصًا باب المقدمة. هذا الكتاب مترجم عن الكتاب The JavaScript Language: Part 1 الجزء الأول لكاتبه إيليا كانتور Ilya Kantor وهو بحجم 1000 صفحة وفيه يشرح لغة جافاسكربت شرحًا كاملًا لكل ميزاتها وتفاصيلها ويعد أفضل وأول مرجع تعليمي أجنبي لتعلم لغة جافاسكربت. ويوجد جزء ثان للكتاب يتحدث عن استعمال جافاسكربت في المتصفحات تحديدًا وجزء ثالث يتحدث عن مواضيع متفرقة ومتقدمة عن جافاسكربت يكمل فيها الجزأين السابقين ويتمم الحديث عن لغة جافاسكربت ليكون الكتاب بأجزائه الثلاثة مرجعًا كاملًا عن لغة جافاسكربت. دورة تطوير التطبيقات باستخدام لغة JavaScript تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية. اشترك الآن يُقسم الكتاب إلى 14 فصلًا أو بابًا كل منها مقسوم إلى فصول فرعية أصغر تتحدث عن موضوع محدد من اللغة ولكل قسم مقدمة وخاتمة وتمارين منفصلة، والفصول مرتبة ترتيبًا متدرجًا بدءًا من المواضيع الأساسية وحتى المواضيع المتقدمة بما يناسب المتعلم الجديد الذي يريد تعلم لغة جافاسكربت من الصفر دون خبرة مسبقة، وأما إن كنت تملك خبرة مسبقة بلغة جافاسكربت فيمكنك قراءة الفصول وفق الترتيب الذي تريد والرجوع إليها وفقًا لأبوابه وفصولها الفرعية. الكتاب مدعوم بشيفرات عملية كثيرة وهي جاهزة للتجريب في المتصفح لذا تجدها تعتمد على دالة المتصفح alert التي تعرض رسالة على شكل مربع منبثق في صفحة المتصفح وبالتالي يمكنك تجريب الشيفرات بنسخها ولصقها في طرفية المتصفح console وسيدلك فصل أدوات المطور على كيفية استخدام هذه الأداة إن لم تكن تعرفها من قبل. تجد في نهاية كل قسم تمارين ننصح بالتدرّب عليها بعد قراءة القسم قبل الاطلاع على الحل ثم الرجوع إلى الحل وموازنته مع حلك الناتج، وهذا يحقق أقصى استفادة أثناء تعلمك لغة جافاسكربت، وضع في بالك أن حل هذه التمارين يساعدك على تعلم لغة جافاسكربت من جهة وعلى حل الأسئلة البرمجية التي تُسأل في مقابلات العمل لذا لا تهملها. يمكنك قراءة الكتاب على شكل فصول منشورة على موقع أكاديمية حسوب مباشرةً إن كنت تحب القراءة على المتصفح مباشرة أو إن كنت تجد صعوبة في نسخ الشيفرات أو تجريبها، وتجد روابط الفصول تاليًا مجموعة ضمن وسم "دليل تعلم جافاسكربت": الباب الأول: مقدمة مقدمة إلى لغة JavaScript محررات الشيفرة البرمجية أدوات المطور DevTools الباب الثاني: أساسيات جافاسكربت المثال الأول: أهلًا بالعالم! بنية الشيفرة البرمجية الوضع الصارم: النمط الحديث لكتابة الشيفرة المتغيرات variables أنواع البيانات Data Types الدوال التفاعلية: confirm ،prompt ،alert التحويل بين الأنواع العاملات operators عاملات الموازنة العاملات الشرطية العاملات المنطقية عامل الاستبدال اللاغي ?? حلقتا التكرار while و for التعليمة switch الدوال في JavaScript تعابير الدوال أساسيات الدوال السهمية مراجعة لما سبق الباب الثالث: الاعتناء بجودة الشيفرة تنقيح الأخطاء في chrome نمط كتابة الشيفرة التعليقات شيفرة النينجا البرمجية الاختبار الآلي باستخدام mocha تعويض نقص دعم المتصفحات الباب الرابع: الكائنات: تأسيس المفاهيم الكائناتَ Objects نسخ الكائن: الفرق بين القيمة والمرجع كنس البيانات المهملة الدول في الكائنات واستعمالها this الباني والعامل new التسلسل الاختياري .? النوع الرمزي Symbol التحويل بين نوع كائن إلى نوع أولي الباب الخامس: أنواع البيانات توابع الأنواع الأولي النوع number: الأعداد النوع string: السلاسل النصية المصفوفات Arrays توابِع المصفوفات المُكرَّرات Iterables النوع Map الخرائط والنوع Set الأطقم النوع WeakMap والنوع WeakSet مفاتيح الكائنات وقيمها ومدخلاتها الإسناد بالتفكيك النوع Date: التاريخ والوقت صيغة JSON وتوابعها الباب السادس: التعامل المتقدم مع الدوال التعاود Rescursion والمكدس Stack المعاملات «البقية» ومعامل التوزيع المنغلقات Closure ومجال المتغيرات إفادة «var» القديمة الكائن العمومي Global object كائنات الدوال وتعابير الدوال المسمّاة NFE صياغة «الدالة الجديدة» new Function المُهلة setTimeout والفترة setInterval المزخرفات والتمرير: التابعان call وapply ربط الدوال Function binding الحديث عن الدوال السهمية مرة أخرى الباب السابع: ضبط خاصيات الكائنات رايات الخاصيات وواصِفاتها جالبات الخاصيات Getters وضابطاتها Setters الباب الثامن: الوراثة النموذجية الوراثة النموذجية Prototypal inheritance الوراثة النموذجية بتعمق F.prototype النماذج الأولية الأصيلة Native prototypes توابِع النماذج الأولية والكائنات بلا proto الباب التاسع: الأصناف Classes صياغة الأصناف الأساسية وراثة الأصناف Class inheritance الخاصيات والتوابع الثابتة الخاصيات والتوابع الخاصة والمحمية توسعة الأصناف المضمنة في اللغة فحص الأصناف عبر instanceof المخاليط Mixins الباب العاشر: التعامل مع الأخطاء التعامل مع الأخطاء: جرب... التقط try..catch الأخطاء المخصصة وتوسعة صنف Error الباب الحادي عشر: الوعود واللاتزامن والانتظار مقدمة إلى ردود النداء callbacks الوعود Promise سَلسلة الوعود Promises chaining التعامل مع الأخطاء: then وcatch واجهة الوعود البرمجية الدوال الواعدة: تحويل الدوال إلى وعود المهام السريعة مقابل الوعد لتنفيذ المهام لاحقًا اللاتزامن والانتظار async/await الباب الثاني عشر: المولدات والمكررات المتقدمة المولدات Generators المكررات والمولدات غير المتزامنة الباب الثالث عشر: الوحدات Modules مقدمة إلى الوحدات Modules تصدير الوحدات واستيرادها استيراد الوحدات ديناميكيًا الباب الرابع عشر: مواضيع متفرقة الوسيط Proxy والمنعكس Reflect الدالة "Eval" لتنفيذ الشيفرة البرمجية تقنية Currying النوع المرجعي Reference الأعداد الكبيرة BigInt1 نقطة -
تعد بايثون Python واحدة من أشهر لغات البرمجة وأكثرها استخدامًا، وهي لغة ممتازة ليبدأ بها المبرمجون الجدد. يمكن استخدامها في كل المجالات، بدءًا من ألعاب الفيديو ومعالجة اللغات، وصولًا لتحليل البيانات والتعلم الآلي. بايثون هي لغة برمجة عالية المستوى، ومُفسرة interpreted وتفاعلية وكائنية، وتتمتع بمقروئية عالية، إذ تستخدم كلمات إنجليزية بسيطة، على خلاف اللغات الأخرى التي تستخدم الرموز، كما أنّ قواعدها الإملائية والصياغية بسيطة ومفهومة، ما يجعل تعلم لغة بايثون سهلًا مقارنةً بلغات برمجة أخرى. هذا المقال هو دليلك الشامل إلى التعرف على كل ما يخص لغة بايثون وكيفية تعلمها بأقصر السبل. جدول المحتويات حرصًا على تنظيم المقالة ولتسهيل الوصول إلى القسم الذي تريده بسهولة، سنذكر هنا جدول المحتويات باختصار: تاريخ بايثون مميزات لغة بايثون تطبيقات ومجالات استخدام لغة بايثون لماذا بايثون؟ أهمية تعلم لغة بايثون كيفية تعلم لغة بايثون نصائح لتعلم لغة بايثون تاريخ بايثون ظهرت لغة بايثون في أواخر الثمانينيات على يد المبرمج الهولندي جايدو فان روسم Guido van Rossum، وقد عُدَّت خليفة للغة ABC. كما استفادت من الكثير من اللغات السابقة لها، مثل Modula-3 و C و C++ و Algol-68 و SmallTalk، وغيرها من اللغات وأحدثت ثورة في عالم البرمجة لسهولتها وتعدد استخداماتها. نُشِر الإصدار 2.0 من لغة بايثون عام 2000، وقدّم العديد من الميزات الجديدة التي سهلت كتابة الكود على المبرمجين، مثل القوائم الفهمية List Comprehensions، ونظام كنس المُهملات garbage collection إلا أن هناك بعض العيوب التصميمية وأوجه القصور التي لم تتمكن سلسلة إصدارات 2.x من تداركها. أطلق بعدها الإصدار 3.0 من لغة بايثون المعروف أيضًا باسم Python 3000 أو Py3k في عام 2008، والذي شكّل طفرة في اللغة وصحح العديد من عيوبها، لكنه لم يكن متوافقًا تمامًا مع الإصدارات السابقة)، ولهذا السبب قرر فريق التطوير الاستمرار ودعم إصدار أخير من سلسلة بايثون 2.x، وهو بايثون 2.7 لغاية عام 2020 وبعدها توقف الدعم ولم يعد الإصدار يتلقى أي تحديثات أو ميزات جديدة. النسخة الحالية من بايثون هي Python 3.11 وقد صدرت في السادس من ديسمبر/كانون الأول عام 2022، وتضمنت عدة تحسينات أبرزها تحسين سرعة التنفيذ، وتحسين رسائل الخطأ لتساعد المبرمج على تحديد الموقع الدقيق للخطأ ضمن البرنامج والعمل على تصحيحه بسرعة أكبر. مميزات لغة بايثون تتميز بايثون بعدة أمور عن غيرها من لغات البرمجة، من أبرزها: سهولة التعلم: يسهل تعلم لغة بايثون، إذ تتألف من عدد قليل من الكلمات المفتاحية، وتتميز بصياغة بسيطة وواضحة. المقروئية: شيفرة لغة بايثون واضحة ومنظمة وسهلة القراءة وتحاكي اللغة الطبيعية. سهولة الصيانة: شيفرة بايثون سهلة الصيانة إلى حد بعيد. مفتوحة المصدر حيث يمكن لأي شخص الاطلاع على شيفرة بايثون وإضافة تعديلات و ميزات جديدة عليها أو تطوير مكتبات تلبي مختلف المتطلبات. مكتبة قياسية واسعة: تحتوي مكتبة بايثون القياسية على عدد كبير من الحزم المحمولة التي تتوافق مع الأنظمة الشبيهة بيونكس و Windows و macOS. الوضع التفاعلي: تدعم بايثون الوضع التفاعلي، مما يتيح إمكانية تنفيذ الشيفرات مباشرةً على سطر الأوامر وتنقيح هذه الشيفرات بسهولة. محمولية بايثون: يمكن تشغيل لغة بايثون على طيف واسع من المنصات والأجهزة، مع الاحتفاظ بنفس الواجهة على جميع تلك المنصات. التوسعية: من أهم مميزات بايثون هو توفرها على عدد هائل من الوحدات والمكتبات، التي يمكنها توسيع قدرات اللغة في كل المجالات. دعم البرمجة الكائنية OOP: وهذا يمكن المبرمجين من كتابة تعليمات برمجية قابلة لإعادة الاستخدام ويسرع وتيرة عملهم. قواعد البيانات: توفر بايثون واجهات لجميع قواعد البيانات الأساسية. الرسوميات: تدعم بايثون التطبيقات الرسومية. دعم البرامج الكبيرة: بايثون مناسبة للبرامج الكبيرة والمعقدة. سأضرب مثالًا على الميزتين الأكثر شيوعًا بين الداخلين الجدد على المجال تعلم البرمجة وهما سهولة التعلم والمقروئية العالية بما أنهما تسهلان طريق التعلم ولتوضيح هاتين الميزتين، لذا إليك المثال البسيط التالي الذي يطبع كلمة مرحبًا على الشاشة: print('مرحبًا') لاحظ كيف يبدو البرنامج بلغة بايثون في حين يكون البرنامج نفسه الذي يقوم بطباعة هذه الكلمة بلغة أخرى مثل C كما يلي: #include <stdio.h> int main() { printf("مرحبًا"); return 0; } كما تلاحظ التعليمة في لغة بايثون واضحة ومباشرة في حين تتضمن لغة C كلمات ورموزًا غريبة وصعبة الفهم على المبتدئين مثل #include ووجود حرف f ملحقًا بكلمة print التي تعني "اطبع". رغم بساطة هذا المثال إلا أنه يعطيك فكرة عن مدى البساطة في كتابة شيفرات لغة بايثون ما يجعلها لغة مثالية للأشخاص الذين يبدأون للتو في تعلم البرمجة، وستدرك الفرق في سرعة كتابة الأكواد وسهولة الصيانة واكتشاف وتصحيح الخطأ بشكل أوضح عند كتابة برامج أكثر تعقيدًا. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن تطبيقات ومجالات استخدام لغة بايثون تُستخدم لغة بايثون في شتى المجالات، فهي لغة برمجة متعددة الأغراض General Purpose ولها عدة تطبيقات لا يتسع المقال لذكرها لذا سنكتفي هنا بذكر أبرز مجالات استخدام لغة بايثون وهي: تحليل البيانات تطوير مواقع الويب واستخراج بيانات المواقع الذكاء الاصطناعي وتعلم الآلة تطوير تطبيقات سطح المكتب والألعاب برمجة العتاد واللوحات الإلكترونية دعنا نستكشف المزيد عن كل مجال من هذه المجالات ونتعرف على أهميته ومساهمة لغة بايثون فيه. 1. تحليل البيانات أصبحت لغة بايثون إحدى اللغات البارزة في مجال علم البيانات لما توفره من مكتبات متخصصة مثل NumPy و Pandas و Matplotlib التي تسهل على المبرمجين تطوير برامج لتحليل البيانات والتعلم الآلي وتمكن علماء ومحللي البيانات من معالجة هذه البيانات وإجراء الحسابات الإحصائية المعقدة عليها بل وتمثيلها بيانيًا واستخراج المعلومات منها بسرعة وكفاءة أكبر. 2. تطوير مواقع الويب واستخراج بيانات المواقع تعد لغة بايثون لغة ملائمة جدًا لتطوير مواقع الويب وبالتحديد الواجهة الخلفية لمواقع الويب، فهي لغة تعمل من طرف الخادم ويمكنها التواصل مع قواعد البيانات ومعالجة بياناتها بسهولة، كما أنها توفر العديد من أطر العمل التي تسرع وتيرة تطوير مواقع وتطبيقات ويب احترافية وآمنة من أشهرها جانغو Django و فلاسك Flask. وتوفر مكتبات تسمى مكتبات ORM توفر طرقًا مبتكرة للاستعلام عن البيانات من قاعدة بيانات ومعالجتها باستخدام نموذج موجه للكائنات Object-relational mapping مثل SQLAlchemy و Django ORM وهي أسهل وأسرع من كتابة استعلامات بلغة SQL التقليدية. كما تلبي لغة بايثون طلبك إن كنت مهتمًا بموضوع استخراج البيانات من صفحات الويب أو المتاجر الإلكترونية المختلفة بهدف دراستها والبحث ضمنها ومقارنة الأسعار فيما بينها، فهي قادرة على استخراج البيانات تلقائيًا من المواقع Web Scraping بسرعة وتنسيقها بطريقة منظمة، وتمثيلها رسوميًا من خلال كتابة أكواد مختصرة ومباشرة بفضل مكتباتها المتنوعة التي توفر كافة الوظائف الضرورية للقيام بذلك وأبرزها Beautiful Soup و Scrapy و Selenium. احصل على موقع إلكتروني مخصص لأعمالك أبهر زوارك بموقع احترافي ومميز بالاستعانة بأفضل خدمات تطوير وتحسين المواقع على خمسات أنشئ موقعك الآن 3. الذكاء الاصطناعي وتعلم الآلة لم يعد الذكاء الاصطناعي وتعلم الآلة مصطلحات غريبة في عصرنا الحالي بل أصبحت من المواضيع الرائجة والمطبقة بكثرة، وهنا أيضًا تبرز لغة بايثون كلغة ملائمة بشكل مثالي لتطبيق مفاهيم الذكاء الاصطناعي وجعل الحواسيب والأجهزة التي نتعامل معها في حياتنا اليومية ذكية وقادرة على التعلم بنفسها ومساعدتنا في اتخاذ القرارات، ومن أشهر المكتبات التي توفرها بايثون في مجال الذكاء الاصطناعي نذكر NumPy و Pandas و Scikit-Learn ...إلخ. دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن 4. تطوير تطبيقات سطح المكتب والألعاب. تستخدم لغة بايثون بشكل كبير لتطوير وبرمجة تطبيقات سطح المكتب ذات الواجهات الرسومية GUI سواء التطبيقات البسيطة كالآلة الحاسبة أو تطبيقات تشغيل الوسائط أو التطبيقات الأكثر تعقيدًا من خلال توفير مجموعة مكتبات قوية ومليئة بأدوات واجهة المستخدم مثل Tkinter و wxPython و PyQt التي تسهل على المبرمج تخطيط وإنشاء تطبيقات سطح مكتب متوافقة مع مختلف أنظمة التشغيل. كما تعتبر بايثون ملائمة بشكل مثالي لتطوير الألعاب فهي توفر العديد من المكتبات وأطر العمل المساعدة مثل PyGame و Pyglet و PyKyra و PyOpenGL و Panda3D ...إلخ. التي تجعل من إنشاء الألعاب التفاعلية أسهل بكثير من استخدام لغات برمجة أخرى. 5. برمجة العتاد واللوحات الإلكترونية إذا كنت مهتمًا ببرمجة العتاد واللوحات الإلكترونية وبرمجة التطبيقات المضمنة Embedded Product وانترنت الأشياء فيمكنك البدء باستخدام شريحة راسبيري باي Raspberry Pi التي تعتبر حاسوبًا أوليًّا يعمل بنظام لينكس Linux ويستخدم لغة بايثون بشكل ضمني ليمكن المبرمجين والمتعلمين من تطوير مشاريع عملية رائعة مثل ساعة ذكية تعرض الوقت أو بوت للرد الآلي أو تطبيق بث مباشر على يوتيوب أو تطبيق للتحكم بالكاميرا وجعلها تلتقط الصور وتسجل مقاطع الفيديو ...إلخ. بكل سهولة. هذه كانت بعض المجالات البارزة التي تستخدم فيها لغة بايثون، إضافة إلى الكثير من المجالات الأخرى التي لا يسعنا حصرها هنا. لماذا بايثون؟ إنّ تحديد أفضل لغة برمجة للتعلم قد يكون مهمة صعبة ولو سألت عدة أشخاص عن لغة البرمجة التي يجب تعلمها، فستحصل على عدة إجابات، ويكفي أن تدخل على جوجل وتكتب أفضل لغة برمجة، وستجد آراءً مختلفةً، وجدالًا لا ينتهي حول هذا الموضوع. لا أريد أن أبدأ حرب لغات البرمجة هنا، ولكنني سأحاول في هذه الفقرة تقديم بعض الحجج لتبرير لماذا أرى أنّ بايثون هي لغة المستقبل، وأن تعلم لغة بايثون مثالي للمبتدئين الذين يريدون دخول عالم البرمجة وعلوم الحاسوب. شعبية لغة بايثون بحسب استطلاع موقع stackoverflow، تحتل لغة بايثون المرتبة الرابعة في لغات البرمجة الأكثر استخدامًا من قبل المبرمجين والمطورين حول العالم بعد JavaScript و HTML/CSS و SQL، متفوقة على لغات مثل جافا و ++C و C#، كما أنها سادس أكثر لغة برمجة مرغوبة من قبل المبرمجين. فبايثون ليست لغة قوية وفعالة فحسب، بل هي فوق ذلك محبوبة من قبل المبرمجين، ولا عجب في ذلك فهي سهلة ومرنة وتوفر مكتبات هائلة للمبرمجين تسهل عليهم الكثير من الجهود في كتابة الكود، فهل لا يزال لديك شك في أن تعلم لغة بايثون هو خيار مثالي لك؟! يوضح المخطط التالي إحصائية أجرتها منصة StackOverlow عام 2022 عن أكثر لغة شعبية مفضلة في أوساط المبرمجين وموضع لغة بايثون فيها: كما يوضح المخطط التالي إحصائية أخرى أجرتها منصة StackOverlfow أيضًا عام 2022 عما إذا كانت لغة البرمجة محبوبة (الأزرق) أم مخفية (البنفسجي) وللغة بايثون نصيب جيد من المحبوبية: دعم لغة بايثون نظرًا لشعبيتها الكبيرة، تتمتع بايثون بدعم جيد على جميع المستويات تقريبًا. وباعتبارها اللغة المفضلة للمبتدئين، فهناك مجتمع داعم كبير ومتعاون وكم هائل من المراجع والمواد والدورات التعليمية التي تشرح مفاهيم البرمجة الأساسية، إضافة إلى صياغة اللغة وتطبيقاتها. فسواء كنت هاويًا، وتحب تعلم البرمجة كهواية، أو لأجل استخدامها في مجال عملك، مثل تحليل البيانات ومعالجة اللغات الطبيعية وغير ذلك، أو كنت تريد أن تعمل كمستقل، أو تدخل سوق العمل وتحقق دخلًا من البرمجة، ففي جميع هذه الحالات، سيكون تعلم لغة بايثون خيارًا مثاليًا لك. بايثون مطلوبة في السوق تُستخدم لغة بايثون من قبل بعض أكبر الشركات في مجال التكنولوجيا، مثل Uber و PayPal و Google و Facebook و Instagram و Netflix و Dropbox و Reddit. إضافةً إلى هذا، تُستخدم بايثون بكثافة في مجال الذكاء الاصطناعي والتعلم الآلي وتحليل البيانات ومراقبة الأنظمة وغير ذلك. يقدر موقع stackoverflow، الدخل السنوي لمطوري بايثون بحوالي 71 ألف دولار، وبالرغم من أن الاستبيان الذي أجراه الموقع مبني على مشاركين معظمهم من الولايات المتحدة والهند وألمانيا ولا يعكس الرواتب في منطقتنا العربية إلا أن الرقم كبير بالمقارنة مع باقي المهن، ويدل على أهمية هذه اللغة وأجرها المرتفع في سوق العمل. ولا ننسى أن لغة بايثون كما أشرنا لغة عامة الأغراض وقادرة على إيجاد الحلول الفعالة في العديد من المجالات المختلفة وهذا من شأنه بكل تأكيد حث أرباب العمل على توظيف مطوري بايثون والاستفادة من مهاراتهم وخبراتهم في عدة مجالات. أهمية تعلم لغة بايثون قد تمكنت لغة بايثون طيلة هذه السنوات من لحظة انطلاقها إلى اليوم من إثبات إمكانياتها لتعد واحدة من أهم لغات البرمجة وأكثرها شعبية وجدارة كما أشرنا، ويبرز اسمها بين أوساط المبرمجين والمطورين والطلاب على حد سواء كما أن مختلف الجامعات بدأت بتدريسها في الفصول الأولى للطلاب وتراها المخيمات والدورات البرمجة خيارها الأول لتعليم البرمجة لغير المختصين. أضف إلى ذلك أن لغة بايثون نالت ثقة الكثير من المواقع والشركات العملاقة واليوم تستخدمها كل من شركات Spotify و Google و Amazon بشكل أساسي إضافة إلى Facebook التي تستخدم بايثون لمعالجة الصور وإدارة بنيتها التحتية، وفي كل يوم تتحول شركات جديدة معروفة عالميًا إلى استخدام بايثون مثل YouTube و DropBox و Instagram التي قررت كذلك استخدامها وفضلتها على PHP. كما تُستخدم لغة بايثون أيضًا من قبل بعض الجهات العلمية والبحثية، مثل وكالة الفضاء الأمريكية ناسا، والتي لها مستودع خاص بالمشاريع المُطورة ببايثون كما أنها تقدم دورات تدريبية لتعليم لغة بايثون من الصفر للاحتراف لعلمائها ومهندسيها ليتمكنوا من معالجة بياناتهم بشكل أفضل وأسرع. كيفية تعلم لغة بايثون تعرفت إلى الآن على بايثون وأهميتها ومميزاتها واستخدامات لغة بايثون المختلفة وفرص العمل فيها، واقتنعت بأهمية تعلم لغة بايثون لذا قد تتساءل من أين تبدأ؟ سأجيبك في هذا القسم بالتفصيل. هنالك مساران لتعلم البرمجة عمومًا وتعلم لغة بايثون خصوصًا، إما في أروقة الجامعة أو عبر دورات متخصصة، أما في مسار الجامعة فستتكفل بوضع خطة تعلم عبر فصولها وسنواتها وفي كل الأحوال قد تلجأ إلى الدورات حتى لو دخلت الجامعة بسبب الكم النظري الكبير الذي تعطيه الجامعة غافلة الجانب العملي التطبيقي أو بسبب نسيان اللغة وعدم البرمجة فيها إن جرى تدريسها في السنوات الأولى وهنا تجد نفسك تبحث عن دورات برمجة متخصصة. سأختصر عليك الطريق وأشير إلى أفضل دورة برمجة متخصصة لتعلم لغة بايثون وهي دورة تطوير التطبيقات بلغة بايثون من أكاديمية حسوب وهي دورة منهجية شاملة بعدد ساعات يزيد عن 60 معدة من قبل مبرمجين أكفاء تأخذ بيدك خطوة بخطوة لتعلم لغة بايثون من الصفر وحتى الاحتراف وتبني خلالها الكثير من التطبيقات العملية، وهي كفيلة بأن تؤهلك لبدء حياتك المهنية كمطور بايثون ودخول سوق العمل والحصول على أول وظيفة خلال ستة أشهر. وإن كنت ممن يفضلون التعلم من خلال الكتب الإلكترونية لما توفره من شمولية وتنظيم في المعلومات، فيمكنك تنزيل كتاب البرمجة بلغة باثيون من أكاديمية حسوب. هل تريد المزيد من المصادر؟ ما رأيك بزيارة موسوعة حسوب الشاملة التي تضم توثيقات الكثير من لغات البرمجة، بما في ذلك توثيق لغة بايثون. ننصحك أيضًا بالاطلاع على قسم دروس ومقالات متنوعة حول لغة بايثون وهذه الدروس تُحدَّث باستمرار لذا كن على اطلاع دائم عليها لتواكب كل جديد وإن كنت مهتمًا بتعلم لغات برمجة أخرى، فيمكنك زيارة قسم البرمجة في الأكاديمية. وإن أشكل عليك شيء ما فيمكنك أن تسأل عنه في قسم الأسئلة والأجوبة الخاص بالأكاديمية ليجيبك عنه أحد المبرمجين أو تطرحه للنقاش مع المهتمين في مجتمع حسوب IO. نصائح لتعلم لغة بايثون أخيرًا وليس آخرًا، إليك أهم النصائح التي عليك اتباعها لتعلم لغة بايثون من الصفر حتى الاحتراف. 1. حدد المجال الذي تريد التخصص فيه مجالات العمل في بايثون متنوعة وتحديد المجال أو المسار الوظيفي الذي تنوي التخصص فيه سيمكنك من تحديد المفاهيم والمهارات الفنية التي يتوجب عليك تعلمها والتركيز عليها دون سواها، وضع خطة زمنية لإتقان جميع المهارات اللازمة لتحقيق هدفك والتزم بها قدر المستطاع. فإذا كان هدفك من تعلم بايثون هو إنشاء مواقع ويب ضع في خطتك تعلم Django أو Flask، وإذا كان هدفك هو تطوير الألعاب فضع في خطتك التعرف على إحدى المكتبات القوية في تطوير الألعاب مثل Pyglet أو Panda3D أو Pygame ...إلخ. 2. تعلم أساسيات لغة بايثون أيًا كان المجال الذي حددته في الخطوة السابقة فلا بد لك في البداية من تعلم أساسيات لغة البايثون التي تمثل أساسًا لأي لغة برمجة والتي تشمل: طريقة تثبيت لغة بايثون على جهازك وإنشاء بيئة افتراضية. صياغة الجمل والعبارات في بايثون تعريف المتغيرات وأنواع البيانات الأولية. العمليات الحسابية والمنطقية الأساسية. عمليات الإدخال والإخراج ومفهوم الاستثناءات وطرق معالجتها. الدوال البرمجية وطريقة تعريفها واستدعائها. هياكل البيانات المركبة مثل القوائم والمجموعات والقواميس تعليمات التحكم بتدفق البرنامج مثل التعليمات الشرطية والحلقات التكرارية. مفاهيم البرمجة كائنية التوجه أهم المكتبات القياسية التي تستخدم في العديد من المشاريع. طرق التعامل مع الملفات. الخبر الجيد هنا أن تعلم هذه الأساسيات لن يستغرق منك الكثير من الوقت لأن بايثون كما أشرنا لغة سلسة وبسيطة وسهلة التعلم. 3. تعلم المواضيع المتقدمة التي تخدم أهدافك بعد إتقان المفاهيم الأساسية عليك الانتقال خطوة للأمام والتعرف على مواضيع متقدمة تتعلق بشكل مباشر بالتخصص الذي تنوي العمل به والمسار هنا يختلف حسب التخصص الذي اخترته لنفسك والبدء بإتقان جميع المهارات اللازمة لتحقيق هدفك. يمكنك في هذه المرحلة على سبيل المثال التعرف على مفاهيم مثل قواعد البيانات والتعامل معها، وتعلم مكتبات بايثون والتدريب على استخدامها من خلال تطبيقها في برامج عملية بالطبع ستتطلب المشاريع المختلفة مكتبات مختلفة لذا من المهم التعرف على المكتبات الأكثر شيوعًا في مجالك والتركيز عليها. كما ستحتاج لتعلم أحد أطر عمل بايثون Python Frameworks التي تساعدك على تطوير مشاريعك وكما ذكرنا بالنسبة للمكتبات ستعتمد الأطر التي عليك تعلمها على التخصص الذي تنوع العمل به. 4. عزز ما تعلمته في مشاريع عملية يفترض الآن أنك تملك كافة المهارات اللازمة والأسس النظرية، لكن المعرفة التقنية وحدها لا تكفي لذا حان الوقت لبدء التدرب على تطوير مشاريع لصقل كل هذه المهارات. لذلك من الضروري أن تتدرب على تطوير مجموعة من المشاريع في مجال تخصصك وتبني معرض أعمال يظهر هذه المهارات فهذا يعزز فرصتك للحصول على وظائف فعلية وبدء حياتك المهنية كمطور بايثون. يمكنك ريثما تحصل على فرصة عمل مناسبة أن تعمل بشكل مستقل على مواقع العمل الحر مثل مستقل وخمسات وتنجز المشاريع للعملاء عبر هذه المنصات. 5. لا تهمل مهاراتك الناعمة لاشك أن المهارات الفنية ومعرض الأعمال القوي أمر ضروري لأي مبرمج لكن هناك نوعًا آخر من المهارات الضرورية لأي مبرمج والتي يفضل أصحاب العمل توفرها لدى المطورين والمبرمجين وأهمها: مهارات حل المشكلات والتفكير المنطقي الرغبة في التعلم المستمر والاطلاع على كل جديد في مجالك. مهارات التواصل الفعال والعمل الجماعي خاتمة تعرفنا في مقال اليوم على لغة بايثون ورأينا كيف أنها تجمع بين البساطة والسهولة من جهة وبين القوة والفعالية من جهة أخرى، وتعرفنا على أهم مميزات بايثون ومستقبلها الواعد الذي يفتح لمتعلمها الكثير من الفرص والآفاق. وختمنا المقال بأهم الخطوات والنصائح لتتعلم بايثون بسرعة واحترافية. هل أنت متحمس لتعلم بايثون أو بدأت فعلًا بتعلمها ولديك أي استفسار حول أي من المواضيع التي ذكرناها في المقال؟ اكتبها في قسم التعليقات أسفل المقال وسنحرص على الإجابة عليها بأقرب فرصة. وفّقك الله تعالى.1 نقطة
-
إذا كنت مهتما بتعلم البرمجة، فعلى الأرجح أنك رأيت هذا الاقتباس من قبل: في الحقيقة لا أبالغ إن قلت أن البرمجة أصبحت من أهم المهارات في عصرنا الحالي، وذلك لأنها دخلت في جميع مجالات حياتنا سواءً كنا ندرك ذلك أم لا فانطلاقًا من الهواتف المحمولة ومرورًا بالمنازل والشاشات الذكية وانتهاءً بالسيارات ذاتية القيادة. كل شيء من حولنا لم نكن لنراه بهذا الشكل لولا البرمجة، فأنا على سبيل المثال أكتب وأعدل هذا الموضوع من خلال برنامج بُرمج عبر لغة برمجة وأنت تقرأه على الإنترنت باستخدام برنامج (المتصفح) وربما رأيته على مواقع التواصل الاجتماعي وكُلها برامج أيضًا. ومما لا شك فيه أن تعلم البرمجة أصبح ضرورة مُلحة في هذا العصر بل إن تعلمك لها سيزيد من فرصك بشكل كبير في الحصول على عمل. ولقد تحدثنا في مقالٍ سابق عن كيفية تعلم البرمجة والدخول إلى هذا المجال من أوسع أبوابه (إن كنت حديث عهدٍ في البرمجة أو تخطط للبدء بها، فننصحك بقراءته قبل إكمال هذا المقال) وسوف نتحدث في هذا المقال عن أكثر المهارات صعوبةً في احتراف البرمجة ألا وهي «حل المشاكل». حل المشكلات وارتباطها بالبرمجة لطالما وقفنا حائرين أمام مشكلةٍ ما ونسأل أنفسنا ماهي الطريقة الصحيحة للخروج من هذا المأزق؟ هل ستكون طريقة الحلّ التي أتبعها مشابهة للطريقة التي يتبعها المبرمجين المحترفين؟ كيف أستطيع أن أفكر مثلما يفكر المبرمجين المحترفين؟ في البداية وقبل الخوض في التفاصيل دعنا نُعرف البرمجة بحد ذاتها ولنذهب للمقال السابق ونلقي نظرة سريعة عليها: نلاحظ أن التعريف السابق صحيح ولكنه مُقْتضَب ولا يقدم لنا المعنى الكامل والدقيق للبرمجة لذا لابدّ لنا من تعريفٍ أكثر دقة وموضوعية يساعدنا في فهم هذا المقال. يعرف موقع HackerRank في تقريره عن مهارات المطورين بعام 2018: نستنتج مما سبق أن البرمجة تعتمد اعتمادًا أساسيًا على التفكير المنطقي والرياضي والقدرة على حلّ المشاكل وإن لغات البرمجة ما هي إلا وسيلة للتخاطب مع الحاسوب. إذن الأمر كله يتعلق بتطوير قدرتك في حلّ المشاكل وجعل هذه العملية سهلة وسلسة بنفس الوقت لذا فاسمح لي بأن آخذك معي برحلة صغيرة في هذا المقال نتعرف فيها على أهمية حلّ المشاكل وضرورتها في مشوارك البرمجي. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن لماذا حلّ المشاكل مهم؟ تأتي أهمية حل المشاكل من كونها من أكثر المهارات المطلوبة عالميًا فوفقًا لتقرير أصدره موقع HackerRank جاء فيه: احتلت مهارة حلّ المشاكلالمرتبة الأولى بنسبة 94.9% لأكثر مهارة مطلوبة لأصحاب الشركات سواء الصغيرة منها أو الكبيرة. وعلى الصعيد العملي، إن عملية بناء أي شيء من الصفر سواء أكانت آلة معينة أو أي مُنتج جديد ستواجه الكثير من المشاكل في البداية، فعلى سبيل المثال بناء خدمات أمازون السحابية (AWS)، والّتي جاءت حلًا لمشكلة النفقات العالية للبنية التحتية لتجارتها الإلكترونية بالإضافة إلى الوقت الطويل الّتي تحتاجه في عملية البناء والذي شكل تحدي كبير في إمكانية توسع الشركة، إلى أن جاء آندي جاسي كبير مستشاري جيف بيزوس في ذلك الوقت والذي استطاع إيجاد حلّ لهذه المشكلة ولم يتوقف عند ذلك الحد وإنما أختار تحويل هذا الحلّ إلى خط أعمال جديد تحت أسم خدمات أمازون السحابية والّتي بلغت عائداتها السنوية لعام 2018 قيمة تناهز 25 مليار دولار. نجد من التجربة السابقة أنه حصلت مشكلة فأُوجِد لها حلًا وأثناء خلق حل للمشكلة ظهرت الكثير من المشاكل الأخرى لتقع في سلسلة من المشاكل لا تنتهي. وبعد حلّ جميع المشاكل سيصبح المنتج جاهزًا للعمل، أي أن دورة حياة أي منتج سواءً أكان برمجيًا أو ماديًا ستحتوي على المشاكل، وبناءً على ذلك تكون مهارة حل المشاكل اللَبِنَة الأساسية في بناء مشوارك البرمجي، والّتي يجب علينا الإهتمام بها عند الإقدام على تعلّم البرمجة. تكون طريقة تعاملنا مع المشاكل غير منظمة وعشوائية في أغلب الأحيان، فمعظمُ المبرمجين الجُدد يَبْدَؤُونَ بحلّ أي مشكلة تُواجهُهُم بالطريقة التالية: جرّب أي حلّ للمشكلة. إذا لم ينجح الحلّ الأول حاول أن تجرّب أي حلّ آخر. إذا لم يفلح الحلّ كرر الخطوة الثانية إلى أن تصل إلى الحلّ. لا يحصل هذا الأمر مع المبرمجين فقط، وإنما يحصل مع أي شخص يواجه مشكلة ولا يستعن على حلها بالتحليل والتفكير المنطقي. في الحقيقة، قد يحالفك الحظ أحيانًا ويتم حلّ المشكلة ولكن كن حذرًا! فهذه هي الطريقة الأسوأ لحلّ المشكلات بل وإنها ستهدر وقتك بشكل كبير لذا من الأفضل استخدام طريقة منظمة توصلنا للحلّ، واسمح لي بأن أشاركك طريقة شاملة توصلك إلى حلّ أي مشكلة قد تواجهك. بناء خطة حلّ شاملة إن خطة الحلّ الشاملة هي مجموعة من الخطوات الَّتي تتبعها لحلّ أي مشكلة تواجهك، حيث تكون هذه الخطة عامة وتخصص بحسب المشكلة، وهي ليست تعليمات ثابتة وإنما مبادئ ننطلق منها جميعًا، وكلٌ منا يطبقها بأسلوبه الخاص، وفي نهاية المطاف إذا انطلقنا جميعًا من نفس المبادئ، فسنصل حكمًا على نفس جودة الحلّ أيضًا. إن هذه الخطة مؤلفة من عدة أجزاء ويناقش كلّ جزء فيها جانبًا معينًا من المشكلة إلى أن نصل للحلّ، وهي على الشكل التالي: 1. فهم المشكلة إن فهمنا للمشكلة المطروحة هي الخطوة الأكثر صعوبة في طريقنا لحلّها، بل إن أكثر المشاكل تأتي صعوبتها من عدم تمكننا من فهم عميق لها. ولكن متى تعلم بأنك استطعت فهم المشكلة؟ إذا كنت قادرًا على شرحها بكلمات واضحة وسهلة بحيث يستطيع أي شخص فهمها عندها تكون بالفعل قد فهمت المشكلة. هل تذكر عندما كنت عالقًا في مشكلة وبدأت بشرحها فوجدت أخطاء منطقية كثيرة لم تكن قد انتبهت لها من قبل؟ أغلب المبرمجين قد مروا بهذه الحالة من قبل، لذلك من الأفضل دومًا أن تكتب المشكلة الَّتي تواجهك باستخدام مخططات الحالة (State diagram وهي نوع من المخططات الَّتي تستخدم لتوصيف سلوك نظام ما) أو بأن تخبر شخص آخر عن المشكلة سواءً أكان زميل لك في الشركة أو عضو في الفريق أو أي شخص أخر. شاع بين المبرمجين استخدام البطة المطاطية في شرح أجزاء المشكلة لها لفهمها وإيجاد حل لها. يعد أسلوب البطة المطاطية في تنقيح الأخطاء من أكثر الأساليب سهولة وبساطة، إذ يضع المبرمج بطةً بجوار حاسوبه، وعند مواجهته لأي مشكلة يشرع في شرح الشيفرة البرمجية للبطة وما هي النتيجة المرتقبة من الشيفرة وموازنتها مع النتيجة الحالية وغالبًا ما يجد الخطأ أثناء شرحه. وخلاصة لهذه الخطوة أنقل إليك مقولة ألبرت أينشتاين: 2. تحليل المشكلة إن تقسيم المشكلة يلعب دورًا مهمًا في طريقك لإيجاد الحلّ، لذا حاول أن تقسّمها إلى أجزاء صغيرة ثمّ حُلّ كلَّ جزء منها على حدة ويُنصح في البداية بحلّ أسهل جزء منها ومن ثمّ الأصعب فالأصعب وهكذا إلى أن يتمّ حلّ جميع أجزائها، وبعدها إجمع هذه الأجزاء مع بعضها للحصول على الحلّ النهائي للمشكلة الأصلية (الكبيرة). منذ فترة كنا بصدد برمجة إضافة لمتصفح غوغل كروم بهدف تسهيل مهمة لموقع ما، فقررنا تجربة هذه الطريقة وبدأنا بتقسّيم المهمة على أجزاء ثم عملنا على حلّ كل جزء منها، وبعدها جمعنا هذه الأجزاء مع بعضها بعضًا لبناء الإضافة، وبالفعل كان العمل بهذه الطريقة سهلًا جدًا ومريحًا كما لم نعهده من قبل. في بعض الأحيان عندما تواجه شيفرات برمجية كتبها مبرمجون لا يتبعون مبادئ SOLID (وهي مجموعة من العادات والمبادئ الَّتي يتبعها المبرمجون للحصول على شيفرة برمجية قابلة للصيانة وسهلة التعديل والتكيف مع متطلبات المشروع المتغيرة)، وغالبًا ما تكون شيفرات أولئك المبرمجين غيرمفهمومة ومتشابكة ويطلق عليها اسم Spaghetti code (تكون هذه الشيفرات ذات بنية معقدة ومتشابكة وصعبة القراءة وغير مرتبة أي تكون مثل المعكرونة ملتوية ومتشابكة) ولنفرض أنه طُلبَ منك تعديل هذه الشيفرة أو إضافة وظائف جديدة إليها،عندها حتمًا ستواجه العديد من المشاكل في عملية تقسيم المشكلة ومعرفة أي جزء من الشيفرة البرمجية المُسبب للخطأ لذا كان الحصول على شيفرات برمجية مرنة وقابلة للتعديل هي الأرضية المشتركة بين العديد من تقنيات تبسيط الشيفرات البرمجية مثل مبادئ SOLID أو مبدأ MVC والذي ينص على تقسيم الوحدات من حيث طبيعة مهمتها إلى ثلاثة أقسام (Model-View-Controller) والبرمجة كائنية التوجه OOP (Object-Oriented Programming)، إذ أن جميعهم يهدفون إلى فصل الأكواد إلى أقسام ليسهل تطويرها وتنقيحها وصيانتها. 3. إعداد خطة للحل بعد أن فهمت وحللت المشكلة، يأتي دور وضع الخطة المناسبة للحلّ بحيث تغطي كافة الجوانب والتفاصيل للمشكلة، ولا تشرع في الحلّ من دون خطة (على أمل أن تجد الحلّ بطريقة ما) لأن المفتاح الرئيسي للوصول للحلّ هي الخطة الواضحة والمنظمة والتي تضمن وصولنا للحلّ النهائي. أعط لنفسك وقتًا لتحلّيل المشكلة وربط المعلومات المدخلة إلى البرنامج ونوعها والمعلومات الَّتي ستظهر كخرج للبرنامج وفهم سياقها وللحصول على خطة جيدة يجب عليك الإجابة على السؤال التالي: إذا أُعطي للبرنامج الدخل س، ما هي الخطوات اللازمة للحصول على الخرج ع؟ إن إجابتك على هذا السؤال سوف يحدد ماهي الخطوات اللازمة لحلّ المشكلة ومن ثَمَّ تقوم بترتيبها في خطة واضحة ومنظمة من أجل الحصول على الخرج الذي تريده. 4. مواجهة حالة السكتة البرمجية ماذا لو فرضنا أنك لم تستطع حلّ أي جزء من المشكلة، ولا حتى الأجزاء السهلة منها (وهذا قد يحدث في بعض الأحيان)، إن كثير من المبرمجين يقعون في هذه الحالة فلا يستطيعون أن يُحرزوا أي تقدم يذكر في تطوير الشيفرة البرمجية وهذا أشبه ما يمكن بالسكتة الدماغية (حيث لا يستطيع المريض القيام بأي حركة)، في الحقيقة إن هذه الحالة طبيعية جدًا ومعظمنا قد تعرض لها في بداية مشواره والاختلاف الوحيد هو أن المبرمج المحترف لديه فضول أكثر حول المشكلة ومعرفة سبب حدوثها بدلًا من أن يكون منزعجًا أو غاضبًا منها. وفي هذه الحالة هنالك حلّين يمكنك تجربتهما للخروج من هذا المأزق: 1-4. تنقيح الأخطاء (Debug) ليس المقصود هنا الأخطاء الكتابية في صياغة اللغة (Syntax errors) مثل نسيان فاصلة منقوطة أو أي خطأ في استخدام المتغيرات أو الدوال أو ما شابه ذلك من أخطاء والَّتي تقوم باكتشافها أي بيئة تطوير متكاملة (IDE وهي عبارة عن محرر شيفرة برمجية مدمج مع نظام ذكي لإكمال الكود ومصحح أخطاء). وبالطبع ليست أيضًا الأخطاء الّتي تظهر أثناء التنفيذ (Runtime Errors) والّتي تكون عادة نتيجة لفشلٍ في فتح ملف ما أو محاولة القسمة على صفر أو مثل هذه الأخطاء، وإنما المقصود هنا هو أخطاء المنطق البرمجي (Logic errors) الّتي ينفِّذ فيها البرنامج أمرًا غير الَّذي بُرمج من أجله، لذا من الأفضل أن تحاول أن تفحص الشيفرة البرمجية سطرًا سطرًا لعلك تجد هذا الخطأ، أوإذا كنت تعمل على لغاتٍ مثل (C++, C) والّتي تدعم استخدام المُنقِّح Debugger (الذي يراقب عمل البرنامج ويتحكم في تنفيذه بطريقة تستطيع فيها إيقاف تنفيذ البرنامج أو حتى تغييره في أي موضع من الشيفرة وذلك من خلال مجموعة من الأدوات الّتي يقدمها المُنقِّح، مثل: GNU Debugger) فيمكنك استخدامه لإيجاد الخطأ ومن ثَمّ إصلاحه. ملاحظة : من المنهجيات البرمجية الجيدة هي كتابة تعليقات توضيحية قبل كلّ دالة (Function) أو صنف (Class) برمجي وخُصوصًا تلك الأجزاء المعقدة منها لأن ذلك سوف يساعدك كثيرًا في عملية مراجعة الشيفرة البرمجية وتنقيحها. 2-4. مراجعة وتقييم الحلّ في كثير من الأحيان عند مواجهتنا للمشاكل وخصوصًا للكبيرة منها قد نضيع في التفاصيل الصغيرة للمشكلة الَّتي نواجهها وننسى المشكلة الرئيسية ولذلك من الأفضل دومًا أن نسأل أنفسنا هل هذه هي الطريقة الأفضل للحلّ؟ هل هنالك حلًّا عموميًا أفضل من الموجود؟ هل الشيفرة البرمجية أمثلية؟ هل الحلّ يخرق معايير الجودة المطلوبة؟ ارجع خطوة إلى الوراء وحاول أن تراها من منظور مختلف، وحتمًا ستلاحظ العديد من المشاكل التي غفلت عنها أثناء انشغالك بالتفاصيل الصغيرة. ملاحظة : هنالك طريقة أخرى يتبعها بعض المبرمجين لإعادة تقييم الحلّ وهي حذف الشيفرة البرمجية الخاطئة بالكامل وإعادة كتابتها من جديد فكثير ما يأخذ ذلك وقتًا أقل من تتبع المشكلة ذاتها وحلها. 5. البحث عن حلول عبر الإنترنت إن أغلب المشاريع البرمجية تكون متشابهة بكثيرٍ من الوظائف والخصائص، ونادرًا ما نرى مشروع ذو أفكارٍ جديدة بالكامل لذا فإن أي مشكلة برمجية تواجهها قد واجهها عدد كبير من المبرمجين من قبلك وأوجدوا لها حلولًا وشاركوها مع غيرهم، وكل ما عليك فعله هو أن تتعلم كيف تبحث عن المشكلة. وبالطبع صديقنا stackoverflow والذي يعد من أشهر منصات مشاركة الحلول البرمجية الّذي يقدم لك الحلّ الَّذي أجمع عليه أغلب، المبرمجين، ويوجد العديد من المنصات الأخرى المشابهة مثل AskUbuntu وهو النسخة العربية من موقع stackoverflow والكثير غيرهم، وحتى لو أنك قد حللت المشكلة أنصحك بتصفح الحلول الموجودة لأنك سوف تتعلم طرقًا أُخرى لحلّها قد تكون أسهل وأفضل بكثير من الحلّ الَّذي وصلت اليه. إلى الآن نكون قد ناقشنا الخطوة الأولى من الطريقة الشاملة لحلّ المشاكل والآن لننتقل إلى الخطوة الثانية. التدرب على هذه الخطة إن أي مهارة جديدة تحتاج إلى تدريبٍ مُمنهجٍ ومستمرٍ حتى تتقنها. لذا لا بدّ لك من وضع خطة واضحة للتدريب وتخصيص زمن محدد وثابت تقضيه في صقل تلك المهارة.يمكنك البدء مثلًا بتخصيص ساعة للتدريب يوميًا لمدة شهر كامل، وبعدها توازن نفسك مع ما كنت عليه في السابق من سرعةٍ في تحديد المشكلة وجودةٍ الحل المطروح والوقت الإجمالي لحل المشكلة وبكل تأكيد ستلاحظ تحسنًا واضحًا في أدائك. وقد تساءل نفسك كيف يمكنني التدرب على حلّ المشاكل؟ في الحقيقة هنالك طريقة مفيدة جدًا أنصحك بها لتكوين قاعدة صلبة تنطلق منها، وهي على الشكل التالي. 1. التدرب على المسائل البرمجية تعد المسابقات البرمجية سواءً على مستوى الجامعة أو على مستوى القطر أو حتى على مستوى العالم مثل مسابقة ACM ICPC من أفضل الفرص للتدريب في مجال البرمجة وصقل هذه المهارة بل وتعتبر دفعة كبيرة لك في رحلتك كمبرمج ولمستقبلك المهني أيضًا، إذ تبادر العديد من الشركات العالمية لِضمّ أولئك المنافسين المتميزين إليها بعد أن أثبتوا بالفعل أنهم النخبة في مجالهم. فإن كنت تخطط للانضمام إلى هذه المسابقة فلا تتردد وبادر بالتحضير لها من الآن. ويقدم لنا الكاتب Steven Halim في كتابه Competitive Programming بعض الفوائد الَّتي نجنيها من التدرب على حلّ المشاكل البرمجية في المسابقات. السرعة في كتابة الشيفرة البرمجية كتابة الشيفرة البرمجية بسرعة في المسابقات يوفر لك الكثير من الوقت للتفكير في بقية المشاكل واختبارها لذلك نرى أغلب المبرمجين يتدربون على سرعة الكتابة على لوحة المفاتيح لينصب تركيزهم على حلّ المشكلة فقط، ولذلك من المنطقي أن تفضل الشركات الموظفين الَّذين سَبق إن شاركوا في المسابقات البرمجية لمعرفتها بسرعة إنتاجيتهم وقدرتهم على تطوير وإيصال منتج برمجي بسرعة عالية بِالْمُوازنة مع أقرانهم ممن لم يشاركوا في المسابقات. العصف الذهني وحصر الخوارزميات الممكنة لا بدّ من تحسين قدرتك على تحديد نوع المسألة بسرعة وأن تمتلك المعرفة الكافية بالخوارزميات لتتمكن من تطبيقها مباشرة على المسألة المطروحة، لذلك ينبغي على المبرمج الَّذي ينوي الانضمام إلى المسابقة أن يتمكن من جميع الخوارزميات الشائعة في المسائل البرمجية. العمل الجماعي وروح الفريق تعتمد المسابقة البرمجية على ترتيب الفرق بحسب عدد المسائل الَّتي أجابوا عليها، والوقت الَّذي استهلكوه لحلّ كُلَ مشكلة، وعدد الحلول الخاطئة الَّتي أُرسلت للحكم. وانطلاقًا من ذلك تكون فوائد العمل كفريق واحد متعددة منها إمكانية توزيع المسائل على كلّ عضو في الفريق بحيث يزداد العدد الكلي للمسائل المحلولة بتوزيعها بين بعضهم بعضًا، ومناقشة حلّ كلّ مسألة وبذلك ينقص عدد الحلول الخاطئة الَّتي قد تُرسل للحكم، وحُكمًا سينقص الوقت المستغرق لحلّ المسائل. وعلى الصعيد العملي أيضًا نجد أن طبيعة عمل المبرمجين سواءً في الشركات الصغيرة أو الكبيرة، يُطلب منهم العمل كفريق واحد، فعلى سبيل المثال منذ فترة طَلَبَ مني أحد العملاء بناء موقع ويب، وكنت عندها قد أنتهيت من بناء فريقي البرمجي. وبالفعل بدأنا العمل على الموقع و قسّمنا العمل على أجزاء فعكف كلُّ واحد منا على تطوير جزئه الخاص من الموقع، إذ استلمتُ جزء الواجهات الخلفية، وقام أحد أعضاء الفريق باستلام الواجهات الأمامية، والآخَر استلم بناء تطبيق للهواتف الّتي تعمل بنظام أندرويد وفي نهاية الأسبوع جمعنا كل الأجزاء مع بعضها بعضًا وأنهينا المشروع بوقتٍ قياسي لم نكن لنستطيع بلوغهُ لو أننا لم نعمل كفريقٍ واحد، ولذا فإن انضمامك إلى المسابقة البرمجية يجعلك تتدرب على العمل ضمن فريق قبل أن تواجهها في سوق العمل في حال أردت العمل مع أي شركة مستقبلًا. المرونة العصبية إن تدريبك المستمر على المسائل البرمجية سيؤدي إلى زيادة منطقة الحصين (المنطقة المسؤولة عن الذاكرة والتوجيهات) في الدماغ وهذا ما أثبتته الباحثة اليانور ماجواير من كلية لندن الجامعية عندما أجرت دراسة على سائقي الأجرة في مدينة لندن فقاموا بإجراء فحص بالرنين المغناطيسي الوظيفي fMRI لأدمغة السائقين الذين قضوا قرابة عامين من التدريب في سبيل تعلم كيفية التنقل في منعطفات المدينة وذلك من أجل الحصول على رخصة القيادة ومقارنتها بصور لأدمغة رجال أصحاء من نفس العمر ولا يعملون كسائقي أجرة فتبين أن منطقة الحصين أصبحت أكبر لدى السائقين، كما لاحظوا أنه كلما أمضى سائق الأجرة فترة أطول في التدريب، زاد حجم الحصين، وذلك استجابة إلى الخبرة الّتي يكتسبها السائق. والآن تخيل معي ما سيحدث في حال تدربك على حل المشاكل لمدة عام أو أكثر، سيصبح حلّك للمشاكل البرمجية عادة سهلة ومسلية خلاف ما كانت عليه من صعوبة وتعقيد. يوجد العديد من المواقع الَّتي تقدم المسائل البرمجية مثل HackerRank أو موقع TopCoder والكثير غيرهم. 2. التدرب باستخدام الألعاب نعم أنت لم تخطئ القراءة إنها الألعاب! تعد الألعاب أداة قوية جدًا لتنمية المهارات العقلية والقدرات الدماغية على التفكير والتذكر وربط المعلومات ببعضها بعضًا، حيث أن غالبية الألعاب تحتاج لتجميع المعلومات وتنظيمها بحيث تستطيع الاستفادة منها وجعلها مفتاحًا للحلّ، بل إن الركيزة الأساسية الَّتي تشترك بها كافة الألعاب هي حلّ المشاكل! بالتأكيد نحن لا نقصد هنا ألعاب الفيديو فقط وإنما ألعاب الذكاء أيضًا مثل : لعبة الشطرنج، والألغاز الرياضية، ولعبة سودوكو، ولعبة Go، والكثير من الألعاب الَّتي تندرج تحت هذا السياق تعد ألعاب مفيدة. فعند محاولتك حلّ الألغاز في Saw أنت فعليًا تقوم بحلّ المشاكل (ولكن بإطار مختلف). وتساعدنا أيضًا في انشاء سيناريوهات للحلّ وهذه المهارة مفيدة في عالم البرمجة في حال تعثرت في أسلوب حلّ معين فتغير سيناريو الحلّ وتبدأ من جديد. في الحقيقة إن الشيء المشترك بين جميع الناس الناجحين هي اكتسابهم لعادات يومية لحلّ المشاكل الصغيرة على سبيل المثال بيتر تيل (أحد مؤسسي شركة باي بال والمصنف كرابع أغنى شخص على مستوى العالم لعام 2014 بميزانية تفوق $2.2 بليون دولار) صرح بشكل رسمي أنه يلعب الشطرنج يوميًا بل وشارك في بطولات الشطرنج مرات عديدة، وإيلون ماسك (رائد الأعمال والرئيس التنفيذي لعدة شركات مثل: سبيس إكس لتصنيع مركبات الفضاء وتسلا لصناعة السيارات الكهربائية وغيرها)أكد بأنه يلعب ألعاب الفيديو والكثير غيرهم كرسوا جزءًا من وقتهم اليومي لتنمية مهارة حلّ المشاكل. ولكن يجب أن تكون حذرًا في إدارة وقت اللعب ويُفضل أن تختار الأوقات المناسبة للعب ووضع مدة زمنية مخصصة لها، وذلك لأن الهدف ليس إضاعة الوقت والتسلية فقط وإنما التدرب على حل المشاكل ولكي لا ينتهِ بك المطاف إلى قضاء اليوم بأكمله على الألعاب. الخلاصة اعتقد أنك قد كونت فكرة جيدة عن أهمية حلّ المشاكل وضرورتها في مشوارك البرمجي وكيفية بناء خطة حلّ شاملة انطلاقًا من فهم المشكلة وتحليلها ومرورًا بإعداد خطة مخصصة لكلّ مشكلة وتقسيم المشكلة إلى أجزاء ليسهل حلّها ومواجهة حالة السكتة البرمجية وكيفية التغلب عليها من خلال تنقيح الأخطاء أو مراجعة وتقييم الحلّ، وأهمية البحث عن حلول على الإنترنت لنفس المشكلة وانتهاءً بالأسلوب الصحيح للتدرب على حل المشاكل وما هي أفضل الوسائل لتحقيق ذلك سواءً بالانضمام إلى المسابقات البرمجية أو بالتدرب بإستخدام الألعاب. وختامًا، لا تتوقع أن تصبح مبرمجًا محترفًا في غضون أسبوعٍ أو شهر واحد فهذا ضرب من الخيال بل ستحتاج لحلّ الكثير من المشاكل لبناء قاعدة معرفية صلبة تمكنك من مواجهة أي مشكلة مهما كانت صعوبتها وعندها بالتأكيد سوف تستحق لقب مبرمج محترف. اقرأ أيضًا تعلم لغة PHP تعلم لغة بايثون1 نقطة
-
مرحباً إخواني وأخواتي، هل توجد إضافة تمكننا من ربط شركة شحن بمتجر ووكوميرس عن طريق API KEY توفره لنا شركة الشحن ؟ تحياتي لكم وعيدكم مبارك سعيد وكل عام وأنتم بألف خير.1 نقطة