সাধারণ কোডিং মানগুলিকে উপেক্ষা করার জন্য বৈজ্ঞানিক কোড কি আলাদা আলাদা ক্ষেত্র?


21

ইদানীং আমি নিম্নলিখিত ঘটনা সম্পর্কে আমার মন মোড়ানোর চেষ্টা করা হয়েছে।

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

অন্যদিকে, আমি ওপেনসিভি, ওপেনক্যাসেকেড, ভিটিকে ইত্যাদির সাথে কাজ করতে চাই এটি বৈজ্ঞানিক কোড। তাদের 2 পৃষ্ঠার দীর্ঘ পদ্ধতি রয়েছে (সেন নিজেই), ওপেন ক্যাসকেডের একটি পদ্ধতি আছে বা একটি ক্লাসকে 10 টি ফাইলে বিভক্ত করা হয়েছে (এখানে কোনও রসিকতা নেই), ভিটিকেও অনেক সময় গন্ডগোল করে। তবুও এই প্রকল্পগুলি সমৃদ্ধ, রক্ষণাবেক্ষণ এবং ব্যাপকভাবে ব্যবহৃত হয়!

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

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


25
না, এটি নয় তবে বেশিরভাগ বিজ্ঞানীর আরও ভাল করে জানার জন্য ইঞ্জিনিয়ারিং প্রশিক্ষণ নেই।
রোবট

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

2
@ জাস্টিনক্যাভেল বা: "এটি যদি না ভাঙে তবে এটি ঠিক করবেন না" " কেবলমাত্র লেখার কোডে প্রযোজ্য । এছাড়াও দেখুন প্লাজা.উফ.এলডু
রবার্ট হার্ভে

আপনি অবশ্যই আমার আগের প্রশ্নটি প্রাসঙ্গিকভাবে দেখতে পাবেন: প্রোগ্রামার্স.স্ট্যাকেক্সেঞ্জ
ডক্টর

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

উত্তর:


28

সাধারণ কোডিং মানগুলিকে উপেক্ষা করার জন্য বৈজ্ঞানিক কোড কি আলাদা আলাদা ক্ষেত্র?

না এইটা না.

গবেষণা কোডটি প্রায়শই "ফেলে দেওয়া" হয় এবং এমন ব্যক্তিদের দ্বারা লিখিত হয় যারা পটভূমিতে বিকাশকারী নয়, তবে তাদের একাডেমিক শংসাপত্রগুলি শক্তিশালী। আমি লিখেছি এমন কিছু গবেষণা কোড আমার বর্তমানকে কাঁদিয়ে দেবে । কিন্তু এটা কাজ!

একটি বিষয় বিবেচনা করার জন্য হ'ল প্রকল্পগুলির প্রবেশদ্বাররা যা অন্তর্ভুক্ত করে তা চালিত করে। যদি একটি বৃহত প্রকল্পটি একাডেমিক / গবেষণা কোড প্রকল্প হিসাবে শুরু হয়, কাজ শেষ করে, এবং এখন একটি জগাখিচুড়ি হয় তবে কাউকে এটিকে রিফ্যাক্টরের উদ্যোগ নিতে হবে।

বিদ্যমান কোডটি রিফ্যাক্টর করতে অনেক কাজ লাগে যা সমস্যা তৈরি করে না। বিশেষত যদি এটি সমস্ত ডোমেইনে নির্দিষ্ট থাকে বা পরীক্ষা না করে থাকে। আপনি দেখতে পাবেন যে ওপেনসিভিতে একটি স্টাইল গাইড রয়েছে যা নিখুঁত না হলেও খুব বিস্তৃত। সমস্ত বিদ্যমান কোডে এটিকে পূর্ববর্তীভাবে প্রয়োগ করা হচ্ছে? তা .. হৃদয়ের মূর্ছনার জন্য নয়।

এই কোডটি যদি কাজ করে তবে এটি আরও বেশি কঠিন। কারণ এটি ভাঙ্গা হয়নি। কেন এটি ঠিক করবেন?

তবুও এই প্রকল্পগুলি সমৃদ্ধ, রক্ষণাবেক্ষণ এবং ব্যাপকভাবে ব্যবহৃত হয়!

এটি এক অর্থেই উত্তর। ওয়ার্কিং কোডটি এখনও কার্যকর এবং তাই এটি বজায় থাকার সম্ভাবনা বেশি।

বিশেষত প্রথমদিকে এটি কোনও বিশৃঙ্খলা হতে পারে। এর মধ্যে কয়েকটি প্রকল্প সম্ভবত 1-অফ প্রকল্প হিসাবে শুরু হয়েছিল যা "কখনও পুনরায় ব্যবহারের প্রয়োজন হবে না এবং ফেলে দেওয়া যেতে পারে না"।

