قصّة الخوارزميّات

أفقد. عبد الإله الديوهﭽي*

يُستخدم مُصطلح Algorithm هذه الأيّام ليعني “مجموعة الأوامر أو القواعد التي تَتبعها الآلة (عادةً الحاسوب) لتحقيقِ هدفٍ مُحدَّد. والمُصطلح بديلٌ مُتَّفَقٌ عليه لسيرورة “حلّ المسألة” problem solving procedure. وهو يرتبط، عادةً، بالوصف التسلسليّ الذي يستهدف تحقيقه. كالبحث مثلاً في مخزونٍ ضخمٍ من البيانات لاستخراج مجموعةٍ من البيانات ضمن مُواصفاتٍ دليليّة keywords محدَّدة مُسبقاً؛ أو السيرورة لتعمية (أو تجفير) encryption المعلومات أو الرسائل كي لا يستطيع فَهمها إلّا المسموح لهم بذلك.

بدأ استخدامُ المُصطلح بهذا المعنى المُستحدَث أوائل القرن العشرين في حقلَي الرياضيّات والحَوسبة الآليّة، لكنّ جذوره في التاريخ أعمق من ذلك بكثير. فالمَعاجِم الإنكليزيّة القديمة توضح أنّ المُصطلح يُشير إلى نِظام العدّ العشريّ أو العربيّ الذي أسماه الأوروبيّون algoritmi de numero، وقد كان الاعتقاد سائداً بأنّه جاء من دمْج الكلمتَيْن (algiros أي مؤلِم) و(arithmos أي رقم). وكان دونالد كونوث Donald Knuth (جامعة ستانفورد) من أوائل مَن أَوضحَوا أنّ المُصطلَح مَنسوبٌ إلى عالِم الرياضيّات في القرن التاسع الميلادي أبي جعفر محمّد بن موسى الخوارزمي. وهو من خوارزم، وهي واحة كبيرة تقع على نهر جيحون في غرب آسيا الوسطى، يحدّها من الشمال بحر الآرال، ومن الشرق صحراء قيزيل، ومن الجنوب صحراء قرّه قوم، ومن الشرق هضبة استجورت. وتقع خوارزم اليوم في أوزبكستان وكازاخستان وتركمانستان.

وتَعتبر المَصادِر الأوروبيّة أنّ أصول الخوارزمي فارسيّة، وله تمثال يحمل إسطرلاباً في جامعة “أمير كبير للتكنولوجيا” في طهران.

يُعتبر الخوارزمي من أوائل عُلماء الرياضيّات، وقد أَسهمت أعماله بشكلٍ كبير في تقدُّم الرياضيّات في عصره والعصور اللّاحقة. اتّصلَ بالخليفة المأمون وعملَ في بَيت الحكمة في بغداد وكَسب ثقة الخليفة فأولاه بَيت الحِكمة، كما عَهَدَ إليه برسم خارطة للأرض عمل فيها أكثر من سبعين جغرافيّاً. وقبل وفاته، في 850م، كان الخوارزمي قد تركَ العديد من المؤلّفات في علوم الرياضيّات والفلك والجغرافيا، من بينها كِتاب “المُختصر في حساب الجبر والمقابلة” الذي يُعَدّ من أهمّ كُتبه.

من خلال كِتابه المذكور هذا، اكتسبَ عِلم الجبر اسمه، واقتَبَسَ الغربُ التسميةَ، مع تحويرٍ طفيفٍ، فأَصبح لمُصطلح Algebra الفضلُ في نحت كلمة الجبر. وإسهاماتُ الخوارزمي في هذا العِلم ودَورُه في تطويره وفي نقْل الأرقام العشريّة ونشْرها أهمّ بكثير من تسمية مُصطلح Algorithm باسمه بعد قرون من وفاته.

