বিভিন্ন প্রোগ্রামিং ভাষার জন্য প্রতি লোকের গড় বাগের সংখ্যা কী একই? [বন্ধ]


45

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

এই দাবিটি কোথা থেকে এসেছে কেউ কি জানেন? উচ্চ-স্তরের ভাষাগুলি কি কম বাগের দিকে নিয়ে যায়?


11
অযৌক্তিক বলে মনে করে যে কিছু ভাষাগুলি এমন স্টাইলকে উত্সাহ দেয় যা অন্যের চেয়ে একক লাইনে বেশি বিবৃতি প্যাক করে।
কালেব

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

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

4
আপনি কি সত্যিই ভাবেন যে {1≥⍴⍵:⍵⋄e←⍵[?⍴⍵]⋄ (∇(⍵<e)/⍵) , ((⍵=e)/⍵) , ∇(⍵>e)/⍵}এতে কোনও ত্রুটি থাকতে পারে int pivot = arr.Count / 2;?
সুইভ

2
আমি শুধু এই প্রশ্ন জুড়ে দৌড়ে। কেন এটি বন্ধ ছিল আমি কুয়াশাটি করি নি; এটি এই সাইটের জন্য একটি নিখুঁত প্রশ্ন। একটি বড় প্রকল্পের জন্য, কেএলসিপি প্রতি বাগগুলি প্রোগ্রামাররা কতটা ভাল তা পরিমাপ করে না। এটি সংস্থাটি এবং প্রক্রিয়াটি কতটা ভাল তার একটি পরিমাপ।
ডেভিড হ্যামেন

উত্তর:


43

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

আমার অনুলিপিগুলি সহজেই হস্তান্তর করার জন্য আমার কাছে নেই - সেগুলি আমার বুকসেল্ফে বসে কাজ করছে - তবে একটি দ্রুত গুগলের একটি প্রাসঙ্গিক উদ্ধৃতি পাওয়া গেছে:

শিল্প গড়: "বিতরণ করা কোডের 1000 লাইনে প্রায় 15 - 50 ত্রুটি।"
(স্টিভ) আরও বলেছে এটি সাধারণত কোডের প্রতিনিধিত্ব করে যার পিছনে কিছু কাঠামোগত প্রোগ্রামিং রয়েছে তবে এতে কোডিং কৌশলগুলির একটি মিশ্রণ রয়েছে।

কোড সম্পূর্ণ থেকে উদ্ধৃত , এখানে পাওয়া গেছে: http://mayerdan.com/ruby/2012/11/11/bugs-per-line-of-code-ratio/

স্মৃতি যদি সঠিকভাবে পরিবেশন করে তবে স্টিভ এটি সম্পর্কে পুরোপুরি আলোচনায় চলে যা দেখায় যে পরিসংখ্যানগুলি ভাষা (সি, সি ++, জাভা, অ্যাসেম্বলি এবং অন্যান্য) জুড়ে ধ্রুবক এবং অসুবিধা থাকা সত্ত্বেও (যেমন "কোডের রেখার" অর্থ কী তা বোঝাতে)।

সবচেয়ে গুরুত্বপূর্ণ বিষয় হল তাঁর উত্সগুলির জন্য প্রচুর উদ্ধৃতি রয়েছে - তিনি অসমর্থিত মতামত দিচ্ছেন না, তবে সেগুলি ব্যাক আপ করার জন্য উল্লেখ রয়েছে।

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

(পাশাপাশি: যদি আপনার কাছে ইতিমধ্যে কোড কমপ্লিট না থাকে তবে নিজেই একটি অনুলিপি কিনুন এবং এটি পুরোপুরি পড়ুন - এটি বিনিয়োগের পক্ষে ভাল)

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


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

আপনার কাছে কোড রকমার্টের সম্পূর্ণ কোডটির কোন সংস্করণ আছে? আমি জানি যে দ্বিতীয় সংস্করণটি একটি বড় আপডেট ছিল। এটি খনন করতে হবে এবং সোমবার কাজ করতে গেলে এটি কী বলে তা দেখতে হবে।
বেভান

আমি মনে করি আপনার সম্পাদনা ( আপডেট :) সমস্যার মূল বিষয়। অথবা, মার্ক টোয়েন যেমন বলেছিলেন, এখানে তিন ধরণের মিথ্যা কথা রয়েছে: মিথ্যা, জঘন্য মিথ্যা এবং পরিসংখ্যান।
গ্যালাকটিক

1
@ রোকমার্ট "প্রকল্পের আকার বাড়ার সাথে সাথে ত্রুটিগুলি নাটকীয়ভাবে বৃদ্ধি পেয়েছে" তিনি কি পানি ভিজে গেছে বলেও উল্লেখ করেছেন? জিনিসগুলি আরও জটিল হয়ে উঠলে অবশ্যই ত্রুটি রয়েছে। কারণ প্রতিটি নতুন পরিবর্তনকে প্রভাবিত হতে পারে এমন প্রতিটি সম্ভাব্য টুকরো মনে রাখতে হবে। যা প্রকল্প বাড়ার সাথে সাথে বৃদ্ধি পায়।
পার্থিয়ান শট 21