এছাড়াও বিবেচনা করুন যে আপনি যদি একটি জটিল অ্যালগরিদম বাস্তবায়ন করেন তবে বৃহত্তর পদ্ধতিগুলি গ্রহণ করা আরও বেশি অর্থ হতে পারে কারণ আপনি (এবং বৈজ্ঞানিক দিকের সাথে পরিচিত অন্যরা) ধারণাটি অ্যালগরিদমকে আরও ভালভাবে বুঝতে পারবেন understand আমার থিসিস কাজটি অপ্টিমাইজেশনের সাথে সম্পর্কিত ছিল। একটি পদ্ধতি হিসাবে মূল অ্যালগরিদম যুক্তিযুক্ত হওয়া এটি বোঝার চেয়ে যথেষ্ট সহজ ছিল যেহেতু এটি আলাদা করার চেষ্টা করছিল। এটি অবশ্যই "পদ্ধতি প্রতি 7 টি রেখা" নিয়ম লঙ্ঘন করেছে তবে এর অর্থ হ'ল অন্য গবেষক আমার কোডটি দেখতে পারেন এবং অ্যালগরিদমে আমার পরিবর্তনগুলি আরও দ্রুত বুঝতে পারবেন।

যদি এই বাস্তবায়ন বিমূর্ত করা হয় এবং ভাল ডিজাইন করা হয় তবে এই স্বচ্ছতা নন প্রোগ্রামারদের কাছে নষ্ট হয়ে যাবে ।

সহকর্মী উত্তরদাতাদের কাছে: এই প্রশ্নটি এক বা একাধিক বৈজ্ঞানিক ডোমেনে কম্পিউটারের নিবিড় কাজগুলির জন্য ওপেন-সোর্স লাইব্রেরির কোড বেসকে বোঝায়। এই প্রশ্নটি থ্রোওয়ে কোড সম্পর্কিত নয়। কোনও উত্তর লেখার আগে আপনি প্রতিটি হাইলাইটেড দিকটি উপলব্ধি করেছেন তা নিশ্চিত করার জন্য দয়া করে এক মুহুর্তের জন্য বিরতি দিন।

আমি মনে করি লোকেরা প্রায়শই এই ধারণাটি নিয়ে থাকে যে সমস্ত ওপেন সোর্স প্রকল্পগুলি শুরু হয়, "আরে আমার কাছে একটি লাইব্রেরির জন্য দুর্দান্ত ধারণা আছে যা হাজার হাজার / মিলিয়ন অন্য দ্বারা ব্যবহৃত হবে" এবং তারপরে প্রতিটি প্রকল্পই এরকম হয়।

বাস্তবতা হ'ল অনেক প্রকল্প শুরু হয় এবং মারা যায়। একটি হাস্যকরভাবে ক্ষুদ্র শতাংশ প্রকল্পগুলি ওপেনসিভি বা ভিটিকে ইত্যাদির স্তরে "এটি" করে দেয় etc.

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

অতিরিক্ত হিসাবে, ওপেনসিভি এর "মালিকানা" উল্লেখযোগ্যভাবে পরিবর্তিত হয়েছে changed মানকগুলি পরিবর্তন করে, যদি না সমস্ত দায়িত্বশীল পক্ষগুলি একই মানগুলি অবলম্বন করে এবং প্রকল্পের সময়কালের জন্য তাদের না রাখে।

আমার এও উল্লেখ করা উচিত যে ওপিলসিভি বেশিরভাগ বছর ধরে অ্যাগিল ম্যানিফেস্টোর যে ক্লিন কোডটি প্রকাশের মাধ্যমে অনুপ্রেরণা পেয়েছিল (এবং ভিটিকে প্রায় 10) প্রকাশ করেছিল। ক্লিন কোড প্রকাশের 17 বছর আগে ভিটিকে শুরু হয়েছিল (ওপেনসিভি 9 বছর আগে "মাত্র" ছিল)


2
আমি 2004 সালে ওপেনসিভি ব্যবহার করে আসছি এবং এটি ছিল ভয়াবহ। উইলো গ্যারেজ (নতুন মালিকরা ) প্রায় সমস্ত কিছুই সি ++ এ রূপান্তর করে দুর্দান্ত কাজ করেছেন। আসলে এটি এমন কয়েকটি বৈজ্ঞানিক গ্রন্থাগারগুলির মধ্যে একটি যা ভাল কোড নিয়ে গঠিত।
নিমক্যাপ

15

