এখন পর্যন্ত সমস্ত দুর্দান্ত উত্তর ছাড়াও:
আপনার একটি "পর্যবেক্ষক পক্ষপাতিত্ব" রয়েছে। আপনি বাগগুলি পর্যবেক্ষণ করেন না, এবং তাই আপনি ধরে নেন যে কোনওটি নেই।
আমি তোমার মত ভাবতাম। তারপরে আমি পেশাগতভাবে সংকলকগুলি লিখতে শুরু করেছিলাম এবং আপনাকে বলি, সেখানে প্রচুর বাগ রয়েছে!
আপনি বাগগুলি দেখতে পাচ্ছেন না কারণ আপনি কোড লেখেন যা লোকেরা যে সমস্ত কোড লিখে থাকে তার ঠিক 99.999% এর মতো। আপনি সম্ভবত পুরোপুরি স্বাভাবিক, সোজাসাপ্টা, স্পষ্টভাবে সঠিক কোডটি লিখেছেন যা পদ্ধতিগুলি কল করে এবং লুপগুলি চালায় এবং অভিনব বা অদ্ভুত কিছু করেন না, কারণ আপনি সাধারণ ব্যবসায়িক সমস্যা সমাধানকারী একজন সাধারণ বিকাশকারী।
আপনি কোনও সংকলক ত্রুটি দেখতে পাচ্ছেন না কারণ সংকলক বাগগুলি সহজ-সরল কোডের পরিস্থিতিগুলি সহজেই বিশ্লেষণ করতে পারে না; বাগগুলি অদ্ভুত কোড বিশ্লেষণে থাকে যা আপনি লিখেন না।
অন্যদিকে আমার বিপরীত পর্যবেক্ষক পক্ষপাতিত্ব আছে। আমি প্রতিদিন সারাদিন পাগল কোডটি দেখি, এবং তাই আমার কাছে সংকলকগুলি বাগের মধ্যে পূর্ণ।
আপনি যদি কোনও ভাষার ভাষার স্বাতন্ত্র্যতা নিয়ে বসে থাকেন এবং সেই ভাষার জন্য কোনও সংকলক বাস্তবায়ন নিয়েছিলেন এবং সংকলকটি ঠিক সেই অনুমানটি বাস্তবায়িত করেছে কিনা, তা নির্ধারণ করার জন্য খুব চেষ্টা করেছিলেন, খুব শীঘ্রই আপনি খুঁজে পেতে চাইবেন finding সংকলক বেশ ঘন ঘন। আমি আপনাকে একটি উদাহরণ দেই, এখানে একটি সি # সংকলক বাগটি আমি আক্ষরিকভাবে পাঁচ মিনিট আগে পেয়েছি।
static void N(ref int x){}
...
N(ref 123);
সংকলকটি তিনটি ত্রুটি দেয়।
- একটি রেফ বা আউট আর্গুমেন্ট একটি নির্ধারিত পরিবর্তনশীল হতে হবে।
- এন (রেফ ইন্ট এক্স) এর সেরা ম্যাচে অবৈধ যুক্তি রয়েছে।
- আর্গুমেন্ট 1 এ "রেফ" হারিয়েছে।
স্পষ্টতই প্রথম ত্রুটির বার্তাটি সঠিক এবং তৃতীয়টি একটি বাগ। ত্রুটি প্রজন্মের অ্যালগরিদম এটি নির্ধারণের চেষ্টা করছে যে প্রথম যুক্তিটি কেন অবৈধ ছিল, এটি এটি দেখায়, দেখায় যে এটি একটি ধ্রুবক এবং এটি "রেফ" হিসাবে চিহ্নিত হয়েছে কিনা তা অনুসন্ধানের জন্য উত্স কোডটিতে ফিরে যায় না; পরিবর্তে, এটি ধরে নিয়েছে যে কোনও ধ্রুবককে রেফ হিসাবে চিহ্নিত করতে যথেষ্ট বোকামি করবে না এবং সিদ্ধান্ত নিয়েছে যে রেফটি অবশ্যই অনুপস্থিত হবে।
সঠিক তৃতীয় ত্রুটি বার্তাটি কী তা পরিষ্কার নয় তবে এটি তা নয়। আসলে, দ্বিতীয় ত্রুটির বার্তাটি সঠিক কিনা তা পরিষ্কার নয়। ওভারলোড রেজোলিউশনটি ব্যর্থ হওয়া উচিত, বা "রেফ 123" কে সঠিক ধরণের রেফ আর্গুমেন্ট হিসাবে ধরা উচিত? আমি এখন এটিকে কিছুটা ভাবনা দিয়েছি এবং এটি ট্রাইজে দলের সাথে কথা বলব যাতে সঠিক আচরণটি কী তা আমরা নির্ধারণ করতে পারি।
আপনি এই ত্রুটিটি কখনও দেখেন নি কারণ আপনি সম্ভবত এতটা নির্বোধ কিছু করতে পারেননি যেহেতু রেফ দিয়ে 123 পাশ করার চেষ্টা করার জন্য। এবং যদি আপনি এটি করেন তবে আপনি সম্ভবত খেয়াল করবেন না যে তৃতীয় ত্রুটি বার্তাটি অযৌক্তিক, কারণ প্রথমটি সঠিক এবং সমস্যাটি সনাক্ত করার জন্য যথেষ্ট। তবে আমি এ জাতীয় জিনিসগুলি করার চেষ্টা করি কারণ আমি সংকলকটি ভাঙ্গার চেষ্টা করছি । যদি আপনি চেষ্টা করে থাকেন তবে আপনি বাগগুলিও দেখতে পাবেন।