سؤال

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

ومع ذلك، كيف يمكن توسيع نطاق البرمجة المتعلمة إلى درجة أكبر؟بشكل عام، لا تزال البرمجة القراءة والكتابة مجرد نص.نص قابل للقراءة بشريًا للغاية، بالطبع، لكنه لا يزال نصًا، وبالتالي، من الصعب متابعة الأنظمة الكبيرة.على سبيل المثال، قمت بإعادة صياغة أجزاء كبيرة من برنامج التحويل البرمجي الخاص بي لاستخدام >> وبعض السحر لربط خطوات الترجمة معًا، لأن بعض "x.register_follower(y);y.register_follower(z);y.register_follower(a);..." أصبح غير عملي حقًا، وتغيير ذلك إلى x >> y >> z >> a جعله أفضل قليلاً، على الرغم من أن هذا في نقطة الانهيار أيضًا.

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

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

-- تيتا.

هل كانت مفيدة؟

المحلول

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

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

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

نصائح أخرى

وكتاب "بناء جسديا التقديم" (pbrt.org) هو أفضل مثال على نطاق واسع البرمجة القراءة والكتابة التي أنا على علم. الكتاب يطبق نظام تقديم كاملة، ويتم إنشاء كل من نص الكتاب ورمز raytracer من نفس "مصدر".

في الواقع، لقد وجدت أن مجرد استخدام نظام مثل Doxygen وحفر حقا في والاستفادة من كل معالمه أفضل من برمجة "القراءة والكتابة" كاملة، باستثناء أشياء من هذا القبيل، أي الكتب المدرسية والتعليمية المواد.

لقد قمت ببعض البرمجة المتعلمة باستخدام WEB منذ حوالي 15 عامًا.لقد حاولت مؤخرًا استخراج التعليمات البرمجية من موقع wiki وإنشاء وثائق من بيئة Squeak Smalltalk.

يمكن التعامل مع الجزء من الأسفل إلى الأعلى بشكل جيد نسبيًا عن طريق إنشاء مستندات من أطر عمل TDD/BDD، لكن LP يركز على شرح الكود للقارئ.

هناك عدد قليل من القضايا:

  • تختلف القصة المراد سردها باختلاف أصحاب المصلحة/القراء؛
  • هيكل المشروع في معظم البيئات ليس هو الهيكل المطلوب لسرد القصص؛
  • دعم التحسين/الإفصاح المتتالي مفقود؛
  • بالإضافة إلى الدعم النصي للصور؛
  • من التعليقات الموجودة في نظام التحكم بالمصدر يمكن للمرء أن يستنتج كيفية بناء النظام.يجب أن تدور القصة حول كيفية بناء النظام (بعد فوات الأوان).

لكي يعمل LP مع أنظمة أكبر، فإنك تحتاج إلى دعم IDE أفضل من wiki أو متصفح الكائنات.

"بشكل عام ، البرمجة المتعلمة هي لا يزال مجرد نص"

خطأ شنيع.

المخططات على ما يرام.

فكرتي هي استخدام LP لتحديد المكونات التي تتواصل مع بعضها البعض باستخدام تدفقات الأحداث

هذه مجرد هندسة معمارية، وهذا جيد.

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

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

يمكن لأداة كتابة جيدة (مثل LaTex) تشفير الرسم التخطيطي في المستند.ربما يمكنك اكتشاف طريقة للرسم التخطيطي من أجزاء أخرى من الوثائق.

الحد الأدنى

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

لماذا؟

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

لكن الملخص التخطيطي لبعض علامات LP الأخرى سيكون جيدًا.

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

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

ولقد استعملت أيضا يماغيج الكثير جدا، ونظرت تحت غطاء محرك السيارة في جاوة الأساسي - من الصعب جدا أن يتبع من دون فكرة عن الفلسفة الكامنة

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

والفكرة وراء البرمجة القراءة والكتابة هو التركيز على الوثائق، مع رمز رشها من خلال الوثائق، بدلا من تعليق رشها خلال التعليمات البرمجية.

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

ووالمقاييس حتى أنظمة أكبر، لأن نسبة أساسية من وثائق إلى رمز موازين خطيا مع حجم من التعليمات البرمجية.

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

من الواضح، وقد حدث الكثير منذ ذلك الحين.

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

وحاول NanoLP - LP أداة الموسعة، ويدعم العديد من تنسيقات المستندات (تخفيض السعر، أوبن أوفيس، الكريول، تكس، Asciidoc وغيرها)، واستيراد من آخر برامج LP، النموذجيه وأكثر من ذلك. يمكن للمستخدم إضافة الأوامر الخاصة / وحدات الماكرو (في بايثون)، على سبيل المثال للقيام المستوردة خاص، على سبيل المثال، من VCS ... http://code.google.com/p/nano-lp

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top