বিজ্ঞানীরা ডেভেলপার নয়। তাদের কাজটি প্রতি সেউ কোড লেখা নয়। তাদের কাজ সমস্যা সমাধান করা এবং প্রোগ্রামিং হ'ল তারা যে সরঞ্জামগুলি ব্যবহার করতে পারে তার মধ্যে একটি।

বেশিরভাগ এন্টারপ্রাইজ কোড written যেহেতু তারা নিজেকে কল করে by পেশাদার বিকাশকারীরা লিখেছেন এটি একটি গোলযোগ। এই কোডটির বেশিরভাগ ডিজাইনের ধরণগুলি ব্যবহার করে না বা তাদের অপব্যবহার করে না। বেশিরভাগ মন্তব্য TheDailyWTF এর প্রার্থী । সুতরাং যেহেতু আমাদের নিজস্ব শিল্পে, আমরা এমন লোকদের কাছ থেকে এই জাতীয় ফলাফলগুলি দেখি যাদের কাজ কোড লেখার কাজ, আপনি যাদের লেখার কাজ প্রোগ্রাম না লেখেন তাদের কাছ থেকে আপনি কী আশা করবেন?

সমস্ত অনুশীলন কি একজন প্রকৃত পেশাদার বিকাশকারী তার কেরিয়ারের সময় শিখলে কোনও বিজ্ঞানীর উপকার করতে পারে? একেবারে। প্রতিটি বিজ্ঞানীর পক্ষে তার জীবনের পাঁচ থেকে দশ বছর সফটওয়্যার বিকাশ শেখার পক্ষে কি সম্ভব হবে? সম্ভবত না. সুতরাং কোডের মানটি যেমন রয়েছে তেমন।

আরেকটি কারণ হ'ল সংস্কৃতি। যদি আপনার জোড়গুলি পরিষ্কার কোডটি না লিখেন তবে আপনি কেন করবেন? যেহেতু কেউ মাথা ঘামায় না তাই আপনি অতিরিক্ত চেষ্টা করার জন্য সত্যই ঝুঁকছেন না।

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


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

8

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

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


4
পরিবর্তনশীল নামকরণ মন্তব্যের জন্য +1। আমি যখন স্কুলে ছিলাম তখন আমি বিভিন্ন বিভাগের জন্য কিছু ফ্রিল্যান্স কোডিং করতাম এবং স্ট্যাট এবং গণিত বিভাগগুলিতে আমাকে ভেরিয়েবলের নাম ব্যবহারের জন্য "দৃ strongly়ভাবে উত্সাহিত" হয়েছিল Ajএবং T0কারণ কোডটিতে অনুবাদ করা ফাংশনগুলিতে ভেরিয়েবলগুলির নামকরণ করা হয়েছিল। এমন কিছু ব্যবহার করা correlationIndexবা startTimeআপনাকে ক্ষোভের দিকে ঠেলে দেবে।
টিএমএন

4

বিদ্যমান সমস্ত উত্তরই এই প্রশ্নটি ব্যাপকভাবে কভার করেছিল। যাইহোক, আমি ওপেনসিভি ইত্যাদির পছন্দগুলির মধ্যে সত্যিকারের অ্যান্টিপোডটি কী তা উল্লেখ করতে চাই , বনাম বলুন, ভাল ব্যবসায়ের অনুশীলন (কোড কমপ্লিট, ক্লিন কোড, সোলিড ইত্যাদি) অনুযায়ী কোড তৈরি করা হয়েছে code

সাধারণভাবে, সোর্স কোডটি কেআইএসএস হওয়ার জন্য প্রচুর ব্যবসায়ের সুবিধা রয়েছে - "এটিকে সহজ, বোকা রাখুন।" এখানে সম্পর্কিত YAGNI- "আপনার দরকার নেই এটি প্রয়োজন" is

দুর্ভাগ্যক্রমে, বৈজ্ঞানিক ডোমেনগুলিতে গণনামূলক নিবিড় সফ্টওয়্যারগুলির জন্য, উত্স কোডটি খুব কমই সহজ বা জোঁক


Ditionতিহ্যগতভাবে, ওপেনসিভি সাধারণীকরণের অভাবে (বিভিন্ন বিকল্পের সমর্থনের জন্য প্রচুর কোড ডুপ্লিকেশন) ভুগছিল, অন্যদিকে ভিটিকে অতিরিক্ত সাধারণীকরণ (টেমপ্লেট) ভুগছিল।

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

ওপেনসিভিতে প্রচুর সিমডি প্রোগ্রামিং রয়েছে (ভেক্টরাইজেশন)। এখনও অবধি , সি ++ তে সিমডি প্রোগ্রামিংয়ের জন্য এখনও অন্তর্নিবেশ (ইন্টেল ডটকম) , (আর্ম ডটকম) এর প্রয়োজন

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

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


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

