اريد شرح للخوارزميات و هياكل البيانات (بالعربي او انجليزي) .
اريد شرح للخوارزميات و هياكل البيانات (بالعربي او انجليزي) .
جيّد أيضاً المهم أن تكمله, لا تضخم أمر الخوارزميات و هياكل البيانات كثيراً فهي فقط لأسئلة المقابلة أكملها و انتقل إلى الأشياء العملية.
أنا أعمل على مشاريع متوسطة و كبيرة بعض الشيء, لا أحد يبني قائمة مترابطة أو مُكدس (في برمجة الأنظمة ربما تصادفين ذلك)
لكن هذا لا يُلغي أهمية هذه المواضيع فهي سؤال متكرر في معظم مقابلات العمل.
هذا يعتمد على نوع المشاريع التي تعمل عليها ، إذا أردت أن تنجز مشروعا لتكسب مالا منه ، على الأرجح لن تحتاج إلى معرفة الـGraph theory أو الـTrees مثلا ، لكن إذا أردت أن تكتب خوارزمية ذكاء اصطناعي مثلا ، يجب أن تكون مطلع بشكل ممتاز على اساليب الخوارزميات المختلفة حتى تكتب خوارزميتك الخاصة بشكل بارع،
أرى أن المعرفة المتقدمة في الخوارزميات غير مهمة كثيرَا في عالمنا العربي فقط، يعني لا أحد يتوقع مثلا أن يعمل في شركة تطلب منه أن يكتب خوارزمية تساعد الطيار على تجنب التصادمات مع المطبات الهوائية ، أو أن يجد أفضل node لمسار التيار الكهربائي لكن ليس "الأفضل"، أو أشياء من هذا القبيل
على أية حال ، أساليب الـsearch ومراعاة الـTime complexity مفيدة حتى لو لم يكن برنامجك أو مشروعك ضخم
الأشجار هي بُنية معطيات تتيح لك الوصول للبيانات بشكل أسرع, في جُل مشاريعك ستبني البيانات بواسطة لغة قواعد بيانات مُعينة و معظم أُطر العمل تأتي معها ORM يؤمن لك الوصول للبيانات بالطريقة المُثلى, أكاد أجزم أنّك لن تستخدمي بنية الأشجار مثلاً إلّا لبناء نظام ملفات كامل
الذكاء الصنعي يستخدم مكاتب معروفة و مكتوبة لك بالأصل مثل TensorFlow و المكتوبة أصلاً بلغات سريعة بينما تستخدمين كـ API لغة لها Runtime يُعتبر من بين الأبطأ و لجعل نقطتي واضحة أؤكد أنني مع تعلم هذه التقنيات في البرمجة و يمكنك دائماً إيجاد مكان ما تستخدمينها فيها لكن الأهم هنا هو كتابة برمجيات حقيقية و تعلم تقنيات مستخدمة بشكل أوسع بكثير مثل Design patterns و test driven development نعم ليس من المعقول أن تكوني مبرمجة بدون أن تعرفي الخوارزميات و بنى المعطيات بالنسبة للمُقابل لكن ما ستستخدمينه في عملك اليومي هي عبارة عن تقنيات أُخرى غالباً.
نعم بايثون تملك Runtime يعتبر بطيء جداً مقارنة باللغات الآخرى حوالي 22 مرة أبطأ من سي بلس بلس
السهولة والاختصار و الجمالية في بايثون تدفع ثمنها من خلال الأداء لكن لا تفهمني بشكل خاطئ تستطيع بناء تطبيقات كبيرة جداً جداً بواسطة بايثون فنعم هي بطيئة مقارنة بغيرها لكنها OK بالنسبة لمعظم أنواع التطبيقات و هناك أمثلة على ذلك مثل Dropbox و Instagram
بل إنّ جمال بايثون يمتد لإمكانية كتابة بعض الـ extensions فيها بلغة سريعة مثل سي للعمليات التي تتطلب سرعة كبيرة جداً!
التعليقات