Category: التطوير

دوال SIMD: وعد ومخاطر التوجيه المتجه التلقائي بواسطة المُجمِّع

2025-07-05
دوال SIMD: وعد ومخاطر التوجيه المتجه التلقائي بواسطة المُجمِّع

تتناول هذه المقالة تعقيدات دوال SIMD ودورها في التوجيه المتجه التلقائي بواسطة المُجمِّع. توفر دوال SIMD، القادرة على معالجة نقاط بيانات متعددة في وقت واحد، تحسينات كبيرة في الأداء. ومع ذلك، فإن دعم المُجمِّع لدوال SIMD غير منتظم، وقد يكون الكود المتجهي الناتج غير فعال بشكل مدهش. تُفصّل المقالة كيفية إعلان وتحديد دوال SIMD باستخدام توجيهات OpenMP وسمات خاصة بالمُجمِّع، مع تحليل تأثير أنواع المعلمات المختلفة (متغير، موحد، خطي) على كفاءة التوجيه المتجه. كما تتناول توفير تنفيذات متجهة مخصصة باستخدام تعليمات مُدمجة، ومعالجة دمج الدوال، والتنقل في خصائص المُجمِّع. على الرغم من أنها تعد بمكاسب في الأداء، إلا أن التطبيق العملي لدوال SIMD يمثل تحديات كبيرة.

هندسة البرمجيات: هل انتهى العصر الذهبي؟

2025-07-05
هندسة البرمجيات: هل انتهى العصر الذهبي؟

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

التطوير

البحث عن عمل باستخدام الذكاء الاصطناعي: التعامل مع التسريحات باستخدام نماذج اللغة الكبيرة

2025-07-05
البحث عن عمل باستخدام الذكاء الاصطناعي: التعامل مع التسريحات باستخدام نماذج اللغة الكبيرة

هل تواجه تسريحًا من العمل؟ تستكشف هذه المقالة استخدام أدوات الذكاء الاصطناعي القائمة على نماذج اللغة الكبيرة (LLM) مثل ChatGPT وCopilot لتخفيف العبء العاطفي والإدراكي لفقدان الوظيفة. يقدم الكاتب أمثلة على الاقتراحات لتخطيط المسار الوظيفي، وتحسين السيرة الذاتية، وتحسين ملف تعريف LinkedIn، والتواصل، والدعم العاطفي. على الرغم من أنها لا تحل محل الخبرة الشخصية، إلا أن هذه الأدوات يمكن أن تساعد في التنقل في عملية البحث عن عمل بكفاءة وهدوء أكبر، مما يوفر الوضوح في الأوقات الصعبة.

لينوس تورفالدز ومطور نظام الملفات bcachefs يفترقان

2025-07-05

رفض لينوس تورفالدز، مُدير نواة لينكس، طلب دمج (pull request) لنظام الملفات bcachefs في الإصدار 6.16-rc3، وألمح إلى عدم قبول المزيد من المساهمات من المشروع في نافذة الدمج 6.17. ينبع هذا من خلاف كبير خلال مراجعة الكود، حيث ذكر تورفالدز أن مطور bcachefs، كينت أوفرستريت، رفض قبول أي تساؤلات أو تعديلات على كوده. بعد محادثة خاصة، قرر الطرفان إنهاء تعاونهما.

التطوير نزاع تطوير

AirBending: جهاز تحكم MIDI سهل الاستخدام ومتوافق مع جميع الأجهزة

2025-07-05
AirBending: جهاز تحكم MIDI سهل الاستخدام ومتوافق مع جميع الأجهزة

