لغات برمجة مناسبة ومفيدة للأطفال

إذا كنت معلماً أو كان لديك طفل مهتم بالبرمجة، فقد يكون من المربك الانتقاء من ضمن العشرات من الخيارات المتاحة. لقد اخترنا خمس لغات (وبيئات) برمجة رائعة ستمنح الأطفال السبق في عالم تطوير البرامج.

اللغة ليست بنفس أهمية الدافع:

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

بمجرد أن يتعلم طفلك لغة البرمجة، يمكن نقل العديد من المفاهيم بسهولة إلى لغات أخرى (مع وجود اختلافات في البناء اللغوي)، لذلك لن تخطئ الاختيار طالما أن طفلك لديه الحماس للتعلم.

ومع ذلك، قد تكون بعض اللغات وبيئات البرمجة أكثر متعة من غيرها. لقد جمعنا بعضاً منها هنا. على الرغم من أن هذه ليست بأي حال من الأحوال قائمة شاملة أو نهائية، إلا أنك ستبدأ بداية رائعة بأي لغة أدناه.

Scratch:

سكراتش Scratch، مشروع تعليمي من معهد ماساتشوستس للتكنولوجيا، وهو لغة برمجة رائعة للأطفال لأنها مرئية للغاية وسهلة الاستخدام.

يمكن للأطفال سحب وإسقاط كتل من التعليمات البرمجية لإنشاء برامجهم. Scratch أيضاً شائعة جداً، لذلك هناك الكثير من الموارد المتاحة للأطفال للتعلم منها.

للبدء، قم بزيارة scratch.mit.edu في أي متصفح ويب حديث. إنه مجاني تماماً، ويمكن أن تكون المشاريع التي تم ترميزها عبر الإنترنت جزءاً من مجتمع ممتع مع الآخرين.

يمكنك أيضاً تنزيل محرر برمجة Scatch مستقل إذا كنت تفضل العمل دون اتصال بالإنترنت.

Swift Playgrounds:

Swift هي لغة جديدة نسبياً أنشأتها آبل Apple لتطوير تطبيقات iOS و ماك MacOS. إنها قوية بما يكفي للمطورين المحترفين، ولكنها أيضاً سهلة التعلم والاستخدام، مما يجعلها اختياراً جيداً للأطفال.

باستخدام بيئة البرمجة Swift و Xcode، يمكن للأطفال رؤية نتائج عملهم على الفور، وإذا شعروا بالراحة الكافية، فإن المعرفة التي يكتسبونها ستنطبق مباشرة على تطوير تطبيقات آيفون iPhone و آيباد iPad وساعات آبل Apple Watch وتلفاز آبل Apple TV.

للبدء، قم بتنزيل تطبيق Swift Playgrounds المجاني من آبل Apple، والمتوفر لكل من ماك Mac وآيباد iPad. إنها طريقة ممتعة لتعلم Swift.

Python:

اعتباراً من آب 2022، تحتل Python المرتبة الأولى باعتبارها لغة البرمجة الأكثر شيوعاً في العالم، وربما يكون هذا لسبب وجيه: إنها سهلة التعلم ومدعومة على نطاق واسع.

هذا يجعلها مثالية للأطفال الذين يرغبون في تعلم لغة مع مجموعة واسعة من التطبيقات العملية. يستخدم المبرمجون Python لتطوير الويب والألعاب والتعلم الآلي وغير ذلك الكثير، لذا فإن المهارات المكتسبة باستخدام Python ستترجم مباشرةً إلى مهارات وظيفية محتملة في المستقبل.

يمكنك بدء استخدام Python مجاناً على ويندوز Windows أو ماك Mac أو لينكس Linux من خلال موقع Python الرسمي على الويب أو من خلال البرامج التعليمية عبر الإنترنت التي يمكنك تشغيلها في متصفحك، مثل  Introduction to Pythonالتي يستضيفها Rasperry Pi.

Microsoft Small Basic:

صممت مايكروسوفت Microsoft لغة Small Basic للمساعدة في انتقال الأطفال من البرمجة القائمة على الكتل (مثل Scratch) إلى الترميز المستند إلى النص.

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

