কোড গাণিতিক যুক্তি ডকুমেন্টিং


19

কখনও কখনও, যদিও প্রায়শই নয়, আমাকে আমার কোডে গণিতের যুক্তি অন্তর্ভুক্ত করতে হবে। ব্যবহৃত ধারণাগুলি বেশিরভাগই খুব সহজ, তবে ফলস্বরূপ কোডটি নয় - অস্পষ্ট উদ্দেশ্য সহ প্রচুর ভেরিয়েবল এবং কিছু অপারেশন এত সুস্পষ্ট অভিপ্রায় নয়। আমি বলতে চাচ্ছি না যে কোড অপাঠ্য বা অচল, শুধু এটাই waaaay প্রকৃত গণিত সমস্যা চেয়ে বুঝতে কঠিন। আমি যে অংশগুলি বোঝার পক্ষে সবচেয়ে কঠিন তা মন্তব্য করার চেষ্টা করি, তবে কেবল তাদের কোডিংয়ের ক্ষেত্রে একই সমস্যা রয়েছে - পাঠ্যে গণিতের অভিব্যক্তিপূর্ণ শক্তি নেই

আমি বেশ কয়েকটি জটিল কোডের পিছনে যুক্তিটি ব্যাখ্যা করার পদ্ধতিটি আরও কার্যকরভাবে কোডের মধ্যে সন্ধান করার জন্য আরও দক্ষ ও সহজ উপায় অনুসন্ধান করছি। আমি টেক্সকে বিবেচনা করেছি - ডকুমেন্টেশন লিখতে এবং কোড থেকে আলাদা করে উত্পন্ন করে। তবে তারপরে আমাকে টেক্স শিখতে হবে, এবং ডকুমেন্টেশন কোডটিতেই হবে না। আর একটি জিনিস যা আমি ভেবেছিলাম তা হ'ল কাগজ / হোয়াইটবোর্ডে গাণিতিক স্বরলিপি, সমীকরণ এবং ডায়াগ্রামের ছবি নেওয়া এবং এটি জাভাদক সহ।

একটি সহজ এবং পরিষ্কার উপায় আছে?



পিএস ভেরিয়েবলগুলিকে বর্ণনামূলক নাম দেওয়ার timeOfFirstEventপরিবর্তে (কোডটির পরিবর্তে t1) কোডটি আরও ভার্বোজ এবং এমনকি আরও শক্তিশালী করে তোলে।


5
টেক্স শেখা আসলে এতটা কঠিন নয়। আপনার কোথাও অনলাইনে কোড থাকলে, ম্যাথজ্যাক্স অর্ধেক সময় এটিকে প্রিন্ট করে দেবে। দয়া করে মনে রাখবেন এইচএএল / এস এর মতো ভাষা রয়েছে যেখানে আপনার উদ্বেগগুলি দীর্ঘকাল আগে প্রতিধ্বনিত হয়েছে।
হরিণ হান্টার

4
আমার নিজের শিংকে টট করার জন্য নয়, তবে এখানে একটি উদাহরণ রয়েছে: meta.stackexchange.com/a/49787/141513 ধারণাটি এটি লিখতে হবে যাতে যে কেউ এটিকে দেখছে তারা বুঝতে পারে যে এটি কী করে, এমনকি যদি তারা বুঝতে না পারে এর পিছনে গণিত ভাল ফাংশন- / ভেরিয়েবল-নাম এবং একটি সাধারণ মন্তব্য বা দুটি সাধারণত এটি করার জন্য যথেষ্ট।
ব্লুরাজা - ড্যানি প্লেফুঘুফুট

উত্তর:


32

এ জাতীয় পরিস্থিতিতে সঠিক কাজটি হ'ল আলগরিদম, সূত্র বা প্রাথমিক বাস্তব-বিশ্বের উত্স হিসাবে ঠিক একই পরিবর্তনশীল নামের সাথে যা কিছু করা যায় (যতক্ষণ না প্রোগ্রামিং ভাষা এটির অনুমতি দেয়), এবং উপরে একটি সংক্ষিপ্ত মন্তব্য বলে "[নুথ 1968]" তে বর্ণিত লেভেনস্টাইন দূরত্বের গণনার মতো কিছু, যেখানে উদ্ধৃতিটি গণিতের সহজেই অ্যাক্সেসযোগ্য বর্ণনার সাথে লিঙ্ক করে।

