التصميم الذكي وأوجه القصور في دالة std::adjacent_difference في لغة C++
تتناول هذه المقالة فلسفة تصميم خوارزمية `std::adjacent_difference` في مكتبة C++ القياسية. تحسب هذه الخوارزمية الفروقات بين العناصر المتجاورة في تسلسل الإدخال، مع نسخ العنصر الأول إلى المخرجات. على الرغم من أن هذا التصميم يضمن التناظر مع خوارزمية `std::partial_sum`، مما يعكس التفاضل والتكامل في حساب التفاضل والتكامل، إلا أنه يحد أيضًا من قابليته للاستخدام العام، حيث أن الفرق بين عناصر من نوع عشوائي قد يكون من نوع مختلف. وتقدم المقالة أيضًا أوجه تشابه مع المشتقات والتكاملات في حساب التفاضل والتكامل، موضحة سبب تصميم الخوارزمية ومقارنتها مع دالة `deltas` الأكثر مرونة في لغة Q. والخلاصة هي أنه على الرغم من أن نية Stepanov الأصلية كانت سليمة، إلا أن الخوارزمية تفتقر إلى قابلية الاستخدام العام؛ يوفر `pairwise_transform` في C++23 بديلاً أكثر مرونة.