يُعد AirBending جهاز تحكم MIDI ثوريًا يوفر توافقًا سلسًا مع برامج DAW الشهيرة مثل Logic Pro و Ableton Live، دون الحاجة إلى برامج تشغيل أو إضافات خاصة. يمكنك التحكم بسهولة في أجهزة توليد الصوت الخارجية، والأدوات البرمجية، ومعالجات التأثيرات. يسمح لك مدير الإعدادات المسبقة المتقدم بتخصيص تعيين الإيماءات إلى الموسيقى، مما يوفر مرونة للتحكم سواء بيد واحدة أو بيدين. وتشمل الميزات التحكم في قناة MIDI، واختيار المقياس الموسيقي، وتعيين CC المخصص للتحكم الدقيق في معلمات جهاز توليد الصوت مثل الفلاتر، والتأثيرات، والحجم، والضبط، مما يجعله مثاليًا للاستوديوهات والعروض الحية.

كيف تتوقع وحدات المعالجة المركزية الحديثة بكفاءة دورات مترجمي بايت كود

2025-07-05

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

المهمة الشاقة: إقناع فريق Kubernetes باعتماد تقنية الخوادم عديمة الصيانة

2025-07-05

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

نقل لينكس إلى أميغا: تعاون مجتمعي

2025-07-05

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

التطوير أميغا

Cursor تعتذر عن تغييرات أسعار خطة Pro وتقدم استرداد الأموال

2025-07-05
Cursor تعتذر عن تغييرات أسعار خطة Pro وتقدم استرداد الأموال

تعتذر شركة Cursor عن التغييرات الأخيرة في أسعار خطتها Pro، معترفة بأن سوء التواصل أدى إلى رسوم غير متوقعة للمستخدمين. سيتم تقديم استرداد كامل لأي استخدام غير متوقع بين 16 يونيو و4 يوليو. توفر خطة Pro الجديدة استخدامًا غير محدود لـ Tab والنماذج في الوضع التلقائي، و20 دولارًا أمريكيًا لاستخدام نماذج متطورة شهريًا (بأسعار API)، مع خيار شراء المزيد. يعكس هذا التغيير التكاليف المتغيرة للنماذج المختلفة عبر مهام متنوعة. تتعهد Cursor بتحسين التواصل بشأن تحديثات الأسعار المستقبلية، بما في ذلك الإخطار المسبق، والوثائق الأكثر وضوحًا، ودعم أفضل.

التطوير تغيير السعر

مكتبة عدسة هاسكل: أداة قوية للوصول إلى البيانات

2025-07-04

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

التطوير العدسة

محسّن استعلامات قاعدة البيانات: الفجوة بين المثالي والواقع

2025-07-04

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

التطوير

البطاريات مضمّنة مقابل بدون بطاريات: معضلة إطار العمل

2025-07-04

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

مولد رمز الاستجابة السريعة لرسائل تعطل نواة لينكس

2025-07-04
مولد رمز الاستجابة السريعة لرسائل تعطل نواة لينكس

تُعَدّ مسارات تعطل النواة من الصعب نسخها ولصقها في تقارير الأخطاء، مما يُعيق عملية تصحيح الأخطاء. يُحل مشروع `panic_report` هذه المشكلة من خلال دمج مُولد رمز الاستجابة السريعة المكتوب بلغة Rust مباشرةً في نواة لينكس. يسمح هذا للمستخدمين بمسح المعلومات المشفرة عن التعطل ومشاركتها بسهولة. وقد تم دمج المشروع، الذي يُعطي الأولوية لأمان الذاكرة بفضل Rust، في إصدار v6.12-rc1 من نواة لينكس، وسيتم تمكينه قريبًا في Arch Linux. تُبسط واجهة المستخدم الأمامية على الويب عملية فك تشفير رمز الاستجابة السريعة. المؤلف الرئيسي هو Jocelyn Falempe.

التطوير

إنشاء محاكي Game Boy بلغة OCaml: رحلة مطور

2025-07-04
إنشاء محاكي Game Boy بلغة OCaml: رحلة مطور