3
উদ্ধৃতিটি ভুল হয় বা পুরানো। দ্বিতীয় সংস্করণে, এটি 521 পৃষ্ঠায় রয়েছে: "সরবরাহকারীর সফ্টওয়্যারগুলির জন্য 1000 লাইন কোডের প্রতি শিল্পের গড় অভিজ্ঞতা প্রায় 1 - 25 টি ত্রুটি।
আরেহ লাইব বৃষ

18

দাবিটি হ'ল - সর্বোপরি - নিষ্পাপ।

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

for (i = 0; i < 100; i += 1) printf("hello"); 

এখানে আমাদের একটি শারীরিক এলওসি রয়েছে তবে দুটি যৌক্তিক ( forএবং printfবিবৃতি) রয়েছে। তবে আমরা অবশ্যই উদাহরণটি লিখতে পারি:

for (i = 0; i < 100; i += 1) 
  printf("hello"); 

যা আমাদের দুটি শারীরিক এবং দুটি যৌক্তিক এলওসি সরবরাহ করবে। আমি মনে করি এটি পরিষ্কার যে শারীরিক এলওসি-র উপর নির্ভর করবে এমন কোনও "লোক প্রতি প্রতি বাগ" পরিমাপ প্রোগ্রামিং স্টাইল দ্বারা কলঙ্কিত হবে, সুতরাং আমাদের পরিমাপটি মূলত অকেজো হবে।

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

এই দাবির পক্ষে সম্ভাব্য উত্স হ'ল লেস হ্যাটনের সফটওয়্যার ব্যর্থতা-কল্পনা এবং ভুল :

আমরা উপসংহারে পৌঁছাতে পারি যে প্রোগ্রামিং ভাষার পছন্দটি সবচেয়ে নির্ভরযোগ্যতার সাথে দুর্বলভাবে সম্পর্কিত।

পরবর্তী সময়ে, কাগজটিতে সি এবং সি ++ এর জন্য অনুরূপ ত্রুটিযুক্ত ঘনত্বের উল্লেখ করা হয়েছে:

সাম্প্রতিক এক সমীক্ষার দুটি একই সিস্টেমের (প্রায় 50,000 লাইন), সি-তে একটি এবং অবজেক্ট-ডিজাইন করা সি ++ এর মধ্যে একটি তুলনায় সাম্প্রতিক গবেষণায় ফলস্বরূপ ত্রুটিযুক্ত ঘনত্বগুলি 1000 লাইন প্রতি যথাক্রমে 2.4 এবং 2.9 এর মতো দেখা গেছে।

তবে এটির অর্থ এই নয় যে প্রোগ্রামিং ভাষাগুলি জুড়ে "এলওসি প্রতি বাগ" ধ্রুবক বা এটি যদি তা হয়ে থাকে তবে তা উল্লেখযোগ্য হবে।


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

2
সংক্ষিপ্তসার: প্রতি বিবৃতি / ফাংশন পয়েন্টের জন্য বাগগুলি ধ্রুবক, নিম্ন স্তরের ভাষাগুলিতে পতনযোগ্য প্রোগ্রামার দ্বারা রচিত আরও কোড থাকে, উচ্চ স্তরের ভাষাগুলি আপনি কম টাইপ করেন - তাই কম বাগ। যদিও সম্পূর্ণ ভুল ডিজাইনের ধরণের বাগগুলি সম্ভবত একই রকম!
মার্টিন বেকেট 18

2
কেবলমাত্র এটি ছেড়ে দিন যে "একটি বাগ" যা গঠন করে তা অত্যন্ত বিষয়ভিত্তিক এবং ত্রুটিগুলি তীব্রতা, প্রভাব এবং গুরুত্বের সাথে বন্যভাবে পৃথক হয়।
tmadmers

@tdammers এবং এটি গুরুত্ব নেতিবাচক হতে পারে। আমাদের কাছে মুষ্টিমেয় বাগ রয়েছে যা ক্লায়েন্ট ব্যবহার / প্রত্যাশা / চায়, তাই আমরা সেগুলি ঠিক করতে পারি না ...
ইজকাটা

@ ইজকাটা: আপনার বাগের সংজ্ঞা উপর নির্ভর করে ...
টিডামাররা

12

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


6

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

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

আমি কেবল উত্তর দিতে পারি যা সম্পর্কিত হতে পারে তা হ'ল LOC এর ত্রুটি থাকার সম্ভাবনা হুড থাকে এবং তত বেশি ত্রুটি থাকে।


আমার প্রশ্ন ভাষা থেকে পৃথক কোড লাইন প্রতি ত্রুটির গড় সংখ্যা সম্পর্কে।
ক্রিস্টিয়ান

