الأحد، 23 أغسطس 2026

Huzzah ! طريقة تجريبية جديدة للبرمجة باستخدام الذكاء الاصطناعي



إذا كنت مهندس برمجيات مثلي، فستكون الأشهر الأولى من عام ٢٠٢٦ رائعة. فجأةً، أصبحت برامج البرمجة الذكية متطورة لدرجة أننا لم نعد بحاجة لكتابة الأكواد يدويًا. لكن إن كنت مثلي، فستواجه بعد فترةٍ ما طريقًا مسدودًا. انتهت فترة الحماس الأولي، وتلاشى الشعور بالجدة. لم يعد هناك أي شعور بالرضا.الآن شهر أغسطس، وأشعر بإرهاق شديد. بصراحة، سئمتُ من كتابة نصوص طويلة باللغة الإنجليزية لوصف كل تغيير أريده في قاعدة بياناتي البرمجية. مع ذلك، لا أريد العودة إلى كتابة كل الأكواد يدويًا. كان هناك ملل حقيقي في هذه الممارسة، وأفضّل تجنّبها... لبقية حياتي.
ومع ذلك، أشعر أنني بحاجة إلى فهم أفضل وتحكّم أكبر في ما يفعله الكود الخاص بي. أريد أن أعرف أن برمجياتي عالية الجودة وموثوقة. أريد أن أشعر بالرضا عن نفسي كمتخصص. لذا أحاول إيجاد طريقة لتحقيق التوازن بين الأمرين.
مشكلتي مع برامج البرمجة الآلية تكمن في:
عدم وجود سجل موثوق لنوايا المستخدم. تُهمل التوجيهات، وقد يكون الكود مُولّدًا بواسطة الذكاء الاصطناعي أو لا. لقد فقدنا السلطة المركزية التي تُعبّر عما يريده المستخدم من الآلة، وأعتقد أنه من المهم التعامل مع هذه الحقيقة.
تُعدّ محادثات الذكاء الاصطناعي تعليماتٍ إلزامية، خطوة بخطوة، تصف التغييرات التي تُجرى على التطبيق، وليس التطبيق نفسه. هذا يعني أن التعليمات غالبًا ما تُكرّر، وبالتالي تستهلك موارد النظام، مرات عديدة خلال عملية التطوير. وهذا غير فعّال.
يوجد جزء كبير من اللغة الطبيعية لأسباب اجتماعية، وليس معلوماتية. الجملة العادية نادرة في المعلومات الحقيقية. الكتابة بهذه الطريقة، للآلة، مُرهقة.
لمعالجة هذه المشاكل، أقوم ببناء مُحرّر تجريبي. أُسمّيه "هوزّا"، وهو يُقدّم نموذجًا بديلًا للعمل مع نماذج اللغة.
مع برامج البرمجة الآلية، تكون التوجيهات (أ) طويلة، (ب) إلزامية، و(ج) مؤقتة. مع Huzzah، تكون التعليمات البرمجية (أ) شبه رمزية، (ب) تصريحية، و(ج) مستمرة.
سيكون الأمر أسهل إذا عرضتُها لك.

لماذا تُعدّ لغة Go لغة مثالية لهندسة البرمجيات المدعومة بالذكاء الاصطناعي؟



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

بإمكان HTML فعل ذلك



لقد استحوذت لغة HTML على أجزاء كبيرة مما كان حكرًا على JavaScript. تُدرج هذه الصفحة مجموعة من الوظائف الديناميكية التي يُمكننا الآن تحقيقها باستخدام HTML فقط.
تحديث 2026-08-20: أنشأتُ هذه الصفحة في الأصل خلال ساعة واحدة في يوم HTML 2026 للكتابة والاحتفاء بلغة HTML، ولكنني أجريتُ بعض التعديلات عليها لاحقًا لتوضيح وتسليط الضوء على مواطن القصور في تطبيق المتصفحات لبعض هذه الميزات، أو عدم تلبيتها لاحتياجات الوصول. لذا، جرّبها، ولكن اجعلها في متناول الجميع قدر الإمكان!

الخميس، 6 أغسطس 2026

