هذا مشروع حر مفتوح المصدر FLOSS ذو حقوق نسخ ممنوحة وفق بنود رخصة وقف العامة يهدف لتوفير كل ما يتصل بدعم التقويم الهجري على المستويات التالية
نستخدم خوارزمية خاصة من تصميمي (مؤيد السعدي). هذه الخوارزمية تستخدم حساب الأعداد الصحيحة أي أنه (وعلى عكس حسابات الفاصلة العائمة) لا يوجد أي نوع من التقريب. كما أنها تسمح بتغطية طيف واسع من السنين (مثلاً من العام الأول للهجرة إلى العام الهجري ٩٩٩٩ أي العام الجريجوي ١٠٣٢٢ بكل سهولة وهذا ليس الحد النّهائي به هو مجرد مثال والحد النهائي أكبر بكثير) هذه الخوارزمية لها ثلاث معاملات p و q و a. حيث p/q هي النسبة بأبسط صورة بين الأشهر الهجرية التّامة (ذات ٣٠ يوماً) والأشهر الهجرية القصيرة (ذات ٢٩ يوماً) والتّامة معا في مدة محددة (٣٠ عاما على سبيل المثال) أمّا a فهي إزاحة لضبط اختيار البداية. وحيث أنّنا لم ندخل p/q على شكل عدد نسبي محدود المنازل يمكن لهذه الخوارزمية إعطاء دقّة يَقينيّة في الحساب. إلا أن الحصول على هذه المعاملات لا يأتي إلاّ بالتجريب والملاحظة الذي قد يدخل فيه الخطأ كما أنّ مجرّد افتراض أن هناك نسبة بين هذه الأشهر ليس يقينياً. إذا افترضنا أن هناك نسبة عددية بين الأشهر فهذه الخوارزمية تصبح يقينية إذا عُلمت النسبة.
تختلف هذه الخوارزمية عن خوارزمية EMACS الشائعة بأن أطوال الشهور غير ثابتة، حيث في خوارزمية EMACS شهر رمضان في كل السنين ٣٠ يوما. وتختلف عن خوارزمية أم القرى في استخدام هذه الأخيرة لحسابات الفاصلة العائمة. انظر آخر الصفحة للمزيد من التفصيل.
الواجهة الرسومية الأولية تُظهِر الشهر الهجري كاملاً وتحت كل يوم هجري ترى اليوم الميلادي بخط خفيف كما في الشكل
تستطيع التحرّك سنة سابقة أو لاحقة أو شهراً سابقا أو لاحقا. كما تستطيع القفز لعام هجري معيّن أو كتابة عام ميلادي وتنقر زر التحويل. تستطيع إغلاق البرنامج ويظل يعمل في لوحة النظام tray في منطقة التواصل (تلك التي توضع غالبا قرب الساعة)
يظهر فيه اليوم الهجري في السطر الأول من الشهر الهجري في السطر الثاني (في الصورة ١٩ ربيع الأول)
لمعرفة التفاصيل قم بالتأشير عليه
لعرض البرنامج مرة أخرى انقر على هذه الأيقونة بالزر الأيسر، ولعرض القائمة انقر بالزر الأيمن
توفّر هذه المكتبة الوظائف التي يحتاجها أي برنامج وفق تصميم موجّه للكائنات OOP يُسهّل عمل برامج توظّف التقويم الهجري بكل سهولة. حيث توفّر مثلاً مصفوفة للشهر الهجري بكل المعلومات اللازمة وتسمح بتحديد أي يوم كبداية للأسبوع وتحديد اتجاه تعبئة المصفوف من اليمين لليسار أو بالعكس. إن عمل أي واجهة جديدة للبرنامج يفترض أن لا يشكّل أي صعوبة.
توفّر هذه المكتبة الوظائف الأولية مثل تحويل أي يوم هجري إلى التقويم المطلق (عد الأيام) أو التقويم الجريجوري أو إيجاد عدد أيام شهر معيّن أو إيجاد عدد الأيام بين أي شهرين
طبعاً لا يغني أي برنامج مهما كان دقيقاً عن رؤية الهلال ولا يجوز استعمال هذا البرنامج لتحديد بداية أو نهاية رمضان.
أمّا لماذا نهتم بالتقويم الهجري؛ فهذا سؤال بديهي، هناك الكثير من الخطب والمقالات التي تحثّ على التمسّك بالتقويم الهجري وتفصّل في ذلك، إليك بعضها
التقويم الهجري تقويم إجرائي يقوم على الملاحظة (بالرؤية) لأحداث دورية واضحة. يتم إعادة ضبطه في كل سنة مرتين.
في الحقيقة التقويم الميلادي ليس أقلّ اضطراباً إلا في الاصطلاح الذي وضعه أحد القسّيسين لما يسمّونه “البابا” جريجوري الثالث عشر (عام ١٥٨٢) وليس وفق الحقائق العلمية. أي أن التقويم الجريجوري هو تقويم تقريبي وَفَوق ذلك لا يُعاد ضبطه بشكل دوري مع الحقائق الفلكية، جاء لتصحيح خطإ أكبر في تقويم يوليوس قيصر Julian الذي تمّ اعتماده كتقويم لاهوتي نصراني بقرار من البابا يوحنا الأول John I في عام ٥٢٥ ميلادية.
أقتبس من كتاب “حتى لا ندخل جحور الضباب” (الذي لم أنته من تأليفه):
لم يعط هذا الراهب التقويم رقم السنة نسبة للإمبراطور ولا إلى روما التي كانت أطلالاً في حينه بل نسبة للعام الذي كان يشاع في حينه بأنه العام الذي ولد فيه سيدنا عيسى وعلى حدّ تعبيره “هو العام الذي تجسّد فيه الإله مولوداً”، فكان تقويمه يحمل العنوان “anno Domini nostri Jesu Christi DXXXII” أي “في عام ربنا المسيح عيسى ٥٣٢” على حدّ تعبيره.
انتهى الاقتباس ذاك التقويم يخطئ بمعدل ٣ أيام كل 400 سنة تقريباً! لذا جاء جريجوري ليحذف يوماً من كل رأس ثلاث قرون من بين أربعة. ويقفز ١٠ أيام تعويضاً عمّا فات من سنين لم تحذف فيها تلك الأيام الزائدة! ولم يعتمد التقويم الجريجوري من فوره بل بعد ١٧٠ سنة. فهل ننتظر “بابا” آخر يخبرنا بأنّ علينا عمل قفزات أخرى في التقويم. وبالمناسبة إن الرأي السائد بين الدارسين في الغرب بأن سيّدنا عيسى بن مريم ولد في العام الرابع قبل الميلاد أو قبل ذلك (أي ولد قبل مولده المزعوم بأربع سنوات على الأقل)
الموقع الرسمي للبرنامج هو http://hijra.ojuba.org
هذا البرنامج متوفّر في توزيعة أعجوبة لينكس وتوزيعة سبيلي.
بالنسبة لخوارزمية Emacs المستخدمة في أغلب البرمجيات والمواقع المعروفة (ومنها مكتبة ITL) من المؤكّد أن خوارزمية هجرة تتفوّق عليها ويمكن ملاحظة ذلك من خلال تجربة شهر رمضان وشوّال فيها لتدرك أن رمضان دائماً ٣٠ يوماً وشوال دائماً ٢٩ يوماً في حين أن الواقع غير ذلك. أما في هجرة فالأيام تتوزّع بالعدل.
المقارنة مع خوارزمية أم القرى صعبة لأن موقع مدينة الملك عبد العزيز للعلوم والتقنية ينشر جداول فقط. وبالنظر للجداول نجد أنها تشبه هجرة في أن عدد أيّام الشهور تختلف من شهر لآخر، إلاّ أنّ النتائج مختلفة. أم القرى تعتمد على ما يبدو على حسابات الفاصلة العائمة (كسور بها عدد ثابت من المنازل العشرية مضروبة في عشرة مرفوعة لقوى مختلفة) متعلّقة بتقدير وقت الرؤية بناءً على حسابات لا تصلح إلا في فترة زمنية معيّنة (مثلا في الفترة بين الاعوام الهجرية ١٣٥٦ إلى ١٥٠٠ وخارج هذه الفترة يكون التقدير به خطأ لا يمكن تجاهله). خوارزمية “هجرة” تعاني من تقدير الثوابت لا من تقدير الحسابات فالحسابات في هجرة مبنيّة على الأعداد الصحيحة دون تقدير وهذا لا يعني أن خوارزمية “هجرة” أفضل من خوارزمية أم القرى، لكنه يعني أن خوارزمية هجرة تعمل على فترات غير محدودة وبنفس الدقة.
تقوم خوارزمية أم القرى على اعتبار الشهر ٢٩ يومًا إذا تحقّق الشرطان الآتيان
فإذا لم يتحقّق أحدهما كان الشهر ٣٠ يومًا. ولأن القيام بحسابات توقّع الاقتران وغروب القمر تتطلّب الكثير من الوقت يتم تخزين جدول بالبيانات التي تم حسابها بشكل مسبق (طبعًا الجدول محدود يعني من الفترة كذا إلى كذا)
مصادر عن الخوارزميات الأخرى ومقالات ذات صلة
ملاحظة: موقع أعجوبة موقع تقني بحت وأي من المقالات الخارجية لا تعبر عنّا