فكر برمجي
442 subscribers
336 photos
2 videos
67 files
189 links
#فكر_برمجي
Think_Programmatically
قناة تقنية متخصصة في البرمجة وتطوير المهارات. نوفر شروحات مبسطة، موارد مفيدة، وأفكار ملهمة لتحويل شغفك بالتقنية إلى إبداع.
Download Telegram
🔰 أنـواع لـغـات الـبـرمـجـة

لغة البرمجة عبارة عن مجموعة من القواعد والتعليمات التي يتم استخدامها في كتابة كود برمجي أو برنامج يؤدي وظيفة معينة.
يوجد نوعان من لغات البرمحة وهي "لـغـات بـرمـجـة عـالـيـة الـمـسـتـوى" و "لـغـات بـرمـجـة مـنـخـفـضـة الـمـسـتـوى".

🔸 لـغـات بـرمـجـة عـالـيـة الـمـسـتـوى :
هي لغات سهلة الفهم للقارئ، لكن صعبة الفهم للمعالج لذلك يتم تحويل اللغات عالية المستوى إلى لغة الآلة التي يفهمها المعالج ويقوم بتنفيذ أكوادها.
أمثلة عن لغات عالية المستوى : Python - C - Java - C # - PHP ..

🔸 لـغـات بـرمـجـة مـنـخـفـضـة الـمـسـتـوى :
هي لغات مشابهة للغة الآلة (أصفار ووحدات)، يصعب فهمها من قِبل الإنسان، لكن يفهمها الحاسوب ويمكن للمتخصصين فهمها.
أمثلة عن لغات منخفضة المستوى :
▪️ لغة الآلة _ Machine Language.
▪️ لغة التجميع _ Assembly Language.

أضِف لمعلوماتك . .
#INFO #programming #cybersecurity #networking
إن أفنيت عمرك في جمع السلاح.. فمتى تُقاتل؟

في تخصصات البرمجة، الشبكات، والذكاء الاصطناعي، "#السلاح" هو الأدوات (Tools)، اللغات (Languages)، والشهادات (Certifications). أما "#القتال" فهو التنفيذ الفعلي، بناء المشاريع، وحل المشكلات الحقيقية.


اليوم يقع الكثير منا في فخ "#الاستعداد_الأبدي". تجده يدرس Java، ثم ينتقل لـ Python، ثم يأخذ دورة في Docker، ويتبعها بشهادة في Cybersecurity.. هو يجمع الأسلحة باستمرار، لكنه لم يبنِ تطبيقاً واحداً للنهاية، ولم يواجه "بج" (Bug) حقيقي في بيئة عمل حية.

لماذا يجب أن تبدأ "#القتال" الآن؟

السلاح يصدأ:
في تقنية المعلومات، الأداة التي تتعلمها اليوم ولا تستخدمها، ستصبح قديمة (Deprecated) بعد عامين.

الخبرة في الميدان:
لن تتعلم كيفية إصلاح سيرفر بنكي تحت الضغط من خلال قراءة كتاب فقط؛ يجب أن تكون في قلب المعركة.

قيمة السلاح في استخدامه:
لغة البرمجة لا قيمة لها إن لم تتحول إلى نظام يحل مشكلة لشركة أو يسهل حياة مستخدم.

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

#سؤالي_للزملاء:-
كم مرة أجلت البدء في مشروعك الخاص لأنك شعرت أنك "لست مستعداً بعد"؟ شاركونا تجاربكم.

#network #programming
4
في هندسة البرمجيات، كتابة الكود ليست أول خطوة، وإطلاق النظام ليس آخر خطوة.

قبل أن نبدأ بالتطوير، نحتاج إلى فهم الرحلة الكاملة التي يمر بها أي نظام برمجي، وهنا يأتي مفهوم SDLC — Software Development Life Cycle أو دورة حياة تطوير البرمجيات.

SDLC تنظم عملية تطوير النظام عبر مراحل واضحة:

تحليل المتطلبات → التخطيط → التصميم → البرمجة → الاختبار → النشر → الصيانة

القيمة الحقيقية لهذه المراحل ليست في حفظ أسمائها، بل في فهم دور كل مرحلة.

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

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

في هذا الكاروسيل شرحت المراحل خطوة بخطوة، مع مثال عملي لبناء متجر إلكتروني لتوضيح الصورة.

هذا هو المنشور #002 من سلسلة Software Engineering التي أشارك فيها المفاهيم الأساسية في هندسة البرمجيات بصورة مبسطة وعملية.

المنشور القادم #003: Requirements
وسنتحدث عن الفرق بين Functional Requirements و Non-Functional Requirements وكيف تؤثر المتطلبات على المشروع منذ البداية.

برأيكم: ما المرحلة التي يمكن أن يسبب إهمالها أكبر تكلفة على المشروع؟

— م. طارق العمري
Software Engineer | Backend Developer

#SoftwareEngineering #SDLC #SoftwareDevelopment #SoftwareEngineer #BackendDevelopment #SystemDesign #Programming #SoftwareArchitecture #هندسة_البرمجيات #تطوير_البرمجيات #برمجة
#003 — Requirements | المتطلبات

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

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

هنا تأتي أهمية Requirements.

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

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

ولهذا قبل أن تسأل:

كيف سنبني النظام؟

اسأل أولًا:

ماذا نحتاج أن نبني؟ ولماذا؟

فالهدف في هندسة البرمجيات ليس كتابة أكبر قدر من الكود، بل بناء الحل الصحيح للمشكلة الصحيحة.

في هذا الكاروسيل شرحت مفهوم Requirements، مصادر المتطلبات، أهميتها، وما الذي يمكن أن يحدث عندما يبدأ المشروع بمتطلبات غامضة.