خاصية القص الشبح - أو لماذا خاصية القص واللصق معطلة في كل مكان

هل هي عملية قص ولصق، مثل السمك والبطاطا المقلية؟
إن خاصية القص واللصق معيبة في جميع برامج معالجة النصوص، ومحررات النصوص، ومساحات النصوص في المتصفحات التي استخدمتها من قبل. وهذا حالها منذ عقود.
ولكي نكون على دراية بالأمر: القص واللصق هما عمليتان متكاملتان: القص، وهو إزالة النص من المستند ووضعه في الحافظة، واللصق، وهو إدراج هذا النص في موضع جديد من المستند.
كيف يمكن أن تكون معيبة وهي منتشرة بهذا الشكل؟ دعني أعدد لك الأسباب!
1. لا يمكن التراجع عن القص
أول عيوب القص واللصق هو أنه لا يمكن التراجع عن عملية القص بشكل كامل. التراجع (Ctrl+Z أو Command+Z) بعد القص يعيد النص إلى حالته قبل القص في المستند، لكن التغييرات التي أُجريت على الحافظة تبقى. إذا ندمت على استبدال محتويات الحافظة، فقد ضاعت إلى الأبد. حتى مع استخدام مدير الحافظة، فإن التراجع لا يُلغي تمامًا كل ما تم تنفيذه بضغطة زر واحدة.
2. إعادة تنسيق النص بعد القص
العيب الثاني هو أن القص يُعيد تنسيق المستند. عادةً ما يكون القص واللصق لنقل النصوص، ولكن بمجرد القص، يُعاد تنسيق النص، مما يُجبرني على تحديد الموضع الذي أرغب في اللصق فيه من جديد. قد يبدو هذا عبئًا ذهنيًا بسيطًا، ولكنه غير ضروري.
3. القص واللصق ليسا عمليتين منفصلتين
العيب الثالث والأخير هو أنه على الرغم من أن القص واللصق يُفترض أنهما عملية نقل نص من مكان إلى آخر، إلا أنه لا يمكن التراجع عنهما كخطوة واحدة (بغض النظر عن مشكلة الحافظة حاليًا). يؤدي التراجع عن اللصق إلى إزالة النص المُضاف حديثًا، ولكنه يتطلب تراجعًا ثانيًا لاستعادة النص بالكامل - بافتراض عدم وجود أي تعديلات بين القص واللصق. في حال وجود تعديلات وسيطة، مثل إنشاء فقرة جديدة، فيجب التراجع عنها قبل الوصول إلى القص الأصلي.
تقديم ميزة القص الخفي
أضفتُ آليةً إلى برنامج إسماعيل تُصلح هذه العيوب. والخبر السار هو أنها لا تتطلب إعادة تدريب الذاكرة العضلية أو أي شيء إضافي عما تفعله بالفعل.
أُطلق عليها اسم "القص الخفي"، وتعمل كالتالي: الضغط على Ctrl+X يُخفي النص المُحدد ويجعله غير قابل للتحرير - لا يمكنك النقر على النص المقصوص، ويقفز المؤشر فوقه، ولكنه يبقى موجودًا في المستند. لا يتم وضع أي شيء في الحافظة في هذه المرحلة، ولا يوجد ما يُمكن التراجع عنه. إذا قررتَ عدم اللصق، فإن الضغط على مفتاح الهروب (Escape) يُعيد النص إلى حالته القابلة للتحرير.
اللصق (عادةً Ctrl+V أو Command+V) يُزيل النص المُحدد من موقعه الأصلي ويضعه عند المؤشر، مما يُنشئ عملية نقل واحدة دون استخدام الحافظة. بعبارة أخرى: يُمكن عكس العملية تمامًا بضغطة زر واحدة دون حذف الحافظة.
إليك مثال عملي:

بعض الأمور التي تعلمتها حول تشغيل SQLi