يعود الاهتمام المُعاصِر بمُصطلح Algorithm إلى الفترة 1960 – 1980 عندما كان المُهتمّون بعِلم الحاسوب والبَرْمَجة يُحاولون قصارى جهودهم منْح هذا الحقل العِلمي الجديد (هذا إذا كان عِلماً) صِفةً اعتباريّة وأكاديميّة مُستقلّة عن باقي التخصّصات والحقول القريبة منه. هنا بَرَزَ دَور دونالد كونوث في إسهامتين رئيسيّتَيْن: الأولى في مقدّمة موسوعته “فنّ البَرْمَجة الحاسوبيّة – The Art of Computer Programming” التي عمل عليها منذ العام 1962 وخطَّط لأن تكون بسبعة أجزاء، لكنّه توقَّف عن إتمامها بعد صدور الجزء الرّابع، وتوجَّهت اهتماماته البحثيّة نحو موضوعاتٍ أخرى. وقد صَدرت الأجزاءُ الأربعة في الفترة 1968 – 1973. ويَعترف كونوث في مقدّمة الجزء الأوّل أنّ كلمة “فنّ” التي جاءت في العنوان مُقتبَسة من التسمية العربيّة للإشارة إلى أعلى مستويات الأداء العِلمي أو المهني، فيُقال فنّ العمارة وفنّ الحيل (الميكانيك) للإشارة إلى المستوى المُتقدِّم في هذه المِهن. جاء في المقدّمة أيضاً توضيحٌ لمَصدر مًصطلح Algorithm يُشير إلى أنّه منسوب لعالِم الرياضيّات محمّد بن موسى الخوارزمي (www.amazon.co.uk).

أمّا الإسهامة الثانية لكونوث، وهي الأهمّ، فكانت من خلال الورقة البحثيّة التي نَشرها في العدد الخاصّ لمجلّة رابطة الآلات الحاسوبيّة ACM، بمُناسبة مرور 20 عاماً على تأسيسها بعنوان “Ancient Babylonian Algorithms” ليُثبت للمُهتمّين عُمق مفهوم المُصطلح وأنّ الحضارات البشريّة مارَست حلّ المَسائل التي جابهتها بوضْعِ حلولٍ وصفيّة لكيفيّة حلّ المسائل. 

ومنذ سبعينيّات القرن الماضي واستخدام المُصطلح في تصاعُدٍ لافتٍ، وقد استُخدِم في سياقاتٍ مُتعدّدة مُضفياً على حقل البَرمجة والبرمجيّات والتطبيقات المُبرمَجة الصفة الأكاديميّة المُعتبَرة، التي كان عُلماء البَرْمَجة والحَوْسبة الأوائل يتمنّون تحقيقها، وصولاً إلى الرواج الواسع المُتحقِّق للمُصطلح في السنوات الأخيرة بسبب التقدُّم الهائل المُحرَز في برمجيّات الإنترنت ومَكائن البحث (search engines)، ومؤخّراً الذكاء الاصطناعي والروبوتات. 

في العام 1972 اطّلعتُ للمرّة الأولى على الجزء الأوّل من كِتاب كونوث؛ ولَفَتَني ما كَتبه عن أصل المُصطلح Algorithm، وقرأتُ كذلك ورقته البحثيّة عن الرياضيّات البابليّة التي حازت على اهتمامي بشكل كبير، ما دعاني في العام 1974 إلى كتابة ورقة مُختصرة في مجلّة الجامعة التي تصدر عن جامعة الموصل بعنوان “الخوارزميّات في التاريخ” فكانت، حسبما أعتقد، المرّة الأولى التي استُخدم فيها “تعريب” المُصطلح منسوباً بشكلٍ أشير فيه إلى اسم الخوارزمي باللّغة العربيّة. إذ لم أرَ قبل ذلك التاريخ مَن كَتَبَ باللّغة العربيّة واستخدَم المُصطلح بالشكل المنسوب للخوارزمي. 

من جانب آخر، ركّز العديد من العُلماء المُهتمّين بتأريخ الرياضيّات في تسعينيّات القرن الماضي على مفهوم “الخوارزميّة” كأداةٍ تحليليّة لإعادة النَّظر في النسيج التاريخيّ للرياضيات. واعتُبرت ورقة كونوث عن الخوارزميّات البابليّة المُنطلقَ الأساس لبحوثٍ قام بها عُلماءٌ آخرون مثل جيم ريتر Jim Ritter، الذي أجرى بحوثه في الرياضيّات المصريّة والبابليّة، وكارين جملا Karine Chemla في بحوثها في الرياضيّات الصينيّة (www.bokus.com).