تتناول هذه المقالة تطوير CAMLBOY، وهو محاكي Game Boy مكتوب بلغة OCaml ويعمل على المتصفح. يفصل الكاتب بنية البرنامج، وتصميم الواجهة باستخدام الدوال الوظيفية وGADTs لتحسين قابلية الاختبار وإعادة الاستخدام، وتنفيذ مجموعة التعليمات، وتحسين الأداء، والترجمة إلى JavaScript. وشملت العملية استخدامًا مكثفًا لـ ROMs الاختبارية لاختبارات التكامل والبرمجة الاستكشافية. كما يشارك الكاتب رؤاه وانطباعاته حول بيئة OCaml وميزات اللغة، مع تسليط الضوء على نقاط القوة والضعف.

التطوير

وضع وكيل GitHub Copilot و MCP: أحدث أدواتي للتنمية الفعالة

2025-07-04
وضع وكيل GitHub Copilot و MCP: أحدث أدواتي للتنمية الفعالة

أنا دائمًا أبحث عن طرق لزيادة الكفاءة وتقديم رمز أفضل بشكل أسرع. في الآونة الأخيرة، قام وضع وكيل GitHub Copilot جنبًا إلى جنب مع بروتوكول سياق النموذج (MCP) بثورة في سير عمل التطوير الخاص بي. من خلال تخصيص استجابات الذكاء الاصطناعي لـ Copilot، قمت بإنشاء مساعدين ذكاء اصطناعي متخصصين لمراحل التطوير المختلفة، مثل أوضاع البحث والتخطيط. يسمح MCP للوكيل بالوصول إلى أدوات ومصادر بيانات خارجية، بما في ذلك محركات البحث، وأدوات أتمتة المتصفح، وواجهة برمجة تطبيقات GitHub. تتضمن هذه العملية مراحل البحث والتخطيط والتنفيذ والتصحيح والتحقق، باستخدام ملفات مطالبات مخصصة لضمان أن يفهم الذكاء الاصطناعي احتياجاتي ويولد رمزًا عالي الجودة، مما يحسن بشكل كبير من كفاءة تطويري وجودة الرمز.

التطوير تنمية فعالة

حل ذكي للمشكلات المتعارضة في تنفيذ Blanket في Rust

2025-07-04
حل ذكي للمشكلات المتعارضة في تنفيذ  Blanket في Rust

يُعرف نظام السمات في Rust بقدرته العالية، ولكنه صارم فيما يتعلق بتجنب الغموض في تنفيذ Blanket. واجه الكاتب هذه المشكلة أثناء بناء Joydb، حيث احتاج إلى دعم تنفيذين متنافيين لسمة Adapter: UnifiedAdapter و PartitionedAdapter. فشلت الطريقة المباشرة باستخدام تنفيذ Blanket. الحل، المفصل في هذا المنشور، يستخدم هياكل البيانات الوصفية (Unified و Partitioned)، وسمة مساعدة (BlanketAdapter)، ونوع مرتبط ضمن سمة Adapter. يسمح هذا ببراعة لكلا السلوكيات دون انتهاك قواعد الاتساق في Rust، مع الحفاظ على سهولة استخدام الرمز وقابلية صيانته.

arXivLabs: مشاريع تجريبية مع متعاونين من المجتمع

2025-07-04
arXivLabs: مشاريع تجريبية مع متعاونين من المجتمع

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

التطوير

تجاوز حاجز الأربعين عامًا: خوارزمية جديدة تحل "مشكلة رف الكتب"

2025-07-04

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

التطوير

Postcard: أداة مفتوحة المصدر لموقع الويب الشخصي ونشرة البريد الإلكتروني

2025-07-04
Postcard: أداة مفتوحة المصدر لموقع الويب الشخصي ونشرة البريد الإلكتروني

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

القيود الغريبة لـ errno(3) في لينكس

2025-07-04

تكشف صفحة دليل لينكس الخاصة بـ errno(3) عن قيد غريب: يمكن تعديل errno حتى في حالة نجاح دعوات الدالة، ولا يتم تعيينه أبدًا على صفر من قبل أي دعوة نظام أو دالة مكتبة. ينبع هذا من تصميم يونكس التقليدي، حيث عادةً ما تُعيد دعوات النظام errno فقط في حالة الفشل، تاركة إياه دون تغيير في حالة النجاح. قد تقوم دوال مكتبة C بإجراء العديد من دعوات النظام، وقد تفشل بعض منها دون التأثير على نجاح دالة المكتبة بشكل عام، تاركة errno بقيمة الفشل. ورثت ANSI C و POSIX هذا السلوك، مما يتطلب أن يكون errno ذا معنى فقط عندما تفشل دالة وتحدد وثائقها تعيين errno.