تعتمد على .NET، لذا يمكن نقل المهارات إلى Visual Basic. على الرغم من أن Small Basic تعمل من خلال تطبيق مخصص، فمن السهل مشاركة النتائج مع الآخرين عبر الويب.

تستضيف مايكروسوفت Microsoft البرامج التعليمية والموارد عبر الإنترنت، والأفضل من ذلك كله، أن Small Basic مجانية تماماً.

Pico-8 أو Solar2D (مع Lua):

Pico-8 من Lexaloffle Games هي جهاز لعب خيالي، مما يعني أنها بيئة برمجة قائمة بذاتها مصممة لتبدو وكأنها جهاز ألعاب 8 بت قديمة.

تستخدم لغة البرمجة النصية Lua. تعد Pico-8 رائعة للأطفال لأنها ممتعة في الاستخدام ولها منحنى تعليمي سهل. نظراً لأنها موجهة بشكل كبير إلى الألعاب، يمكن للأطفال رؤية برامجهم تنبض بالحياة بطريقة تفاعلية.

تبلغ تكلفة Pico-8  حوالي 15 دولاراً، ويمكنك تنزيلها لأنظمة ويندوز Windows و ماك Mac و لينكس Linux من موقع Lexaloffle على الويب.

أيضاً، إذا تعلمت Lua باستخدام Pico-8، فيمكنك تطبيق المعرفة على محركات الألعاب الأخرى مثل Solar2D، مما يسهل على الأطفال الغوص في تطوير لعبة الإنتاج بما يتجاوز قيود جهاز اللعب.

Solar2D هو مشروع مجاني مفتوح المصدر متاح لنظامي التشغيل ويندوز Windows و ماك Mac. استمتع، نتمنى لك ترميزاً سعيداً!

ما هي لغة البرمجة سكراتش Scratch؟

سكراتش Scratch هي مقدمة مرئية عن البرمجة من خلال السحب والإفلات. تحسّن البرمجة مهارات حل المشكلات، وتعزز التفكير التحليلي، وتعزز الإبداع.

لماذا يجب أن يتعلم الأطفال البرمجة؟

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

مرحلة الفكرة تتطلب التخطيط والإبداع. أما مرحلة التنفيذ فتتطلب فهم لغة البرمجة، والتجميع المنطقي للكود قطعة بقطعة، والتصحيح المنهجي والتحليلي للبرنامج.

هناك دائماً فكرة أو مشروع آخر يمكنك متابعته. ومثل معظم المهارات المكتسبة، كلما بدأت مبكراً كان ذلك أفضل.

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

إنها لغة برمجة عالية المستوى، لذا فإن إنجاز المهام بسرعة أمر سهل. غالباً ما تكون العملية بأكملها هي اسحب وإفلات، لذلك هناك فرصة ضئيلة لحدوث خطأ مطبعي يتسبب في انهيار البرنامج.

إنشاء حساب على منصة سكراتش:

Scratch عبارة عن منصة لإنشاء البرامج وكذلك لمشاركتها. للبدء، قم بزيارة منصة Scratch عبر الإنترنت وقم بالتسجيل للحصول على حساب جديد.

يتيح لك التسجيل تخزين مشاريعك عبر الإنترنت والعودة إليها لاحقاً. يعد البحث في كود المبرمجين الآخرين طريقة رائعة للتعلم أيضاً.

يتيح Scratch للمستخدمين المسجلين مشاركة مشاريعهم. لذلك من خلال التسجيل، يمكنك الوصول إلى جميع المشاريع المشتركة على النظام الأساسي.

هناك أكثر من 82 مليون مشروع يتقاسمها أكثر من 74 مليون مستخدم، مما يجعل المنصّة مصدراً مرجعياً قيماً.

عند تسجيل حساب جديد، سيُطلب منك إنشاء اسم مستخدم وكلمة مرور، وإكمال بعض الحقول الأخرى مثل عنوان البريد الإلكتروني.

تحتاج إلى التحقق من عنوان بريدك الإلكتروني لإكمال إنشاء حسابك. بمجرد اكتمال ذلك، يمكن لطفلك أن يبدأ رحلة البرمجة الخاصة به.

كيف تبدأ مع سكراتش:

