العودة
SiTech Professional Insights
عشرون عامًا على pandoc: محوّل المستندات الذي كُتب بـ Haskell
SiTech Team3 წთ. საკითხავი

عشرون عامًا على pandoc: محوّل المستندات الذي كُتب بـ Haskell

يحيي جون ماكفارلين مرور عشرين عامًا على أول إصدار من pandoc: 51 صيغة إدخال و76 صيغة إخراج و3876 تحويلًا ممكنًا وأكثر من 600 مساهم، مع نظرة إلى مستقبل الأداة في عصر النماذج اللغوية.

نشر جون ماكفارلين، مبتكر أداة pandoc لتحويل المستندات، مقالًا استعاديًا بمناسبة مرور عشرين عامًا على إصدارها الأول. رفع pandoc 0.1 إلى موقعه في 3 أغسطس 2006 وأصدره بترخيص GPL الحر. كان الإصدار الأول نحو 3000 سطر من كود Haskell، من دون أي تبعيات سوى مكتبة GHC القياسية، وكان قادرًا على تحويل مستندات Markdown وreStructuredText وHTML وLaTeX إلى بعضها بعضًا، إضافة إلى RTF وS5. وبعد أكثر من مئتي إصدار أصبح المشروع أكثر البرامج المكتوبة بـ Haskell شعبية، وهو يدعم أكثر من خمسين صيغة مستندات ومثبّت على ملايين الحواسيب.

لماذا Haskell ولماذا AST

يقول ماكفارلين إن الخيار جاء بالعكس مما يُفترض: قرر أولًا استخدام Haskell، ثم قرر كتابة محوّل مستندات به. بعد أن استهواه منشور لصديق عن اللغة، قرأ «A Gentle Introduction to Haskell» وبحث عن مشروع عملي لتعلمها. كانت تطبيقات Markdown آنذاك في Perl وPython وRuby وPHP محوّلات تعمل بالتعبيرات النمطية؛ أما pandoc فاختار طريقًا آخر: يحلّل Markdown إلى شجرة صياغة مجرّدة حقيقية (AST) ثم يعرض تلك الشجرة بصيغ أخرى. وهذه بنية أكثر موثوقية وقابلية للتوسّع: فـ N قارئًا وM كاتبًا تعطيان N × M عملية تحويل.

عقدان من الإصدارات

صدر pandoc 1.0 في سبتمبر 2008 مع كتّاب لـ MediaWiki وTexinfo وOpenDocument وODT، وكتل كود بتمييز نحوي؛ وقد كتب ماكفارلين بنفسه مكتبتي zip-archive وhighlighting-kate لعدم وجودهما في Haskell. وأضاف pandoc 1.9 (2012) الإخراج بصيغة Word docx. وأعاد pandoc 2.0 (2017) تصميم القرّاء والكتّاب ليقوموا بعمليات إدخال وإخراج عند الحاجة، وقدّم مرشّحات Lua تعمل مباشرة على شجرة AST. وقسّم pandoc 3.0 (2023) المشروع إلى أربع حزم — مكتبة ومحرك Lua وخادم وواجهة سطر أوامر — وأضاف عنصر Figure؛ ثم جاء دعم Typst (3.1.3) وdjot (3.1.12)، وأتاح pandoc 3.9 (فبراير 2026) ترجمة pandoc إلى WebAssembly ليعمل داخل المتصفح.

بالأرقام

يعرض المقال إحصاءات محدثة: 51 صيغة إدخال و76 صيغة إخراج، أي 3876 عملية تحويل مختلفة؛ و85,684 سطرًا من Haskell في الحزم الأربع الأساسية، ويتضاعف الرقم تقريبًا مع التبعيات المكتوبة خصيصًا لـ pandoc؛ كما أُغلق 7,346 بلاغًا على GitHub، وساهم في المشروع أكثر من 600 شخص بينهم ألبرت كرينكل وجيسي روزنتال وكريستيان ديبري. وفي 2018 تلقى المشروع تبرعًا بقيمة 100,000 دولار من Handshake استُخدم على مدى خمس سنوات في مكافآت صغيرة لأكثر المشرفين نشاطًا.

ما بعد ذلك

يتساءل ماكفارلين كم سيبقى مثل هذا الأداة ضروريًا، إذ إن النماذج اللغوية الكبيرة تترجم بين صيغ المستندات بشكل مقبول وقد تصبح يومًا أكثر موثوقية من pandoc. لكنه يرى أن لـ pandoc اليوم ثلاث ميزات: استهلاك أقل بكثير للطاقة، ومخرجات حتمية يمكن التنبؤ بها، وتحويلات أكثر موثوقية. وهو يعتزم مواصلة تطوير المشروع، ويختم مقاله بعبارة: «عيد ميلاد عشرين سعيدًا، pandoc!».

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.