كيف تقوم برامج الضغط بضغط وفك ضغط ملفاتك



تابع قناة عالم الكمبيوتر علي التيليجرام


لو كنت من الذين يقومون بتحميل الكثير من البرامج والملفات عبر الانترنت فأنت بالتأكيد قد واجهت الملفات المضغوطة Compressed Files سواء كانت بصيغة ZIP أو RAR أو غيرها ولعل ضغط الملفات يهم كثيرا مستخدمي الويب لأنه يمكن المستخدم من تقليل أحجام الملفات مما يجعل الملفات اسهل في النقل والرفع والتحميل كذلك خلال سرعات الانترنت البطيئة نوعا ما او لجعل الملف يأخذ حجم صغير علي القرص الصلب وتهيئة مساحة أخري لملفات أخري وبمجرد تحميلك لملف مضغوط يقوم جهازك بفك الضغط لهذا الملف من خلال احد البرامج المعروفة في هذا المجال كـ WINZIP او WINRAR ويٌعيد الملف الي حجمه الأصلي ولو صار كل شئ بشكل صحيح سيكون الملف الجديد الذي تم استخراجه بعد فك الضغط مطابق تماما للملف الأصلي قبل الضغط .. معظمنا يعلم هذه المعلومات ولكن قليل منا يعلم أو فكر في كيف تم هذا. انه يبدو كشئ غامض كيف انه يتم تقليل عدد البايت و البت BYTES & BITS ثم يتم اعادتها مرة أخري تماما كما كانت !! اذا كان لديك حب المعرفة وفضول العلم لكي تفهم ما يحدث بالضبط ببساطة كما عودناكم وليس بتعقيد التخصص فركز معي جيداً في هذا الموضوع.



معظم ملفات الكمبيوتر تعتبر زائدة عن الحاجة ويمكن الاستغناء عنها ومعظمها يحتوي علي نفس المعلومات الموجودة مرات ومرات. برامج ضغط الملفات ببساطة تتخلص من هذا الزائد عن الحاجة و بدلا من تكرار هذه الملفات مرات و مرات فتقوم برامج الضغط بادراج هذه الملفات مرة واحدة مع الاشارة الي الاماكن التي تكررت فيها هذه الملفات بدون ان تكون موجودة فيها وحتي يتسني للبرنامج إرجاعها مكانها مرة اخري في الملف الاصلي .. لم تفهم ما سبق اليس كذلك ؟! لا تستعجل فلم ننتهي بعد ستفهم أكثر في الامثلة التالية باذن الله والتفاصيل القادمة. وكمثال لذلك سأعرض عليك بيت شعر يقول:

إذا كنت لا تدري فتلك مصيبة .. و إن كنت تدري فالمصيبة أعظم

بيت الشعر هذا يحتوي علي 12 كلمة مكونة من 43 حرف و12 مسافة بالاضافة الي نقطتين ".. " لو كل حرف او مسافة او علامة ترقيم أخذ بايت واحدة من الذاكرة ستجد ان اجمالي حجم الجملة المكونة لهذا البيت 57 بايت ولتقليل هذا الحجم يجب ان ننظر للاشياء المتكررة والتي يمكن الاستغناء عنها سنلاحظ.
  • " كنت " تكررت مرتين
  • " تدري " تكررت مرتين
  • " مصيبة " تكررت مرتين

3 كلمات تعطينا اكثر من نصف الشطر الثاني من البيت فإذا اردنا كتابة الشطر الثاني من البيت فسنكتب فقط الشطر الاول وسنشير فقط الي الـ 3 كلمات المكررة في الشطر الثاني من البيت بناءً علي الكلمات الموجودة مسبقا في الشطر الاول فلا داعي لتكرارها بل سنشير اليها فقط ولكن دعنا نفهم اكثر كيف تنفذ برامج الضغط هذه العملية.

كيفية بناء الملفات داخل الملف المضغوط


معظم برامج الضغط تستخدم نظام يسمي بـ LZ adaptive dictionary-based algorithm و الـ LZ لتدل علي مصممي هذا اللوغاريتم او النظام وبالنسبة لكلمة Dictionary للدلالة علي الطريقة التي تم بها تصنيف المعلومات داخل ملف الضغط والانظمة تختلف في ترتيب واعداد تلك القواميس ولكنها يمكن ان تكون بسيطة كترتيب الأرقام مثلا فعندما نعود الي البيت الذي طرحناه سنأخذ الكلمات المتكررة ونجعل مقابلها قائمة من الارقام بمعني اننا سنستبدل هذه الكلمات بأرقام حيث يدل كل رقم علي كلمة معينة.

1- كنت
2- تدري
3- مصيبة

و بالتالي سيكون البيت عبارة عن

اذا 1 لا 2 فتلك 3 .. و ان 1 2 فال3 أعظم