تتميز برامج سكراتش Scratch بأحرف تسمى Sprites. تعمل البرامج على أساسها، مما يسمح لك بتحريك الكائنات، وإرفاق الأصوات بالإجراءات، وإنشاء فقاعات الكلام.

حتى تأخذ فكرة عن البرمجة باستخدام Scratch، دعنا نتصفح عملية إنشاء لعبة صغيرة في Scratch. ستبدو عملية طويلة ومعقدة على الورق، لكن طفلك سيبدأ سريعاً في الإبحار عبر العملية البديهية.

اختيار Sprite و Backdrop:

لبدء مشروع انقر فوق Create عنصر في شريط القائمة.

سيتم فتح مساحة العمل Scratch.

  1. يظهر الجانب الأيسر من الشاشة قائمة بكتل Blocks البرمجة.
  2. منطقة الشاشة الرئيسية هي المكان الذي تنشئ فيه برامجك من خلال دمج كتل البرمجة في إجراءات روتينية.
  3. الجزء العلوي الأيمن من الشاشة عبارة عن نافذة معاينة.
  4. يحتوي الجزء السفلي الأيمن من الشاشة على النقوش Spirates المتحركة والخلفيات المستخدمة في برنامجك.

تمت إضافة كائن افتراضي بالفعل إلى نافذة المعاينة ونافذة الكائن. لن نستخدمه، لذا انقر على أيقونة سلة المهملات لحذفه.

انقر فوق رمز القطة Cat الأزرق في الركن الأيمن السفلي من نافذة الكائن، وانقر فوق عنصر القائمة Choose a Sprite (عدسة مكبرة).

تظهر نافذة اختيار الكائن. انقر فوق الكائن الذي ترغب في استخدامه. اخترنا البطريق.

يظهر الكائن الذي تختاره في نافذة الكائن وفي نافذة المعاينة. انقر فوق رمز Landscape الأزرق في الجزء السفلي الأيمن من الشاشة، وانقر فوق عنصر القائمة Choose a Backdrop (عدسة مكبرة).

تظهر شاشة اختيار الخلفية. انقر فوق الخلفية التي ترغب في استخدامها. اخترنا صورة للقطب الشمالي. ستظهر نافذة المعاينة الكائن والخلفية.

إضافة كتل التعليمات البرمجية:

في نافذة المعاينة، اسحب الكائن sprite إلى موضع البداية. ضعه بالقرب من أسفل يسار الخلفية. يجب أن تبدو نافذة المعاينة مشابهة لما يلي:

على الجانب الأيسر من الشاشة، توجد أيقونات ملونة تشبه الدوائر أو النقاط الممتلئة. يؤدي تحديد أحد هذه التغييرات إلى تغيير فئة كتلة التعليمات البرمجية المعروضة. الفئات هي:

  • الحركة Motion: حركات الكائنات مثل الزوايا والموضع.
  • الشكل Looks: يتحكم في صور الكائن.
  • الصوت Sound: تشغيل الملفات الصوتية والمؤثرات.
  • الأحداث Events: التحكم بالأحداث.
  • التحكم Control: الشرطية والحلقات إلخ.
  • الحساسية Sensing: يسمح للكائنات بالتفاعل مع البيئة المحيطة.
  • العوامل Operators: العمليات الحسابية، المقارنات.
  • المتغيرات Variables: المتغير وقوائم الاستخدام والتخصيص.

تأكد من تحديد رمز النقطة الزرقاء Motion، واسحب كتلة الرمز Change Y by إلى منطقة الشاشة الرئيسية.

تقوم كتلة التعليمات البرمجية هذه بتحريك الكائن بمقدار 10 بكسل في المحور Y، وهو المحور الشاقولي. نظراً لأن الرقم 10 هو رقم موجب، فإن الموضع الجديد للكائن سيكون أعلى من موضعه القديم على الشاشة.

حدد رمز نقطة Control الصفراء، واسحب كتلة رمز Repeat إلى الشاشة الرئيسية. قم بإسقاطه فوق كتلة التعليمات البرمجية Change Y by.

يجب أن يلتف الرمز حول كتلة change. سيتم تكرار الكود الموجود داخل كتلة التكرار repeat بمقدار 10 مرات.

