'গাণিতিক' ফাংশনগুলি গাণিতিক স্বরলিপি অনুসরণ করা উচিত?


11

আমি মনে করি এই প্রশ্নটি তাত্ক্ষণিকভাবে বিষয়গত হিসাবে চিহ্নিত করা হবে, তবে আপনি যা ভাল বলে মনে করেন:

double volume(double pressure, double n_moles, double temperature) {
  return n_moles * BOLTZMANN_CONSTANT * temperature / pressure;
}

অথবা

double volume(double P, double n, double T) {
  return n*R*T/P;
}

অন্য কথায়, কিছু সমীকরণ বাস্তবায়নকারী ফাংশনগুলি কি সেই সমীকরণের স্বীকৃতি অনুসরণ করে, বা তাদের আরও ভার্বোজের নাম ব্যবহার করা উচিত?


3
আপনি কি কখনও কখনও কোডিংয়ে ব্যয় করার চেয়ে কোনও ভেরিয়েবলের নাম কীভাবে রাখবেন তা ভেবে কী আরও বেশি সময় ব্যয় করেন? ;-)
টমাস

1
আমার মনে হয় দ্বিতীয় বিকল্পটি ঠিক আছে। যদিও আমি একটি মন্তব্যে ভেরিয়েবলগুলি ব্যাখ্যা করব।
জর্জিও

দেখে মনে হচ্ছে যেন কারওর প্রত্যাহার প্রত্যুত্তর করতে এবং ভোট দেওয়ার জন্য উপযুক্ত দেখেছে। এই ব্যক্তিটি কি তার কারণগুলি ভাগ করে নেওয়ার যত্ন নেবে? উত্তরগুলি আমার কাছে পুরোপুরি যুক্তিযুক্ত বলে মনে হয়েছিল।

প্রযুক্তিগতভাবে, এর সাথে 'গাণিতিক' স্বরলিপি এবং কোনও পদার্থবিজ্ঞানী যা ভাবেন তার সাথে করার কিছুই নেই। এখানে গাণিতিক ছাড়া আর কিছুই নেই।
duffymo

2
আমি দেখতে পাচ্ছি সমস্ত আমেরিকান ফারেনহাইটে তাপমাত্রা পার করছে। আমি অবশ্যই তাপমাত্রার ধরণ হিসাবে দ্বিগুণ ব্যবহার করব না। একই সম্ভবত চাপ জন্য যায়। আমি মনে করি নামগুলির চেয়ে প্রকারগুলি সুরক্ষিত করতে আমি আগ্রহী।
মার্টিন ইয়র্ক

উত্তর:


14

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

আমার ব্যক্তিগত স্টাইলটি হ'ল এই জাতীয় পরিবর্তনগুলি (যার সংক্ষিপ্তরগুলি সাধারণত ক্ষেত্রের ক্ষেত্রে পরিচিত) ব্যবহার করা হয় তবে তাদের বিবরণটি মন্তব্যে অন্তর্ভুক্ত করে।

/* P : Pressure
   V : Volume
   n : Number of moles
   R : Boltzmann constant
   T : Temperature (in K)
*/
double compute_V(double P, double n, double T) {
  return n*R*T/P;
}

5
আলোচ্য বিষয়টি কি? যে কেউ থার্মোডিনামিকস ছাঁটাই করে না তার পরিবর্তনশীল নামগুলি নির্বিশেষে কোডটি সফলভাবে বজায় রাখার কোনও সম্ভাবনা নেই।
dsimcha

এটি অবশ্যই তথ্য অন্তর্ভুক্ত না করার চেয়ে ভাল, তবে এই মুহুর্তে, মনে হয় কেবল ফাংশনে নামগুলি ব্যবহার করা সহজ হবে easier আমি চিঠিগুলি ব্যবহার করতে খুব বেশি উপযোগিতা দেখছি না ...
প্যাট্রিক 87

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