التطوير

التخزين المؤقت: تجريد، وليس تحسينًا

2025-07-04
التخزين المؤقت: تجريد، وليس تحسينًا

الحكمة التقليدية تقول إن التخزين المؤقت يسرع البرمجيات. يجادل الكاتب بأن هذا جزء فقط من القصة. بعد العمل مع تحريك البيانات بين تخزين الكائنات والقرص والذاكرة، يفترض الكاتب أن الدور الأكثر أهمية للتخزين المؤقت هو تبسيط البرمجيات. تستكشف المقالة قيود خوارزميات التخزين المؤقت الجاهزة (LRU، LFU، إلخ) وتقترح أن التخزين المؤقت يعمل كمستوى تجريد أكثر، حيث يخفي تفاصيل التخزين الأساسية، ويحرر المبرمجين من القلق بشأن موقع طبقة البيانات. تُجسد آليات التخزين المؤقت في قواعد البيانات وأنظمة التشغيل هذه التجريد. على الرغم من أن التخزين المؤقت قد يواجه مشكلات، مثل سوء استخدام ذاكرة التخزين المؤقت للصفحات في نظام التشغيل و fsync، إلا أن هذا لا يعني التخلي عن التخزين المؤقت، بل فهمه واستخدامه بشكل أفضل.

التطوير

Pennybase: نظام BaaS بسيط بلغة Go بأقل من 1000 سطر

2025-07-04
Pennybase: نظام BaaS بسيط بلغة Go بأقل من 1000 سطر

Pennybase هو حل خفيف الوزن لخدمة الخلفية كخدمة (BaaS) تم تنفيذه في أقل من 1000 سطر من رمز Go، ويوفر بديلاً مبسطًا لـ Firebase و Supabase و Pocketbase. يعتمد فقط على مكتبة Go القياسية، ولا يتطلب أي تبعيات خارجية. تشمل الميزات الأساسية تخزين الملفات (CSV مُحدث بالنسخ)، وواجهة برمجة تطبيقات REST (استجابات JSON)، والتحقق من الهوية باستخدام ملفات تعريف الارتباط للجلسة و Basic Auth، وأذونات RBAC و القائمة على الملكية، والتحديثات في الوقت الفعلي عبر SSE، والتحقق من صحة المخطط، وعرض نماذج Go. يتم تخزين البيانات في ملفات CSV قابلة للقراءة من قبل الإنسان، مع تحديثات تُنشئ إصدارات جديدة من السجلات. يسمح فهرس ذكي في الذاكرة بالبحث والتحديثات السريعة. يستخدم التحكم في الأذونات نموذج RBAC بسيط، والوظائف المخصصة ممكنة من خلال وظائف hook.

التطوير خلفية بسيطة

قيود تطبيق اقتراحات الكود على جيثب

2025-07-04
قيود تطبيق اقتراحات الكود على جيثب

يوجد العديد من القيود على تطبيق اقتراحات الكود بشكل جماعي أثناء مراجعة الكود على جيثب. وتشمل هذه القيود: الاقتراحات غير الصالحة (بدون تغييرات في الكود)، طلبات السحب المغلقة، عرض مجموعة فرعية من التغييرات، اقتراح واحد فقط لكل سطر في دفعة واحدة، عدم القدرة على تطبيق الاقتراحات على الأسطر المحذوفة، الاقتراحات التي تم تطبيقها بالفعل أو تم وضع علامة عليها كـ "تم حلها"، الاقتراحات من المراجعات المعلقة، الاقتراحات في التعليقات متعددة الأسطر، عدم القدرة على التطبيق أثناء انتظار طلب السحب للدمج، وخطأ غير محدد "لا يمكن تطبيق الاقتراح الآن".