إذا قمت في أي وقت بسحب كتلة التعليمات البرمجية الخاطئة، فما عليك سوى النقر عليها ثم الضغط على مفتاح الحذف Delete.

كرر هذه العملية بحيث يكون لديك كتلة أخرى من التعليمات البرمجية Change Y by ملفوفة داخل كتلة كود أخرى Repeat.

إذا قمت بسحب كتلة التعليمات البرمجية هذه إلى أسفل كتلة التعليمات البرمجية الأولى، فسيتم النقر فوقهما معاً وتصبح كتلة رمز واحدة أكبر.

قم بتغيير القيم في مجموعات التعليمات البرمجية Change Y by إلى 15 و -15. ستعمل هذه المجموعة من الكتل البرمجية على تحريك الكائن لأعلى 10 مرات في خطوات 15 بكسل، ثم إلى الأسفل مرة أخرى في 10 خطوات من 15 بكسل.

سيؤدي هذا إلى جعل الكائن يعلو في الهواء ثم يسقط مرة أخرى.

انقر على رمز النقطة البرتقالية Variables، ثم انقر على الزر Make a Variable. يظهر مربع الحوار New Variable.

سنطلق على المتغير الجديد Score. انقر فوق الزر الأزرق OK.

اسحب كتلة التعليمات البرمجية Change My Variable by وقم بإرفاقها في الجزء السفلي من مجموعة كتل التعليمات البرمجية.

حدد score من القائمة المنسدلة في كتلة التعليمات البرمجية Change My Variable by.

من فئة Events الصفراء، اسحب كتلة الرمز When Space Key Pressed وقم بإسقاطها في الجزء العلوي من كتل التعليمات البرمجية المكدسة.

من فئة Sounds باللون الأرجواني، اسحب كتلة رمز Start Sound وحدد Chirp من القائمة المنسدلة. قم بإسقاطه أسفل كتلة الرمز When Space Key Pressed.

سيتم وضعه بين كتلتي الكود When Space Key Pressed و Start Sound.

ابدأ مجموعة جديدة من كتل التعليمات البرمجية عن طريق سحب كتلة التعليمات البرمجية Go to X Y من فئة Motion الزرقاء، وكتلة التعليمات البرمجية Set My Variable To من فئة Variables البرتقالية، وانقر عليهما معاً.

تحتوي كتلة الرمز Go to X Y على الموضع الحالي للكائن الذي تم تحميله بالفعل فيه. عندما تبدأ اللعبة، سيتم نقل كائن البطريق إلى هذا الموضع.

لبدء اللعبة، سنضغط على أيقونة العلم الأخضر. لتحقيق شيء ما عندما نقوم بالنقر فوقه، اسحب كتلة التعليمات البرمجية When Green Flag Clicked وضعها في الجزء العلوي من مجموعة الكتل البرمجية الجديدة.

يجب أن تبدو منطقة العمل الآن كما يلي:

إذا نقرت على أيقونة العلم الأخضر وضغطت على مفتاح Space، يجب أن يقفز البطريق ويغرد ويعود إلى الأرض.

إضافة كائن Sprite آخر:

انقر فوق الرمز الأزرق على شكل قطة مرة أخرى واختر كائناً آخر. اخترنا البيضة. تتم إضافة البيضة إلى نافذة الكائن وإلى نافذة المعاينة.

اسحب البيضة حتى تصل إلى نهاية الجانب الأيمن السفلي من نافذة المعاينة، كما في الصورة.

سوف يقفز بطريقنا فوق البيض المنزلق، لذلك دعونا نعطيه فرصة للقتال. انقر فوق البيضة في نافذة الكائن واضبط حجمها على 65.

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

لجعل كائن البيضة يفعل شيئاً ما، حدده في نافذة الكائن. اسحب مجموعة التعليمات البرمجية Go to X Y في منطقة العمل الرئيسية. تم إدخال موضع البيضة بالفعل.

في نافذة المعاينة، اسحب البيضة إلى أقصى الزاوية اليسرى السفلية. اسحب مقطع الكود Glide Secs to X Y إلى منطقة العمل وانقر فوقه في الجزء السفلي من مجموعة التعليمات البرمجية Go to X Y.

