আমি অদূর ভবিষ্যতে একটি সংকলক লেখার পরিকল্পনা নেই; তবুও, আমি সংকলক প্রযুক্তিগুলির সাথে এবং এই জিনিসগুলি আরও কীভাবে আরও ভাল করা যায় তার সাথে আমি বেশ আগ্রহী।
সংকলিত ভাষাগুলির সাথে শুরু করে, বেশিরভাগ সংকলকের দুটি ত্রুটির স্তর থাকে: সতর্কতা এবং ত্রুটি, প্রথমত আপনার অ-মারাত্মক জিনিসগুলি ঠিক করা উচিত এবং মেশিন- (বা বাইট) উত্পাদন করা অসম্ভব বলে বেশিরভাগ সময় চিহ্নিত করা হয় errors ইনপুট থেকে কোড।
যদিও এটি একটি বেশ দুর্বল সংজ্ঞা। জাভা এর মতো কিছু ভাষায়, নির্দিষ্ট সতর্কতাগুলি @SuppressWarning
নির্দেশনাটি ব্যবহার না করেই মুক্তি পাওয়া অসম্ভব simply এছাড়াও, জাভা কিছু অ-মারাত্মক সমস্যাগুলি ত্রুটি হিসাবে বিবেচনা করে (উদাহরণস্বরূপ, জাভাতে অ্যাক্সেসযোগ্য কোডটি একটি কারণের জন্য আমি জানতে চাইলে ত্রুটি ঘটায়)।
সি # তে একই সমস্যা নেই তবে এর কয়েকটি রয়েছে। দেখে মনে হচ্ছে সংকলনটি বেশ কয়েকটি পাসে ঘটে এবং একটি পাস ব্যর্থ হলে পরবর্তী পাসগুলি কার্যকর করা থেকে বিরত রাখবে। তার কারণে, আপনার বিল্ড ব্যর্থ হলে আপনি যে ত্রুটি গণনাটি পান তা প্রায়শই মারাত্মকভাবে অবমূল্যায়ন করা হয়। এক দৌড়ে এটি বলতে পারে যে আপনার দুটি ত্রুটি রয়েছে, তবে একবারে সেগুলি ঠিক করার পরে আপনি 26 টি নতুন পেয়ে যাবেন।
সি এবং সি ++ এ খনন করা জাভা এবং সি # এর সংকলন ডায়াগোনস্টিক দুর্বলতার উপর কেবল একটি খারাপ সমন্বয় দেখায় (যদিও এটি আরও সঠিক হতে পারে যে জাভা এবং সি # প্রতিটি অর্ধেক সমস্যা নিয়েই গেছে)। কিছু সতর্কতাগুলির সত্যই ত্রুটি হওয়া উচিত (উদাহরণস্বরূপ যখন সমস্ত কোড পাথ কোনও মান ফেরায় না) এবং তবুও তারা সতর্কতা হয় কারণ, আমি মনে করি, তারা স্ট্যান্ডার্ডটি লেখার সময় সংকলক প্রযুক্তি এই ধরণের তৈরি করার পক্ষে যথেষ্ট ভাল ছিল না চেক বাধ্যতামূলক। একই শিরাতে, সংকলকগণ প্রায়শই স্ট্যান্ডার্ডের চেয়ে বেশি যাচাই করে থাকেন, তবে অতিরিক্ত অনুসন্ধানের জন্য "স্ট্যান্ডার্ড" সতর্কতা ত্রুটির স্তরটি ব্যবহার করেন। এবং প্রায়শই, সংকলকগণ এখনই তাদের খুঁজে পাওয়া সমস্ত ত্রুটিগুলি রিপোর্ট করবেন না; সেগুলি থেকে মুক্তি পেতে কয়েকটি সংকলন লাগতে পারে। ক্রিপ্টিক ত্রুটিগুলি সি ++ সংকলকগুলি থুতু ফেলতে পছন্দ করে না,
এখন যোগ করে যে অনেকগুলি বিল্ড সিস্টেমগুলি ব্যর্থতা রিপোর্ট করার জন্য কনফিগার করা যায় যখন সংকলকগণ সতর্কতা নির্গত করে, আমরা কেবল একটি অদ্ভুত মিশ্রণ পাই: সমস্ত ত্রুটি মারাত্মক নয় তবে কিছু সতর্কতা হওয়া উচিত; সমস্ত সতর্কতা প্রাপ্য নয় তবে কিছু তাদের অস্তিত্বের উল্লেখ না করে স্পষ্টভাবে দমন করা হয়; এবং কখনও কখনও সমস্ত সতর্কতা ত্রুটি হয়ে যায়।
সংকলনবিহীন ভাষাগুলিতে এখনও ক্রিপীয় ত্রুটি প্রতিবেদনের অংশ রয়েছে। কোডটি প্রকৃতপক্ষে চালিত না হওয়া পর্যন্ত পাইথনের টাইপগুলি জানানো হবে না এবং আপনি একবারে একাধিক ত্রুটি ঘটাতে পারবেন না কারণ স্ক্রিপ্টটি পূরণ হওয়ার পরে এটি সম্পাদন বন্ধ হয়ে যাবে stop
পিএইচপি এর পক্ষে, আরও বা কম উল্লেখযোগ্য ত্রুটির মাত্রা এবং ব্যতিক্রম রয়েছে। পার্স ত্রুটিগুলি একবারে একবারে প্রতিবেদন করা হয়, সতর্কতাগুলি প্রায়শই খারাপ হয় সেগুলি আপনার স্ক্রিপ্টটি বাতিল করতে হবে (তবে ডিফল্ট হিসাবে নয়), বিজ্ঞপ্তিগুলি প্রায়শই গুরুতর যুক্তিযুক্ত সমস্যা দেখায়, কিছু ত্রুটি সত্যই আপনার স্ক্রিপ্টটি থামানোর পক্ষে যথেষ্ট খারাপ নয় তবে এখনও করুন, এবং পিএইচপি-র মতো যথারীতি এখানে কিছু অদ্ভুত জিনিস রয়েছে (কেন মারাত্মক ত্রুটিগুলি সত্যই মারাত্মক নয়? এর জন্য আমাদের ত্রুটির স্তর কেন দরকার?, E_RECOVERABLE_E_ERROR
আমি আপনার সাথে কথা বলছি)।
আমার কাছে মনে হয় কম্পাইলার ত্রুটি প্রতিবেদনের প্রতিটি একক বাস্তবায়ন ভেঙে গেছে। যা সত্যই লজ্জাজনক, যেহেতু সমস্ত ভাল প্রোগ্রামাররা ত্রুটিগুলির সাথে সঠিকভাবে মোকাবেলা করা কতটা গুরুত্বপূর্ণ এবং এখনও এটি করার জন্য তাদের নিজস্ব সরঞ্জামগুলি পেতে পারে না তার পক্ষে জোর দেয়।
সংকলক ত্রুটিগুলি জানার সঠিক উপায়টি কী হওয়া উচিত বলে আপনি মনে করেন?