مرحباً! أعمل حالياً على موقع Django، وقررت استخدام SQLite كقاعدة بيانات. عندما بدأتُ استخدام SQLite كقاعدة بيانات لموقع ويب، قرأتُ العديد من المقالات التي تُشير إلى أنه من الآمن تماماً استخدام SQLite في بيئة الإنتاج لموقع صغير، وأعتقد أن هذا صحيح تماماً، لكن ما لم أُدركه تماماً هو أن SQLite تبقى قاعدة بيانات، وقواعد البيانات معقدة، ولا أملك خبرة كبيرة في تشغيلها.
لذا، إليكم بعض الأمور البسيطة التي تعلمتها حول تشغيل SQLite. هذا هو الموقع الرابع الذي أستخدم فيه SQLite، وأعتقد أن هذا الموقع أصعب لأنني، بفضل قوة Django ORM، أحمّل قاعدة البيانات مهاماً أكثر مما كنتُ أقوم به سابقاً بدون Django.
بدأتُ بتفعيل وضع WAL كما هو مذكور في جميع المقالات، متمنياً أن تسير الأمور على ما يُرام.
يبدو أن أمر ANALYZE مهم. اليوم، كنتُ أُجري استعلامًا (باستخدام FTS5 من SQLite للبحث النصي الكامل) على جدول يحتوي على 4000 صف، واستغرق 5 ثوانٍ. بدا لي هذا غير منطقي: فالحواسيب سريعة!
اتضح أن ما كان عليّ فعله هو تشغيل أمر ANALYZE! فورًا، انخفض وقت تنفيذ الاستعلام من 5 ثوانٍ إلى حوالي 0.05 ثانية (أو رقم صغير جدًا لدرجة أنني لم أُعر الأمر اهتمامًا). ما زلتُ لا أعرف بالضبط ما الخطأ الذي حدث في خطة الاستعلام، لكنني أرجّح أنه كان خطأً تربيعيًا غير مقصود.
يُنشئ أمر ANALYZE "إحصائيات" (أظن أنها تتعلق بعدد الصفوف في كل جدول؟ وربما أشياء أخرى؟) حتى يتمكن مُخطط الاستعلام من اتخاذ خيارات أفضل.
ربما أتعلم يومًا ما قراءة خطة الاستعلام.

الكتابة اليدوية مفيدة لعقلك -

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

السبت، 1 أغسطس 2026

ماهو SIMID؟

 تقنية SIMD هي اختصار لـ Single Instruction, Multiple Data (تعليمات واحدة، بيانات متعددة). وهي نوع من بنية الحاسوب وتقنية معالجة تسمح لتعليمات وحدة المعالجة المركزية (CPU) بتنفيذ نفس العملية على نقاط بيانات متعددة في نفس الوقت. كيف تعمل تقنية SIMD؟ المعالجة العددية مقابل المعالجة المتجهة: في المعالجة العددية، يتم تشغيل حلقة لمعالجة جزء واحد من البيانات في كل مرة. أما في تقنية SIMD، فيتم تجميع قيم متعددة في سجل واحد عريض (متجه) وتطبيق العملية الحسابية عليها جميعًا في دورة ساعة واحدة. الكفاءة: تقلل تقنية SIMD من الحمل الزائد للحلقات وعدد التعليمات، مما يجعل البرامج تعمل بشكل أسرع بكثير دون الحاجة إلى أنوية أو خيوط معالجة إضافية. دعم الأجهزة: تتضمن معالجات الحواسيب والهواتف الحديثة امتدادات SIMD مدمجة مثل SSE/AVX من Intel أو Neon من ARM. الاستخدامات الشائعة: الرسومات والألعاب: معالجة البكسلات، والرؤوس ثلاثية الأبعاد، وعرض الفيديو. الوسائط والصوت: معالجة تدفقات الصوت وفلاتر الصور. العلوم والذكاء الاصطناعي: تشغيل نماذج التعلم الآلي، ومحاكاة الفيزياء، ومصفوفات الأعداد الضخمة.

المزيد


ويكيبيديا

القوائم المترابطة المتضمنة (Intrusive linked lists)

القوائم المتصلة المتداخلة (Intrusive linked lists) هي نوع من القوائم المتصلة التي تكون فيها روابط الربط مُضمَّنةً داخل البنية نفسها التي يجر...