اذا كنت تعلم طريقة عمل هذا النظام فأنت بسهوله ستستطيع أعادة تكوين الجملة الاصلية باستخدام هذا القاموس وهذه الارقام وهذا بالضبط ما يفعله برنامج فك الضغط علي جهازك عنما يقوم بفك ضغط ملف مضغوط قمت بتحميله مثلا من علي الانترنت. و انت كذلك تعلم ان برامج الضغط يمكنها بان تسمح لك بفتح الملف الاصلي داخل برنامج الضغط نفسه و لكي يحدث هذا لابد ان يتبادر الي ذهنك ان هذه البرامج تحتوي علي برنامج فك ملفات صغير مع الملف المضغوط و الذي يقوم باعادة بناء الملف الاصلي اليا بمجرد اكتمال تحميله علي جهازك داخل الملف المضغوط وباستخدام القاموس المتفق عليه. و لكن ما هي المساحة التي ضغطناها من هذا النظام ؟

" اذا 1 لا 2 فتلك 3 .. و ان 1 2 فال3 أعظم " فهذه الجملة اقصر بالطبع من " إذا كنت لا تدري فتلك مصيبة .. و إن كنت تدري فالمصيبة أعظم " و لكن ضع في الاعتبار اننا بحاجة الي حفظ القاموس نفسه دائما مع الملف لكي يفهم برنامج فك الضغط النظام المتبع لفك الضغط. خلال الضغط الواقعي فإن تكوين وفك ضغط مختلف انواع الملفات هو بالطبع معقد جدا اكثر من هذا ولكن من اجل ان نفهم دعنا نعود الي فكرة ان لكل حرف او مسافة او علامة ترقيم حجم واحد بايت _ وهو بالطبع حقيقي _ فسنجد ان الجملة الاصلية كانت ذات حجم 57 بايت و جملتنا المضغوطة – متضمنة المسافات _ ذات حجم 39 بايت و بالاضافة الي حجم القاموس 15 بايت ( 3 كلمات + 3 ارقام ) فسنجد في النهاية ان حجم الملف 54 بايت و هو ليس بالحجم البعيد عن حجم الملف الاصلي !! و لكن هذه فقط جملة واحدة او بيت واحد من قصيدة كاملة فلك ان تتخيل ان برنامج الضغط يعمل علي باقي هذه القصيدة بأكملها بما سيجده من مثل هذه الكلمات مرة اخري و كلمات غيرها متكررة ايضا و هذا ما يدفعه لكتابة قاموس جديد من الكلمات المكررة الاخري ليحصل علي اكثر القواميس تناسباً مع الضغط.

البحث عن الاجزاء المشتركة


في المثال الذي طرحناه ستجد اننا جمعنا الكلمات المتكررة و تم تكوين منها قاموس وبالنسبة لنا هذه اوضح طريقة امامنا لعمل القاموس و لكن برامج الضغط تري الكلمات المشتركة وطريقة عمل قاموس بطريقة مختلفة. برنامج الضغط ليس لديه مفهوم الكلمات المفردة ولكنه يختار بعناية الاجزاء المكررة ليصنع منها قاموس و ركز انني قد قلت اجزاء مكررة و ليس كلمات مكررة.

لو طبقنا هذا علي بيت الشعر السابق سنحصل علي قاموس مختلف تماما فلو فحص برنامج الضغط بيت الشعر هذا - و لنتفق من الان ان نطلق عليه جملة للتسهيل - سيجد برنامج الضغط ان حرف " ا " جاء بعده مسافة مرتين في " اذا " و " لا " فيمكن ان يضم "ا+مسافة " الي القاموس و لكن سيجد انها بلا قيمة في هذه الجملة فلن تقلل الحجم كثيرا و لكن اذا استمر علي هذا في باقي القصيدة سيجد ان هذا الشكل "ا+مسافة " متكرر كثيرا في باقي القصيدة و سيضمه بسهوله الي القاموس و لكن في حالة ما اذا اراد ضغط هذه الجملة فقط فسيبحث عن طريقة اخري لبناء القاموس حتي يصل الي اكثر طريقة ملائمة لتقليل الكلمات و الحجم الي اقصي ما يمكن سواء باستبدال حرفين معا او ثلاثة حروف او حرف بالاضافة الي مسافة او حرف في نهاية كلمة مع حروف في بداية كلمة اخري و هكذا حتي يصل الي القاموس المناسب وهي عملية معقدة جدا و هذا ما يفسر لنا كلمة adaptive في LZ adaptive dictionary-based algoritm بمعني انه يتكيف طبقا للملف الذي يعمل عليه.

والان ما مدي جودة هذا النظام؟