4
@ প্যাট্রিক ৮87: আমি চিঠিগুলি পছন্দ করি কারণ এটি মূল ফর্মের অনেক কাছাকাছি যেহেতু এটি কাগজটি (বা স্মৃতি থেকে) থেকে তাড়াতাড়ি প্রকাশের সত্যতা যাচাই করতে পারি।

2
+1 টি। এটি করার সেরা উপায় এটি। এমনকি মোটামুটি প্রাথমিক পদার্থবিজ্ঞানের সমীকরণগুলি গ্রীক অক্ষর, শিকড়, আংশিক ডেরিভেটিভস, অপারেটর (ল্যাপ্লেস, হ্যামিল্টন), ভেক্টর, টেনসর ইত্যাদি ব্যবহার করতে পারে যাতে সাধারণত সমীকরণের মন্তব্যে প্রতিনিধিত্ব করা সম্ভব না হয়। যেমন-মানক হিসাবে সম্ভব পরিবর্তনশীল নামের / বর্ণমালা স্টিকিং (যেমন GAS_CONSTANTহয় না একটি প্রমিত পরিবর্তনশীল নাম; যে পাঠ্যপুস্তক আমি ব্যবহার সম্পর্কে জানেন Rযে জন্য) এবং মন্তব্য তাদের সংক্ষেপে ব্যাখ্যা ভাল জিনিস যে কাজ করা যেতে পারে।
জুনাস পুলক্কা

7

এটি কেবল সেখানে ফেলে দিচ্ছেন, আপনার অন্য একটি বিকল্প রয়েছে:

Volume ComputeVolume(Pressure p, Moles m, Temperature t) { ... }

এটি পরিমাপের এককগুলির সাথে এফ # এর কিছুটা মিলে যায় এবং কোনও তাপমাত্রা দ্বারা অজান্তে চাপ প্রতিস্থাপনের মতো সমস্যাগুলি এড়ানো সুবিধা রয়েছে। স্বাক্ষরটি যখন (ডাবল, ডাবল, ডাবল) থাকে তখন কোথায় কী যুক্তি দেওয়া উচিত তা চোখের সামনে খেলা কঠিন


কেবল স্পষ্ট করে বলার জন্য, এমন কি এমন কোন ভাষা রয়েছে যা এই ধরণের মাত্রিক বিশ্লেষণ করতে পারে? অর্থাৎ যে জানেন যে উদাহরণস্বরূপ যে একটি চাপ এবং একটি ভলিউম মধ্যে পণ্য শক্তি একটি ইউনিট বরাদ্দ করা যেতে পারে?
Lindelof

হ্যাঁ, পরিমাপের ইউনিটগুলির সাথে এফ # এটি করেন। এমএসডিএন.মাইক্রোসফটকম /en-us/library/dd233243.aspx
ম্যাথিয়াস

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

এটি সি ++ টেম্পলেটগুলির সাহায্যে খুব দৃ .়তার সাথে করা যেতে পারে।
কেভিন

@ লিন্ডলফ: আপনি সি ++typedef
জ্যাকব

7

আমি এটি পছন্দ করি:

/* This function calculates volume using the following formula:
 *
 *     n * R * T
 * v = ---------
 *         P
 */
double volume(double pressure, double n_moles, double temperature) {
    return n_moles * BOLTZMANN_CONSTANT * temperature / pressure;
}

অন্য কথায়, ইংরেজিতে মন্তব্যে কোডটির অর্থ ব্যাখ্যা করুন (এবং গণিত; এটির মন্তব্য, আপনি এর উপর যথাসম্ভব প্রসারিত করতে পারেন) তবে বর্ণনামূলক পরিবর্তনশীল নামগুলি ব্যবহার করুন যাতে যে কোনও একক কোডটি এখনও পড়তে পারে তা বুঝতে সক্ষম হয় এটি সহজেই - বিশেষত বৃহত্তর ফাংশনগুলির সাথে। আমি আসল শব্দের পরিবর্তনশীল নাম হিসাবে ব্যবহার করার আরেকটি কারণ হ'ল যদি আপনাকে একটি শিরোনাম ফাইলে ফাংশন ঘোষণার অনুলিপি করতে হয় তবে ইন্টারফেসটি আরও পরিষ্কার হয়।


