تصميم خوارزمية
الخوارزمية هو مصطلح يشير إلى مجموعة محدودة ومعينة من الخطوات، حيث أن كل واحدة من هذه الخطوات قد تتطلب في حد ذاتها واحد أو أكثر من العمليات الحسابية والمنطقية ، وإذا ما تم إتمام وتنفيذ هذه الخطوات بشكل صحيح فإنه سوف نحصل على نتيجة أو على مجموعة من النواتج بعد فترة محدودة ومعينة من الوقت اللازم لتنفيذ ذلك .
وهناك مجموعة وعناصر من القيود والممانعات على نوع العمليات التي يمكن أن تتضمن وتحيط الخوارزمية وهي التالي:
حوسبة متزامنة
من المشاكل المحتملة هي حالات التسابق ومشكلة الاستعصاء. لنأخذ مثالاً الخوارزمية التالية والتي تقوم بسحب مبلغ من المال من حساب بنكيّ:
لنفترض أن رصيد الحساب = 500، وهناك عمليتان متزامنتان لسحب مبلغين من المال، الأول 300 والآخر 350. اذا تم تنفيذ السطر الثالث من الخوارزمية قبل السطر الخامس، فكلتا العمليتان سوف تجدان أن الرصيد المتوفر أكبر من المبلغ المراد سحبه balance >= withdrawal == true، وبالتالي سيتم تنفيذ عملية السحب. ولكن لأن كلتا العمليتان سوف تقومان بسحب المبلغ، فإن مجموع المبالغ المراد سحبها سوف يكون أكبر من الرصيد المتوفر فعليًا في الحساب، هذا النوع من المشاكل مع الموارد المشتركة بحاجة إلى استخدام التحكم التزامنيّ لتنظيم العمليات، أو الخوارزميات غير المسدود.