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

يعد مبدأ YAGNI (You Aren't Gonna Need It)
من المبادئ الأساسية في هندسة البرمجيات، ويعني: لا تضف ميزة أو وظيفة أو تعقيدًا إلى النظام قبل أن تكون هناك حاجة حقيقية إليها.

يقع الكثير من المطورين في فخ التفكير بالمستقبل، فيبدؤون ببناء خصائص "قد يحتاجها النظام لاحقًا". لكن في الواقع، كثير من هذه الخصائص لا تُستخدم أبدًا، فتتحول إلى عبء يزيد من تعقيد المشروع ويستهلك الوقت والجهد دون فائدة.

لماذا يعد YAGNI مهمًا؟

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

كيف نطبق YAGNI؟

يمكن تطبيق هذا المبدأ من خلال:

- تنفيذ المتطلبات الحالية فقط.
- عدم بناء ميزات مستقبلية لم يطلبها العميل.
- تجنب إنشاء طبقات أو مكونات لا يوجد استخدام فعلي لها.
- تطوير النظام تدريجيًا مع ظهور الاحتياجات الجديدة.
- مراجعة كل ميزة قبل تنفيذها وسؤال: "هل نحتاجها الآن؟"

مثال بسيط

لنفترض أنك تطور نظامًا لإدارة متجر إلكتروني، والعميل طلب تسجيل الدخول بالبريد الإلكتروني فقط.

بدلًا من بناء دعم لتسجيل الدخول عبر Google وFacebook وApple منذ البداية، قم بتنفيذ المطلوب فقط. وإذا طلب العميل هذه الخيارات مستقبلًا، يمكن إضافتها في الوقت المناسب دون تحميل المشروع تعقيدًا غير ضروري.

أخطاء شائعة

- برمجة ميزات "احتياطية" قد لا تُستخدم.
- تصميم قاعدة بيانات معقدة لسيناريوهات غير موجودة.
- إنشاء واجهات أو خدمات لا يطلبها المشروع.
- إضاعة الوقت في حل مشكلات لم تحدث بعد.

العلاقة بين YAGNI وKISS وDRY

يتكامل YAGNI مع مبدأ KISS الذي يدعو إلى البساطة، ومع DRY الذي يمنع تكرار الكود. فبناء نظام بسيط، خالٍ من التكرار، ويحتوي فقط على ما يحتاجه المشروع، ينتج عنه برنامج أكثر جودة وأسهل في التطوير والصيانة.

الخلاصة

المطور المحترف لا يقيس نجاحه بعدد الميزات التي يضيفها، بل بقدرته على بناء نظام يلبي الاحتياجات الحالية بكفاءة، دون تعقيد أو وظائف غير ضرورية.

تذكر دائمًا: لا تكتب كودًا لمشكلة لم تظهر بعد، ولا تضف ميزة لم يطلبها أحد. فعندما تظهر الحاجة الحقيقية، سيكون الوقت المناسب لبنائها.
المهندس ✍️ طارق العُمري
1
Separation of Concerns (SoC):
افصل المسؤوليات لتحصل على نظام أكثر تنظيمًا

يعد مبدأ Separation of Concerns (SoC) أو فصل المسؤوليات من المبادئ الأساسية في هندسة البرمجيات، ويهدف إلى تقسيم النظام إلى أجزاء مستقلة، بحيث يكون كل جزء مسؤولًا عن مهمة أو اهتمام (Concern) محدد.

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

لماذا يعد SoC مهمًا؟

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

كيف نطبق SoC؟

يمكن تطبيق هذا المبدأ من خلال:

- فصل واجهة المستخدم (Presentation Layer) عن منطق الأعمال (Business Logic).
- عزل الوصول إلى البيانات داخل طبقة مستقلة (Data Access Layer أو Repository).
- تقسيم المشروع إلى Modules أو Packages أو Services لكل منها مسؤولية واضحة.
- استخدام الأنماط المعمارية مثل MVC أو MVVM أو Clean Architecture أو Hexagonal Architecture لتحقيق فصل واضح للمسؤوليات.

مثال بسيط

في نظام لإدارة الطلبات، بدلاً من أن تحتوي صفحة الواجهة على كود التحقق من الطلب، وحساب السعر، والتواصل مع قاعدة البيانات في ملف واحد، يتم توزيع المسؤوليات كالتالي:

- واجهة المستخدم: تعرض البيانات وتستقبل مدخلات المستخدم.
- طبقة الأعمال: تتحقق من صحة الطلب وتحسب السعر وتطبق قواعد العمل.
- طبقة البيانات: تتعامل مع قاعدة البيانات لحفظ الطلب أو استرجاعه.

بهذا يصبح تعديل أي جزء ممكنًا دون التأثير على بقية أجزاء النظام.

أخطاء شائعة

- وضع جميع الوظائف داخل Controller أو ملف واحد.
- كتابة استعلامات قاعدة البيانات مباشرة داخل واجهة المستخدم.
- خلط منطق الأعمال مع كود العرض.
- إنشاء Classes تقوم بعدة مسؤوليات مختلفة في الوقت نفسه.

العلاقة بين SoC وSOLID

يتكامل Separation of Concerns مع مبادئ SOLID، وخاصة مبدأ Single Responsibility Principle (SRP)، حيث يدعو كلاهما إلى أن يكون لكل مكون مسؤولية واضحة ومحددة. كما يدعم بناء أنظمة تعتمد على Clean Architecture وDomain-Driven Design، مما يجعلها أكثر قابلية للتوسع والصيانة.

الخلاصة

كلما كانت مسؤوليات النظام مفصولة بوضوح، أصبح الكود أسهل في الفهم، وأكثر مرونة في التطوير، وأقل عرضة للأخطاء.
م.طارق العمري
الفترة القادمة ضروري تكتب بالسيفي CV حقك انك قادر تشتغل بعد ما يكمل ال Tokens حق الذكاء الاصطناعي
وتقدر تعدل على الكود من نفسك
😂😂
High Cohesion:
اجعل كل مكون يؤدي مهمة واحدة بترابط عالٍ

يعد مبدأ High Cohesion أو الترابط العالي من أهم مبادئ تصميم البرمجيات، ويقصد به أن تكون جميع الوظائف والبيانات داخل الصنف (Class)، أو الوحدة (Module)، أو المكون (Component) مرتبطة بهدف واحد ومسؤولية محددة.

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

لماذا يعد High Cohesion مهمًا؟

يجعل الكود أكثر تنظيمًا ووضوحًا.

يسهل فهم المكونات من قبل المطورين.

يقلل من احتمالية ظهور الأخطاء.

يسهل اختبار كل مكون بشكل مستقل.

يزيد من قابلية إعادة الاستخدام.

يجعل تعديل النظام أو تطويره أكثر أمانًا.


كيف نطبق High Cohesion؟

يمكن تطبيق هذا المبدأ من خلال:

منح كل Class أو Module مسؤولية واحدة واضحة.

تجميع الوظائف المرتبطة معًا داخل المكون نفسه.

نقل الوظائف غير المرتبطة إلى مكونات مستقلة.

تقسيم الملفات أو الأصناف الكبيرة إلى أجزاء أصغر عند الحاجة.

مراجعة أي مكون يحتوي على عدد كبير من المسؤوليات وإعادة تصميمه.


مثال بسيط

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

بدلاً من ذلك يتم تقسيم المسؤوليات إلى خدمات مستقلة مثل:

UserService لإدارة بيانات المستخدمين.

EmailService لإرسال رسائل البريد الإلكتروني.

ReportService لإنشاء التقارير.

PaymentService لمعالجة عمليات الدفع.


بهذا يصبح كل مكون متخصصًا في مهمة واحدة، مما يزيد من ترابطه الداخلي.

أخطاء شائعة

إنشاء Classes ضخمة (God Objects) تحتوي على عشرات الوظائف المختلفة.

دمج منطق الأعمال مع الوصول إلى قاعدة البيانات.

وضع عمليات التسجيل، والإشعارات، والتقارير، والمدفوعات داخل خدمة واحدة.

إضافة وظائف جديدة إلى نفس المكون لمجرد سهولة الوصول إليه.


العلاقة بين High Cohesion وLow Coupling

يتكامل High Cohesion مع مبدأ Low Coupling. فالترابط العالي يعني أن كل مكون يركز على مسؤوليته، بينما الترابط المنخفض يعني أن المكونات تعتمد على بعضها بأقل قدر ممكن. وعند الجمع بينهما نحصل على نظام أكثر مرونة، وأسهل في الصيانة، وأكثر قابلية للتوسع.

الخلاصة

التصميم الجيد لا يعتمد على عدد الملفات أو الأصناف، بل على مدى وضوح مسؤولية كل مكون. فعندما يكون لكل جزء هدف واحد ومحدد، يصبح النظام أكثر استقرارًا وأسهل في التطوير مع مرور الوقت.

تذكر دائمًا: إذا وجدت أن مكونًا واحدًا يقوم بعدة مهام مختلفة، فغالبًا حان الوقت لتقسيمه. فالمكونات ذات High Cohesion هي الأساس لبناء برمجيات احترافية وقابلة للصيانة.
المهندس ✍️ طارق العُمري
ماذا لو أعدنا تعريف نظام التشغيل نفسه؟

خطرت لي فكرة مختلفة...

بدلًا من تطوير وكيل ذكاء اصطناعي جديد، لماذا لا نحول نظام التشغيل نفسه إلى شركة برمجيات مستقلة؟

الفكرة تبدأ من Ubuntu مفتوح المصدر، لكن ليس باعتباره مجرد نظام تشغيل، بل كمنصة تستضيف هيكلًا هندسيًا متكاملًا يقوده AI CEO.

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

تخيل وجود:

- AI CEO لإدارة المشروع واتخاذ القرارات.
- CTO Agent للتخطيط المعماري.
- Product Manager Agent لتحليل المتطلبات وكتابة SRS.
- Backend Team Agents.
- Frontend Team Agents.
- Mobile Team Agents.
- DevOps Agents.
- QA & Testing Agents.
- Security Agents.
- Documentation Agents.

كل Agent يمتلك دورًا واضحًا ومسؤوليات محددة، بينما يتولى المدير التنفيذي توزيع المهام، متابعة التنفيذ، مراجعة الجودة، إدارة Git، تشغيل الاختبارات، واتخاذ قرار دمج الكود والإصدار.

الهدف ليس بناء Copilot جديد، ولا Coding Agent آخر...

بل إنشاء AI Software Company Operating System.

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

ربما يبدو الأمر طموحًا اليوم، لكن قبل سنوات كان وجود فريق من المطورين الافتراضيين يعملون بالتوازي مجرد خيال أيضًا.

أعتقد أن مستقبل هندسة البرمجيات لن يكون مجرد "مساعد يكتب الكود"، بل أنظمة تشغيل تدير فرقًا كاملة من الوكلاء الذكيين وتبني البرمجيات بصورة ذاتية.

هذه مجرد بداية لفكرة أعمل على استكشافها... وربما تكون خطوة نحو الجيل القادم من بيئات التطوير الذكية.
المهندس ✍️ طارق العُمري
Low Coupling:
قلّل الاعتماد بين المكونات لبناء نظام مرن

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

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

لماذا يعد Low Coupling مهمًا؟

- يزيد من مرونة النظام وقابليته للتوسع.
- يسهل صيانة الكود وإجراء التعديلات.
- يقلل من تأثير التغييرات على بقية أجزاء النظام.
- يسهل اختبار كل مكون بشكل مستقل.
- يسمح بإعادة استخدام المكونات في مشاريع أخرى.
- يدعم العمل الجماعي بين فرق التطوير.

كيف نطبق Low Coupling؟

يمكن تطبيق هذا المبدأ من خلال:

- الاعتماد على Interfaces بدلاً من الأصناف (Classes) الملموسة.
- استخدام Dependency Injection (DI) لإدارة التبعيات.
- فصل منطق الأعمال عن طبقات العرض والبيانات.
- التواصل بين المكونات عبر واجهات واضحة وعقود (Contracts).
- تجنب الوصول المباشر إلى تفاصيل تنفيذ المكونات الأخرى.

مثال بسيط

لنفترض أن لديك نظامًا يرسل إشعارات للمستخدمين.

بدلاً من أن يعتمد OrderService مباشرة على EmailService، يمكنه الاعتماد على واجهة مثل NotificationService.

بهذه الطريقة، يمكنك لاحقًا استبدال خدمة البريد الإلكتروني بخدمة الرسائل النصية (SMS) أو الإشعارات الفورية (Push Notifications) دون تعديل منطق معالجة الطلبات.

أخطاء شائعة

- ربط المكونات ببعضها بشكل مباشر.
- إنشاء كائنات (Objects) داخل المكون بدلًا من حقنها (Injection).
- الاعتماد على تفاصيل التنفيذ بدلًا من الواجهات.
- جعل التعديل في مكون واحد يتطلب تعديل عدة مكونات أخرى.

العلاقة بين Low Coupling وHigh Cohesion

يتكامل Low Coupling مع مبدأ High Cohesion لتحقيق تصميم برمجي قوي. فبينما يركز High Cohesion على أن يكون لكل مكون مسؤولية واضحة ومحددة، يركز Low Coupling على تقليل الاعتماد بين هذه المكونات. والنتيجة هي نظام أكثر تنظيمًا، وأسهل في الصيانة، وأكثر قابلية للتطوير.

العلاقة مع SOLID

يرتبط Low Coupling ارتباطًا وثيقًا بعدة مبادئ من SOLID، خاصة:

- Dependency Inversion Principle (DIP): الاعتماد على التجريدات بدلًا من التفاصيل.
- Interface Segregation Principle (ISP): استخدام واجهات صغيرة ومتخصصة لتقليل التبعيات غير الضرورية.

الخلاصة

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

تذكر دائمًا: صمم مكوناتك بحيث يمكن تغيير أحدها أو استبداله دون أن ينهار بقية النظام، فهذه هي الفكرة الجوهرية وراء مبدأ Low Coupling.
المهندس ✍️ طارق العُمري
1
كتاب
في السودان لطلاب الثانوية
في تقدم ماشاء الله 😍
بناء الأنظمة الكبيرة من خدمات صغيرة مستقلة
Microservices

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

بدلًا من بناء تطبيق ضخم يحتوي جميع الوظائف في مشروع واحد (Monolithic Application)، يتم تقسيم النظام إلى خدمات منفصلة تتواصل فيما بينها عبر واجهات برمجية (APIs) أو بروتوكولات مثل HTTP أو gRPC أو من خلال أنظمة الرسائل (Message Brokers).

لماذا تعد Microservices مهمة؟

- تسهل تطوير الأنظمة الكبيرة والمعقدة.
- تسمح لكل خدمة بالتطوير والنشر بشكل مستقل.
- تزيد من قابلية النظام للتوسع (Scalability).
- تقلل من تأثير الأعطال على بقية أجزاء النظام.
- تمكن فرق التطوير من العمل بالتوازي على خدمات مختلفة.
- تسمح باستخدام تقنيات ولغات برمجة مختلفة لكل خدمة عند الحاجة.

كيف تعمل Microservices؟

يتم تقسيم النظام إلى خدمات مستقلة، مثل:

- User Service: إدارة المستخدمين والمصادقة.
- Product Service: إدارة المنتجات.
- Order Service: معالجة الطلبات.
- Payment Service: إدارة عمليات الدفع.
- Notification Service: إرسال البريد الإلكتروني أو الرسائل النصية أو الإشعارات.

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

مثال بسيط

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

مزايا Microservices

- سهولة التوسع لكل خدمة بشكل مستقل.
- سرعة نشر التحديثات دون التأثير على النظام بالكامل.
- تحسين الاعتمادية (Reliability) واستمرارية الخدمة.
- تسهيل إعادة استخدام الخدمات في مشاريع أخرى.
- دعم أفضل لبيئات الحوسبة السحابية (Cloud Computing) والحاويات مثل Docker وKubernetes.

التحديات

رغم مزاياها الكبيرة، فإن Microservices ليست الحل المناسب لكل مشروع، ومن أبرز تحدياتها:

- زيادة تعقيد البنية المعمارية.
- إدارة الاتصال بين الخدمات.
- التعامل مع البيانات الموزعة واتساقها.
- صعوبة تتبع الأخطاء عبر عدة خدمات.
- الحاجة إلى أدوات متقدمة للمراقبة والتسجيل وإدارة النشر.

متى نستخدم Microservices؟

تكون مناسبة عندما:

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

أما في المشاريع الصغيرة أو الناشئة، فقد تكون Monolithic Architecture خيارًا أفضل لأنها أبسط وأقل تكلفة في الإدارة.

العلاقة مع مبادئ التصميم

تعتمد Microservices على العديد من مبادئ هندسة البرمجيات، مثل:

- Separation of Concerns (SoC): فصل كل مجال أعمال في خدمة مستقلة.
- High Cohesion: كل خدمة تركز على مسؤولية واحدة.
- Low Coupling: تقليل الاعتماد المباشر بين الخدمات.
- Single Responsibility Principle (SRP): لكل خدمة مسؤولية واضحة ومحددة.

الخلاصة

تساعد Microservices على بناء أنظمة مرنة وقابلة للتوسع، لكنها تتطلب تخطيطًا جيدًا وبنية تحتية قوية لإدارتها. لذلك، لا ينبغي اعتمادها لمجرد أنها شائعة، بل عندما تكون متطلبات المشروع وحجمه تستدعي هذا الأسلوب المعماري.

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

المهندس ✍️ طارق العُمري
كل واحد يدخل يسب لهم لا ذمتي 🤣

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

رابط الاستبيان :
https://forms.gle/SizCs44R62iwQ8cV7

#استبيان_خدمة_يمن_فورجي
#الاتصالات_اليمنية
#ليمن_متصل
قصة تطور لغات البرمجة

في يومٍ من الأيام، كان الحاسوب لا يفهم سوى لغة واحدة فقط... لغة الأصفار والآحاد.

كان المبرمج يجلس لساعات طويلة يكتب:

01010110 00110010 11001010...

وكان أي خطأ بسيط يعني أن البرنامج لن يعمل.

ثم جاء من قال:

«"لماذا لا نعطي هذه الأرقام أسماء يسهل تذكرها؟"»

فولدت لغة التجميع (Assembly)، وأصبح المبرمج يكتب:

MOV AX, 5
ADD AX, 3

وأصبح الأمر أسهل، لكن ما زال قريبًا جدًا من لغة الحاسوب.

مرت السنوات، وظهر سؤال جديد:

«"لماذا لا نكتب بلغة أقرب إلى لغة الإنسان؟"»

فولدت اللغات عالية المستوى مثل C وJava وPython، وأصبح بإمكان المبرمج أن يكتب:

total = price * quantity

ويترك للمترجم مهمة تحويلها إلى لغة الآلة.

لكن رحلة التطور لم تتوقف.

ظهر الذكاء الاصطناعي، وقال للمبرمج:

«"لا تكتب لي الكود... فقط أخبرني بما تريد."»

فأصبح بإمكانك أن تقول:

«"أنشئ نظامًا لإدارة مدرسة يحتوي على الطلاب والمعلمين والدرجات ولوحة تحكم."»

فيقوم الذكاء الاصطناعي بتحليل الفكرة، وتصميم قاعدة البيانات، وبناء الواجهة، وكتابة الـ Backend والـ APIs والاختبارات، ثم يترجم كل ذلك حتى يصل في النهاية إلى لغة الآلة.

ثم جاء التطور الأكبر...

لم يعد الإنسان بحاجة حتى إلى الكتابة.

أصبح بإمكانه أن يتحدث فقط.

فيقول:

«"أنشئ صفحة تسجيل دخول، واجعل التصميم حديثًا، وأضف تسجيل الدخول بحساب Google، واربطها بقاعدة بيانات PostgreSQL."»

فيستمع الحاسوب إلى الصوت باستخدام Speech-to-Text، ثم يحول الكلام إلى نص، ويفهم المعنى باستخدام نماذج الذكاء الاصطناعي، ويخطط للنظام، ويكتب الكود، ويختبره، ثم يشغله.

وهكذا أصبحت رحلة البرمجة:

- 0 و1
- ثم Assembly
- ثم لغات عالية المستوى
- ثم البرمجة الوصفية
- ثم البرمجة باللغة الطبيعية
- وأخيرًا... البرمجة بالصوت.

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

المهندس ✍️ طارق العُمري
يسعدني أنني أكملت تسجيلي في مؤتمر RCOY MENA 2026 🌍

المؤتمر الإقليمي للشباب حول المناخ في الشرق الأوسط وشمال أفريقيا، الذي تنظّمه فرص خضراء ومدد للتنمية ومنتدى الشباب العربي للعمل المناخي، في سلطنة عُمان.
بانتظار تجربة ملهمة مع شباب من مختلف أنحاء المنطقة. سجّلوا أنتم أيضًا!
📅 آخر موعد للتقديم: 7 أغسطس 2026
🔗 https://forms.gle/uTrfmBtJgn56p2NL7
#ننتظرك_في_مسقط
#Rcoy_Mena_2026

Happy to share that I have completed my registration for RCOY MENA 2026 🌍

The Regional Conference of Youth on Climate for the Middle East and North Africa, organized by Foras Khadra, Madad for Development and the Arab Youth Summit for Climate Action, in the Sultanate of Oman.
Looking forward to an inspiring experience with young people from across the region. Register too!
📅 Deadline: 7 August 2026
🔗 https://forms.gle/uTrfmBtJgn56p2NL7
#ننتظرك_في_مسقط
#Rcoy_Mena_2026