مَعالِم خوارزميّة مُختارة

– التراث البابليّ

من الثابت في التاريخ أنّ البابليّين استخدموا النظام الستّيني في حِساباتهم، والذي لا يزال مُستخدماً في حسابات الزمن (الساعات والدقائق والثواني). ومن الثابت أيضاً أنّ البابليّين اكتشفوا نظريّة المُثلَّث قائم الزاوية قبل فيثاغورس بألف سنة، وذلك بحسب ما دلّت التنقيبات التي أُجريت في تلّ حرمل في العراق في خمسينيّات القرن الماضي (الديوهﭽي عبد الإله، “الخوارزميات في التاريخ”، مجلّة الجامعة – جامعة الموصل العدد 8 السنة الرابعة، أيّار/ مايو 1974).

والخوارزميّات والسيرورات المُكتشَفة في بابل تَصِفُ طُرق الاحتساب مع أمثلةٍ للتوضيح. وقد اكتُشفَ العديدُ من هذه الخوارزميّات على هيئة رُقيمات محفوظٌ قسمٌ منها في المتحف البريطاني وقسمٌ آخر في متحف ستاتليش الألماني واللّوفر الفرنسي وأخرى في المتحف العراقي.

اكتُشفت في الخوارزميّات البابليّة أيضاً أمثلة على تكدُّس البيانات stacking والاستنساخ copying والتخزين المؤقَّت temporary storage والتعويض substitution والتعيين assignment والتّكرار iteration. ولأنّ البابليّين ما كانوا قد تعرّفوا على الأرقام السالِبة والكيان الرقمي للصفر، لم تُكتشف حالاتٌ لجُمل شرطيّة مثل:

if x ≥ 0 go to step n

أو

if x ≤ 0 go to step n

– التراث الإغريقيّ: خوارزميّة إقليدس لإيجاد القاسِم المُشترَك الأعظم

ارتبطَ أسم إقليدس بالخوارزميّة عام 1950 وهي، بعد التعديل، كالتالي:

المُدخلات المُعطاة للخوارزميّة: رقمان صحيحان غير سالِبَين (u,v)

E1. If v = 0, output u and stop

,E2. Set r → remainder (u,v)

then set u→ v

then set v→ r and go back to E1. end

وسبب التعديل الذي أُجري عام 1950 هو أنّ إقليدس لم يكُن على دراية بالكيان الصفريّ.

– من التراث الإسلاميّ – القرآن الكريم

وَرَدَ في سورة النساء (الآيتان 10 و11) التالي:

(10) يُوصِيكُمُ اللَّهُ فِي أَوْلَادِكُمْ لِلذَّكَرِ مِثْلُ حَظِّ الْأُنْثَيَيْنِ فَإِنْ كُنَّ نِسَاءً فَوْقَ اثْنَتَيْنِ فَلَهُنَّ ثُلُثَا مَا تَرَكَ وَإِنْ كَانَتْ وَاحِدَةً فَلَهَا النِّصْفُ وَلِأَبَوَيْهِ لِكُلِّ وَاحِدٍ مِنْهُمَا السُّدُسُ مِمَّا تَرَكَ إِنْ كَانَ لَهُ وَلَدٌ فَإِنْ لَمْ يَكُنْ لَهُ وَلَدٌ وَوَرِثَهُ أَبَوَاهُ فَلِأُمِّهِ الثُّلُثُ فَإِنْ كَانَ لَهُ إِخْوَةٌ فَلِأُمِّهِ السُّدُسُ مِنْ بَعْدِ وَصِيَّةٍ يُوصِي بِهَا أَوْ دَيْنٍ آَبَاؤُكُمْ وَأَبْنَاؤُكُمْ لَا تَدْرُونَ أَيُّهُمْ أَقْرَبُ لَكُمْ نَفْعًا فَرِيضَةً مِنَ اللَّهِ إِنَّ اللَّهَ كَانَ عَلِيمًا حَكِيمًا. (11) وَلَكُمْ نِصْفُ مَا تَرَكَ أَزْوَاجُكُمْ إِنْ لَمْ يَكُنْ لَهُنَّ وَلَدٌ فَإِنْ كَانَ لَهُنَّ وَلَدٌ فَلَكُمُ الرُّبُعُ مِمَّا تَرَكْنَ مِنْ بَعْدِ وَصِيَّةٍ يُوصِينَ بِهَا أَوْ دَيْنٍ وَلَهُنَّ الرُّبُعُ مِمَّا تَرَكْتُمْ إِنْ لَمْ يَكُنْ لَكُمْ وَلَدٌ فَإِنْ كَانَ لَكُمْ وَلَدٌ فَلَهُنَّ الثُّمُنُ مِمَّا تَرَكْتُمْ مِنْ بَعْدِ وَصِيَّةٍ تُوصُونَ بِهَا أَوْ دَيْنٍ وَإِنْ كَانَ رَجُلٌ يُورَثُ كَلَالَةً أَوِ امْرَأَةٌ وَلَهُ أَخٌ أَوْ أُخْتٌ فَلِكُلِّ وَاحِدٍ مِنْهُمَا السُّدُسُ فَإِنْ كَانُوا أَكْثَرَ مِنْ ذَلِكَ فَهُمْ شُرَكَاءُ فِي الثُّلُثِ مِنْ بَعْدِ وَصِيَّةٍ يُوصَى بِهَا أَوْ دَيْنٍ غَيْرَ مُضَارٍّ وَصِيَّةً مِنَ اللَّهِ وَاللَّهُ عَلِيمٌ حَلِيمٌ. 

عند التمعُّن في هذه الآيات من ناحية الشكل والبنية ومُقارنتها بشكل البرمجيّات وبنيتها (الخوارزميّات) المكتوبة بلغات البَرمَجة المُتداوَلة، نُلاحِظ:

– التسلسُل الدقيق للجُمل، والذي يصلح للتقسيم إلى خوارزميّات فرعيّة subroutines، والترابُط من خلال الاحتمالات.

– وجود جُمل شرطيّة من النّوعَين

…. If …… then

……. If …….. then …… else

– جُمل اعتراضيّة مُماثِلة لوضْع التعليقات التوضيحيّة ما بين الأوامر comments.

– ألفيّة ابن مالك في قواعد اللّغة

هي متن شعريّ من نَظْمِ الإمام محمّد بن عبد الله بن مالك الطائي الجياني (1200 ميلاديّة تقريباً). وُلِد وتَرعرعَ في مدينة جيان الإسبانيّة، ثمّ غادرها إلى بلاد الشام وقام بتعليم اللّغة العربيّة في مدينتَيْ حلب وحماه. ثمّ استقرَّ بعدها في دمشق، حيث أَنتج أهمّ بحوثه اللّغويّة والأدبيّة، ومنها الألفيّة، في المدرسة العادليّة في دمشق. وتُعتبر الألفيّة من أهمّ المنظومات النحويّة واللّغويّة، جَمَعَ فيها خلاصة علمَي النحو والتصريف، في أرجوزة. وحَظيت ألفيّة ابن مالك بقبولٍ واسعٍ لدى دارسي النحو العربي، فحرصوا على حفْظها وشرْحها أكثر من غيرها من المتون النحويّة، وذلك لما تميَّزت به من تنظيم، وسهولة الألفاظ، والإحاطة بالقواعد النحويّة والصرفيّة، مع ترتيبٍ مُحكم لموضوعات النحو، واستشهادٍ دقيق لكلٍّ منها، فهي تُدرَّس في العديد من المَدارس والمَعاهِد الدينيّة واللّغويّة (ar.wikipedia.org).

وعند نشوء لغات البَرْمَجة في خمسينيّات القرن الماضي وستّينيّاته، برزت الحاجة إلى تعريف لغات البَرمجة وقواعد وإعراب جملها من خلال “لغة عليا – metalanguage. قام مُصمِّمو لغة Algol 60 باستحداث لغة خاصّة لتعريف قواعد الجُمل البَرمجيّة للّغة سُمِّيَت Backus Normal Form – BNF نسبةً لاسمَيْ مُصمِّمَيْها. أَعقب ذلك تصميم لغة عليا أخرى لتعريف لغة PL/1 من قِبَلِ شركة IBM سُمِّيَت Vienna Definition Language – VDL.

