compiler construction and কিভাবে প্রথম কম্পাইলার লিখিত ছিল?




কম্পাইলার কি (5)

আমি মুরগী ​​এবং ডিম এবং বুটস্ট্র্যাপিং সম্পর্কে শুনেছি। আমার কিছু প্রশ্ন আছে।

কি বাইনারি নির্দেশাবলী মধ্যে কিছু রূপান্তরিত প্রথম কম্পাইলার লিখেছেন?

সমাবেশ কম্পাইল বা বাইনারি নির্দেশাবলী মধ্যে অনুবাদ করা হয়?

... বাইনারিতে একটি কম্পাইলার লিখেছে এটা বিশ্বাস করা কঠিন।


bootstrapping এবং কম্পাইলার লেখার ইতিহাস সম্পর্কে অনুগ্রহ করে পড়ুন

ধারণাটি মেশিন কোডে সরাসরি একটি খুব সহজ কম্পাইলার লিখতে হয়, এটি আরও বেশি পরিশীলিত কম্পাইলার লিখতে ব্যবহার করুন, তৃতীয়টি তৈরি করতে দ্বিতীয়টি ব্যবহার করুন এবং যতক্ষণ না আপনি সম্পূর্ণ বৈশিষ্ট্যযুক্ত কম্পাইলার পাবেন।


প্রথম প্রোগ্রামগুলি মেশিন কোডে লেখা হয়েছে (সমাবেশ ভাষা নয়) - প্রকৃত সংখ্যার সুইচ ব্যবহার করে কম্পিউটার মেমরিতে প্লাগ করা হয়েছে। আমরা একটি দীর্ঘ পথ আসা করেছি ...

কখনও কখনও এই এখনও একটি ছোট পরিমাণে ঘটে - কোড ছোট বিট প্যাচ বা thunks তৈরি। আমি বেসিক স্ট্রিংগুলিতে সংখ্যায় পঞ্চিংয়ের কথা স্মরণ করিয়েছি, যা তখন প্রাথমিক মাইক্রোগুলিতে ছোট, দ্রুত সাবরুটিন হিসাবে কার্যকর করা হয়েছিল। আমি একটি পিডিপি -11 এর সামনে প্যানেলের সুইচগুলি মনে করি একটি বুটলোডার প্রোগ্রামে একটি বিশ্ববিদ্যালয় কোর্সের স্মৃতিতে প্রবেশ করার জন্য।

এই প্রোগ্রামগুলি কখনও কখনও অন্যান্য প্রোগ্রাম তৈরির জন্য পাঠ্য ফাইলগুলি প্রক্রিয়া করার জন্য ব্যবহার করা হবে এবং ভয়েলা প্রোগ্রামিং ভাষাগুলি তৈরি করা হয়েছিল।


ডিম দীর্ঘ পূর্ববর্তী মুরগি। বেশিরভাগ "মুরগি ও ডিম" সমস্যার উত্তর একই: বিবর্তন। কিছু মানুষ জৈবিক বিবর্তনেও বিশ্বাস করতে কষ্ট পায়, কিন্তু অবিশ্বাস একটি যুক্তি নয় (গুগল আর্গুমেন্ট বিজ্ঞাপন অজ্ঞতা)।

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


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

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

যদি আপনি এমন বাধাটি ভাঙ্গতে চান যা কম্পিউটারগুলিকে যাদুর মত মনে করে তবে আমি অত্যন্ত চার্লস পেটজোল্ড এবং / অথবা দ্য এলিমেন্টস অফ কম্পিউটিং সিস্টেমগুলির দ্বারা কোড পড়ার সুপারিশ করি। প্রোগ্রামিংয়ের একটি মৌলিক জ্ঞান দিয়ে, এই আশ্চর্যজনক অ্যাক্সেসযোগ্য বইগুলি আপনি কম্পিউটার থেকে উপরে থেকে নীচে বুঝতে পারবেন। স্পষ্টতই, একজন কম্পন পেতে পারে না। Sci। অথবা মাত্র ২ টি বইয়ের পরে ইই ডিগ্রি, কিন্তু আমি একটি স্ব-শিক্ষিত প্রোগ্রামার হিসাবে বলতে পারি যিনি আনুষ্ঠানিক প্রশিক্ষণ থেকে বাদ পড়েছেন: এই বইগুলি আমার জগৎকে ঠেলে দিয়েছে!


অ্যাসেম্বলি নির্দেশাবলী (সাধারণত) অপসডগুলিতে সরাসরি ম্যাপিং যা মেশিন কোডের (মাল্টি-) বাইটি মানগুলি যা সরাসরি প্রসেসর দ্বারা ব্যাখ্যা করা যেতে পারে। একটি টেবিল থেকে তাদের দেখে (যেমন এটি 6039 মাইক্রোপ্রসেসারের জন্য এটি একটি উদাহরণ) সরাসরি অপসডগুলিতে একটি প্রোগ্রাম লিখতে বেশ সম্ভব। এটি উদাহরণস্বরূপ সমাবেশের নির্দেশাবলীর সাথে তালিকাবদ্ধ করে এবং জিনিসগুলির জন্য মেমরি ঠিকানা / অফসেটগুলি হস্তনির্মিত করে। জাম্প মত।

প্রথম প্রোগ্রাম ঠিক এই ফ্যাশন মধ্যে সম্পন্ন করা হয়েছে - হাতের লিখিত opcodes।

যাইহোক, বেশিরভাগ সময়ই অ্যাসেম্বলি কোডটি "কম্পাইল" করার জন্য একটি এম্বেডার ব্যবহার করা সহজ, যা স্বয়ংক্রিয়ভাবে এই অপপোকডের সন্ধানগুলি করে, সেইসাথে নামযুক্ত জাম্প লেবেলগুলির জন্য ঠিকানাগুলি / অফসেটগুলিকে কম্পিউটিংয়ে সহায়তা করে এবং এটার cetera।

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





machine-instruction