সংকলক এবং দোভাষীদের কী বাগ থাকতে পারে এবং আমরা (ব্যবহারকারী হিসাবে) তাদের সাথে ডিল করার জন্য কী করতে পারি? [বন্ধ]


28

যদি কোনও সংকলকের কাজটি মূলত মেশিন স্তরের কোডে উত্স কোডটি অনুবাদ করে থাকে, তবে কোনও সংকলকটিতে কোনও ত্রুটি থাকতে পারে, যেমন একটি ত্রুটিযুক্ত "অনুবাদ"?

একইভাবে একজন দোভাষীর জন্য: এটি কখনও কখনও প্রয়োজনীয় সামগ্রী আউটপুট করতে ব্যর্থ হতে পারে?

সংকলক / দোভাষীর কোনও বাগ আমি শুনিনি, তবে সেগুলি কি বিদ্যমান?


6
বিকাশে তারা অবশ্যই স্পষ্টভাবে উপস্থিত থাকবে যে কোনও ওপেন সোর্স সংকলকের বাগট্র্যাকারটি দেখুন
ফ্রিক

7
সংকলক / দোভাষীর কোনও বাগ আমি শুনিনি, তবে সেগুলি কি বিদ্যমান? আমি জিসিসি সংকলকটিতে
হতাশ

47
এটি আসলে খুব ভাল প্রশ্ন নয়, এটি এমন কিছু জিজ্ঞাসা করে যা সাধারণ জ্ঞান।

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

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

উত্তর:


51

হাঁ

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

ভাগ্যক্রমে এগুলির বেশিরভাগ ভাষাতে (বিশেষত ওপেন সোর্স) এমন একটি পাবলিক বাগ ট্র্যাকিং সিস্টেম থাকবে যাতে আপনি প্রতিবেদন জমা দিতে পারেন।

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


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

@ এবং দেখে মনে হচ্ছে যে একজন মডারেটর এটিকে এমন কিছু হিসাবে প্রত্যাখ্যান করেছেন যা একটি মন্তব্য বা পৃথক উত্তর হওয়া উচিত।
কেচালোক্স

শুধু "হ্যাঁ" নয়, "হ্যাঁ হ্যাঁ!" :-)
হ্যালোইন

সি উভয় পরিপক্ক এবং সক্রিয়ভাবে বিকাশযুক্ত। সি ++ এরও তাই। জাভাও তাই। ইত্যাদি ..
djechlin

100

সাধারণ মানুষের কথায়:

সমস্ত প্রোগ্রামে বাগ থাকতে পারে।

সংকলক প্রোগ্রাম হয়।

কিন্তু, সংকলকগুলিতে বাগ থাকতে পারে।


55
আরও উদ্বেগজনক: ডিবাগারগুলি প্রোগ্রাম। সুতরাং, ডিবাগারগুলিতে বাগ রয়েছে have
ড্যানিয়েল গ্রেটজার

19
@ জোজেফগ: সুতরাং আপনি কীভাবে ডিবাগারটি ডিবাগ করবেন? কে নজর রাখেন?
হতাশ

16
নিবন্ধন করুন
জিমি হোফা

9
@ জোয়েলফ্যান যেহেতু আমি "থাকতে পারে" লিখেছি সে ব্যতিক্রমটি আবৃত। যদি আপনি "থাকে" বলে থাকেন তবে আপনাকে অবশ্যই উল্লেখ করতে হবে যে আপনি কেবল অ-তুচ্ছ প্রোগ্রামগুলিকেই উল্লেখ করছেন। "থাকতে পারে" বলে, আপনার দরকার নেই।
তুলাইনস কর্ডোভা

8
"হ্যালো ওয়ার্ল্ড" প্রোগ্রামগুলিতে বাগ থাকতে পারে যদি এটি কোনও বাগযুক্ত সংকলক মেনে চলে।
wtsang02

22

এমনকি হার্ডওয়্যারগুলিতে বাগগুলি থাকতে পারে; একটি বিখ্যাত উদাহরণ পেন্টিয়াম এফডিএল বাগ । সন্দেহ নেই যে সংকলকগুলিতে বাগ রয়েছে এমন সম্ভাবনা রয়েছে।