4
@ ক্রিশ্চিয়ান এই জাতীয় সংখ্যা নেই। এটি বিকাশকারী এবং ভাষার কোডিংয়ের ভাষা এবং দক্ষতার সাথে সম্পর্কিত ব্যক্তি হিসাবে প্রতি পরিবর্তন করে I আমি মনে করি না যে সর্বজনীন গড় আছে।
আকিরা 71

1
@ আকিরা "১ "তেমন কোনও সংখ্যা নেই" ভাল, নিশ্চিত। তবে সম্ভাব্যতা বন্টন রয়েছে, যা থেকে আপনি সংখ্যা বের করতে পারবেন। আমাজন রেইন ফরেস্টে বছরে কত ইঞ্চি বৃষ্টিপাত হয় তার কোনও সংখ্যা নেই তবে আপনি গড় নিতে পারেন।
পার্থিয়ান শট 21

3

কোড অফ লাইন প্রতি বাগ

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

বাগগুলি আপনার কাজের সাথে সম্পর্কিত

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

কীভাবে সম্ভব?

প্রবীণ বিকাশকারীরা প্রায়শই উচ্চতর ঝুঁকি বিকাশের কাজে নিযুক্ত হন। কোডের রিফ্যাক্টরিং এবং উদাহরণ হিসাবে নতুন সিস্টেম তৈরি করা। জুনিয়র বিকাশকারীদের প্রায়শই ज्ञিত সমস্যাগুলি ঠিক করার জন্য বরাদ্দ করা হয় যা সিনিয়র বিকাশকারীদের সময়ের জন্য উপযুক্ত নয়।

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

ভাষার সিনট্যাক্স গুরুত্বপূর্ণ

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

সংকলক বাগগুলি হ্রাস করে

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

2019 আপডেট করুন:

সংকলকগণ বাগের প্রকৃতি বা সংখ্যার উপর কোনও পার্থক্য করেন না। সোর্স কোডটি লিখেছেন এমন ব্যক্তির সাথে বাগগুলি সম্পূর্ণরূপে আপেক্ষিক এবং সেগুলি বাগগুলি প্রকৃতির ক্ষেত্রে খুব বিষয়গত হতে পারে।


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

3
সম্মত হয়েছে যে সংকলক দ্বারা যে বাগগুলি ধরা যেতে পারে সেগুলি সাধারণত যুক্তিসঙ্গত স্বয়ংক্রিয় বা ম্যানুয়াল পরীক্ষার মাধ্যমে ধরা পড়বে। পার্থক্যটি হ'ল স্থিতভাবে টাইপ করা ভাষাগুলি আপনাকে পরীক্ষার প্রথম পাস দেয় (ক) বিনামূল্যে, এবং (খ) সত্যই, খুব দ্রুত। রুবি ইউনিট পরীক্ষাগুলির একটি ভাল স্যুইট সংকলকের চেয়ে ভাল, তবে আপনি সাধারণত এগুলি দ্রুত চালাতে পারবেন না, আপনি এগুলি বিনামূল্যে পান না, এবং তারা সাধারণত কোডের রেখার প্রায় নিকটবর্তী হন না won't সমস্যা।
কেন স্মিথ

@ কেনস্মিথ স্থিতিশীল প্রকারগুলি নিখরচায় নয়। কোর্সেস.স.ওয়াশিংটন.ইডু
হুগো উড

1

FWIW, আমার অভিজ্ঞতা

  1. দুটি ধরণের বাগ রয়েছে: ক) যেখানে প্রোগ্রামটি প্রত্যাশা পূরণ করে না, এবং খ) যেখানে প্রোগ্রামটি কোনও যুক্তিসঙ্গত প্রত্যাশা পূরণ করতে পারে না, কারণ এটি ক্র্যাশ / হ্যাং / সংকলন করবে না won't

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

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

আমি এমন সিস্টেমগুলি দেখেছি যেখানে কিছু লোক প্রোগ্রাম লেখেন, অন্যরা ডিরেক্টরি লেখেন এবং পূর্ববর্তীরা পরবর্তীকালের তুলনায় "কেবলমাত্র কাজ" করার প্রবণতা রাখে।


1

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


এটা কেমন ছিল? এসও
ক্লাউনগুলিতে

0

কোডের লাইনগুলি সম্পর্কে কথা বলার পরিবর্তে - যা প্রকৃতপক্ষে অকেজো মেট্রিক - আমি আপনার প্রশ্নের এই অংশটি সম্বোধন করতে চাই:

উচ্চ-স্তরের ভাষাগুলি কি কম বাগের দিকে নিয়ে যায়?

এটি বাগ / এলওসি থেকে পৃথক, কারণ উচ্চ-স্তরের ভাষাগুলি কম কোড দিয়ে আরও বেশি করে। কিছু বৈশিষ্ট্যের প্রয়োজনীয়তা বাস্তবায়িত হতে পারে lISP এর 500 লাইন x86 সমাবেশের 15000 লাইন লাগতে পারে।

সুতরাং, সমস্ত ভাষার মধ্যে বাগ / এলওসি স্থির থাকলেও, উচ্চ-স্তরের ভাষা এখনও কম বাগ পাবে।


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