السؤال للنقاش:
أيهما أخطر برأيك: تنفيذ Requirement بطريقة خاطئة، أم تنفيذ Requirement لم يكن مطلوبًا من الأساس؟

المنشور القادم #004 — Functional Requirements
وسنتحدث عن كيفية تحديد ما الذي يجب أن يفعله النظام.

م. طارق العمري
Software Engineer | Backend Developer

#SoftwareEngineering #Requirements #RequirementsEngineering #SoftwareDevelopment #SoftwareEngineer #SystemAnalysis #SystemDesign #BackendDevelopment #Programming #SoftwareArchitecture #هندسة_البرمجيات #تحليل_النظم #تطوير_البرمجيات #برمجة
#004 — Functional Requirements | المتطلبات الوظيفية
عندما نبدأ تحليل أي نظام، من أهم الأسئلة التي يجب أن نجيب عنها:
ماذا يجب أن يفعل النظام؟
هنا يأتي دور Functional Requirements.
المتطلبات الوظيفية تصف الوظائف والسلوكيات التي يجب أن يقدمها النظام لتحقيق احتياجات المستخدم والعمل.
في متجر إلكتروني مثلًا، تسجيل المستخدم، البحث عن المنتجات، إضافة منتج إلى السلة، إنشاء الطلب، الدفع، تتبع الطلب وإرسال إشعار التأكيد؛ كلها أمثلة على متطلبات وظيفية.
لكن معرفة الوظيفة وحدها لا تكفي. يجب أن يكون المتطلب واضحًا ومحددًا وقابلًا للتنفيذ والاختبار.
بدلًا من كتابة:
"يجب أن يحتوي النظام على بحث جيد."
يمكن أن نكتب:
"يجب أن يسمح النظام للمستخدم بالبحث عن المنتجات باستخدام اسم المنتج أو الفئة."
كلما قل الغموض، قلت مساحة التخمين أمام المطور، وأصبح التصميم والتنفيذ والاختبار أكثر دقة.
وعند كتابة Functional Requirement حاول دائمًا الإجابة عن أربعة أسئلة:
WHO? من يستخدم الوظيفة؟
WHAT? ماذا يجب أن يفعل النظام؟
WHEN? متى تحدث الوظيفة؟
RESULT? ما النتيجة المتوقعة؟
المتطلب الوظيفي ليس مجرد جملة نضعها في وثيقة؛ بل هو جزء من الأساس الذي يتحول لاحقًا إلى Design ثم Code ثم Test ثم Feature حقيقية يستخدمها العميل.
في هندسة البرمجيات، الهدف ليس أن نكتب ما يستطيع النظام فعله فقط، بل أن نحدد بدقة ما يحتاج المستخدم أن يفعله من خلال النظام.
المنشور القادم #005 — Non-Functional Requirements
سنتحدث فيه عن سؤال مختلف:
ليس ماذا يفعل النظام، بل كيف يجب أن يؤدي ذلك؟
م. طارق العمري
Software Engineer | Backend Developer
#SoftwareEngineering #FunctionalRequirements #Requirements #RequirementsEngineering #SystemAnalysis #SoftwareDevelopment #SoftwareEngineer #BackendDevelopment #SystemDesign #BusinessAnalysis #Programming #هندسة_البرمجيات #المتطلبات_الوظيفية #تحليل_النظم #تطوير_البرمجيات
وهنا تأتي أهمية Non-Functional Requirements — المتطلبات غير الوظيفية.
فالنظام لا يكفي أن "يعمل".
يجب أن يعمل بالجودة والأمان والأداء المناسبين لبيئة العمل.
أخطر جملة في المشروع: "هذه إضافة بسيطة"
في منتصف المشروع قد يقول العميل:
"باقي شيء بسيط جدًا…"
لكن هذه الإضافة البسيطة قد تحتاج تعديل قاعدة البيانات، وتغيير Business Logic، وإضافة صلاحيات، وتعديل API، وتحديث الواجهات والتقارير وإعادة الاختبار.
ولهذا يجب أن تكون المتطلبات موثقة قدر الإمكان، وأن يكون هناك اتفاق واضح حول Scope — نطاق المشروع.
لأن المتطلبات غير الواضحة تؤدي غالبًا إلى تعديلات مستمرة، والتعديلات تؤثر في الوقت والتكلفة وجودة المنتج.

عزيزي البش مهندس
في سوق العمل، قيمة مهندس البرمجيات لا تقاس فقط بمدى سرعته في كتابة الكود.
أحيانًا يكون أفضل قرار هندسي تتخذه هو ألا تبدأ البرمجة بعد.
استمع للعميل.
افهم المشكلة.
حدد أصحاب المصلحة.
ادرس طريقة العمل الحالية.
استخرج المتطلبات.
حلل الحالات الطبيعية والاستثنائية.
حدد Functional وNon-Functional Requirements.
تحقق من المتطلبات مع أصحاب المصلحة.
ثم ابدأ التصميم والتنفيذ.
لأن الكود الممتاز المبني على متطلبات خاطئة سيعطيك في النهاية نظامًا ممتازًا يحل المشكلة الخطأ.
وهنا تظهر واحدة من أهم مهارات مهندس البرمجيات في سوق العمل:

لا تبرمج ما يقوله العميل فقط… افهم ما يحتاجه فعلًا.

م. طارق العمري
Software Engineer | Backend Developer
#SoftwareEngineering #FunctionalRequirements #Requirements #RequirementsEngineering #SystemAnalysis #SoftwareDevelopment #SoftwareEngineer #BackendDevelopment #SystemDesign #BusinessAnalysis #Programming #هندسة_البرمجيات #المتطلبات_الوظيفية #تحليل_النظم #تطوير_البرمجيات