اسحب كتلة كود التكرار Forever ولفها حول كتلتَي الكود الآخرين. قم بتغيير قيمة 1 ثانية في مجموعة التعليمات البرمجية Glide Secs to X Y إلى ثانيتين.

اسحب كتلة التعليمات البرمجية When Green Flag Clicked وضعها فوق مجموعة الكتل البرمجية الصغيرة. يجب أن تبدو الأشياء في نهاية العملية كالتالي:

إذا قمت بالنقر فوق رمز العلم الأخضر وقمت بتشغيل اللعبة ، فيجب أن ينزلق البيض من اليمين إلى اليسار.

إذا نقرت على زر المسافة في الوقت المناسب، فإن البطريق سيقفز فوق البيضة. لجعل اللعبة تحدياً أصعب، نحتاج إلى تطبيق عقوبة للقفزات السيئة والاصطدامات بالبيض.

إضافة عقوبة:

قم بتحديد كائن البيض في نافذة الكائن، اسحب كتلة التعليمات البرمجية Wait Until من فئة Control البرتقالية الخاصة بمجموعات الكود.

ثم اسحب كتلة التعليمات البرمجية Stop All أيضاً. قم بقصها مع كتلة التعليمات البرمجية Stop All في الأسفل.

من فئة Sensing، اسحب كتلة رمز Touching وأفلتها في كتلة الكود Wait Until. أسقطه على الشكل السداسي الممتد المملوء ببرتقالي داكن.

حدد اسم كائن البطريق في القائمة المنسدلة في كتلة رمز Touching. الاسم الافتراضي هو Penguin 2.

أخيراً، اسحب كتلة التعليمات البرمجية When Green Flag Clicked وضعها في أعلى مجموعة الكتل البرمجية الجديدة. هذان هما كتلتا الكود لكائن البيض:

كتل الكود التي أضفناها للتو تكتشف متى تلمس البيضة البطريق. انقر فوق رمز العلم الأخضر لبدء اللعبة. ستتوقف اللعبة عندما تضغط على أيقونة الدائرة الحمراء أو عندما تلمس بيضة البطريق.

لغة Scratch سهلة:

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

حيث أن الحلقات المتكررة والإحداثيات الديكارتية واكتشاف الاصطدام والمتغيرات المتزايدة كلها متضمنة في هذا المثال الصغير.

إذا كان لديك أطفال في الفئة العمرية 8 سنوات فما فوق، فإن Scratch هي طريقة رائعة لتعريفهم بالتفكير المنضبط، بينما يعتقدون أنهم يلعبون.

مقالات قد تعجبك:

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

باقة من أفضل ألعاب جوجل المسلية الشهيرة

تعمل جوجل Google على جعل صفحة البحث الرئيسية الخاصة بها محدثة مع حيل تتغير كل فترة.

من حين لآخر، تكون هذه الحيل لعبة فعلية يمكنك لعبها. تتم أرشفة كل هذه الألعاب ويمكن لعبها على الصفحة الرئيسية.

تعد هذه الألعاب البسيطة المستندة إلى الويب مثالية لتمضية الوقت دون الحاجة إلى تنزيل أي شيء. قمنا بتجميع 10 من الألعاب المفضلة لدينا لتتمكن من جربتها. استمتع!

كيفية اللعب: فقط ادخل إلى الرابط للذهاب إلى اللعبة. بمجرد أن تكون هناك، انقر أو اضغط على زر التشغيل لبدء اللعبة.

لعبة البيسبول Baseball على جوجل:

كانت هناك العديد من الألعاب الرياضية، ولكن اللعبة التي قضينا معظم وقتنا بها كانت لعبة البيسبول!

لعبة باك مان Pac-Man على جوجل:

الجميع يعرف باك مان Pac-Man. إنها لعبة كلاسيكية. ممتعة تماماً كما كان هو الحال دائماً!

لعبة Quick, Draw على جوجل!

لعبة Quick, Draw رائعة جداً، حيث تحتاج شبكة جوجل Google العصبونية لـ 20 ثانية فقط لتخمين شيء ما تحاول رسمه.

لعبة Scoville على جوجل:

تدور لعبة Scoville حول محاولة هزيمة الفليفلة الحارة عن طريق الآيس كريم.

