
Paroxython هي مجموعة من أدوات سطر الأوامر التي تضع علامة وتصفية بواسطة الخوارزميات الميزات الخاصة بك مجموعتك من تمارين برمجة Python.
أنت مدرس ، مسؤول عن دورة البرمجة التمهيدية في مؤسسة تعليمية. على مر السنين ، قمت بتجميع العديد من المبرمجات والمقتطفات التي قد تهم طلابك.
أو ، كمطور متمرس ، ترغب في مشاركة معرفتك من خلال مساعدة أحد أفراد أسرته على تعلم كيفية الترميز. يؤدي البحث المؤسس عن المواد التربوية إلى كمية هائلة من مواقع الويب والمستودعات المحشوة ببرامج Python من مختلف المستويات (على سبيل المثال ، 1 ، 2 ، 3 ، 4 ، 5 ، 6 ، وأكثر من ذلك بكثير من Python الرائعة في التعليم).
على أي حال ، فإن رموز مصدر Python التي جمعتها عادة ما تكون عديدة (مئات أو حتى الآلاف) ، بحجم معقول (أي شيء أقل من 100 سطر من الكود) ، والتعليم في الطبيعة (على سبيل المثال ، قصاصات ، أمثلة ، اختبارات ، حلول تمرين ، خوارزميات كلاسيكية). تظل مفاهيم البرمجة التي تخطط لتدريسها منخفضة نسبيًا (على سبيل المثال ، وحلقات متداخلة ، وأنماط التراكم ، والوظائف العودية الذيل ، إلخ).
إذا كان كل هذا يبدو مألوفًا ، فاستمر في قراءتي.
يهدف paroxython إلى مساعدتك في الاختيار ، من مجموعتك ، البرنامج الذي يناسب احتياجاتك. على سبيل المثال ، سوف يجيب بكل سرور على الأسئلة التالية:
- كيف يمكن توضيح هذا المفهوم؟
- ما هي المشكلات التي تستخدم نفس الخوارزمية وهياكل البيانات مثل هذا؟
- ما هي المهمة المنزلية التي يجب أن أعطيها طلابي حتى يتمكنوا من ممارسة محتوى الدرس الأخير؟
علاوة على ذلك ، نظرًا لأن paroxython يعرف ما يعرفه صفك ، يمكن أن يوصي بالبرنامج المناسب في الوقت المناسب:
- ما الذي يجعل تمرين مراجعة جيد؟
- ما هي التمارين التي يمكنني تقديمها في هذا الامتحان؟
- ما هي تكلفة التعلم الحالية لهذا المثال؟
على المدى الطويل ، قد يرشدك الباروكسيثون وتجعلك بطريقة ما تعيد التفكير في مخطط الدورة التدريبية:
- ما هي المتطلبات المسبقة لمفهوم المهمة؟
- هل لدي ما يكفي من المواد لتقديم الروتين الفرعي قبل أن أتحدث عن الشرطية والحلقات؟
- من بين الحلقات ، والتي يجب أن تأتي أولاً: الأقوى (
while) ، أو الأكثر فائدة (for)؟- كيف تهيئة منطقيا هذه حفنة من الأنماط التكرارية المعتادة؟
- ما هي الأساسيات ، بالضبط؟
جميع القضايا التي غير المؤلف رأيه منذ أن بدأ العمل في هذا المشروع!
في عالم مثالي ، يمكن أن يضع الباروكسيثون حداً لأكثر الحروب الدينية دموية ، بحجج عقلانية تعتمد على البيانات:
- الأب ، هل هي خطيئة للخروج مبكرًا؟
- هل يجب أن يستخدم البايت الحقيقي قناعًا؟