التطوير

تشغيل وكلاء الذكاء الاصطناعي مباشرةً في متصفحك باستخدام Wasm-agents

2025-07-04
تشغيل وكلاء الذكاء الاصطناعي مباشرةً في متصفحك باستخدام Wasm-agents

يهدف مشروع Wasm-agents إلى إحداث ثورة في سهولة الوصول إلى وكلاء المصدر المفتوح من خلال تعبئتها كملفات HTML قابلة للتشغيل مباشرةً في متصفحك، مما يلغي الحاجة إلى أدوات أو أطر عمل خارجية. باستخدام WebAssembly و Pyodide، يسمح هذا المشروع بتنفيذ وكلاء الذكاء الاصطناعي القائمة على Python بسرعة قريبة من السرعة الأصلية داخل بيئة رملية للمتصفح. يدعم Wasm-agents حاليًا واجهات برمجة تطبيقات OpenAI والنماذج التي تستضيفها بنفسك (مثل تلك التي يتم تقديمها عبر Ollama)، ويوفر أمثلة على ملفات HTML تعرض وكلاء محادثة بسيطة، وأنظمة متعددة الوكلاء، ووكلاء متقدمين مزودين بأدوات مدمجة. على الرغم من وجود بعض القيود، مثل الاعتماد على إطار عمل openai-agents واعتبارات CORS، إلا أن هذا المشروع يوفر نهجًا جديدًا لتطوير ومشاركة وكلاء الذكاء الاصطناعي، وهو أمر يستحق الاستكشاف.

التطوير

tmux-rs: رحلة 100 ألف سطر من التعليمات البرمجية من لغة C إلى (Rust غير الآمنة)

2025-07-03

استغرق الأمر من المؤلف ستة أشهر لنقل ما يقارب 67000 سطر من تعليمات برمجة لغة C من tmux، وهو برنامج تشغيل متعدد للنوافذ الطرفية، إلى Rust، مما أدى إلى قاعدة بيانات تتكون من ما يقارب 81000 سطر من التعليمات البرمجية. أثبتت المحاولات الأولية باستخدام مترجم C2Rust أنها صعبة، مما أدى إلى إعادة كتابة يدوية. يفصل المؤلف عملية البناء والأخطاء التي تم اكتشافها، واستراتيجيات تحويل أجزاء التعليمات البرمجية بلغة C إلى Rust، بما في ذلك معالجة المؤشرات الخام، وبيانات goto، والماكروات المتداخلة. بلغ المشروع ذروته في إعادة تنفيذ منشئ بناء الجملة lalrpop لمنشئ بناء الجملة yacc، مما أدى إلى تحقيق هجرة كاملة من لغة C إلى Rust، ونتج عنها إصدار 0.0.1. تُظهر هذه الرحلة تحديات ومكافآت نقل التعليمات البرمجية على نطاق واسع.

التطوير من C إلى Rust

مبدأ سلوك المحلية: مبدأ لكتابة رمز أكثر سهولة في الصيانة

2025-07-03

تُقدم هذه المقالة مبدأ سلوك المحلية (LoB)، الذي يُشدد على أن سلوك وحدة التعليمات البرمجية يجب أن يكون واضحًا بسهولة داخل تلك الوحدة نفسها. يستخدم الكاتب أمثلة على طلبات AJAX في htmx و jQuery لتوضيح كيف يُحسّن LoB من قابلية صيانة الرمز. على الرغم من أن LoB قد يتعارض مع مبادئ مثل DRY (لا تكرر نفسك) و SoC (فصل الاهتمامات)، إلا أن الكاتب يُجادل بأن إعطاء الأولوية لـ LoB بحكمة يُحسّن من إمكانية قراءة الرمز وقابليته للصيانة، مما يؤدي في النهاية إلى جودة أعلى واستدامة للبرمجيات.