لعبة كرة السلة على جوجل:

لعبة كرة السلة لعبة رياضية كلاسيكية أخرى. ستحاول تحقيق أكبر عدد من الرميات الناجحة في 24 ثانية.

لعبة الهالوين Halloween على جوجل:

هذه اللعبة الممتعة من Halloween 2016 تجعلك تقوم باستخدام عصا حول قط لهزيمة الأشباح.

لعبة Garden Gnome على جوجل:

الهدف من لعبة Garden Gnome هو إطلاق شخصية Gnome بقدر ما تستطيع باستخدام مقلاع.

لعبة الأرنب المبرمج Coding Rabbit على جوجل:

Coding Rabbit هي لعبة رائعة لتعريف أطفالك بالبرمجة. الهدف هو استخدام مفاهيم الترميز الأساسية القائمة على الكتل Blocks لمساعدة الأرنب على الجزرة.

لعبة الكريكيت Cricket على جوجل:

العب لعبة الكريكيت مع الحلزونات! تماماً مثل لعبة البيسبول، هذه اللعبة مسببة للإدمان بشكل كبير.

لعبة مكعب روبيك على جوجل:

أخيراً، هناك لعبة مكعب روبيك الكلاسيكي. كم ستغترق من الوقت لحل اللغز؟ حظاً سعيداً واستمتع بوقتك!

مقالات قد تعجبك:

كيفية إيقاف إشعارات انضمام الأصدقاء إلى تطبيق تيليجرام
ما هو وضع سطح المكتب DeX من سامسونج؟
كيفية إجبار هاتف أندرويد على إعادة التشغيل عند عدم استجابته
كيفية أخذ لقطات شاشة كاملة (سكرين شوت) لصفحة في متصفح إيدج
كيفية قفل تطبيق تيليجرام برمز مرور دون الحاجة لتطبيقات خارجية

ما هي عملية ضغط الملفات ؟ وكيف تتم ؟

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

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

فكيف يتمّ ضغط الملفات ؟

تتضمن الإجابة على هذا السؤال تفسير عمليات رياضية معقدة للغاية، وهي أكثر مما يمكن أن نغطيه في هذه المقالة، لكن يمكنك فهم الأساسيات دون الحاجة إلى التعمّق بالعمليات الرياضية والحسابية التي تستخدمها خوارزميات ضغط الملفات ..

تعتمد المكتبات الأكثر شيوعاً لضغط النص على خوارزميتين ، وتستخدمان معاً في نفس الوقت للحصول على نسب ضغط عالية جداً، هما  LZ77 ( Lempel-Ziv Coding )  و Huffman Coding.

Huffman Coding (خوارزميّة هوفمان )هي خوارزمية معقدة للغاية، ولن نغطي كافة التفاصيل المتعلقة بها هنا… لكن بشكل أساسي ، تستخدم هذه الخوارزمية الرياضيات لترميز الأحرف الفردية برموز ثنائية أقصر، بالتالي تتقلص أحجام الملفات بعد هذه العملية.

من ناحية أخرى ، LZ77 خوارزمية بسيطة نسبياً، حيث تسعى لاستبدال الكلمات المكررة بمفتاح أصغر يمثل الكلمة.

لنأخذ هذا النص كمثال:خوارزمية LZ77 تقرأ النص، وتحدد الكلمات المكررة مثل SyrianTech ، فتستبدلها كما يلي:بعد ذلك، عندما تتمّ قراءة النص، سيتمّ استبدال كل (S) ب SyrianTech ، أي يظهر لنا النص الأصلي كما هو دون ضياع أو فقدان في البيانات .

لكن حقيقةً خوارزمية LZ77 لا تستخدم قائمة مفاتيح للدلالة على الكلمات ، وإنما  تستبدل كلّ ظهور مكرّر لكلمة في النص ( في مثالنا هنا SyrianTech) بمؤشر مرجعي في الذاكرة يعود إلى الكلمة الأولى ، فتقرأ SyrianTech بدلاً من (S) :لكي تفهم آلية عمل الخوارزميّة بشكل أفضل ننصحك بمتابعة هذا الفيديو التعليمي :

