يتم استخدام التدريبات في الرياضة لإتقان حركات معينة. في كرة السلة ، يتقدم اللاعبون على رميات حرة وثلاث رميات ومراوغة. في البرمجة ، توفر التدريبات طريقة للانخراط في ممارسة متعمدة لتطوير المهارات في ميزات لغة محددة أو واجهة برمجة التطبيقات أو التعابير.
يتم استخدام المشاجرات في الرياضة لتقليد ظروف وتعقيد اللعبة من أجل دمج المهارات المدمجة في التدريبات وتطوير العمل الجماعي. تكمل التدريبات ممارسات المشاجرة الأكثر تعقيدًا مثل Ruby Koans أو Ruby Quiz أو العمل في مشروع مفتوح المصدر. لو كان علينا استخدام تعبير ياباني ، يمكن أيضًا التفكير في التدريبات على أنها "Kihon" ، وهي مقدمة أبسط لـ "Kata". تدريبات تفتقر إلى تعقيد المشروع الكامل. يمكن تنفيذها بمفردها أو مع الأصدقاء.
تركز التحديات في تدريبات الياقوت على طريقة محددة. تتكون الإجابات عادة من سطر واحد. هدفك هو إكمال الحفر بسهولة وفرح ، دون استشارة أي وثائق خارجية. في البداية ، من المرجح أن تجد هذا النوع من الممارسة ليس سهلاً ولا بهيج. رمز على. تدرب لبضعة أيام حتى تصبح معرفتك بهذه الأساليب تلقائيًا. إن القيام بذلك سيجعل البرمجة اليومية أكثر متعة من خلال تحرير عقلك للتركيز على التعقيدات ذات القيمة العليا ذات القيمة العليا من بناء جملة اللغة.
$ gem install ruby_drills
$ ruby_drills
تدريبات تعمل في سطر الأوامر. تجيب على الأسئلة في التدريبات باستخدام REPL. هذه الممارسة تستفيد من إعدادك للتطوير في REPL ، وهي تقنية مفيدة لتجربة ميزات اللغة أو الخوارزميات ومكمل رائع لـ TDD.
ابدأ باختيار تدريبات متوفرة من القائمة. تحتوي تدريبات المصفوفة والتطوير حاليًا على معظم المحتوى ، لذا ابدأ بأحد هؤلاء!
قد تتكون جلسة حفر لطريقة Enumerable#zip ما يلي:
We have two arrays:
a: [4, 5, 6]
b: [7, 8, 9]
Use a method from the Enumerable mixin that will take one element from
a new array and merge the corresponding elements from a and b to yield
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]:
>> c = [1,2,3]
=> [1, 2, 3]
not yet...
>> c.zip(a, b)
=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
!!! WIN !!!
How does your answer compare to the reference solution?
[1,2,3].zip(@a, @b)
Press any key to continue:
أسئلة حول تدريبات الياقوت؟ أفكار حول كيفية التدرب؟ توجه إلى مجموعة Google.
بينما تتفاعل مع تدريبات Ruby ، يتم حفظ إجاباتك في واجهة برمجة تطبيقات جامع الحفر عن بعد تستضيفها العقول المختبرة. لا يتم تضمين معلومات التعريف الشخصية في هذه البيانات: في هذا الوقت ، نحن مهتمون بأنماط الممارسة والإحصاءات الشاملة ، وليس ملفات تعريف المستخدم الفردية. تبدو بيانات النشاط مثل:
{
"timestamp" : "May 5, 2013 12:03:51 AM CST",
"result" : "pass",
"input" : "@numbers.partition{|x | x.even? }",
"sessionId" : "2217-47e8-b80a-68b81c980c32",
"drill" : "PartitionDrill",
"type" : "attempt",
"reference" : "@numbers.partition {|x| x.even? }"
}
نحن مهتمون بأسئلة مثل:
ستساعدنا هذه البيانات على تطوير تجربة Ruby Drills. قد يشكل هذا أيضًا أساس تجربة أكثر تخصيصًا ، مما يتيح لك مراجعة تقدمك ومقارنة جلسات التدريب الخاصة بك مع الآخرين. المزيد عن هذا ليأتي ونحن نحلل البيانات التي تم جمعها ومشاركة النتائج مع المجتمع.
في نهاية المطاف ، نود أن نعرف ما إذا كانت الحفر والممارسة في Ruby ولغات البرمجة الأخرى تساعدنا على حل تحديات البرمجة الأكثر تعقيدًا. يوجد حاليًا القليل من البيانات المتاحة للباحثين للمساعدة في الإجابة على هذا السؤال علمياً. نأمل أن توفر البيانات التي تم جمعها في تدريبات الياقوت قطعة من هذا اللغز.
يتكون كل تدريبات من أربع طرق:
setup : تهيئة متغيرات المثيل المستخدمة في التدريبات ، بما في ذلك @hints ، مجموعة من التلميحات التي يمكنها توجيه المستخدم نحو الإجابة.
show : يضع سلسلة تصف الحفر.
reference : توفير حل مرجعي كرمز روبي صالح في نموذج السلسلة. سيتم تقييم هذا لتحديد ما إذا كان ينبغي التحقق من صحة مدخلات المستخدم.
valid?(input) : وظيفة التحقق التي ترجع صحيحًا أو خطأ. تستخدم لمعرفة ما إذا كان إدخال المستخدم الذي يتطابق مع الحل المرجعي يفي بالقيود الأخرى.
من السهل المشاركة من خلال إنشاء تدريبات جديدة. يرجى التحقق من قائمة المشكلات على Github للعثور على شيء للقيام به.
إذا كنت جديدًا على جيثب:
git checkout -b my-new-feature )git commit -am 'Add some feature' )git push origin my-new-featureشكرًا للمساهمين ولهؤلاء الأفراد المتميزين على جعل التدريبات الياقوت ممكنة:
تم ترخيص Ruby Drills بموجب ترخيص Apache ، الإصدار 2.0. راجع الترخيص المرفق.