(যদি আপনার কাছে এ জাতীয় কোনও উল্লেখ না থাকে তবে আপনার গণিতটি যথাযথ এবং কার্যকর, সম্ভবত আপনার নিজের এটি প্রকাশের কথা বিবেচনা করা উচিত Just শুধু বলুন '))


4
@ জাস্টিনসি না, আমি মনে করি যে তিনি একই পরিবর্তনশীল নামগুলির অর্থ অর্থাত যদি এর মতে y = m*x + cআপনি এম, এক্স এবং সি ভেরিয়েবল
জে কে

5
@ জাস্টিনসি আমার অর্থ: কেবলমাত্র সেই পরিবর্তনশীল এবং ধ্রুবক নামগুলি যা প্রকাশনায় রয়েছে কেবলমাত্র সেগুলি ব্যবহার করুন - সাধারণত সেগুলি হ'ল এন, এফ, কিউ বা সম্ভবত এন_আই এর মতো এক-অক্ষরের নাম। আমি সেই ওপির সাথে সম্মতি জানাই যা EulerLinearMomentumতখন কম পাঠযোগ্য m। মুল বক্তব্যটি হ'ল উত্স কোড সূত্রগুলি প্রকাশের জন্য পছন্দসই মাধ্যম নয়, সুতরাং কোডটি মুদ্রিত সূত্রের মতো একই কাজ করে তা যাচাই করা সহজ করা উচিত, কোডটি প্রোগ্রামের প্রয়োজনীয়তাগুলি পূরণ করে না not
কিলিয়ান ফট

1
আমি সেই কৌশলটির সাথে একমত হব; তবে, আমরা যে পাঠ্যটির কথা বলছি তা হ'ল কোডটি কোডের একটি নির্দিষ্ট নির্ভুলতা / স্কেল এবং আচরণ সহ (অন্তর্ভুক্ত পরিচিত হোস্ট বা লক্ষ্যমাত্রা সহ) অন্তর্নিহিত বাধা রয়েছে has আপনি গাণিতিক মডেলটি নির্দিষ্ট বা নকশা করছেন না, আপনি কোডে প্রয়োগ করছেন (বেশিরভাগ ক্ষেত্রে)। উপযুক্ত নাম ব্যবহার না করে যা অভিপ্রায় যাচাই করা তার পক্ষে আরও বেশি শক্ত প্রতিনিধিত্ব করে তা বর্ণনা করে।
জাস্টিনসি

2
+1 টি। যদি রেফারেন্সটি সাম্প্রতিক প্রকাশনার হয়, তবে কাগজে ডিওআই হাইপারলিংক দিন । উদাহরণ dx.doi.org/10.1000/182 । এটি হ'ল ডিওআই এর জন্য ডিজাইন করা হয়েছিল - একটি প্রকাশনার জন্য একটি সংক্ষিপ্ত, মানক URL, কখনই পরিবর্তন হবে না তার গ্যারান্টিযুক্ত।
মার্কজে

2
@ কিথস সম্পূর্ণরূপে নির্ভর করে, একটি ছোট সমীকরণের জন্য যেখানে প্রতিটি ভেরিয়েবলের শারীরিক অর্থ সূক্ষ্ম হয় তবে আপনি যদি এফএফটি অ্যালগরিদম প্রয়োগ করেন তবে শারীরিক অর্থ না নিয়ে বেশ কয়েকটি আংশিক ফলাফল হবে কিনা তা কী বলবেন? এই অবস্থায় আপনি একেবারে গাণিতিক সাহিত্য মিলে উচিৎ নয় কারণ এটি হয় ডোমেইন ভাষা
জে।

8

যখন আমাকে এরকম অ্যালগরিদম বাস্তবায়ন করতে হয়েছিল তখন আমি বেশ কয়েকটি কাজ করি।

  1. যতটা সম্ভব, অ্যালগরিদমকে তার নিজস্ব পদ্ধতিতে বা পছন্দনীয় শ্রেণিতে আলাদা করুন। আমার বর্তমান প্রকল্পটির Mathজটিল অ্যালগরিদম যুক্ত করার জন্য এটির নিজস্ব সমতুল্য শ্রেণি রয়েছে।

  2. পদটিতে কোনও সাধারণ সংক্ষিপ্ত শব্দ বা শর্টহ্যান্ড রেফারেন্স সহ অ্যালগরিদমটি কী পরিমাণে বিবেচনা করা হয় তার সংক্ষিপ্তসার সরবরাহ করুন। আমি নিজেই পদ্ধতিতে এটি করি তাই কোড সহ এটি বেঁচে থাকে।

  3. প্রযুক্তিগত / গাণিতিক পদগুলিতে অ্যালগরিদমের সংক্ষিপ্তসার সরবরাহ করুন এবং আমার জানা কোনও বাহ্যিক উল্লেখ অন্তর্ভুক্ত করুন। আবার, আমি নিজেই পদ্ধতিটি দিয়ে তাই এটি প্রাসঙ্গিক থাকার আরও ভাল সুযোগ আছে। সাদামাটা পাঠ্য এই ক্ষেত্রে দুর্দান্ত নয়, সুতরাং আমি গাণিতিক শব্দটি আমি যথাসাধ্য হিসাবে উল্লেখ করতে পারি এবং এর পাশের একটি প্যারেন্টালিকাল মন্তব্যে স্পষ্ট করে বলতে পারি। উদাহরণ স্বরূপ, x^y (x raised to the power y)

  4. আমি কীভাবে উপাদানগুলিতে অ্যালগরিদম ভাঙ্গছি এবং প্রতিটি ভেরিয়েবল অ্যালগরিদমে কী উপস্থাপন করে তা নির্দেশ করুন Document যেমন।t1 is time of first event

  5. অ্যালগরিদম কোড করুন এবং জটিল অংশগুলি মন্তব্য করুন। মূলত, আমি যে কোনও জায়গায় আমি একটি পদক্ষেপ গ্রহণ করব যা অ্যালগরিদমের মধ্যেই সুস্পষ্ট বা সরল ছিল না take আমি বিশেষভাবে নিশ্চিত হয়েছি যে আমি কোনও অ-স্পষ্ট শর্টকাট মন্তব্য করেছি এবং কেন তারা ঠিক আছে যে আমি প্রয়োগের মধ্যে নিতে পারি।

  6. কিছু ইউনিট পরীক্ষা লিখুন যা অ্যালগরিদমের ক্রিয়াকলাপটিকে বৈধতা দেবে।

অবশেষে, যদি এটি সত্যিই, সত্যই, সত্যই জটিল হয় তবে আমি নিজেকে এই পদত্যাগ করি যে সেই প্রকল্পে আমার বাকি সময়টির জন্য আমি সেই কোডটির মালিক।

কোডটি বোঝার জন্য আমি বাইরের নথির উপর নির্ভর করতে পছন্দ করি না। হ্যাঁ, এটি কখনও কখনও বিশেষত আরকেনের বিশদ নেওয়ার সময় প্রয়োজনীয় হতে পারে। তবে যখনই সম্ভব, আমি কোডের মধ্যে সমস্ত কিছু নিজের মধ্যে রাখার চেষ্টা করি যাতে এটি আপডেট এবং সহজেই অবস্থিত থাকার সুযোগ থাকে। এই ক্ষেত্রে, আমি ডকুমেন্টেশনের প্রকাশের চেয়ে তথ্যের অ্যাক্সেসিবিলিটিটিকে মূল্যবান বলে মনে করি।


6

আমাদের প্রকল্পগুলিতে, যা পরিমাণগত আর্থিক অর্থনীতিতে গবেষণার চারদিকে ঘুরছে, আমরা প্রচুর গণিত ব্যবহার করি এবং ইতিমধ্যে যা পোস্ট করা হয়েছে তার সংমিশ্রণটি অনুসরণ করি:

  1. আপনি যে প্রধান উত্সটি ব্যবহার করছেন তার লিঙ্ক সরবরাহ করুন। আমাদের জন্য এটি করার সহজতম উপায় হ'ল বিবিটেক্স-হ্যান্ডেলটি ব্যবহার করা যা মূলত একটি কাগজের আইডি যা এতে জড়িত প্রত্যেকের দ্বারা দেখা যেতে পারে। নির্দিষ্ট উত্সের উপর নির্ভর করে আমরা নিয়মিত পাশাপাশি সমীকরণের রেফারেন্সটি যুক্ত করি।

  2. সমস্ত ভেরিয়েবলের জন্য ব্যাখ্যা সরবরাহ করুন। আবার, আমরা এর জন্য টেক্স ব্যবহার করি যদি মূল কাগজটি গ্রীক বা অন্যান্য অক্ষর ব্যবহার করে। এর কারণ হ'ল প্রায়শই পর্যাপ্ত কাগজপত্র এবং বইগুলি বিভিন্ন স্বরলিপি ব্যবহার করে। কারও যদি গণিতে পুনরায় কাজ করা দরকার হয়, এটি এটিকে অনেক সহজ করে তোলে।

  3. সমীকরণটি এক টুকরোতে কোড করার চেষ্টা করুন। সেভাবে চিহ্নিত করা অনেক সহজ। কোডটিতে সম্পূর্ণ সমীকরণের টেক্সট কোড পোস্ট করবেন না - হয় সমীকরণটি খুব ছোট, এবং পোস্টিং টেক্সট অগোছালো এবং অতিশয় প্রযোজ্য, বা সমীকরণটি বিশাল, এবং টেক্সট কোডটি অকেজো, যদি আপনি এটি সংকলন না করেন (একটি ব্যবহার করুন পরিবর্তে রেফারেন্স)। কোনও সমীকরণকে ছোট ছোট টুকরো টুকরো করে বিভক্ত করা কী ঘটছে তা বুঝতে অসুবিধা হয় (আপনি যদি কমপক্ষে গণিতে ভাল হন)।

আইএমএইচও, সবচেয়ে গুরুত্বপূর্ণ উপলব্ধি হ'ল সূত্রগুলি প্রায়শই প্রসঙ্গে নির্ভর করে on আমি জানি প্রতিটি গণিতের কাগজ মডেলের পরিবেশ নির্ধারণে সময় নেয়; আপনারও একই কাজ করা উচিত।


1
প্রসঙ্গটি বিশদভাবে ব্যাখ্যা করা একটি দুর্দান্ত ধারণা, 'কীভাবে' এর আগে কেন 'কেন' সত্যিই সহায়ক হতে পারে তা কেন্দ্রীভূত করে।
jmruc

3

পাঠ্যে গণিতের অভিব্যক্তিপূর্ণ শক্তি নেই

তুমি ঠিক. যেহেতু আপনি ইতিমধ্যে কোডের বাইরে এটি করার উপায় খুঁজছেন এবং টেক্সট একটি খাড়া শেখার বক্ররেখা ছাড়াও একটি ওভারকিল, তাই আমার প্রস্তাবটি নীচে দেওয়া হল:

OpenOffice.org/LibreOffice গণিত সমীকরণ সম্পাদক ব্যবহার করুন।

এটা বিনামূল্যে. এটা খোলা.

আপনি এটি দৃশ্যত ব্যবহার করতে পারেন বা আপনি একটি বিশেষ ভাষায় সমীকরণ লিখতে পারেন।

আপনাকে এখনই ভাষা শিখতে হবে না কারণ আপনি যখন জিইউআই ব্যবহার করেন, তখন আপনাকে দেখার জন্য একটি প্যানেলে "কোড" তৈরি করা হয়।

উপরের প্যানেলে আপনি প্যালেট ব্যবহার করে সমীকরণগুলি "আঁকতে" পারেন। নিম্ন প্যানেলে সমমানের স্বরলিপি উত্পন্ন হয়। নীচের প্যানেলে স্বরলিপি লিখতে এবং উপরের প্যানেলে গ্রাফিকাল আউটপুট দেখে আপনি স্বরলিপিটি উপলব্ধি করার পরে আপনি এটি অন্য উপায়ে করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন


তারপর কি? মূল কোডটিতে গণিতের স্বরলিপিটির জন্য সরল-পাঠ্য কোডটি মন্তব্য হিসাবে অন্তর্ভুক্ত করুন, বা একটি স্ক্রিনশট নিন এবং ওপি এর মতো জাভাদোক ব্যবহার করুন তিনি টেক্সের সাথে কি করতে পারেন বলেছিলেন?
ডডজেস্টেসট্রোলার

@ ডডজেটেসট্যাম্রোলার হ্যাঁ, আমার উত্তর বলছে "যেহেতু আপনি ইতিমধ্যে কোড এর বাইরে করার উপায় খুঁজছেন, এবং টেক্সট একটি ওভারকিল .."
তুলিনস কর্ডোভা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.