المُتمعِّن بالألفيّة يُلاحِظ الشبه بينها وبين خوارزميّات اللّغات العليا لتعريف لغات البَرْمَجة. واختيار ابن مالك القصيدة الشعريّة لتعريف قواعد اللّغة فيه الكثير من الذكاء. فالشعر يُعطي النصَّ صفة الدقّة وسهولة الحفْظ والديمومة. فلو أنّ ابن مالك ألَّفَ كِتاباً في النحو والصرف لما تناقلته الأجيال بالسهولة والدقّة المَطلوبَتيْن.

تتكوَّن الألفيّة من ثمانين فصلاً، تبدأ بالتعريف بالنّاظِم، ثمّ المُقدّمة، ويأتي الفصل الأوّل بعدها الذي يُعرِّف الكلام وما يتألَّف منه، يليه فصل المُعرَب والمَبنيّ ثمّ النكرة والمَعرفة وصولاً إلى الفصل الثمانين عن الإدغام.

على سبيل المثال، يوجد تشابهٌ واضحٌ بين لغة ابن مالك الشعريّة ولغة BNF. ففي تعريف حروف الجرّ، كتبَ ابن مالك:

هاك حروف الجرّ وهي من إلى

حتّى خلا حاشا عدا في عن على

مذ منذ رب اللّام كي أو تا

الكاف البا لعلّ متى

ولو حاولنا كِتابة هذَيْن البَيتَيْن بلغة BNF لنَتَجَ:

حروف الجر= من│إلى│حتّى│خلا│حاشا│عدا│في│عن│على│مذ│منذ│رب │اللّام│كي│أو│تا│الكاف│البا│لعلّ│متى

خلاصة القول إنّه على الرّغم من عظمة عالِم الرياضيّات محمّد بن موسى الخوارزمي، علينا أن نعترف بأنّ مفهوم الخوارزميّة كوسيلةٍ وصفيّة للحلول الحسابيّة كان معروفاً في الحضارات البابليّة والمصريّة والصينيّة والإغريقيّة قبل عصر الخوارزمي (العبّاسي) بقرون، وبأنّ التواصُل الحضاري والعِلمي مُستمِرٌّ وغير مُقيَّد بحدود سياسيّة أو جغرافيّة. فحضارةُ العلوم وتطوُّرُها وتناقُلُها سَيرورةٌ قد نَعرف بعضاً من بداياتها، لكنّها مُستمرّة باستمرار الحياة. ولعلّ أبرز ما يستحقّ الذكر في هذا السياق، أنّ بَيت الحِكمة في عهد المأمون لم يُفرِّق بين مُسلم ومسيحي أو بين يهودي ومجوسي أو من دينٍ آخر. فقد عملوا جميعهم من أجل العِلم والمَعرفة دونما تمييز، بعكس بَيت الحِكمة الذي أسَّسه الفاطميّون في مصر، والذي اقتصر بعد فترة من تأسيسه على الباحثين التابعين لمَذهب الدولة.

في الختام، لا بدّ من الإشارة إلى أنّ انتشار تكنولوجيّات الإنترنت والجوّال، ومَكائن البحث على الإنترنت، والتقدُّم الهائل المُحرَز في مجال الذكاء الاصطناعي والروبوتات خلال العقدَيْن الأخيرَيْن، صاحبَه انتشارٌ واسعٌ مُوازٍ في استخدام مُصطلح “الخوارزميّات”، ليس على المستويَيْن الأكاديمي والمِهني فحسب، بل على المستوى الشعبيّ أيضاً، حيث باتت الكلمة مُتداوَلةً في أوساط العامّة كما في الأوساط الثقافيّة والاجتماعيّة والعِلميّة كافّة. 

*مُختصّ في تقنيّات المعلومات والاتّصالات – العراق

قم بكتابة اول تعليق

أترك لنا تعليق

لن يتم نشر بريدك الالكتروني في اللعن


*


5 + 1 =