প্রধান অবদানকারী কারণগুলি হ'ল:

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

উপরোক্ত অবদানকারী বেশ কয়েকটি কারণ হ'ল ব্যবসায়িক সফ্টওয়্যার বিকাশ সহ অ্যান্টিপোডগুলি :

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

1
আপনি টেবিলে প্রচুর পয়েন্ট আনছেন যা সমস্তই প্রশ্নের সাথে বেশ অপ্রাসঙ্গিক বলে মনে হচ্ছে।
মার্টিন মাট

@ মার্টিনম্যাট এই প্রশ্নে যুক্ত করার জন্য যদি আপনার ইতিবাচক কিছু থাকে তবে দয়া করে আপনার নিজের জবাবটি লিখুন।
রওয়ং

3

সাধারণ কোডিং মানগুলিকে উপেক্ষা করার জন্য বৈজ্ঞানিক কোড কি আলাদা আলাদা ক্ষেত্র?

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

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


2
কোডিং স্ট্যান্ডার্ডের সাথে "চটজলদি" কিছু করার নেই।
রোবট

@ স্টিভেন বার্নাপ - অবশ্যই তা ঘটবে। "ক্লিন কোড" দেখুন। এটিতে কোডিং স্ট্যান্ডার্ডের ওডলস রয়েছে।
ডেভিড হামেন

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

1

আমি এটি একটি নতুন উত্তর হিসাবে পোস্ট করার সিদ্ধান্ত নিয়েছে কারণ এটি সম্পূর্ণ ভিন্ন দৃষ্টিকোণ।

আসুন আমরা কম্পিউটারের দৃষ্টিভঙ্গি এবং চিত্র বোঝার ক্ষেত্রে যে কোড কোডটিকে "পরিষ্কার কোড" হিসাবে বিবেচনা করি তা একবার দেখে নিই:

https://github.com/opencv/opencv/blob/05b15943d6a42c99e5f921b7dbaa8323f3c042c6/modules/photo/src/seamless_cloning_impl.cpp

ম্যাটল্যাব এবং বৈজ্ঞানিক কম্পিউটিংয়ের সাথে পরিচিত তাদের জন্য, সি ++ এ কোডটি সবচেয়ে পরিষ্কার ম্যাটল্যাব কোডের মতো প্রায় সংক্ষিপ্ত।


এখন আমাদের জিজ্ঞাসা করতে হবে, কেন পুরো লাইব্রেরি কোড বেসটি (এই উদাহরণে ওপেনসিভি) এই কোডের নমুনার মতো একই মানকে লিখিত হয় না?


আমাদের অবশ্যই একটি বৃহত বৈজ্ঞানিক গ্রন্থাগারের কোড বেসকে বিমূর্ত স্তরগুলিতে স্তরিত করতে হবে ।

নিম্ন স্তরের , আপনি পুনরায় বাস্তবায়ন সংযোজন ও subtractions আক্ষরিক হয়। অথবা, প্রতিটি প্ল্যাটফর্মের দ্রুত বাস্তবায়নে প্রতিটি অপারেশনকে আক্ষরিকভাবে ম্যাপিং করা।

https://github.com/opencv/opencv/blob/master/modules/core/src/hal_replacement.hpp

মধ্যম পর্যায়ের CPU- র সঞ্চালনের সময় 90% ব্যয় করা হয় - যেখানে আমরা "সমাজের কুৎসিততম দিকগুলো তুলে" কোড, যার মধ্যে হয়তো 80% এটি হয়। (একইভাবে, সম্ভবত 80% - 90% বিকাশের প্রচেষ্টা ব্যয় করা হয়েছিল মধ্য স্তরে, যদি আমরা বৈজ্ঞানিক গবেষণা থেকে আলাদাভাবে সফ্টওয়্যার বিকাশের প্রচেষ্টা গণনা করি।)

উচ্চ পর্যায়ে , আমরা পরিষ্কার কোড, গবেষকরা লিখেছেন।


এই স্তরগুলি মিশ্রিত না হয় তা নিশ্চিত করার জন্য উত্স কোড সংস্থায় একটি দৃ excel় উৎকর্ষতা প্রয়োজন। এটি কোডিং মানগুলির বাইরে , ওপেন সোর্স স্টুয়ার্ডশিপটির সাথে আরও অনেক কিছু করার রয়েছে ।

উদাহরণস্বরূপ, কখনও কখনও সিদ্ধান্ত নেওয়া হয় একটি ওপেন সোর্স প্রকল্পকে দুটি ভাগে ভাগ করার। কোড কমিটের মাধ্যমে আপনি এই জিনিসগুলি ঘটতে পারবেন না।

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