يبدأ paroxython من مجلد معين من البرامج . يتم تحليل محتوياتها ، وجميع الميزات التي تلبي المواصفات المقدمة ترتبط وترتبط بامتداداتها (على سبيل المثال ، "assignment_lhs_identifier:a": 4, 6, 18 أو "loop_with_late_exit:while": 3-7, 20-29 ).
هذه الملصقات تشكل المعرفة المنتشرة فقط. والخطوة التالية هي تعيينهم على تصنيف مصمم مع وضع قيود هرمية أساسية في الاعتبار (على سبيل المثال ، حقيقة أن إدخال مفهوم الخروج المبكر يجب أن يأتي بعد مفهوم الحلقة ، والذي يتطلب في حد ذاته تدفق التحكم ، من خلال " تدفق "flow/loop/exit/early" ).

مقتطف من التصنيف المتولد من الخوارزميات - بيثون.
انقر للقفز إلى نسخته الديناميكية الكاملة في دليل المستخدم.
ثم يتم استمرار كل شيء في قاعدة بيانات العلامات ، والتي يمكن ترشيحها لاحقًا من خلال خط أنابيب من الأوامر ، على سبيل المثال:
والنتيجة هي قائمة توصيات البرنامج المطلوبة بزيادة تكلفة التعلم.
لنفترض أن دليل programs يحتوي على هذه البرامج البسيطة.
أولاً ، بناء قاعدة بيانات العلامة هذه:
> paroxython collect programs
Labelling 21 programs.
Mapping taxonomy on 21 programs.
Writing programs_db.json.ثم قم بتصفيةه من خلال خط الأنابيب هذا:
> paroxython recommend programs
Processing 5 commands on 21 programs.
19 programs remaining after operation 1 (impart).
18 programs remaining after operation 2 (exclude).
12 programs remaining after operation 3 (exclude).
10 programs remaining after operation 4 (include).
10 programs remaining after operation 5 (hide).
Dumped: programs_recommendations.md.et Voilà ، تقرير التوصية الخاص بك!
الكثير من المفاجأة لا أحد:
python -m pip install paroxython
يجب على الأمر التالي طباعة رسالة مساعدة وخروج:
paroxython --help
إذا كنت تستخدم Jupyter Notebook/Lab ، فقد قمت أيضًا بتثبيت أمر سحري يسمى. تحميله مثل هذا:
% load_ext paroxython هذا يجب أن يطبع "paroxython 0.7.0 loaded." . قم بتشغيله على خلية من كود بيثون:
% % paroxython # Lines
def fibonacci ( n ): # 2
result = [] # 3
( a , b ) = ( 0 , 1 ) # 4
while a < n : # 5
result . append ( a ) # 6
( a , b ) = ( b , a + b ) # 7
return result # 8| تصنيف | خطوط |
|---|---|
call/subroutine/method/sequence/list/append | 6 |
condition/inequality | 5 |
def/subroutine/function/impure | 2-8 |
def/subroutine/parameter/arg | 2 |
flow/loop/exit/late | 5-7 |
flow/loop/while | 5-7 |
meta/count/program/sloc/8 | 2-8 |
meta/count/subroutine/sloc/7 | 2-8 |
meta/count/variety/3 | 2-8 |
meta/program | 2-8 |
operator/arithmetic/addition | 7 |
style/procedural | 2-8 |
type/number/integer/literal | 4 |
type/number/integer/literal/zero | 4 |
type/sequence/list | 6 |
type/sequence/list/literal/empty | 3 |
type/sequence/tuple/literal | 4 ، 4 ، 7 ، 7 |
var/assignment/explicit/parallel | 4 |
var/assignment/explicit/parallel/slide | 7 |
var/assignment/explicit/single | 3 |
var/assignment/implicit/parameter | 2 |
var/scope/local | 2-8 ، 2-8 ، 2-8 ، 2-8 |
كما ترون ، في هذا البرنامج ، يحدد الباروكسيثون من بين أمور أخرى:
style/procedural ) ؛def/subroutine/function/impure ) ؛while ( flow/loop/while ) مع مخرج متأخر ( flow/loop/exit/late ) ؛type/sequence/list/literal/empty ومكالمة call/subroutine/method/sequence/list/append ) ؛var/assignment/explicit/parallel ). لاحظ أننا نميز بين الواجبات الصريحة (مع = ) وضمن (المعلمات ومتغيرات التكرار) ؛var/assignment/explicit/parallel/slide ). إذا كانت الطائفة فريدة من نوعها بالنسبة لنا ، فإن النمط نفسه يحدث في عدد من البرامج: تطبيقات تسلسل C-finite مع C أكبر من 1 ، وأكبر مقسوم مشترك ، و Quicksort ، إلخ.var/scope/local ) ؛meta/count/variety/3 ) ، اعتمادًا على عدد الخطوط والميزات والميزات المتميزة. Magic Command %%paroxython (المقابلة tag المجموعة الفرعية) فقط خدش سطح النظام. كما هو موضح من قبل ، لتقدير تكلفة التعلم للميزات والحصول على توصيات قابلة للتنفيذ ، ستحتاج أولاً إلى إنشاء قاعدة بيانات العلامات باستخدام collect ، ثم اتصل على خط recommend لك.
على الرغم من أن هذا لا يزال يعمل في مجال التقدم ، إلا أنه ينبغي بالفعل توثيق الباروكسيثون بشكل جيد إلى حد ما:
أخيرًا ، يجب أن تساعد بطارية الأمثلة وتغطية الاختبار الشاملة في الإجابة على أي سؤال متبقي.