স্টিভ ইয়েজ একটি দুর্দান্ত ব্লগ পোস্ট লিখেছিলেন যা কিছুটা পরোক্ষভাবে এটিকে সম্বোধন করে।
বড় পয়েন্ট # 1: সংকলকরা কম্পিউটার বিজ্ঞানের প্রতিটি দিককেই অনেকটা পরিবেষ্টন করে। এগুলি একটি উচ্চ স্তরের কোর্স কারণ আপনাকে কম্পিউটার বিজ্ঞান পাঠ্যক্রমে শিখতে পারে এমন অন্যান্য সমস্ত বিষয়গুলি শুরু করার জন্য আপনাকে জানতে হবে। ডেটা স্ট্রাকচার, অনুসন্ধান এবং বাছাই, অ্যাসেম্পোটিক পারফরম্যান্স, গ্রাফ রঙ? এটা সব সেখানে।
একটি যৌথ পাঠ্যপুস্তক (স্রেফ) হিসাবে শুরু হওয়া সত্ত্বেও নূথ কয়েক দশক ধরে তাঁর স্মৃতিস্তম্ভ (এবং কখনই শেষ না হওয়া) "আর্ট অফ কম্পিউটার প্রোগ্রামিং" এ কাজ করার একটি কারণ রয়েছে। যেভাবে কার্ল সাগান বলেছিলেন যে "আপনি যদি স্ক্র্যাচ থেকে একটি অ্যাপল পাই তৈরি করতে চান তবে আপনাকে প্রথমে মহাবিশ্ব উদ্ভাবন করতে হবে", আপনি যদি একটি সংকলক লিখতে চান তবে আপনাকে প্রথমে কম্পিউটার বিজ্ঞানের প্রায় প্রতিটি বিষয় নিয়ে কাজ করতে হবে।
এর অর্থ হ'ল যদি সংকলকটি স্ব-হোস্ট করা থাকে তবে আমি যা করছি তা নির্ধারণ করা আমার পক্ষে যা প্রয়োজন তা করতে সক্ষম হবেন এটি নিশ্চিত। বিপরীতে, আপনি যদি নিজের ভাষায় একটি সংকলক না লিখে থাকেন তবে কারও কাছে সত্যিই গুরুত্বপূর্ণ এমন কোনও কিছু এটি মিস করার খুব ভাল সুযোগ রয়েছে কারণ ভাষা বাস্তবায়নকারীদের এমন কোনও প্রোগ্রাম লিখতে হয়নি যা তাদের সমস্ত বিষয় নিয়ে ভাবতে হবে।
বড় পয়েন্ট # 2: 30,000 ফুট থেকে এক বিস্ময়কর সংখ্যার সমস্যা দেখতে ঠিক কম্পাইলারের মতো।
সংকলকগণ প্রতীকগুলির একটি স্ট্রিম নিয়ে আসে, কিছু ডোমেন-নির্দিষ্ট পূর্বনির্ধারিত নিয়ম অনুসারে তাদের কাঠামোটি বের করে এবং এটিকে অন্য প্রতীক প্রবাহে রূপান্তর করে। বেশ সাধারণ লাগছে, তাই না? হ্যাঁ ভালো.
আপনি ভিজ্যুয়াল সি ++ টিমে থাকুক বা না থাকুক না কেন, আপনি প্রায়শই নিজেকে এমন কিছু করার দরকার পড়েন যা দেখতে একটি সংকলকের অংশের মতো লাগে। আমি আক্ষরিক প্রতিদিন এটি করি।
অন্যান্য বেশিরভাগ পেশার বিপরীতে, প্রোগ্রামাররা কেবল সরঞ্জাম ব্যবহার করে না, তবে তাদের নিজস্ব সরঞ্জাম তৈরি করে build একজন প্রোগ্রামার যিনি (দক্ষতার অভাবে, বা ব্যবহারযোগ্য সরঞ্জামগুলির অভাবের সাথে যা অন্য সরঞ্জামগুলি তৈরি করতে পারে) লেখার সরঞ্জাম চিরকালের জন্য প্রতিবন্ধী হয়ে থাকবে, অন্য কেউ সরবরাহ করে এমন সরঞ্জামগুলির মধ্যে সীমাবদ্ধ।
কোনও ভাষা যদি এমন "প্রোগ্রাম তৈরির পক্ষে উপযুক্ত নয়" যেগুলি প্রতীকগুলির স্রোত গ্রহণ করতে পারে, তাদের বিধি প্রয়োগ করতে পারে এবং এটিকে প্রতীকগুলির অন্য প্রবাহে রূপান্তর করতে পারে, তবে এটি বেশ সীমিত ভাষা বলে মনে হয় এবং এটি কার্যকর হবে না এমন একটি ভাষা আমাকে.
(সৌভাগ্যক্রমে, আমি মনে করি না যে অনেকগুলি প্রোগ্রামিং ল্যাঙ্গুয়েজ রয়েছে যা রূপান্তরকারী প্রতীকগুলির পক্ষে উপযুক্ত নয়। সি সম্ভবত আজকের মতো ব্যবহার করা সবচেয়ে খারাপ ভাষাগুলির মধ্যে রয়েছে, তবুও সি সংকলক সাধারণত স্ব-হোস্ট করা হয়, যাতে কখনও কাউকে থামেনি।)
তৃতীয় কারণটি আমি ব্যক্তিগত অভিজ্ঞতা থেকে শেষ করব, ইয়েগের দ্বারা উল্লেখ করা হয়নি (কারণ তিনি "কেন স্ব-হোস্ট" সম্পর্কে লেখেন নি): এটি বাগগুলি সরিয়ে দেয়। আপনি যখন একটি সংকলক লিখছেন, তার অর্থ প্রতিবার আপনি এটি নির্মাণের সময় (প্রতিবার আপনি এটি চালানোর সময় নয়), আপনি এটি কাজ করতে এবং একটি শালীন আকারের কোডবেস (সংকলক নিজেই) এর বিরুদ্ধে সঠিকভাবে কাজ করার উপর নির্ভর করেন।
এই মাসে আমি তুলনামূলকভাবে নতুন এবং বিখ্যাত অ-স্ব-হোস্টেড সংকলকটি ব্যবহার করছি (আপনি সম্ভবত এটি অনুমান করতে পারেন), এবং জিনিসটি সেগফোল্টিং না করে আমি 2 দিন যেতে পারি না। আমি আশ্চর্য হয়েছি যে ডিজাইনাররা এটি ব্যবহার করতে আসলে কতটা ছিল।