اذهب إلى المحتوى

Sherif Aboghazala

الأعضاء
  • المساهمات

    62
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو Sherif Aboghazala

  1. هل من الضروري تعلّم Flask و Odoo إذا كنتِ تريدين التخصص في Django؟ الجواب: لا، ليس ضروريًا أبداً. لماذا؟ لأن Django إطار ضخم وكامل، يكفيك لبناء: تطبيقات ويب متقدمة لوحات تحكم REST APIs نظم إداريّة (CRUD Systems) مواقع كبيرة ومعقدة وهو أساس قوي جدًا لمسار تطوير الويب بالبايثون، بل إنّ الشركات التي تعتمد Django لا تشترط معرفة Flask. متى يكون تعلّم Flask مفيد؟ Flask مفيد فقط إذا أردتِ: بناء تطبيقات صغيرة وسريعة تعلم الأساسيات منخفضة المستوى للويب العمل في شركات تستخدم Flask تحديدًا لكن ليس شرطًا لتطوير مهارات Django. متى يكون Odoo مهم؟ Odoo ليس إطار ويب، بل منظومة ERP كاملة، وله سوق مختلف تمامًا. تعلّمه مفيد فقط إذا أردتِ: العمل في مجال ERP تطوير وحدات Odoo للشركات دخول سوق Odoo Freelancing وإلا فهو ليس جزءًا من مسار Django. إذن ما الأفضل لك الآن؟ بما أنكِ تقولين إنك تعلمت Django وتريدين تطوير نفسك فيه، فالأفضل: 1) أكملي مسار Django بعمق مثل: ORM Django Admin customization Authentication & Permissions Django REST Framework Deployment Caching & Performance 2) اعملي على مشاريع عملية مثل: E-commerce Blog متقدم Dashboard REST API متكاملة
  2. وعليكم السلام ورحمة الله وبركاته ما هو Vibe Coding؟ مصطلح Vibe Coding لا يشير إلى أداة تقنية محددة، بل إلى أسلوب عمل ومزاج برمجي يركّز على: التركيز التام أثناء كتابة الكود الاستمتاع بالبيئة والأدوات التي تعمل بها تجنب الانقطاع والتشتت رفع مستوى الإبداع والإنتاجية بمعنى آخر، هو وضع نفسي وتقني يساعدك على الإنتاج بأفضل شكل ممكن. ما رأيكم في Vibe Coding؟ فكرة ممتازة وفعّالة، لأن: الإنتاجية لا تتعلق فقط بالمعرفة التقنية، بل بالتركيز والاجتهاد. حالات الانبهار وسوء التنظيم تقلّ عندما تكون في “vibe” جيد. يساعدك على الحفاظ على جودة الكود والابتعاد عن الأخطاء. يزيد من متعة البرمجة والتعلّم. لكن شرط نجاحه هو ضبط البيئة التقنية والنفسية الصحيحة، وليس مجرد الشعور العابر. أفضل الأدوات التي تساعد على Vibe Coding 1. محررات وبيئات تطوّر قوية Visual Studio Code (الأكثر استخدامًا) Neovim (للمحترفين) JetBrains IDEs (مثل IntelliJ / PyCharm / WebStorm) 2. أدوات تساعد في التركيز Pomodoro Timer (تقنية بومودورو لإدارة الوقت) Focus Mode / Distraction-free mode داخل المحرر Noisli / Brain.fm (موسيقى تركيز) 3. إضافات مفيدة في المحرر ESLint / Prettier GitLens Bracket Pair Colorizer Live Share (للتعاون) 4. أدوات لإدارة المهام Trello Notion Todoist كيف يجب على المبرمج استخدام Vibe Coding؟ إليك طريقة عملية: الخطوة 1: حضّر بيئتك نصّب محررًا مناسبًا أضف الإضافات التي تحتاجها ضع مجلد المشروع جاهزًا أغلق كل مصادر التشتت الخطوة 2: حدّد هدفًا واضحًا قبل أن تبدأ، اسأل نفسك: ما المطلوب؟ ما هي الخطوات الصغيرة؟ ما الذي سأنجزه في الجلسة؟ الخطوة 3: استخدم تقنية الوقت مثل: 25 دقيقة تركيز (Pomodoro) 5–10 دقائق استراحة سيساعدك هذا على دخول حالة التركيز الفعلي. الخطوة 4: عزّز الجو البرمجي استخدم: موسيقى هادئة إضاءة مناسبة كود منظم وواضح الخطوة 5: لا تكسر الـ “Vibe” بسهولة تجنّب: فتح السوشيال ميديا أثناء البرمجة التشتت بين المهام تعدد الشاشات غير الضرورية نصائح إضافية اغتنم فترات التركيز الصافية في الصباح جهّز خطة بسيطة قبل أن تكتب الكود استخدم نظام مراجعة (Code Review) إن أمكن احتفل بالتقدم ولو كان بسيطًا
  3. نعم، يوجد حلول حقيقية وعملية تستطيع استخدامها عندما تكون بياناتك حساسة وكبيرة ولا يمكنك إرسالها إلى نماذج سحابية مثل GPT أو Gemini، وفي نفس الوقت النماذج المحلية ضعيفة. هذه بالضبط مشكلة شائعة في الشركات التي تعمل على GraphRAG. إليك أفضل الخيارات الآمنة والعملية بدون تعقيد: 1) استخدام LLM سحابي لكن بدون إرسال البيانات (Zero-Data / On-Device Processing) بعض الشركات بدأت توفر وضع اسمه: Zero-data mode أو Data Minimization الفكرة: ترسل دائماً ملخصات صغيرة جداً آمنة وليس البيانات الأصلية. وهذا يناسب GRAPHRAG تماماً، لأنك تستطيع: معالجة بياناتك محلياً بناء الكيانات والعلاقات بالـ locally إرسال فقط “تمثيل مجرد” للكيانات (بدون نص خام) مثال: بدلاً من إرسال تقرير حساس، ترسل فقط: اسم كيان: "Client A" علاقة: "Increased sales by 30%" بدون أي تفاصيل سرية. 2) استخدام نماذج صغيرة محلياً لكن تحسينها باستخدام تقنيات خاصة الحقائق الآن: النماذج الصغيرة (مثل Mistral 7B، Llama 8B، Qwen 7B) عندما تعمل بدون تحسين تكون فعلاً ضعيفة. لكن هناك تحسينات ترفع الجودة بشكل كبير جداً بدون تدريب مكلف: 1) RAG + GraphRAG يعوض ضعف النموذج المحلي بنسبة كبيرة. 2) Fine-Tuning خفيف (LoRA) يكلفك: ذاكرة 8GB تدريب لمدة ساعة ويعطي دقة أعلى بكثير. 3) استخدام quantization مثل GGUF أو GPTQ لتشغيل نماذج 8B على جهاز متوسط بدون فقد كبير في الجودة. 3) استخدام نماذج متخصصة بدلاً من "LLM عام" غالباً المشكلة ليست في الحجم، بل في اختيار نموذج غير مناسب. أمثلة قوية: DeepSeek-R1 Distill 14B Qwen2.5 14B Mixtral 8x7B Llama 3.1 8B Instruct Phi-3 Medium (جيد جداً على المعلومات المنظمة) هذه النماذج حجمها متوسط وأداؤها ممتاز إذا تم دمجها مع RAG/GraphRAG. 4) معالجة البيانات الضخمة محلياً ثم استخدام LLM فقط للبنية إذا بياناتك كبيرة جداً، لا ترسلها للنموذج. بدلاً من ذلك: Local Preprocessing استخراج الكيانات والعلاقات محلياً بناء Graph دمج النصوص وفهرستها Remote Small Tasks إرسال: سؤال أسماء كيانات توصيفات صغيرة وليس البيانات الأصلية. هذا يجعل النظام آمناً 100%. 5) استخدام LLM داخل بيئة سحابية خاصة (Private Cloud) ليس بالضرورة أن تستخدم خدمات عامة مثل GPT. يمكنك استخدام: Azure OpenAI Private Network Google Vertex AI Private Service AWS Bedrock PrivateLink هذه تضمن: البيانات لا تخرج من شبكتك لا تُستخدم لتدريب النماذج تشغل فقط inference مناسبة جداً للبيانات الحساسة. 6) بالنسبة لـ GraphRAG بالتحديد هو لا يحتاج LLM قوي جداً في كل خطوة. يوجد 3 مراحل: استخراج الكيانات والعلاقات بناء المجتمعات تلخيص hierarchies الاستعلام النهائي يمكنك تقسيم العمل كالآتي: 1 و2 محلياً بالكامل (بدون نموذج قوي) 3 بنموذج متوسط محلي 4 بنموذج سحابي بدون إرسال بيانات حساسة (فقط السياق المختصر) وبذلك تحل المشكلة تماماً. لذا الخلاصه نعم، يمكنك العمل على بياناتك الحساسة بدون إرسالها إلى نماذج سحابية، وما زال بإمكانك الحصول على دقة ممتازة عبر: GraphRAG Local preprocessing تحسين النماذج الصغيرة Zero-data usage Private cloud inference LoRA fine-tuning Quantization إذا تريد، أقدم لك: خطة كاملة لبناء GraphRAG آمن 100% اختيار أفضل نموذج محلي لك تصميم بنية نظام تجمع بين الأمن والقوة كود جاهز للربط بقاعدة بياناتك أخبرني فقط نوع بياناتك (نصوص؟ جداول؟ تقارير؟).
  4. أولاً: كيف تربط LLM بقاعدة بيانات؟ هناك 3 طرق رئيسية، حسب ما تريد فعله: 1) ربط مباشر (Natural Language → SQL) تستخدم LLM لتحويل سؤال المستخدم إلى SQL، ثم تنفّذ SQL على قاعدة البيانات. مثال بايثون: query = llm.generate("كم عدد العملاء في 2023؟ اكتب SQL فقط") rows = db.execute(query) المناسب: الاستعلامات العددية والتحليلية. 2) استخدام Connectors جاهزة مثل: LangChain SQLDatabaseChain LlamaIndex SQL Retriever تعطي LLM القدرة على فهم مخطط قاعدة البيانات (schema) ثم توليد SQL آمن. 3) ربط عبر Graph (مهم لـ GRAPHRAG) تقوم بتحويل البيانات إلى: Entities → Relationships → Graph ثم LLM يستعلم من الـ Graph بدلاً من SQL. هذا هو الأساس الذي يستخدمه GRAPHRAG. ثانياً: كيف تربط LLM مع GRAPHRAG؟ العملية بسيطة ومكونة من 3 أجزاء: 1) بناء الـ Graph من البيانات بعد تركيب GRAPHRAG: graphrag init project graphrag run هذا يحول النصوص أو الجداول إلى: كيانات – علاقات – مجتمعات – Graph. 2) تشغيل محرك الاستعلام (LLM + Graph) بعد البناء: graphrag chat أو باستخدام Python: from graphrag import GraphRAG engine = GraphRAG("myproject") engine.query("ما العلاقة بين المنتج X والمبيعات؟") الـ LLM هنا لا يتعامل مع النص الخام، بل مع: Graph + Summaries + Context Hierarchy. ثالثاً: الطريق الواضح لتعلّم GRAPHRAG الخطوات: شغّل GRAPHRAG على بيانات بسيطة افهم الملفات: config.yaml pipeline.yaml model_config.yaml جرّب استعلامات بسيطة عدّل إعدادات استخراج الكيانات والعلاقات جرّبه على قاعدة بيانات حقيقية: استخرج البيانات → حولها إلى نص/JSON → أدخلها لـ GRAPHRAG اربطه بتطبيق (API – n8n – Streamlit)
  5. هناك عدة طرق للعمل على الإنترنت، ويمكنك البدء من الصفر حتى لو لم يكن لديك خبرة كبيرة. إليك شرحًا واضحًا ومنظمًا للطريق الصحيح: أولًا: حدد نوع العمل الذي يناسبك العمل على الإنترنت ينقسم إلى ثلاثة مسارات: 1. خدمات رقمية (Freelancing) وهي الأكثر شيوعًا، وتشمل: كتابة المقالات التفريغ الصوتي التصميم الجرافيكي الترجمة تحرير الفيديو برمجة المواقع التسويق الإلكتروني هذه الأعمال يتم تقديمها على منصات عربية مثل: مستقل خمسات بعيد وعلى منصات أجنبية مثل: Upwork Fiverr 2. العمل في إنشاء محتوى (Content Creation) ويمكن أن يكون: قناة يوتيوب حساب تيك توك مدونة شخصية صفحات تعليمية في فيسبوك/إنستغرام هذا النوع يحتاج وقتًا، لكنه مربح جدًا إذا استمريت. 3. بيع منتجات أو خدمات سواء رقمية أو مادية: بيع كتب إلكترونية بيع دورات بيع قوالب ووردبريس منتجات على Etsy تجارة عبر شوبيفاي ثانيًا: مهارات بسيطة يمكنك البدء بها فورًا إذا كنت مبتدئًا تمامًا، ابدأ بمجالات لا تحتاج خبرة كبيرة: 1. التفريغ الصوتي (Transcription) تحويل الصوت إلى نص سهل – مطلوب – تدريب بسيط 2. كتابة المحتوى مثل المقالات أو نصوص الإعلانات. تحتاج قدرة جيدة على الكتابة فقط. 3. إدخال البيانات (Data Entry) عمل بسيط – مناسب للمبتدئين. 4. الترجمة إذا كنت تجيد لغتين. 5. إدارة حسابات التواصل الاجتماعي للشركات الصغيرة. ثالثًا: كيف تبدأ عمليًا؟ 1. تعلم مهارة واحدة لمدة أسبوع إلى أسبوعين اختر مجالًا يناسبك مثل: الكتابة، التصميم، التفريغ، البرمجة، التحرير… 2. جهّز نماذج (Portfolio) حتى لو كنت مبتدئًا: اكتب مقالين أو فرّغ مقطعًا صوتيًا أو صمم صورتين أو أنشئ صفحة ويب بسيطة هذه النماذج تُظهر مهارتك للعميل. 3. افتح حسابًا على منصات العمل الحر مثل مستقل أو خمسات. قم بإنشاء حساب احترافي مع: وصف قوي مهاراتك أعمالك السابقة 4. قدم على المشاريع الصغيرة ابدأ بأسعار بسيطة حتى تحصل على تقييمات، ثم ارفع السعر تدريجيًا. 5. استمر بالتعلم والتطوير بعد شهرين من العمل، ستكون قادرًا على: رفع أجرك زيادة مهاراتك إيجاد عمل دائم عن بعد إذا رغبت
  6. أولًا: كيف تنشئ محتوى تفريغ صوتي (Transcription) 1. تجهيز الملفات الصوتية ابدأ بجمع المقاطع التي تريد تفريغها: تسجيلات محاضرات لقاءات بودكاست مقابلات احرص أن تكون جودة الصوت جيدة. 2. الاستماع وتجزئة المحتوى لا تستمع للمقطع كاملًا دفعة واحدة. قسّم العمل إلى: مقطع 1 دقيقة ثم دوّن كل ما تسمعه انتقل للمقطع التالي التجزئة تمنع التعب وتزيد الدقة. 3. كتابة النص بطريقة صحيحة أثناء الكتابة: استخدم علامات الترقيم صحح الأخطاء اللغوية احذف التكرار حافظ على المعنى الأصلي بعض العملاء يريدون تفريغ حرفي، والآخرون يريدون تفريغ منسق، فاسألهم قبل العمل. 4. مراجعة النص بعد الانتهاء: أعد تشغيل الصوت قارن النص مع المقطع صحح الكلمات غير الواضحة هذه الخطوة تضاعف جودة العمل. 5. تسليم الملف سلّمه بصيغة: Word PDF Google Docs ثانيًا: كيف تكتب مقالات بشكل احترافي؟ 1. اختيار الموضوع اختر موضوعًا تعرفه جيدًا أو تملك مصادر قوية عنه. بعض الأفكار: تقنية تعليم ريادة أعمال صحة ولياقة تطوير ذات 2. البحث استخدم مصادر موثوقة: مقالات علمية كتب مواقع عالمية لا تعتمد على مصدر واحد فقط. 3. كتابة الهيكل (Outline) قبل كتابة المقال، حضّر شكلًا بسيطًا: مقدمة شرح الفكرة الرئيسية نقاط مرتبة أو أقسام أمثلة خاتمة الهيكل يجعل كتابة المقال أسرع بـ 50%. 4. كتابة المقال احرص على: جمل قصيرة لغة واضحة فقرات غير طويلة أمثلة عملية تنسيق جيد ولا تنس: وضع كلمات مفتاحية في العناوين (SEO) إذا كان المقال لموقع. 5. مراجعة المقال اقرأه مرة ثانية: هل الجمل مفهومة؟ هل هناك تكرار؟ هل الفكرة مترابطة؟ هل توجد أخطاء لغوية؟ هذه المراجعة ترفع جودة المقال لمستوى احترافي. ثالثًا: التدوين (Blogging) إذا أردت التدوين على الإنترنت: لديك طريقتان: 1. منصّات جاهزة مثل: WordPress Blogger Medium منصة حسوب I/O هذه الأسهل للمبتدئين. 2. موقع شخصي إنشاء مدونة شخصية باستخدام: WordPress أو HTML + CSS + JS أو نظام مثل Ghost افعل ذلك عندما يصبح لديك خبرة كافية. كيف تبدأ عمليًا خلال يوم واحد؟ اليوم الأول: اختر مجالًا: كتابة – تفريغ صوتي – تدوين اكتب نموذجًا من 300 كلمة فرّغ مقطعًا قصيرًا مدته دقيقة أنشئ حسابًا على: مستقل خمسات أو مواقع التدوين وبهذا تكون قد بدأت فعليًا.
  7. أين تفكّ ضغط حزمة Flutter؟ بعد تنزيل حزمة Flutter (ملف zip)، قم بفكها في مجلد ثابت لا يتغير، مثل: في ويندوز: C:\src\flutter في ماك: ~/development/flutter تجنّب وضعها داخل مجلدات مثل: Program Files لأنها تحتاج صلاحيات كتابة. ما هي الخطوات التالية بعد فك الضغط؟ 1. إضافة Flutter إلى مسار PATH حتى تتمكن من استخدام أمر flutter في الطرفية. ويندوز: افتح: Environment Variables أضف المسار التالي إلى PATH: C:\src\flutter\bin 2. تشغيل الأمر: flutter doctor هذا الأمر يفحص جهازك ويخبرك بما ينقصك لتشغيل Flutter. هل يجب تثبيت Android Studio؟ نعم، يفضل جدًا للمبتدئين، والسبب ليس لأن Flutter يحتاجه بالكامل، بل لأنه يوفر لك: أدوات Android SDK جهاز محاكي Emulator بعض الإعدادات التي يوفرها flutter doctor بدونه لن تتمكن من تشغيل تطبيقات أندرويد بسهولة. إذا لا تريد Android Studio، فستضطر لتثبيت Android SDK و ADB يدويًا، وهذا أصعب بكثير للمبتدئ. ماذا أفعل بعد تثبيت Android Studio؟ افتح Android Studio ادخل Settings ثبت: Android SDK SDK Platform SDK Tools ثم شغّل: flutter doctor --android-licenses واضغط "y" للموافقة. ماذا بعد ذلك؟ بعد اكتمال الإعدادات: أنشئ مشروعًا جديدًا: flutter create my_app ادخل للمجلد: cd my_app شغّل المشروع: flutter run هل تحتاج VSCode؟ هو اختياري، لكنه أسهل وأخف من Android Studio. ومع إضافة Flutter و Dart يصبح مريحًا جدًا للتطوير. كتاب لتعلم Flutter من الصفر إلى الاحتراف أفضل خيار للمبتدئين العرب: كتاب Flutter و Dart – أكاديمية حسوب كتاب شامل، مرتب، ويبدأ من الأساسيات حتى التطبيقات المتقدمة. ويمكنك أيضًا الاعتماد على التوثيق الرسمي: Flutter.dev/docs
  8. هل حل مسائل Problem Solving مهم لمهندس الذكاء الاصطناعي؟ الجواب المختصر: نعم، مهم، لكن بدرجة تختلف عن مهندس البرمجيات التقليدي. والأفضل أن تمارس حل المشكلات بالتوازي مع تعلم الذكاء الاصطناعي، وليس قبل الكورس أو بعده فقط. لماذا هو مهم؟ 1. لفهم الخوارزميات بعمق الذكاء الاصطناعي قائم على خوارزميات مثل: الانحدار الخطي واللوجستي أشجار القرار الانحدار التدريجي الشبكات العصبية فهم هذه الخوارزميات يحتاج إلى عقل مدرَّب على التحليل المنطقي وتقسيم المشكلة إلى خطوات، وهي نفس المهارات التي تطورها عند حل مسائل LeetCode. 2. لتطوير كود نظيف وقابل للتوسع مهندس الذكاء الاصطناعي يتعامل مع كميات ضخمة من البيانات، وكتابة كود سيئ يجعل التجارب بطيئة، أو يجعل النموذج يعمل بكفاءة ضعيفة. حل المشكلات يعوّدك على كتابة كود: منظم واضح بدون تكرار سهل التصحيح 3. لفهم الهياكل الأساسية للبيانات حتى إذا استخدمت مكتبات جاهزة مثل NumPy وPandas، يظل من المهم أن تفهم أساسيات: القوائم والمصفوفات المجموعات القواميس الأشجار الرسوم البيانية هذه المفاهيم تظهر بشكل غير مباشر داخل خوارزميات الذكاء الاصطناعي ومعالجة البيانات. 4. للاجتياز الناجح للمقابلات التقنية في معظم الشركات العالمية، يُطلب من مهندس الذكاء الاصطناعي حل مسائل برمجية متوسطة لتعريف مستوى التفكير الخوارزمي لديه. حتى لو كان عملك يوميًا يستخدم Python وكتابة كود عال المستوى، فالمقابلات تعتمد على LeetCode. هل يجب أن أبدأ حل LeetCode الآن أم لاحقًا؟ لا تبالغ في حل المشكلات في البداية ليس مطلوبًا منك أن تتقن مئات المسائل، بل يكفي مستوى متوسط لتطوير مهاراتك الأساسية. الأفضل: ابدأ الكورس. وفي نفس الوقت، خصص 20 إلى 30 دقيقة يوميًا لمسألة واحدة سهلة أو متوسطة. بهذه الطريقة: تتقدم في تعلم الذكاء الاصطناعي. وتُكوّن عقلية خوارزمية بالتدريج. لا تؤجل حل المشكلات إلى ما بعد انتهاء الكورس لأنك ستحتاج التفكير الخوارزمي أثناء دراسة مواد مثل: Optimization Neural Networks Graph-based algorithms Reinforcement Learning وحينها ستجد نفسك بحاجة إلى مهارات كان من الأفضل اكتسابها مبكرًا. ماذا أحل تحديدًا؟ يكفي التركيز على هذه الموضوعات: Arrays Hash Tables Two Pointers Sliding Window Trees Recursion Basic Dynamic Programming لا تحتاج إلى التعمق في المسائل الصعبة جدًا، فهذا مستوى مطلوب أكثر لمهندس البرمجيات وليس مهندس الذكاء الاصطناعي. الخلاصة النهائية نعم، مهندس الذكاء الاصطناعي يحتاج إلى ممارسة حل المشكلات، ليس لأنه سيستخدم نفس الحلول في عمله اليومي، بل لأنها: تطور مهارات التحليل تساعد على كتابة كود أفضل تعزز فهم الخوارزميات تزيد فرص النجاح في المقابلات ولكن من الخطأ تأجيل تعلم الذكاء الاصطناعي بسبب LeetCode. اجعل الاثنين يسيران معًا، ومتوسط مستوى البرمجة كافٍ تمامًا للنجاح في المجال.
  9. إليك الفرق بين الكودين بشكل واضح وبسيط: أول كود capitals = ['r','f','l'] cpas = {"D","d"} for cap, cpa in zip(capitals, cpas): print(cpa, ":", cap) capitals = ['r','f','l'] cpas = {"D","d"} for cap, cpa in zip(capitals, cpas): print(cpa, ":", cap) ما يحدث هنا: capitals → قائمة (list) cpas → مجموعة (set) zip(capitals, cpas) يربط العنصر الأول مع الأول، الثاني مع الثاني… → لكن المجموعة set غير مرتبة! لذلك ترتيب "D", "d" غير مضمون. الحلقة تعطيك مخرجات صحيحة مثل: D : r d : f أو قد تكون بالعكس… حسب ترتيب الـ set. الكود الثاني (خاطئ) capitals = ['r','f','l'] cpas = {"D","d"} for capitals , cpas in capitals.items(): print(cpas, ":", capitals) capitals = ['r','f','l'] cpas = {"D","d"} for capitals , cpas in capitals.items(): print(cpas, ":", capitals) الأخطاء هنا: capitals هو list → والقوائم ليس لديها items() → سيعطيك خطأ: AttributeError: 'list' object has no attribute 'items' أنت تكتب: for capitals, cpas in capitals.items(): لكنّك: تستخدم نفس اسم المتغيّر capitals للّست والقيم داخل الحلقة وتستخدم items() مع متغيّر ليس قاموسًا حتى لو كان قاموسًا، الصياغة غلط لأنها تعيد مفاتيح وقيم، وليس عناصر من قائمتين. إذا أردت الكود الثاني يعمل، يجب أن يكون لديك dict هكذا: capitals = {"r": "D", "f": "d"} for cap, cpa in capitals.items(): print(cpa, ":", cap) capitals = {"r": "D", "f": "d"} for cap, cpa in capitals.items(): print(cpa, ":", cap)
  10. فكرة أن مهندس الذكاء الاصطناعي أو عالم البيانات “لا يحتاج البرمجة” غير صحيحة. صحيح أن المهندس يهتم بالتصميم المعماري للحلول، لكن جزءًا أساسيًا من عمله يعتمد على القدرة على كتابة كود منطقي وفعّال. لماذا البرمجة وحل المشاكل مهمان؟ نماذج الذكاء الاصطناعي نفسها خوارزميات؛ فهمها يتطلب تفكيرًا برمجيًا وليس مجرد استخدام مكتبات جاهزة. في الوظائف العملية ستحتاج لكتابة preprocessing، التعامل مع البيانات، تنفيذ التجارب، وتحسين الأداء. حل مسائل برمجية يبني أهم مهارة يحتاجها المهندس: تحليل المشكلة وتحويلها لخطوات قابلة للتنفيذ. هل تحتاج مستوى متقدم؟ لا. يكفي مستوى متوسط: هياكل بيانات أساسية، Big-O، مسائل منطقية بسيطة–متوسطة، التفكير الخوارزمي. لذا فالخلاصة نعم، عالم البيانات ومهندس الذكاء الاصطناعي يحتاجان لحل المشاكل البرمجية بقدر جيد، ليس ليصبحا مبرمجين متخصصين، بل ليكونا قادرين على فهم النماذج، تصميم الحلول، وتنفيذها بشكل صحيح.
  11. من الطبيعي بعد إنهاء أساسيات بايثون أن تشعر بأنك تحتاج إلى مزيد من التمارين قبل الانتقال للمواضيع الجديدة. الأفضل فعلًا أن ترسّخ فهمك أولًا، لأن قوة الأساسيات تجعل التعلّم لاحقًا أسهل بكثير. يمكنك الانتقال عندما تشعر أنك متمكّن من: المتغيرات وأنواع البيانات الشروط والحلقات القوائم والقواميس الدوال التعامل الأساسي مع الملفات إذا ما زلت تتردد في هذه النقاط، فالتمارين ستفيدك أكثر من الانتقال المباشر. مواقع موثوقة لتمارين أساسيات بايثون: HackerRank Codewars Exercism W3Resource Python Exercises ابدأ بالتمارين السهلة ثم ارفع المستوى تدريجيًا، وعندما تشعر بالراحة في الحل دون الرجوع للدروس، انتقل إلى الوحدات (Modules) بثقة.
  12. لا يحتاج عالم البيانات إلى التعمّق في هياكل البيانات والخوارزميات بنفس الدرجة المطلوبة من مهندس البرمجيات، لكن امتلاك فهم راسخ للأساسيات ليس مجرد رفاهية، بل شرط للقدرة على التعامل مع البيانات بكفاءة واتخاذ قرارات صحيحة أثناء بناء النماذج. على الرغم من أنك ستعتمد غالبًا على مكتبات قوية ومُحسّنة مسبقًا مثل: NumPy، Pandas، Scikit-Learn، PyTorch، TensorFlow إلا أن هذه المكتبات مبنية أصلًا على مبادئ خوارزمية واضحة، ومعرفتك لها تمنحك ثلاث فوائد أساسية: 1. كتابة كود performant و scalable قد ينجح الكود المُستخدم على عيّنة صغيرة، لكنه يفشل أو يصبح بطيئًا عند التعامل مع ملايين الصفوف. هنا يظهر دور فهمك لهياكل البيانات: استخدام Set بدلًا من List للبحث يقلل الوقت من O(n) إلى O(1). دمج العمليات بدلاً من الحلقات المتداخلة يمنع الأداء من الانهيار من O(n²) إلى O(n). معرفة كيفية التعامل مع المصفوفات الكبيرة يحميك من أخطاء الذاكرة. هذه التفاصيل هي ما يفصل بين “كود يعمل” و“كود احترافي يمكن استخدامه في الإنتاج”. 2. فهم كيفية عمل نماذج Machine Learning نفسها الكثير من نماذج الذكاء الاصطناعي مبنية مباشرة على هياكل بيانات معروفة: Decision Trees و Random Forests و XGBoost تعتمد على أشجار القرار وتجزيء البيانات. Neural Networks تعتمد على المصفوفات والعمليات الخطية (Matrices & Tensors). خوارزميات الـ NLP غالبًا تستخدم الرسوم البيانية (Graphs) والتدرج في المعاني Embeddings. Clustering يستخدم خوارزميات تعتمد على حسابات المسافات بكفاءة عالية. فهم هذه الأسس يجعل نتائجك أو تفسيرك للنماذج أفضل بكثير. 3. النجاح في مقابلات العمل كثير من الشركات—خصوصًا التقنية—لا توظّف عالم بيانات لا يمكنه كتابة كود نظيف وحل مسائل برمجية. لن يطلب منك أحد تنفيذ AVL Tree من الصفر، ولكن: قد تُسأل عن الفرق بين O(n log n) و O(n²) في خوارزميات الفرز. أو كيفية تحسين زمن تنفيذ كود يعالج ملفًا حجمه 5GB. أو كيفية إعادة كتابة عملية Feature Engineering بطريقة أكثر كفاءة. هذا يضمن أنك تستطيع التفكير منطقيًا، وهي مهارة يُبنى عليها أي دور في البيانات. ما المستوى المطلوب تحديدًا؟ لست بحاجة للتعمّق الأكاديمي، لكنك تحتاج ما يلي: هياكل البيانات الأساسية: Arrays / Lists Sets Dictionaries / Hash Maps Tuples فهم كيفية عمل الأشجار Tree Structures نظريًا (خاصة لشرح عمل Decision Trees) الخوارزميات الأساسية: Searching & Sorting Recursion Greedy & Dynamic Programming (مستوى بسيط–متوسط) Big-O Notation وتحليل الزمن والمساحة Vectorization وفهم الفرق بين العمليات المتجهة والحلقية (مهم جدًا في NumPy) لذلك فالمعرفة المتوسطة العميقة خيرٌ من الجهل التام أو التعمّق الذي لا تحتاجه. ومن يملك فهمًا جيدًا لهياكل البيانات والخوارزميات يكون طريقه في علوم البيانات أوضح وأسرع.
×
×
  • أضف...