8

4

অবশ্যই, কারণ সংকলকগুলি সফ্টওয়্যার।

২০০৫ সালে, আমি একটি বড় সংস্থার জন্য লিখেছিলাম এমন একটি অত্যন্ত সমালোচিত সফ্টওয়্যারটিতে আমার কোডের একটি অংশ ব্যর্থ হয়েছিল। যেহেতু এই সংস্থার আক্ষরিক মিলিয়ন মিলিয়ন ডলার সংশোধন করতে ব্যয় হয়েছিল, তারা অবশ্যই একটি বড় গাধা তদন্ত শুরু করেছিল।

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

.NET আক্ষরিক অর্থে কয়েক শতাধিক মেমরি ফাঁস, বিশেষত এর প্রাথমিক প্রয়োগসমূহে সুপরিচিত ছিল।

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


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

1
সফটওয়্যারটি কী ছিল?
সিমন

2

কেবল বাগগুলিই নয়, ইচ্ছাকৃত ম্যালওয়ারও রয়েছে।

আসল ইউনিক্স সি সংকলকটিতে ব্রায়ান কর্নিগান বাস্তবায়িত "লগইন" ট্রোজান এর মধ্যে সর্বাধিক সুপরিচিত; http://cm.bell-labs.com/who/ken/trust.html নিবন্ধটির এর কিছু পটভূমি রয়েছে।


1
এটি কি বাস্তবায়িত হয়েছিল তা পরিষ্কার?
কিথ থম্পসন

এটি একটি বেশ আকর্ষণীয় বিষয়, তবে এই প্রশ্নের সাথে সম্পর্কিত নয়।

@ ডেলান আমি দ্বিমত পোষণ করছি; প্রশ্নের কেন্দ্রে মনে হয় "আমি আমার সংকলককে কতটা বিশ্বাস করতে পারি?"
অ্যান্ডি

1

হ্যাঁ অবশ্যই কোনও সফ্টওয়্যার সংকলকগুলির মতো বাগ রয়েছে, উদাহরণস্বরূপ জিসিসি বাগ তালিকা এখানে is


0

হ্যাঁ।

এছাড়াও, কেবল সংকলকগুলির সাথেই নয়, অনুবাদক / ডিবাগার এবং 3 য় পক্ষের সফ্টওয়্যার সরঞ্জামগুলির সাথেও।

আমরা বর্তমানে কয়েকটি তৃতীয় পক্ষের সফ্টওয়্যার ব্যবহার করছি এবং কিছু সমস্যা রয়েছে। কখনও কখনও তারা আমাদের ধন্যবাদ জানায়, বাগ খুঁজে পেতে এবং প্রতিবেদন করার জন্য। :)

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


আপনার গুরুত্বপূর্ণ প্রশ্নটি তারপরে হ্যালটিং সমস্যার
wtsang02

0

সংকলক হ'ল এমন একটি প্রোগ্রাম যা একটি ভাষায় (উত্স ভাষা) লেখা একটি প্রোগ্রাম পড়ে এবং এটিকে অন্য ভাষায় (টার্গেট ল্যাঙ্গুয়েজ) বেশিরভাগ মেশিন ল্যাঙ্গুয়েজে একটি সমতুল্য প্রোগ্রামে অনুবাদ করে।

সংকলকের বিভিন্ন ধাপ রয়েছে যার মাধ্যমে আপনার উত্স ভাষার কোডটি লাইন দ্বারা স্ক্যান করা হয়। একটি প্রতীক টেবিল রয়েছে যা উত্স ভাষা কোডে স্ক্যান করা সমস্ত কীওয়ার্ডের ট্র্যাক রাখে।

প্রথম পর্যায়: লেক্সিকাল অ্যানালাইজার - উত্স প্রোগ্রামের সমস্ত চরিত্রটি পড়ে এবং টোকেনগুলির লজিক্যাল বিভাজন গঠন করে (ইন্ট, চর, ফ্ল্যাট, যদি-অন্যদিকে, তবে ইত্যাদি)

