Uploaded avatar of iHiD

حان وقت التعمّق أكثر!

@iHiD
منذ ما يقرب من 4 سنوات
فيديو

حلّ أي تمرين على Exercism هو مجرد الخطوة الأولى. التعلّم الحقيقي يأتي بعد ذلك!

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

مقدمة

تختلف حلول تماريننا اختلافًا مذهلًا. أبسط تمرين «حقيقي» في معظم المسارات هو TwoFer. يبدو الحل النموذجي هكذا (هذا بلغة Ruby، لكنه مشابه في معظم اللغات):

module TwoFer
  def self.two_fer(name='you')
    "One for #{name}, one for me."
  end
end

لكن من بين آخر 500 حلّ نجحت في الاختبارات، كان أكثر من 350 منها فريدًا 😲 وحتى عندما توحّد أشياء مثل المسافات البيضاء وأسماء المتغيرات، سيظل أكثر من النصف حلولًا فريدة فعلًا.

وهذا ما يجعل استكشاف كيفية حلّ الجميع أمرًا شائقًا للغاية. لكنه أيضًا غير عملي على الإطلاق. هناك ملايين من الحلول على Exercism، وقراءتها جميعًا ستستغرق حرفيًا عمرًا كاملًا.

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

مثال

لنأخذ مثالًا لنوضّح ذلك عمليًا. في C# هناك طرق متعددة لعكس سلسلة نصية.

يمكنك استخدام الطريقة Array.Reverse():

var chars = input.ToCharArray();
Array.Reverse(chars);
return new string(chars);

أو استخدام أسلوب أقصر قائم على LINQ:

return new string(input.Reverse().ToArray());

أو استخدام StringBuilder:

var chars = new StringBuilder();
for (var i = input.Length - 1; i >= 0; i--)
{
    chars.Append(input[i]);
}
return chars.ToString();

أو حتى الذهاب إلى أسلوب أقل التزامًا بأسلوب اللغة قليلًا (لكنه أسرع!) واستخدام Span<T>:

Span<char> chars = stackalloc[input.Length];
for (var i = 0; i < input.Length; i++)
{
    chars[input.Length - 1 - i] = input[i];
}
return new string(chars);

نسمّي كل واحد من هذه أسلوبًا، ولكل منها مقال منفصل يشرحه. وتجمع صفحة Dig Deeper لهذا التمرين بينها، وتأتي أيضًا مع مقال عن الأداء يستكشف المقايضات.

👉🏾 ألقِ نظرة (ستحتاج إلى وضع التصفح المتخفي إن لم تكن قد حللت التمرين بعد)

لكن هناك المزيد!

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

شارك معنا

على مدى الأسابيع القليلة القادمة، ستبدأ برؤية تبويب Dig Deeper يظهر في التمارين في أنحاء الموقع.

إذا أردت المساهمة بأسلوب أو بمقال لتمرين، أو أخبرتنا عن فيديوهاتك لنضيفها، فتواصل مع jonathan@exercism.org وسيساعدك على البدء.

وأخيرًا، أخبرنا برأيك وانشر أفكارك وآراءك في منشور المنتدى!

30 أكتوبر، 2022 · هل وجدته مفيدًا؟