سؤال

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

ما الأدوات والتقنيات التي تستخدمها لتصميم ومحاكاة وظيفة الخوارزمية؟كيف تستخدم برامج الرسم؟لغة مواصفات خاصة؟

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

المحلول

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

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

الحيلة هي فصل الخوارزمية عن ميزات وقيود لغة معينة.

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

أبدأ بنظرة عامة باللغة الإنجليزية.نص عادي، ولا حتى MS-Word أو أي شيء يكون التنسيق فيه مشتتًا للانتباه.

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

كما تساعد مخططات UML.أنا أستعمل أرغو UML - رخيصة وفعالة.

للمزيد حول هذا الموضوع، تريد أن تقرأ عنه التحقق الرسمي أنظمة.

نصائح أخرى

عادةً ما أرسمها على الورق، ثم أحاول التنفيذ السريع في Common Lisp واختبرها على REPL.

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

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

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

عادةً ما أستخدم برنامج الرسم فقط عندما أحتاج إلى كتابة مستندات المواصفات الرسمية.تُظهر هذه عادةً تصميمًا بمستوى أعلى من الخوارزميات، مثل استخدام Visio لمخططات UML.

أعتقد أن ذلك يعتمد على مدى تعقيد الخوارزمية.

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

بخلاف ذلك، غالبًا ما ينتهي بي الأمر إلى تجميع نموذج "سريع وقذر" للخوارزمية في نماذج Windows VB.NET أو تطبيق وحدة التحكم.مع بعض الميزات الأحدث مثل LINQ-to-SQL، يمكنك أيضًا تجميع النماذج الأولية التي تعتمد على الوصول إلى قاعدة البيانات في فترة زمنية قصيرة جدًا.

بحكم تعريف الخوارزميات فهي مستقلة عن الوسيط الذي تعمل عليه.

ما هو هذا التعريف؟من صنعها؟وهل علموا بذلك التجريد المتسرب?

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

ومع ذلك، فإن العديد من الخوارزميات الأساسية لا تعتمد في الواقع على النظام الأساسي.ومن الغريب أنني أشعر براحة أكبر عند استخدام لغة C++ للتلاعب بالخوارزميات.ومع ذلك، عند القيام بذلك، أعتمد بشكل كبير على مستوى عالٍ من التجريد، لذلك لا أتلاعب بالمؤشرات أو ما شابه.من ناحية أخرى، تقدم المحكمة الخاصة بلبنان في الواقع مجموعة أدوات غنية جدًا للتعامل مع الخوارزميات.

وكما هو الحال مع بيل، فإنني أستخدم السبورة البيضاء كثيرًا.لدي بالفعل سبورة بيضاء مقاس 1 م * 2 م في غرفة المعيشة الخاصة بي.مريب.؛-)

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

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