الأحد، 23 أغسطس 2026
Huzzah ! طريقة تجريبية جديدة للبرمجة باستخدام الذكاء الاصطناعي
إذا كنت مهندس برمجيات مثلي، فستكون الأشهر الأولى من عام ٢٠٢٦ رائعة. فجأةً، أصبحت برامج البرمجة الذكية متطورة لدرجة أننا لم نعد بحاجة لكتابة الأكواد يدويًا. لكن إن كنت مثلي، فستواجه بعد فترةٍ ما طريقًا مسدودًا. انتهت فترة الحماس الأولي، وتلاشى الشعور بالجدة. لم يعد هناك أي شعور بالرضا.الآن شهر أغسطس، وأشعر بإرهاق شديد. بصراحة، سئمتُ من كتابة نصوص طويلة باللغة الإنجليزية لوصف كل تغيير أريده في قاعدة بياناتي البرمجية. مع ذلك، لا أريد العودة إلى كتابة كل الأكواد يدويًا. كان هناك ملل حقيقي في هذه الممارسة، وأفضّل تجنّبها... لبقية حياتي.
ومع ذلك، أشعر أنني بحاجة إلى فهم أفضل وتحكّم أكبر في ما يفعله الكود الخاص بي. أريد أن أعرف أن برمجياتي عالية الجودة وموثوقة. أريد أن أشعر بالرضا عن نفسي كمتخصص. لذا أحاول إيجاد طريقة لتحقيق التوازن بين الأمرين.
مشكلتي مع برامج البرمجة الآلية تكمن في:
عدم وجود سجل موثوق لنوايا المستخدم. تُهمل التوجيهات، وقد يكون الكود مُولّدًا بواسطة الذكاء الاصطناعي أو لا. لقد فقدنا السلطة المركزية التي تُعبّر عما يريده المستخدم من الآلة، وأعتقد أنه من المهم التعامل مع هذه الحقيقة.
تُعدّ محادثات الذكاء الاصطناعي تعليماتٍ إلزامية، خطوة بخطوة، تصف التغييرات التي تُجرى على التطبيق، وليس التطبيق نفسه. هذا يعني أن التعليمات غالبًا ما تُكرّر، وبالتالي تستهلك موارد النظام، مرات عديدة خلال عملية التطوير. وهذا غير فعّال.
يوجد جزء كبير من اللغة الطبيعية لأسباب اجتماعية، وليس معلوماتية. الجملة العادية نادرة في المعلومات الحقيقية. الكتابة بهذه الطريقة، للآلة، مُرهقة.
لمعالجة هذه المشاكل، أقوم ببناء مُحرّر تجريبي. أُسمّيه "هوزّا"، وهو يُقدّم نموذجًا بديلًا للعمل مع نماذج اللغة.
مع برامج البرمجة الآلية، تكون التوجيهات (أ) طويلة، (ب) إلزامية، و(ج) مؤقتة. مع Huzzah، تكون التعليمات البرمجية (أ) شبه رمزية، (ب) تصريحية، و(ج) مستمرة.
سيكون الأمر أسهل إذا عرضتُها لك.
لماذا تُعدّ لغة Go لغة مثالية لهندسة البرمجيات المدعومة بالذكاء الاصطناعي؟
في هذا النموذج، تتغير أيضًا أهم العناصر في أدوات المطورين.
من الكتابة إلى المراجعة
تاريخيًا، كان المطورون يقيسون إنتاجية لغة البرمجة بمدى سهولة كتابتها. ولكن عندما يستطيع برنامج برمجة توليد مئات الأسطر من الشفرة الصحيحة نحويًا في ثوانٍ، لم يعد معدل كتابة الإنسان للشفرة ذا أهمية كبيرة. الأهم الآن هو مراجعة الكود والتحقق منه وصيانته بعد كتابته.
بمعنى آخر، يُصبح الذكاء الاصطناعي شريكًا أساسيًا في فريقك، وإن كان يتمتع ببعض الاستقلالية، إلا أنه يبقى شريكًا. الأهم هو كيفية تعاوننا كفريق.
لغة Go مُخصصة لهندسة البرمجيات.
في الواقع، كانت الاعتبارات المتعلقة بالتطوير الجماعي هي ما دفع روب بايك وروبرت غريسمر وكين تومسون إلى ابتكار لغة البرمجة Go في جوجل قبل أكثر من عشرين عامًا. فبينما أضافت لغات أخرى ميزات جديدة وسعت إلى توسيع طرق التعبير عن منطق البرنامج، ركزت Go على رؤية أوسع: تصميم اللغة لخدمة هندسة البرمجيات.
هندسة البرمجيات ليست هي البرمجة. فبينما تُعنى البرمجة بحل مشكلة ما عن طريق كتابة الكود وتشغيله، فإن هندسة البرمجيات هي عملية تعاون مع الآخرين لتصميم وتنفيذ نظام متين يتطور مع مرور الوقت. البرمجة جزء من هندسة البرمجيات، ولكنها ليست كل شيء.
يتطلب تصميم اللغات في خدمة هندسة البرمجيات ليس مجرد لغة، بل منصة متكاملة مزودة بأدوات تغطي دورة حياة تطوير البرمجيات بأكملها. يتطلب ذلك بساطة واضحة المعالم تُمكّن جميع فرق العمل من هيكلة وتنسيق واختبار أكوادهم بنفس الطريقة. كما يتطلب ضمانات توافق قوية لضمان استمرار عمل الكود الذي تكتبه اليوم بكفاءة عالية لعشر سنوات قادمة. ويتطلب أيضًا بيئة برمجية متكاملة، مع نظام عالمي لإدارة التبعيات قابل للتوسع مع فرق العمل. ويتطلب كل ذلك مراعاة اعتبارات أمنية قوية ومدروسة، وتوفير أدوات فعّالة في جميع جوانب النظام.
تشكل هذه العناصر مجتمعةً أساسًا لعمل جماعي قابل للتوسع على المدى الطويل، مما يُمكّننا من بناء أنظمة تظل قابلة للصيانة لسنوات عديدة بعد رحيل مطورها الأصلي. واليوم، مع دخول الذكاء الاصطناعي إلى هذا المجال، تزداد أهمية هذا الأساس أكثر من أي وقت مضى.
بإمكان HTML فعل ذلك
تحديث 2026-08-20: أنشأتُ هذه الصفحة في الأصل خلال ساعة واحدة في يوم HTML 2026 للكتابة والاحتفاء بلغة HTML، ولكنني أجريتُ بعض التعديلات عليها لاحقًا لتوضيح وتسليط الضوء على مواطن القصور في تطبيق المتصفحات لبعض هذه الميزات، أو عدم تلبيتها لاحتياجات الوصول. لذا، جرّبها، ولكن اجعلها في متناول الجميع قدر الإمكان!
الخميس، 6 أغسطس 2026
خاصية القص الشبح - أو لماذا خاصية القص واللصق معطلة في كل مكان
إن خاصية القص واللصق معيبة في جميع برامج معالجة النصوص، ومحررات النصوص، ومساحات النصوص في المتصفحات التي استخدمتها من قبل. وهذا حالها منذ عقود.
ولكي نكون على دراية بالأمر: القص واللصق هما عمليتان متكاملتان: القص، وهو إزالة النص من المستند ووضعه في الحافظة، واللصق، وهو إدراج هذا النص في موضع جديد من المستند.
كيف يمكن أن تكون معيبة وهي منتشرة بهذا الشكل؟ دعني أعدد لك الأسباب!
1. لا يمكن التراجع عن القص
أول عيوب القص واللصق هو أنه لا يمكن التراجع عن عملية القص بشكل كامل. التراجع (Ctrl+Z أو Command+Z) بعد القص يعيد النص إلى حالته قبل القص في المستند، لكن التغييرات التي أُجريت على الحافظة تبقى. إذا ندمت على استبدال محتويات الحافظة، فقد ضاعت إلى الأبد. حتى مع استخدام مدير الحافظة، فإن التراجع لا يُلغي تمامًا كل ما تم تنفيذه بضغطة زر واحدة.
2. إعادة تنسيق النص بعد القص
العيب الثاني هو أن القص يُعيد تنسيق المستند. عادةً ما يكون القص واللصق لنقل النصوص، ولكن بمجرد القص، يُعاد تنسيق النص، مما يُجبرني على تحديد الموضع الذي أرغب في اللصق فيه من جديد. قد يبدو هذا عبئًا ذهنيًا بسيطًا، ولكنه غير ضروري.
3. القص واللصق ليسا عمليتين منفصلتين
العيب الثالث والأخير هو أنه على الرغم من أن القص واللصق يُفترض أنهما عملية نقل نص من مكان إلى آخر، إلا أنه لا يمكن التراجع عنهما كخطوة واحدة (بغض النظر عن مشكلة الحافظة حاليًا). يؤدي التراجع عن اللصق إلى إزالة النص المُضاف حديثًا، ولكنه يتطلب تراجعًا ثانيًا لاستعادة النص بالكامل - بافتراض عدم وجود أي تعديلات بين القص واللصق. في حال وجود تعديلات وسيطة، مثل إنشاء فقرة جديدة، فيجب التراجع عنها قبل الوصول إلى القص الأصلي.
تقديم ميزة القص الخفي
أضفتُ آليةً إلى برنامج إسماعيل تُصلح هذه العيوب. والخبر السار هو أنها لا تتطلب إعادة تدريب الذاكرة العضلية أو أي شيء إضافي عما تفعله بالفعل.
أُطلق عليها اسم "القص الخفي"، وتعمل كالتالي: الضغط على Ctrl+X يُخفي النص المُحدد ويجعله غير قابل للتحرير - لا يمكنك النقر على النص المقصوص، ويقفز المؤشر فوقه، ولكنه يبقى موجودًا في المستند. لا يتم وضع أي شيء في الحافظة في هذه المرحلة، ولا يوجد ما يُمكن التراجع عنه. إذا قررتَ عدم اللصق، فإن الضغط على مفتاح الهروب (Escape) يُعيد النص إلى حالته القابلة للتحرير.
اللصق (عادةً Ctrl+V أو Command+V) يُزيل النص المُحدد من موقعه الأصلي ويضعه عند المؤشر، مما يُنشئ عملية نقل واحدة دون استخدام الحافظة. بعبارة أخرى: يُمكن عكس العملية تمامًا بضغطة زر واحدة دون حذف الحافظة.
إليك مثال عملي:
بعض الأمور التي تعلمتها حول تشغيل SQLi
لذا، إليكم بعض الأمور البسيطة التي تعلمتها حول تشغيل 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) هي نوع من القوائم المتصلة التي تكون فيها روابط الربط مُضمَّنةً داخل البنية نفسها التي يجر...
-
في إحدى الأمسيات المتأخرة، وأثناء محادثة على ديسكورد، ابتكرتُ مصطلح "التكسير الدوباميني" لوصف ظاهرة باتت منتشرة بشكل متزايد في الث...
-
الإعداد الأساسي سواءً أكان المرء يتعامل مع علم الأحياء، أو الاقتصاد، أو السياسة، أو غيرها من المجالات، فمن الشائع مواجهة مواقف يمكن نمذجتها ...
-
الشبكة الافتراضية الخاصة (VPN) هي خدمة أمان عبر الإنترنت تُنشئ "نفقًا" مُشفّرًا لبياناتك على الإنترنت. تُخفي عنوان IP الحقيقي ال...