2
অতিরিক্ত হিসাবে, সূত্রটি সম্পর্কে (যেমন: en.wikedia.org/wiki/Ideal_gas_law ) সম্পর্কে কথা বলে এমন কোনও লিঙ্ক অন্তর্ভুক্ত করার জন্য মন্তব্যে খুব ভাল লাগবে ।
ক্রিস শ্যাফার

এটি খুব সুন্দর পদ্ধতি, তবে কিছুটা অগোছালো। আমি উদাহরণস্বরূপ উইকিপিডিয়াকে আদর্শ গ্যাস আইন (এই ক্ষেত্রে) বর্ণনা করার একটি লিঙ্ক দেখতে পছন্দ করতে পারি।
প্যাট্রিক 87

3

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

ওথো, আমি বলব যে আমি আশা করি প্রচলিত গাণিতিক স্বরলিপিগুলি অনেক সময় ভার্জোজ এবং বর্ণনামূলক হত, তবে আমি বিবেচনা না করে গাণিতিক কোডটি গাণিতিক সম্মেলনে লেগে থাকা উচিত।

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


2

খাঁটি মতামত, তবে সর্বদা একক-বর্ণের চিহ্নগুলিতে শব্দগুলি ব্যবহার করুন। আপনি যদি শব্দ ব্যবহার করেন তবে প্রত্যেকে বুঝতে পারবে; যদি আপনি প্রতীক ব্যবহার করেন তবে কেবল বিষয়-বিষয় বিশেষজ্ঞগণ অনুসরণ করার গ্যারান্টিযুক্ত। তারপরেও কিছু লোক একই শারীরিক পরিমাণের জন্য বিভিন্ন চিহ্ন ব্যবহার করে। দীর্ঘ নাম ব্যবহার করে আপনার হারাতে হবে না।


2

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

(আমি জানি এটি কোনও আলোচনা নয় তবে - আমার ব্যক্তিগত অগ্রাধিকারটি ভেরিয়েবলগুলিকে সুস্পষ্ট নাম দেওয়া হবে যদিও এই ক্ষেত্রে একটি 'খাঁটি' ফাংশন হিসাবে এক-লাইনার যথেষ্ট হতে পারে; একই পরামিতিগুলির সাথে একটি কল একই ফল পাবে) ফলাফল সর্বদা তাই ব্যাখ্যা সম্পর্কিত কোনও রাজ্য সম্পর্কিত জটিলতা থাকা উচিত নয়)

  • মাত্রিক বিশ্লেষণকে সমর্থনকারী অন্যান্য ভাষা পুনরায়, এটি প্রয়োগ করা যেতে পারে যেমন টেমপ্লেট সহ সি ++ এ, বুস্ট ইউনিটস লাইব্রেরি আমার বিশ্বাস এই পদ্ধতির ব্যবহার করে।

1

কোডটি ব্যবসায়ের স্তর থেকে কতটা "দূরে" তার উপর নির্ভর করে ... কোডটি স্ট্যাকের ফুর্থার পিছনে, এটি বিমূর্ত গাণিতিক ক্রিয়াকলাপের দিকে যত বেশি লক্ষ্যবস্তু হয়, প্রয়োগগুলি ততই আমি সাধারণভাবে গৃহীতকে অনুকরণ করার চেষ্টা করব matehmatical স্বরলিপি এবং নামকরণ কনভেনশনস .. সামনের প্রান্তে বা ব্যবসায়ের স্তরটির কাছাকাছি, সমস্যা ডোমেনে প্রতিষ্ঠিত সম্মেলনের সাথে আমি তত বেশি মেনে চলি।