দ্বিতীয় পর্যায়: সিনট্যাক্স বিশ্লেষক - টোকেনের প্রবাহের কাঠামো বিশ্লেষণ করুন। অভিব্যক্তিগুলির হায়ারারিকিকাল পার্সিং যা পোস্টফিক্স / উপসর্গ ইত্যাদি অন্তর্ভুক্ত করে (a = b + c * d)

তৃতীয় ধাপ: সিমান্টিক বিশ্লেষক - টোকেনগুলির টাইপ চেকিং (বাস্তবের সাথে পূর্ণসংখ্যার, ভাসমান ইত্যাদি) এবং অপারেটরের অগ্রাধিকার ইত্যাদির মতো অনেক কিছুই ..

পর্যায় 4: অন্তর্বর্তী কোড জেনারেটর - a = বি + সি * ডি (টেম্প 1 = সি * ডি, টেম্প 2 = টেম্প 1 + বি, টেম্পে = টেম্প 2-ই)

পঞ্চম পর্যায়: কোড অপ্টিমাইজেশন - বিভিন্ন বিশ্লেষণ (নিয়ন্ত্রণ প্রবাহ, ডেটা ফ্লো, ট্রান্সফরমেশন)
যা এলিমেন্ট করে: রিডানডেন্সি কোড, কনস্ট্যান্টস প্রপোজেশন, আংশিক ডেড কোড, সাধারণ সুপ্রেসপ্রেসন, লুপ ইনগ্রিয়েন্ট কোড

Hase ম পর্যায়: কোড জেনারেশন - রেজিস্টারে মান স্থাপনের লক্ষ্য কোড (বেশিরভাগ অ্যাসেম্বলি ল্যাঙ্গুয়েজ) জেনারেশন

এই সমস্ত পর্যায়গুলি ভাল লিখিত প্রোগ্রাম ব্যতীত কিছুই নয় এবং এতে কোনও ত্রুটি থাকতে পারে না ..


-1

অবশ্যই, সংকলকগুলি কেবল প্রোগ্রামগুলি এবং তাদের লেখকরাও বোকা :)। এমনকি ভাষা নির্দিষ্টকরণে একটি বাগ থাকতে পারে। উদাহরণ: সি # + ফরচ + ল্যাম্বদা

বা পাইথনে, দোভাষীগুলিতে বাগ: দুষ্ট অ্যাস ক্র্যাশ দোভাষীকে সংকলন করে

ঠিক আছে, আপনি যদি সংকলক / ইন্টারপিটারে বাগগুলি দেখতে চান -> পিএইচপি দেখুন। পূর্ণসংখ্যা ওভারফ্লো সহ একটি বিখ্যাত বাগ রয়েছে। প্রথম ঠিক থেকে শুরু if (size > INT_MAX) return NULL;গল্পের ধারাবাহিকতা


সংকলক লেখকরা বোকা নন। সংকলকগুলি বেশ জটিল হওয়ায় মাঠে প্রবেশের প্রতিবন্ধকতাও যথেষ্ট পরিমাণে বেশি। সুতরাং আমরা যারা লিখতে পারি তারা গড় ছেলের মতো ভুল না করে আশা করতে পারি।
jszpilewski

অগ্রণী / ল্যাম্বদা কোনও বাগ নয়, ল্যাম্বডাস যুক্ত হওয়ার আগে এটি একটি নির্দিষ্ট এবং বিবেকের নকশার সিদ্ধান্তে নেমে আসে।
অ্যান্ডি 15

@ অ্যান্ডি, যেমনটি আমি জানি, এই সিদ্ধান্তটি কী কী সমস্যা সৃষ্টি করবে তা কেউ জানতে পারেনি। বাগ না কেন?
ভিক্টর লোভা

@ jszpilewski আপনি কি এই পাঠ্যের পরে হাসি দেখতে পাচ্ছেন?
ভিক্টর লোভা

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