مقارنة النصوص (كاشف الفروقات)
الصق نصين وشاهد بالضبط الأسطر التي أُضيفت أو حُذفت أو بقيت دون تغيير — مقارنة نظيفة سطرًا بسطر داخل متصفحك.
1,145 مشاهدة
كيف تعمل المقارنة
تُقسّم الأداة النصين إلى أسطر وتُشغّل خوارزمية أطول تتابع مشترك (LCS) — وهي المنطق الأساسي نفسه الذي تستخدمه Git ومحررات الأكواد في عرض الفروقات (diff). فبدلاً من مقارنة الأسطر حسب موضعها (السطر 1 مقابل السطر 1، السطر 2 مقابل السطر 2)، تبحث خوارزمية LCS عن أطول تتابع من الأسطر يظهر بالترتيب نفسه في كلا المستندين. كل ما يقع ضمن هذا التتابع المشترك يُعلَّم بأنه دون تغيير؛ وما يتبقّى في النص الأصلي يُعلَّم بأنه محذوف، وما يتبقّى في النص المُعدَّل يُعلَّم بأنه مضاف.
يهم هذا التمييز لأن المقارنة الموضعية البسيطة تنهار بمجرد إدراج أو حذف سطر واحد بالقرب من بداية المستند — إذ يبدو أن كل سطر بعده مختلف، رغم أن لا شيء تغيّر فعليًا سوى ذلك السطر الواحد. مثال ملموس: إذا كان النص الأصلي "A / B / C / D" وكان النص المُعدَّل "A / X / B / C / D"، فإن مقارنة سطر بسطر بسيطة ستُعلِّم B وC وD جميعًا على أنها تغيّرت، لأن كلاً منها انتقل موضعًا واحدًا للأسفل. أما LCS فتُدرك أن A وB وC وD ما زالت تظهر بالترتيب النسبي نفسه في كلا النصين، فتُبلّغ بشكل صحيح عن إضافة واحدة فقط — السطر الجديد X — وتُعلِّم البقية بأنها دون تغيير.
ما يجب معرفته
- قائم على الأسطر لا على الكلمات: تعمل المقارنة على الأسطر كاملة. تغيير كلمة واحدة داخل سطر طويل لا يزال يُعلِّم السطر بأكمله كسطر محذوف واحد زائد سطر مضاف واحد — وهو العرف المعتمد في مقارنة الأكواد والمستندات، لأنه يُبقي النتيجة سهلة القراءة.
- المسافات وحالة الأحرف لها أثر: مسافة زائدة في نهاية السطر أو اختلاف في حالة الحرف يجعل سطرين متطابقين ظاهريًا يُسجَّلان كمختلفين — يُستحسن توحيد النص أولاً إن لم تكن هذه هي المقارنة المطلوبة.
- المحتوى المُعاد ترتيبه يُطابَق بشكل صحيح: لأن LCS تبحث عن أطول تتابع مشترك بدلاً من المواضع الدقيقة، فإن فقرة انتقلت إلى مكان آخر لكنها حافظت على ترتيب أسطرها الداخلي تُعرَف بأنها دون تغيير بدلاً من أن تُعامَل كزوج حذف-ثم-إضافة.
- المستندات الكبيرة لا تُشكّل عائقًا: تتعامل الخوارزمية بسهولة مع آلاف الأسطر؛ أما الملفات الكبيرة جدًا (عشرات الآلاف من الأسطر) فقد تستغرق من المتصفح لحظة إضافية للمحاذاة، لكن لا شيء يُرفَع مطلقًا — تبقى العملية محلية طوال الوقت.
الأسلوب نفسه هو أساس مراجعة "تتبع التغييرات" خارج نطاق البرمجة أيضًا: فريق قانوني يقارن مسودتين لبند عقد، أو محرر يتحقق بالضبط مما أعاد أحد المؤلفين المشاركين كتابته في فصل، أو مترجم يتأكد من الجمل التي تغيّرت بين نسختين محليتين من مستند واحد. ولأن الخوارزمية تهتم فقط بتتابع الأسطر لا بمعناها، فإنها تعمل بالكفاءة نفسها على الكود المصدري وملفات الإعداد والشعر أو جدول بيانات مُصدَّر كنص عادي.
الأسئلة الشائعة
هل تقارن كلمة بكلمة أم سطرًا بسطر؟
سطرًا بسطر — وهو المعيار المتّبع في المستندات والأكواد البرمجية، لأنه يتوافق مع الطريقة التي تتعامل بها معظم المحررات وأدوات التحكم بالإصدارات مع الملف بالفعل. لذلك يظهر السطر المُعدَّل كسطر محذوف واحد زائد سطر مضاف واحد بدلاً من تشابك من التمييزات على مستوى الكلمات، ما يُبقي النتيجة سهلة القراءة حتى في المستندات الطويلة.
هل هناك حدّ لحجم النص؟
تتعامل الخوارزمية بسهولة مع آلاف الأسطر، وهو ما يغطي الغالبية العظمى من العقود والمقالات وملفات الأكواد المصدرية. أما بالنسبة للملفات الكبيرة جدًا (عشرات الآلاف من الأسطر)، فقد يستغرق المتصفح لحظة إضافية لحساب المحاذاة — لكن العمل يبقى بالكامل على جهازك في كل الأحوال، فلا داعي لانتظار أي تأخير في الرفع.
هل تُرفع مستنداتي إلى مكان ما؟
لا. تتم مقارنة النصين محليًا داخل متصفحك باستخدام JavaScript، ويختفي كل من المُدخَل والنتيجة بمجرد إغلاق الصفحة أو تحديثها — لا يُخزَّن ولا يُنقَل أي شيء.
كيف تتعامل مع الأسطر التي نُقلت أو أُعيد ترتيبها؟
لأن خوارزمية LCS تُطابق أطول تتابع مشترك بين النصين بغض النظر عن الموضع، فإن فقرة انتقلت إلى مكان آخر لكنها حافظت على ترتيب أسطرها الداخلي لا تزال تظهر بأنها دون تغيير بدلاً من أن تُعامَل كزوج حذف-وإضافة زائف. لا يُعلَّم إلا الأسطر التي تختلف فعليًا في المحتوى أو الموضع النسبي.
لماذا يُظهر تغيير كلمة واحدة سطرين على أنهما تغيّرا؟
تقارن أداة الفروقات الأسطر كاملة، لا الكلمات المفردة. فتعديل كلمة واحدة داخل سطر يجعل ذلك السطر بأكمله يُحتسَب كسطر محذوف واحد (النسخة القديمة) زائد سطر مضاف واحد (النسخة الجديدة) — وهو السلوك نفسه الذي تراه في Git أو أدوات مراجعة الأكواد، ما يُبقي النتيجة المرئية متسقة بغضّ النظر عن مدى صغر التعديل داخل السطر.
أدوات مشابهة
الإبلاغ عن مشكلة
مقارنة النصوص (كاشف الفروقات)
التعليقات
لا توجد تعليقات بعد — كن أول من يكتب تعليقًا!