لا تقوم الخوارزميّة بضغط الكلمات المكررة و حسب بل أيضاً جزء من الكلمة قد يتكرّر في كلمة أخرى  , مثلاً، سيتم ضغط كلمة The حتى ضمن كلمات أخرى مثل  There  و Their و Then …

عند وجود عدد كبير من الكلمات المكررة، سنحصل على نسبة عالية من الضغط ، فمثلاً إذا كررنا كلمة SyrianTech مئة مرة، سيكون حجم النص الأساسي 3 كيلوبايت، وعند ضغط الملف، سيأخذ حجماً يصل إلى 158 بايت فقط، فتكون نسبة الضغط 95 % .

لكن هذه النسبة لا تنطبق حقيقةً على النصوص العاديّة إذ أننا نفترض هنا أنّ النص يحوي كلمة واحدة فقط مكررة أكثر من مرّة , لكن بشكل عام عند ضغط الملفات النصية تكون نسبة الضغط بين 30-40% وذلك باستخدام إحدى تنسيقات الضغط مثل ZIP للملف النصي ..

تُطبّق خوارزمية LZ77 على جميع البيانات الثنائية Binary Data, وليس فقط على النص..

و على الرغم من أن ضغط النص بهذه الطريقة يكون أسهل عادة بسبب الكلمات المتكررة التي تستخدمها معظم اللغات ، فقط تكون لغة مثل اللغة الصينية أصعب قليلا لتطبيق الخوارزميّة  …

كيف يتم ضغط الصور والفيديو؟

يتم ضغط الفيديو والصور بشكل مختلف تماما، على عكس النص حيث يمكنك الحصول على ما يسمى Lossless Compression أيّ ( ضغط بدون فقدان للبيانات) …

عند التعامل مع الصور سنحصل على ما يسمى Lossy Compression بمعنى (الضغط مع خسارة ) ، أيّ مع فقدان لبعض البيانات الأصلية ، بحيث أنه كلما زاد ضغط الصورة ، زادت كميّة البيانات المفقودة .

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

ذلك لأننا قمنا بتصدير الصورة كـ JPEG في كل مرة بدقة (جودة الصورة Quality) 0 % , ما يعني أننا قمنا بضغط ملف الصورة وتقليل حجمه ,

الصورة التالية هي الصورة ذاتها بصيغة JPEG ولكن بدقة  50% ، ونلاحظ أنها ً لا تختلف كثيراً عن الصورة الأصل إذا لم تدقق بها عن قرب ! ..الصورة بصيغة PNG كانت بحجم 200 كيلوبايت، أما هذه الصورة ذات الصيغة JPEG بدقة (جودة ) 50 % من دقة الصورة الأصلية فهي بحجم 28 كيلوبايت فقط .

إذاً، كيف يتم توفير كل هذه المساحة؟ خوارزمية JPEG هي بالفعل إنجاز هندسي…

معظم الصور تُخزن كقائمة من الأرقام، وكل رقم يمثل بكسل واحد (وحدة الصورة ), تقوم الخوارزمية  JPEG بتخزين الصور باستخدام ما يسمى Discrete Cosine Transform (التحويل التجيبي المتقطع ) و هو عبارة عن مجموعة موجات جيبية  Sine Waves تمت إضافتها مع بعضها بترددات مختلفة .

تقدم هذه الخوارزمية 64 معادلة ، لكن لا تستخدم جميعها ، كما يحصل في الفوتوشوب وغيره من تطبيقات تحرير الصور (اختيار عدد المعادلات التي يجب استخدامها)، ثم تستخدم هذه التطبيقات ترميز Huffman لتقليل حجم الملف أكثر.

وهذا يعطي صور بصيغة JPEG بنسبة ضغط عالية جداً، حيث بإمكانها تقليل حجم صورة يمكن أن يكون حجمها عدة ميغابايتات إلى بضع كيلوبايتات فقط  ..

يمكنك الإطلاع على هذا الشرح لمعرفة المزيد عن التحويل التجيبي المتقطع وعمل خوارزميّة JPEG :