1

আমি এটি এইভাবে ভাবতে চাই - গণিতবিদরা সংক্ষিপ্ত ভেরিয়েবল এবং পদার্থবিজ্ঞানীর অনুসারেই এটি ভুল হয়েছে । কেন তাদের ভুল পুনরাবৃত্তি? আমরা এখন জানি যে দীর্ঘ নামগুলি আরও বর্ণনামূলক এবং কম বিভ্রান্তি সৃষ্টি করে, তাই উন্নতিতে আটকে থাকুন। একটি হালকা নোটে, আমি কখনও কখনও এটি আমার গণিতগুলিতে দীর্ঘতর চলকগুলি ছিটিয়ে দেওয়ার চেষ্টা করি, যার ফলে প্রত্যেকে হতবাক হয়।


তুমি করত প্রেম এই ...

0

প্রোগ্রামিং সমীকরণের সঠিক বিন্যাসটি হ'ল এটি ছয় মাস না দেখার পরে আপনি এখনও বুঝতে পারেন।

আপনি যদি এখানে ফিরে আসেন:

n*R*T/P;

এবং আপনি বুঝতে পারছেন যে কি চলছে, তবে সম্ভবত এটি ঠিক আছে। সাধারণত উন্নত সূত্র আমি অভ্যস্ত মনে রাখবেন কি না, যদি না আমি সক্রিয়ভাবে এটা ব্যবহার করছি প্রতিটি অংশ ছিল। আমার জন্য:

n_moles * BOLTZMANN_CONSTANT * temperature / pressure;

বিশেষত আরও ভাল সমীকরণের ফর্ম্যাট কারণ কারণ আমি প্রতিটি অংশ সহজেই বুঝতে পারি, এমনকি সমীকরণটি কেন এটি লেখা হয়েছে তা আমি অগত্যা না জানলেও।


আপনি ভাবেন শক্তি_ইন_জৌলেস = ভর_ইন_ কিলোগ্রাম * পাও (গতি_আর_লাইট_ইন_ভ্যাকুম_ইন_মেট্রেস-পার_সেকেন্ড, ২) E = এমসি ^ 2 এর চেয়ে সহজ
মার্টিন বেকেট

@ মার্টিন বেকেট, আমি যা পোস্ট করেছি তা কি আসলেই পড়েছ ? "সাধারণত উন্নত ফর্মালার জন্য আমি সক্রিয়ভাবে ব্যবহার না করে প্রতিটি অংশের কী তা মনে করব না unless " আমি বলিনি যে আমি যে সমীকরণগুলি জনসাধারণের জ্ঞানের দিকে ঠেলে দিতে পেরেছি তা ভুলে যাব। ক্ষেত্রেই মত E=m*(c^2)আমি হবে ছয় মাসের মধ্যে তা বুঝতে পারি।
zzzzBov

সুপরিচিত ধ্রুপদী সমীকরণের জন্য সাধারণ স্বরলিপিটি ব্যবহার করা ভাল, যাতে লোকেরা এটি খুঁজে পেতে পারে। এমনকি ডোমেনে কী ব্যবহার করা হয় তা পরিবর্তনশীল থিটা বা ফাই নামকরণের পরিমাণ পর্যন্ত
মার্টিন বেকেট

-1

মুদ্রা টস

আপনি কি কখনও কখনও কোডিংয়ে ব্যয় করার চেয়ে কোনও ভেরিয়েবলের নাম কীভাবে রাখবেন তা ভেবে কী আরও বেশি সময় ব্যয় করেন?


6
হ্যাঁ, আমি সাধারণত কোড কোড করার চেয়ে আমার কোডটি ডিজাইনের চেয়ে বেশি সময় ব্যয় করি এবং এটি সমস্যাটি বোঝার এবং জিনিসগুলির সঠিক নামকরণের মাধ্যমে শুরু হয়।
ম্যাথিয়াস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.