الخوارزميات

عندما تكتب حلاً عاماً لفئة من المشاكل، بدلاً من حل خاص لمشكلة واحدة، فأنت تكتب خوارزمية (algorithm). إن تعريف هذه الكلمة ليس سهلاً، لذا سأجرب أسلوبين للتعريف.
أولاً، خذ بعين الاعتبار بعض الأشياء غير الخوارزميات. عندما تعلمت ضرب الأعداد ذات الخانة الواحدة، قمت بحفظ جدول الضرب على الأغلب. أي أنك حفظت 100 حل خاص، لذا فإن المعرفة ليست خوارزمية فعلاً.
لكن لو كنت "كسولاً"، فعلى الأغلب أنك تعلمت بعض الحيل. مثلاً، لإيجاد ناتج ضرب n ب9، يمكنك كتابة n-1 في الخانة الأولى و10-n في الخانة الثانية. هذه الحيلة هي حل عام لضرب أي عدد مؤلف من خانة واحدة بالعدد 9. هذه الحيلة هي خوارزمية!
برأيي، من المخجل أن البشر يقضون الكثير من الوقت في المدرسة يتعلمون إجراء خوارزميات لا تتطلب أي نوع من الذكاء.
من جهة أخرى، فإن تصميم الخوارزميات عملية ممتعة، فيها تحد للعقل، وهي جزء مركزي لما ندعوه بالبرمجة.
بعض الأشياء التي يعملها الناس بصورة طبيعية، بدون صعوبة أو تفكير واعي، تكون أصعب الأشياء عند التعبير عنها بشكل خوارزمية. فهم اللغات الطبيعية هو مثال جيد. كلنا نفهم اللغة، لكن حتى الآن لم يتمكن أحد من شرح كيفية قيامنا بذلك، على الأقل ليس بشكل خوارزمية.
قريباً ستملك القدرة على تصميم خوارزميات بسيطة لمجموعة متنوعة من المشاكل.