arXivLabs: مشاريع تجريبية مع متعاونين من المجتمع

2025-07-03
arXivLabs: مشاريع تجريبية مع متعاونين من المجتمع

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

التطوير

خلفية بناء uv: عمليات بناء أسرع وأكثر سلاسة في Python

2025-07-03

يعزز مُضيف بناء uv الأصلي، uv_build، سرعة تجربة المستخدم بشكل كبير عند بناء مشاريع Python. يتميز بإعدادات افتراضية معقولة، بهدف عدم الحاجة إلى أي تهيئة لمعظم المستخدمين، مع توفير تهيئة مرنة لتناسب الهياكل المختلفة للمشاريع. يدعم uv_build حاليًا رمز Python النقي؛ هناك حاجة إلى مُضيفات بناء بديلة للمكتبات التي تحتوي على وحدات إضافية. استخدم مُضيف البناء هذا بإضافة `uv_build` إلى ملف `pyproject.toml` الخاص بك أو بإنشاء مشروع جديد باستخدام `uv init --build-backend uv`. كما يُحسّن uv_build أيضًا من معايير توحيد اسم الحزمة، واكتشاف الوحدة، واستراتيجيات تضمين/استبعاد الملفات، مما يؤدي إلى عمليات بناء أكثر قابلية للتنبؤ والتكرار.

التطوير

الشيفرة البرمجية هي كل ما تحتاجه: قيود أنابيب المكونات المتعددة (MCPs)

2025-07-03
الشيفرة البرمجية هي كل ما تحتاجه: قيود أنابيب المكونات المتعددة (MCPs)

تتناول هذه المقالة جدوى أنابيب المكونات المتعددة (MCPs) للعديد من المهام، وتجادل بأن اعتمادها الكبير على الاستنتاج يجعلها غير فعالة ومن الصعب توسيع نطاقها. يستخدم الكاتب مثالًا شخصيًا - تحويل reStructuredText إلى Markdown - لإظهار نهج متفوق: استخدام نماذج اللغات الكبيرة (LLMs) لإنشاء رمز يقوم بالمهمة، متبوعًا بالتحقق من صحة النتائج باستخدام نماذج اللغات الكبيرة. تقلل هذه الطريقة من الاعتماد على الاستنتاج، وتحسن الموثوقية، وتتوسع بشكل جيد، خاصةً للمهام المتكررة. في حين يقر الكاتب بوجود نقاط قوة لـ MCPs في سيناريوهات محددة، إلا أنه يستنتج أن قيودها الجوهرية تعيق التشغيل الآلي على نطاق واسع. يقترح أن المستقبل يكمن في تطوير تقنيات أكثر فاعلية لتوليد التعليمات البرمجية، إلى جانب التحقق من صحة النتائج وشرحها باستخدام نماذج اللغات الكبيرة، من أجل تحسين سهولة الاستخدام وقابلية التطبيق.

التطوير

Imagebin الخاص بـ Max: شهادة على البساطة

2025-07-03
Imagebin الخاص بـ Max: شهادة على البساطة

تروي هذه القصة قصة Max، وهو مبرمج، وبرنامج Imagebin الخاص به، وهو برنامج نصي لتحميل الصور بلغة PHP عمره 15 عامًا. يُعدّ رمز Imagebin بسيطًا بشكل ملحوظ، حيث يبلغ طوله 233 سطرًا فقط، معظمها عبارة عن سجلات تغييرات. حاول الكاتب إعادة كتابته بلغة Go، لكنه وجد أن حجم الرمز قد تضخم وأن قابلية القراءة قد انخفضت. وقد أدى ذلك إلى التفكير في تعقيد تصميم البرمجيات، مع تسليط الضوء على سهولة الصيانة التي يوفرها الرمز الموجز. يعزى طول عمر Imagebin الخاص بـ Max إلى هذه البساطة. في النهاية، قرر الكاتب الاحتفاظ برمز Max والالتزام بلغة PHP.

التطوير
1 2 47 48 49 51 53 54 55 213 214