لكن إن قمت بتكرار ضغط الصورة بهذه الطريقة أكثر من مرة قد تنتج لديك صورة كهذه :إذاً كمية قليلة من عملية الضغط باستخدام JPEG يمكن أن يكون لها تأثير كبير على حجم الملف، وهذا ما يجعل خوارزمية JPEG مفيدة جداً لضغط الصور في مواقع الويب, حيث يتم ضغط معظم الصور التي تراها على الانترنت لتقليل زمن تحميل هذه الصور، خصوصاً لمستخدمي أجهزة الهاتف المحمول و الذين يملكون اتصال بيانات ضعيف.

ضغط الفيديو :

يعمل الفيديو بطريقة مختلفة قليلاً عن الصور ، قد تعتقد أن ضغط الفيديو يتم عن طريق ضغط كل إطار من الفيديو باستخدام خوارزميّة  JPEG ، بالتأكيد يتم ذلك، ولكن بطريقة أفضل ..

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

Interframe Compression هو السبب الرئيسي في وجود التلفاز الرقمي اليوم والفيديو على الانترنت، فبدونه ستكون مقاطع الفيديو بحجم كبير جداً يصل إلى مئات الجيجابايت، وهذا أكثر مما كان عليه متوسط حجم محركات الأقراص الثابتة عام 2005 عند إطلاق موقع اليوتيوب !!.

نلاحظ أن الصور المتحركة GIF لا تقوم بالضغط باستخدام هذه العملية، وهذا ما يفسر أنها غالباً ما تكون قصيرة وصغيرة، و يبقى حجمها كبير جداً .

هناك ما يجب أخذه بعين الاعتبار حول الفيديو، ألا وهو معدل البت Bit-rate (أي مقدار البيانات المسموح به في كل ثانية )

فإذا كان معدل البت 200 كيلوبت/ثانية ، على سبيل المثال ، عندها سيبدو مقطع الفيديو رديئاً جداً، حيث ترتفع الجودة مع ارتفاع معدل البت ، ولكن في حال وصل إلى أكثر من ميغابايت Megabyte في الثانية، ستحصل أيضاً على مردود سيء !..

لنأخذ على سبيل المثال إطار مكبر من فيديو لـسمكة قنديل البحر، الإطار على اليسار له معدل بت  3 ميغابت/ثانية ، والذي على اليمين بمعدل  100 ميغابت/ثانية :نلاحظ هنا زيادة حجم الملف 30 ضعف، ولكن لا نلاحظ زيادة كبيرة في الجودة !….

بشكل عام، يتراوح معدل البت لمقاطع فيديو اليوتيوب بين 2 و 10 ميغابت/ثانية وذلك يعتمد أيضاً على سرعة الاتصال لديك..

ضغط الصوت:

عملية ضغط الصوت مشابهة بشكل كبير لعملية ضغط النص والصور، فكما أن خوارزمية JPEG تحذف التفاصيل التي لا تراها في الصورة، فإن ضغط الصوت يتمّ بنفس الطريقة (الضغط مع فقدان بعض البيانات ), فأنت لا تحتاج مثلاً لسماع صرير الريشة على أوتار الغيتار إذا كان الصوت الأساسي للغيتار أعلى من هذا الصرير بكثير !.

الملفات الصوتيّة ذات الصيغة mp3 تستخدم أيضاً معدل البت ، ويكون المعدل المنخفض بين 48 و 96 كيلوبت/ثانية ( kb/s  )، والمعدل الجيد جداً يصل إلى  128 إلى 240 كيلوبت/ثانية( kb/s )،

في حين أن المعدل المرتفع يصل إلى 320 كيلوبت/ثانية ،  لكنّك على الأرجح لن تلاحظ  هذا الاختلاف إلا باستخدام مكبرات جيدة (أو سماعات أذن )…

هناك أيضاً ترميزات أخرى لضغط الصوت دون فقدان البيانات، كـ ترميز FLAC  , الذي يستخدم ترميز LZ77 لضغط الملفات الصوتية دون ضياع للبيانات …

مقالات قد تعجبك :

ما هو ملف DAT , وكيف يمكن فتحه؟
ما هي ملفات XML؟ وكيف يمكن فتحها؟
أفضل مواقع تعديل الصور أون لاين دون برامج
أفضل برامج تشغيل الموسيقى على أجهزة أندرويد
ما هي ملفات PDF؟ وكيف يمكن فتحها ؟