سؤال

بعد رؤية هذا السؤال, أنا حصلت على التفكير حول مختلف التحديات التي عمياء تواجه المبرمجين و كيف ينطبق حتى على النظر المبرمجين.ولا سيما مشكلة قراءة التعليمات البرمجية المصدر بصوت عال يعطي لي وقفة.لقد تم برمجة معظم حياتي وأنا في كثير من الأحيان المعلم زملائه الطلاب في البرمجة غالبا في C++ أو Java.

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

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

من ناحية أخرى, الحرفي مواصفات aggravatingly بطيئة.فإنه يأخذ بعيدا أطول بكثير أن أقول "الجنيه ، تشمل قوس المثلث الأيمن, iostream صحيح زاوية قوس السطر" من يفعل ببساطة اكتب #include <iostream>.بل الأكثر خبرة C++ المبرمجين أن قراءة هذا مجرد "تشمل iostream", ولكن مرة أخرى, خبرة المبرمجين وتكثر الحرفي المواصفات الضروري في بعض الأحيان.

إذا كان لدي فكرة عن إمكانية حل هذه المشكلة.

في C++, هناك مجموعة محدودة الكلمات الرئيسية—63—و مشغلي-54 ، وخصم اسمه مشغلي علاج مركب مهمة مشغلي البادئة مقابل postfix السيارات-زيادة و إنقاص متميزة.وهناك عدد قليل من أنواع الحرفي ، عدد مماثل من تجميع الرموز ، منقوطة.ما لم أكن مخطئا تماما, ذلك حول هذا الموضوع.

لذلك فإنه ليس من الممكن ببساطة تنسب موجزة, فريدة من نوعها النطق إلى كل من هذه متميزة المفاهيم (بما في ذلك واحدة بيضاء ، حيث كان مطلوبا) من هناك ؟ لغات البرمجة هي أكثر بكثير من العادية من اللغات الطبيعية ، لذلك نطق يمكن أن تكون موحدة.المتكلمين من أي اللغة ستكون قادرة على لفظيا أنقل رمز C++, ويرجع ذلك إلى انتظام ثبات اللغة والكلام إلى نص البرنامج يمكن أن يكون الأمثل لقبول C++ الكلام مع درجة عالية من الدقة.

لذا سؤالي ذو شقين:أولا هو الحل ممكنا ؛ و ثانيا لا أحد آخر لديه الأخرى المحتملة حلول ؟ كنت تنوي أن تأخذ اقتراحات من هنا واستخدامها لإنتاج ورقة رسمية مع مثال على تنفيذ الحل.

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

المحلول

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

لذا, فعلى سبيل المثال:

#include <iostream>;

int main()
{
   if (1 < 2)
     return 1;
   else
     return 0;
}

يمكن قراءته على النحو:

(الكلمة) تشمل iostream جديدة-خط (الكلمة) الباحث الرئيسي لا params تبدأ كتلة إذا كان عدد 1 (المشغل) أقل من عدد 2 جديدة-خط (الكلمة) عودة عدد 1 جديد-خط (الكلمة) آخر جديد-خط (الكلمة) عودة عدد 0 end كتلة

علاج الكلمات في () اختياري كلمات وصفية, الأكثر احتمالا لاستخدامها في رمز أكثر تعقيدا.هل يمكن استخدام كلمة 'حرفيا' إذا كنت تريد لهم بالفعل كتابة كلمة وصفية.على سبيل المثال

(الكلمة) إذا الحرفي رقم (المشغل) أقل من حرفية الكلمة

يصبح

if (number < keyword)

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

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

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

نصائح أخرى

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

قراءة السؤال/إجابات اثنين من نقاط أخرى حدث لي:

  • أولا, سوف يفاجأ مدى أهمية "التفكير وقت".لدي المبرمجة سابقا في C/C++/Java و الآن استخدام C# كما الابتدائية اللغة و أعتبر نفسي جدا competant.ولكن عندما فعلت عدة مشاريع في بيثون ، وجدت تخفيض الترقيم سلبتنى "التفكير" الوقت - شعوريا ، كنت تستخدم علامات الترقيم لهضم ما كنت أسمع - رائعة...ومع ذلك ، فإن الوضع يختلف قليلا عندما يتعلق الأمر معرفات ، وهذه ليست معروفة من قبل المستمع - أنا شخصيا أجد أنه من الصعب الاستماع إلى التعليمات البرمجية مع اختصار المتغيرات (RGXRatio, RGVRatio) وأنا لم يكن لديك الوقت لمعرفة ما يعنيه.على الجانب الآخر, الهنغارية التدوين الأولي يؤكد يجعل رمز من الصعب الاستماع إلى طول المتغيرات (من حيث الوقت المستغرق في الكلام) هو أطول بكثير من أهم العمليات التي تجرى على تلك المتغيرات.
  • للنظر في شيء آخر هو أن طول دفق الصوت هو نتيجة نهائية ولكن ليس السبب الرئيسي.سبب الصوت هو وقتا طويلا لأن الصوت هو أحد الأبعاد متوسطة ، في حين أن قراءة النص هو 2d المتوسطة مع القدرة على القفز و تخطي الماضي irelevant/النص المألوف.لن تعمل وجها لوجه محاضرة, ولكن ماذا لو كانت هناك أوامر لوحة المفاتيح للسيطرة على الكلام.في المستندات النصية بلدي قارئ الشاشة يتيح لي الانتقال إلى السطر التالي ، لكن ماذا لو كانت تتكيف مع دلالات لغة البرمجة.بعض البحوث ، مثل T V رامان في جوجل ، يشمل استخدام أصوات مختلفة من أجل تسليط الضوء على بناء الجملة ، و الاشارات الصوتية بمناسبة البيانات الوصفية مثل العواصم.

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

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

ربما, ولكن كنت قد فقدت البصر من الهدف الخاص بك.فرضية أن الشخص الاستماع لم لا يعرفون اللغة.إذا كان لا يمكننا القول ببساطة "تشمل iostream" عندما نعني #include <iostream>, أو "ناقلات الباحث" عندما نعني std::vector<int>.

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

الآن اختراع لغة جديدة فقط لوصف الأوليات التي تحدث في التعليمات البرمجية المصدر الخاصة بك لا يحل المشكلة.بدلا من ذلك ، لا يزال يجب أن تقرأ كل النحوية المميز (مع أبسط وأكثر "موحدة" النطق, نعم, ولكن لا يزال يجب أن تقرأ بصوت عال) ، والشخص الاستماع لا يزال لن تفهم لأنك إذا كانوا لا يعرفون C++ جيدا بما فيه الكفاية لفهم "تشمل iostream" ، لن تفهم موحدة النطق أيضا.وإذا كنت تريد الذهاب إلى تعليمهم النطق الخاصة بك ، لماذا ، متى كان بإمكانك أن تدرس لهم فهم C++ الجملة مباشرة بدلا من ذلك ؟

هناك أيضا جذر المشكلة التي رمز C++ يميل إلى تتألف من الكثير النحوي الرموز.تأخذ خط بسيطة مثل هذه:

std::vector<int> v;

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

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

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