نسبة تخفيض حجم الملف تعتمد علي عدد من العوامل منها نوع الملف و حجمه و برنامج الضغط وبالنسبة لمعظم لغات العالم هناك كلمات معينة و حروف غالبا ما تظهر معا في نفس المكان و بسبب هذه النسبة العالية من التكرار ستجد ان ملفات النصوص Texts Files هي الافضل عند الضغط فتقليل الحجم يصل ال 50 % او اكثر في الملف النصي الطبيعي و بالاضافة الي ان معظم لغات البرمجة تكون ذات شكل متكرر كذلك لانها تعتمد علي مجموعة صغيرة من الاوامر متعلقة ببعضها و التي تتكرر في معظم اجزاء البرمجة فتكون سهلة االضغط ايضا و لكن بالنسبة للملفات التي تحتوي علي معلومات غير متماثلة مثل ملفات mp3 و الجرافيك تكون صعبة في الضغط بمثل هذا النظام لانها لا تكرر الكثير من اجزاء المعلومات داخلها و الان عليك ان تعلم انه طالما الملف يحتوي علي تكرارات عديدة فستزيد نسبة تقليل و ضغط الملف و يمكنك ان تري هذا بالرجوع الي مثالنا الذي طرحناه فلو كنا عرضنا عليك باقي القصيدة المأخوذ منها بيت الشعر هذا سنستبدل الاجزاء المتكررة في باقي القصيدة و ما أكثرها بالاضافة الي امكانية دمج حروف معا و المقارنة بين افضل الطرق لاستبدال الحروف و انشاء قاموس مناسب و اعتقد انك قد وصلتك هذه الفكرة . كفاءة الضغط تعتمد علي نظام الضغط كذلك الذي يستخدمه برنامج ضغط و فك ضغط الملفات فبعض البرامج تقوم بفحص اجزاء معينة من الملفات و البعض الاخر يملك قواميس ضغط داخل قواميس اخري و التي تضغط بكفاءة الملفات ذات الحجم الكبير و لكن ليس بالنسبة للأحجام الصغيرة بينما كل برامج الضغط لهذا النوع من الضغط يملك نفس الفكرة الاساسية و هذه البرامج تحاولل دائما بناء نظام ضغط افضل مما تعمل عليه.

Lossless Compression - هذه النوع من الضغط الذي تحدثنا عنه يسمي Lossless Compression او الضغط بلا فقد لانه يسمح لك عند فك الضغط باستعادة الملف الاصلي بلا اي نقص . كل برامج الضغط بلا فقد Lossless Compression Programs مبنية علي فكرة تجزئة الملف الي شكل اصغر للارسال او التخزين بحجم صغير ثم استعادته مرة اخري الي الاصل مما يسمح باستخدامه مرة اخري.

Lossy Compression - وهذا نوع اخر من الضغط ويعني الضغط ذو الفقد ويعمل هذا النوع بطريقة مختلفة حيث يقوم ببساطة باستبعاد الـ bits الغير ضرورية من المعلومات ثم يتم تكيف الملف ليصبح اصغر حجما و هذا النوع يستخدم بكثرة في تخفيض حجم الصور ذات صيغة bitmap والتي تميل الي ان تكون ذات حجم كبير ولنري كيف يعمل هذا فلنفكر في ...

كيف يمكن لجهازك ضغط الصور القادمة اليه عن طريق الـ Scanner ؟

البرامج التي لا تسبب فقد في الضغط لا تصنع الكثير مع هذا النوع من الملفات بالرغم من ان بعض اجزاء من الصورة يكون متشابه مثل ان السماء بالكامل زرقاء كمثال و لكن معظم اجزاء البيكسل في الصورة مختلفة نوعا ما و لصنع صورة ذات حجم اصغر بدون ضغط ثبات و دقة الصورة Resolution , يجب عليك تغيير قيمة اللون لبيكسل pixel معين . لو ان الصورة تحتوي علي حيز كبير من السماء الزرقاء فبرنامج الضغط سيحتفظ بلون ازرق واحد للاشارة الي كل بيكسل من السماء الزرقاء في الصورة و هكذا يقوم برنامج الضغط بإعادة كتابة الملف مع اعتبار ان كل بيكسل لسماء زرقاء يعود الي اللون الازرق . لو عملية الضغط تمت بنجاح فلن تلاحظ الفرق والتغيير ولكن حجم الملف سينخفض بالتأكيد.

بالتأكيد مع الضغط ذو الفقد lossy compression لن تستطيع استعادة الحجم الاصلي للملف بعد ضغطه ولهذا السبب لا ينبغي ان تستخدم هذا النوع من الضغط لأي شئ تريد استعادة حجمه الاصلي مرة اخري مثل برامج السوفتوير و قواعد البيانات وغيرها.

مواضيع اخري تهمك

الحمد لله لقد انتهيت .. اذا لم ينتهي الموضوع بالنسبة لك ومازال لديك عدم فهم لنقطة ما في الموضوع سأكون سعيدا بالرد عليك وتذكر ان لا تدع شئ يمر عليك مرور الكرام دون ان تفهم فكرته الاساسية علي الاقل …وشكراً لكم.

تعليقات

  1. مقال جميل
    الله يعطيك العافية

    ردحذف
  2. معلومة حلوة وجميلة جداً احسنت وفقكم الله.

    ردحذف
  3. احسنت وفقكم الله.

    ردحذف
  4. شكرا معلومات مفيدة

    ردحذف
  5. شكرا ع المعلومات مفيدة جدا (:

    ردحذف
  6. حلوه هذا المقاله

    ردحذف

إرسال تعليق