সংকলক - Compiler - Wikipedia

উইকিপিডিয়া, মুক্ত বিশ্বকোষ থেকে

Pin
Send
Share
Send

ভিতরে কম্পিউটিং, ক সংকলক ইহা একটি কম্পিউটার প্রোগ্রাম যে অনুবাদ কম্পিউটার কোড এক লেখা প্রোগ্রাম ভাষা (দ্য উৎস অন্য ভাষাতে (ভাষা) লক্ষ্য ভাষা). "সংকলক" নামটি মূলত অনুবাদ করে এমন প্রোগ্রামগুলির জন্য ব্যবহৃত হয় সোর্স কোড থেকে একটি উচ্চ-স্তরের প্রোগ্রামিং ভাষা to a নিম্ন স্তরের ভাষা (উদাঃ, এসেম্বলি, অবজেক্ট কোড, বা মেশিন কোড) তৈরি করতে একটি এক্সিকিউটেবল কার্যক্রম.[1][2]:পি 1

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

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

সংকলকগুলি কেবলমাত্র সোর্স প্রোগ্রামগুলিতে রূপান্তর করতে ব্যবহৃত ভাষা প্রসেসর নয়। একটি দোভাষী কম্পিউটার সফ্টওয়্যার যা রূপান্তর করে এবং তারপরে নির্দেশিত অপারেশনগুলি সম্পাদন করে।[2]:পি 2 অনুবাদ প্রক্রিয়া কম্পিউটারের ভাষাগুলির নকশাকে প্রভাবিত করে, যা সংকলন বা ব্যাখ্যার পছন্দকে বাড়ে। অনুশীলনে, সংকলিত ভাষার জন্য একটি দোভাষীকে প্রয়োগ করা যেতে পারে এবং সংকলককে অনুবাদিত ভাষার জন্য প্রয়োগ করা যেতে পারে।

ইতিহাস

একটি সাধারণ বহু-ভাষা, মাল্টি-টার্গেট সংকলকটির ক্রিয়াকলাপের একটি চিত্র

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

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

  • বর্ণমালা, প্রতীক কোন সীমাবদ্ধ সেট;
  • স্ট্রিং, প্রতীকগুলির একটি সীমাবদ্ধ ক্রম;
  • ভাষাবর্ণমালায় স্ট্রিংগুলির যে কোনও সেট।

কোনও ভাষার বাক্যগুলিকে ব্যাকরণ বলে বিভিন্ন নিয়মের সংজ্ঞা দিয়ে সংজ্ঞা দেওয়া যেতে পারে।[4]

ব্যাকাস – নওর ফর্ম (বিএনএফ) কোনও ভাষার "বাক্য" এর বাক্য গঠনটি বর্ণনা করে এবং আলগোল 60 এর বাক্য বাক্য গঠনের জন্য ব্যবহৃত হয় জন ব্যাকাস.[5] ধারণা থেকে প্রাপ্ত প্রসঙ্গমুক্ত ব্যাকরণ দ্বারা ধারণাগুলি নোয়াম চমস্কি, একজন ভাষাবিদ।[6] "বিএনএফ এবং এর এক্সটেনশানগুলি প্রোগ্রামিং নোটেশনের সিনট্যাক্স বর্ণনা করার জন্য স্ট্যান্ডার্ড সরঞ্জামে পরিণত হয়েছে এবং অনেক ক্ষেত্রেই বিএনএফ বর্ণনা থেকে সংকলকগুলির কিছু অংশ স্বয়ংক্রিয়ভাবে উত্পন্ন হয়।"[7]

1940 এর দশকে, কনরাড জুসে একটি অ্যালগরিদমিক প্রোগ্রামিং ভাষা বলা নকশা প্লানকালাল ("প্ল্যান ক্যালকুলাস")। যদিও 1970 এর দশক পর্যন্ত কোনও বাস্তবায়ন ঘটেছিল না, এটি পরে দেখা ধারণাগুলি উপস্থাপন করেছিল এপিএল 1950 এর দশকের শেষদিকে কেন Iverson দ্বারা ডিজাইন করা।[8] এপিএল হল গাণিতিক গণনার জন্য একটি ভাষা।

ডিজিটাল কম্পিউটিংয়ের গঠনমূলক বছরগুলিতে উচ্চ-স্তরের ভাষা নকশা বিভিন্ন অ্যাপ্লিকেশনগুলির জন্য দরকারী প্রোগ্রামিং সরঞ্জাম সরবরাহ করেছিল:

  • ফরট্রান ইঞ্জিনিয়ারিং এবং বিজ্ঞান অ্যাপ্লিকেশনগুলির জন্য (সূত্র অনুবাদ) প্রথম উচ্চ-স্তরের ভাষা হিসাবে বিবেচিত হয়।[9]
  • কোবল (কমন বিজনেস-ওরিয়েন্টেড ল্যাঙ্গুয়েজ) থেকে বিবর্তিত হয়েছে এ -0 এবং ফ্লো-ম্যাটিক ব্যবসায়িক অ্যাপ্লিকেশনগুলির জন্য প্রভাবশালী উচ্চ-স্তরের ভাষাতে পরিণত হতে।[10]
  • এলআইএসপি প্রতীকী গণনার জন্য (তালিকা প্রসেসর)।[11]

সংকলক প্রযুক্তি ডিজিটাল কম্পিউটারের জন্য নিম্ন-স্তরের লক্ষ্য প্রোগ্রামে উচ্চ-স্তরের উত্স প্রোগ্রামের কঠোরভাবে সংজ্ঞায়িত রূপান্তরের প্রয়োজন থেকে বিকশিত হয়েছিল। সংকলকটি উত্স কোড বিশ্লেষণের সাথে মোকাবিলা করার জন্য একটি প্রথম প্রান্ত এবং লক্ষ্য কোডে বিশ্লেষণকে সংশ্লেষ করার পিছনের দিক হিসাবে দেখা যেতে পারে। সামনের প্রান্ত এবং পিছনের প্রান্তের মধ্যে অপ্টিমাইজেশন আরও কার্যকর টার্গেট কোড তৈরি করতে পারে।[12]

সংকলক প্রযুক্তির বিকাশের কয়েকটি প্রাথমিক মাইলফলক:

  • 1952 - একটি অটোকোড সংকলক দ্বারা বিকাশ অ্যালিক গ্লেনি জন্য ম্যানচেস্টার মার্ক I ম্যানচেস্টার বিশ্ববিদ্যালয়ের কম্পিউটারকে কেউ কেউ প্রথম সংকলিত প্রোগ্রামিং ভাষা হিসাবে বিবেচনা করে।
  • 1952গ্রেস হপারএর দল রেমিংটন র‌্যান্ড জন্য সংকলক লিখেছিলেন এ -0 প্রোগ্রামিং ল্যাঙ্গুয়েজ (এবং শব্দটি তৈরি করা) সংকলক এটি বর্ণনা করতে),[13][14] যদিও A-0 সংকলক সম্পূর্ণ সংকলকের আধুনিক ধারণার চেয়ে লোডার বা লিঙ্কার হিসাবে আরও বেশি কাজ করে।
  • 1954-1957 - নেতৃত্বে একটি দল জন ব্যাকাস at আইবিএম উন্নত ফরট্রান যা সাধারণত প্রথম উচ্চ-স্তরের ভাষা হিসাবে বিবেচিত হয়। 1957 সালে, তারা একটি ফরট্রেন সংকলক সম্পূর্ণ করেছিলেন যা সাধারণত প্রথম নির্বিশেষে সম্পূর্ণ সংকলক প্রবর্তন করে বলে কৃতিত্ব হয়।
  • 1959 - ডেটা সিস্টেম ল্যাঙ্গুয়েজ অন কনফারেন্স (সিওডিএসইএল) এর বিকাশের সূচনা করেছিল কোবল। COBOL ডিজাইনটি A-0 এবং ফ্লো-ম্যাটিকের প্রতি আকৃষ্ট হয়েছে। 1960 এর দশকের গোড়ার দিকে কোবল একাধিক আর্কিটেকচারে সংকলিত হয়েছিল।
  • 1958-1962জন ম্যাকার্থি at এমআইটি পরিকল্পিত এলআইএসপি.[15] প্রতীক প্রক্রিয়াজাতকরণ ক্ষমতা কৃত্রিম বুদ্ধিমত্তা গবেষণার জন্য দরকারী বৈশিষ্ট্যগুলি সরবরাহ করে। ১৯62২ সালে, এলআইএসপি ১.০ প্রকাশে কয়েকটি সরঞ্জাম উল্লেখ করা হয়েছিল: স্টিফেন রাসেল এবং ড্যানিয়েল জে এডওয়ার্ডস রচিত একটি অনুবাদক, টিম হার্ট এবং মাইক লেভিনের রচনা সংকলক এবং সমাবেশকারী।[16]

প্রারম্ভিক অপারেটিং সিস্টেম এবং সফ্টওয়্যার সমাবেশ ভাষায় লেখা ছিল। 1960 এবং 1970-এর দশকের প্রথমদিকে, রিসোর্স সীমাবদ্ধতার কারণে সিস্টেম প্রোগ্রামিংয়ের জন্য উচ্চ-স্তরের ভাষার ব্যবহার এখনও বিতর্কিত ছিল। যাইহোক, বেশ কয়েকটি গবেষণা এবং শিল্প প্রচেষ্টার ফলে উচ্চ-স্তরের সিস্টেম প্রোগ্রামিং ভাষার দিকে পরিবর্তন শুরু হয়েছিল, উদাহরণস্বরূপ, বিসিপিএল, সুখ, , এবং .

বিসিপিএল (বেসিক সম্মিলিত প্রোগ্রামিং ভাষা) দ্বারা 1966 সালে ডিজাইন করা মার্টিন রিচার্ডস কেমব্রিজ বিশ্ববিদ্যালয়ের মূলত সংকলক লেখার সরঞ্জাম হিসাবে বিকাশ হয়েছিল।[17] বেশ কয়েকটি সংকলক প্রয়োগ করা হয়েছে, রিচার্ডসের বইটি ভাষা এবং এর সংকলককে অন্তর্দৃষ্টি সরবরাহ করে।[18] বিসিপিএল কেবল একটি প্রভাবশালী সিস্টেম প্রোগ্রামিং ভাষা ছিল না যা এখনও গবেষণায় ব্যবহৃত হয়[19] তবে বি এবং সি ভাষার ডিজাইনের জন্য একটি ভিত্তি সরবরাহ করেছে।

সুখ (সিস্টেম সফ্টওয়্যার বাস্তবায়নের জন্য বেসিক ল্যাঙ্গুয়েজ) ডাব্লু.এ. ওল্ফের কার্নেগি মেলন বিশ্ববিদ্যালয় (সিএমইউ) গবেষণা দল দ্বারা ডিজিটাল সরঞ্জাম কর্পোরেশন (ডিসি) পিডিপি -10 কম্পিউটারের জন্য তৈরি করা হয়েছিল। সিএমইউ টিম এক বছর পরে ১৯ 1970০ সালে বিলিএসএস -১১ সংকলকটি বিকাশ করতে চলেছিল।

মাল্টিক্স (মাল্টিপ্লেক্সড ইনফরমেশন অ্যান্ড কম্পিউটিং সার্ভিস), একটি সময় ভাগ করে নেওয়ার অপারেটিং সিস্টেম প্রকল্প, এতে জড়িত এমআইটি, বেল ল্যাব, সাধারণ বৈদ্যুতিক (পরে হানিওয়েল) এবং নেতৃত্বে ছিল ফার্নান্দো কর্বাটি ó এমআইটি থেকে[20] মাল্টিক্স লেখা ছিল পিএল / আই আইবিএম এবং আইবিএম ব্যবহারকারী গ্রুপ দ্বারা বিকাশিত ভাষা।[21] আইবিএমের লক্ষ্য ছিল ব্যবসা, বৈজ্ঞানিক এবং সিস্টেম প্রোগ্রামিংয়ের প্রয়োজনীয়তা পূরণ করা। অন্যান্য ভাষাগুলিও ছিল যা বিবেচনা করা যেতে পারে তবে পিএল / আমি এটির বাস্তবায়ন না হলেও সর্বাধিক সম্পূর্ণ সমাধানের প্রস্তাব দিয়েছিলাম।[22] মুলিটিক্স প্রকল্পের প্রথম কয়েক বছরের জন্য, বেল ল্যাবস থেকে ডগ ম্যাকিলারি এবং বব মরিস রচনা প্রারম্ভিক পিএল / আই (ইপিএল) সংকলন সহ ভাষার একটি উপসেটটি সমাবেশের ভাষায় সংকলন করা যেতে পারে।[23] সম্পূর্ণ পিএল / আইয়ের জন্য একটি বুট-স্ট্র্যাপিং সংকলক তৈরি করা না যাওয়া পর্যন্ত ইপিএল প্রকল্পটি সমর্থন করেছিল।[24]

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

বেল ল্যাবগুলি এর উন্নয়ন এবং প্রসারণ শুরু করেছিল বি এবং বিসিপিএল ভিত্তিক। বিসিপিএল সংকলকটি বেল ল্যাবগুলি মাল্টিক্সে স্থানান্তরিত করেছিল এবং বিসিপিএল বেল ল্যাবগুলিতে একটি পছন্দসই ভাষা ছিল।[26] প্রাথমিকভাবে, বেল ল্যাবস এর বি সংকলকের একটি সম্মুখ-সমাপ্তি প্রোগ্রাম ব্যবহৃত হয়েছিল যখন একটি সি সংকলক তৈরি করা হয়েছিল। ১৯ 1971১ সালে, একটি নতুন পিডিপি -11 বিতে এক্সটেনশনগুলি সংজ্ঞায়িত করতে এবং সংকলকটি পুনরায় লেখার জন্য সংস্থান সরবরাহ করেছিল। ১৯ 197৩ সালের মধ্যে সি ভাষার নকশাটি মূলত সম্পূর্ণ হয়েছিল এবং সিডি-তে PDP-11 এর জন্য ইউনিক্স কার্নেলটি পুনরায় লেখা হয়েছিল Ste স্টিভ জনসন নতুন মেশিনে সি সংকলকগুলির পুনঃনির্ধারণ সমর্থন করার জন্য পোর্টেবল সি কমপিলার (পিসিসি) এর বিকাশ শুরু করেছিলেন।[27][28]

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (ওওপি) অ্যাপ্লিকেশন বিকাশ এবং রক্ষণাবেক্ষণের জন্য কিছু আকর্ষণীয় সম্ভাবনার প্রস্তাব দিয়েছে। ওওপি ধারণাগুলি আরও পিছনে ফিরে যায় তবে সেগুলির অংশ ছিল এলআইএসপি এবং সিমুলা ভাষা বিজ্ঞান।[29] বেল ল্যাবসে, এর বিকাশ সি ++ ওওপিতে আগ্রহী হয়ে ওঠে।[30] সি প্রোগ্রামিং প্রোগ্রামিংয়ের জন্য ১৯৮০ সালে সি ++ প্রথম ব্যবহৃত হয়েছিল। প্রাথমিক নকশাটি সিমুলা ধারণাগুলির সাহায্যে সি ভাষা সিস্টেমের প্রোগ্রামিংয়ের ক্ষমতা লাভ করেছে। বস্তু-ভিত্তিক সুবিধা 1983 সালে যুক্ত করা হয়েছিল।[31] সিফ্রন্ট প্রোগ্রাম C84 ভাষা সংকলকটির জন্য একটি সি ++ ফ্রন্ট-এন্ড প্রয়োগ করেছে। পরবর্তী বছরগুলিতে সি ++ জনপ্রিয়তা বৃদ্ধির সাথে সাথে বেশ কয়েকটি সি ++ সংকলক তৈরি করা হয়েছিল।

অনেক অ্যাপ্লিকেশন ডোমেনে উচ্চ স্তরের ভাষা ব্যবহারের ধারণাটি দ্রুত ধরা পড়ে caught কারণ নতুন দ্বারা সমর্থিত বিস্তৃত কার্যকারিতা প্রোগ্রামিং ভাষা এবং কম্পিউটার আর্কিটেকচারের ক্রমবর্ধমান জটিলতা, সংকলকগুলি আরও জটিল হয়ে ওঠে।

দারপা (প্রতিরক্ষা উন্নত গবেষণা প্রকল্প এজেন্সি) ১৯ 1970০ সালে ওল্ফের সিএমইউ গবেষণা দলের সাথে একটি সংকলক প্রকল্প স্পনসর করেছিল The উত্পাদনের গুণমান সংকলক-সংকলক পিকিউসিসি নকশা উত্স ভাষা এবং লক্ষ্য আনুষ্ঠানিক সংজ্ঞা থেকে একটি উত্পাদন গুণমান সংকলক (PQC) উত্পাদন করবে।[32] পিকিউসিসি পার্সার জেনারেটর হিসাবে (যেমন, ইয়াক) অনেক সাফল্য ছাড়া। পিকিউসিসি আরও সঠিকভাবে সংকলক জেনারেটর হিসাবে উল্লেখ করা যেতে পারে।

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

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

অন্যান্য অ্যাডা সংকলক প্রচেষ্টা ব্রিটেনে ইয়র্ক ইউনিভার্সিটিতে এবং জার্মানিতে কার্লসরুহে বিশ্ববিদ্যালয়ে চলছে। মার্কিন যুক্তরাষ্ট্রে, ভার্ডিক্স (পরে যুক্তিযুক্ত দ্বারা অর্জিত) সেনাবাহিনীকে ভার্ডিক্স অ্যাডা ডেভলপমেন্ট সিস্টেম (ভিএডিএস) সরবরাহ করেছিল। ভিএডিএস একটি সংকলক সহ বিকাশের একটি সরঞ্জাম সরবরাহ করে provided সেনাবাহিনীর সিইসিওএম মূল্যায়নে ইউনিক্স / ভিএডিএসকে বিভিন্ন ইউনিক্স প্ল্যাটফর্ম যেমন ডিইসি আলট্রিক্স এবং সূর্য 3/60 সোলারিস মোটরোলা 68020 লক্ষ্য করে হোস্ট করা যেতে পারে।[36] খুব শীঘ্রই এমন অনেক অ্যাডা সংকলক উপলব্ধ ছিল যা এডা বৈধকরণ পরীক্ষায় উত্তীর্ণ হয়েছিল। ফ্রি সফটওয়্যার ফাউন্ডেশন জিএনইউ প্রকল্পটি বিকাশ করেছে জিএনইউ সংকলক সংগ্রহ (জিসিসি) যা একাধিক ভাষা এবং লক্ষ্যগুলিকে সমর্থন করার জন্য একটি মূল ক্ষমতা সরবরাহ করে। অ্যাডা সংস্করণ জিএনএটি সর্বাধিক ব্যবহৃত অ্যাডা সংকলকগুলির মধ্যে একটি। জিএনএটি নিখরচায় রয়েছে তবে বাণিজ্যিক সমর্থনও রয়েছে, উদাহরণস্বরূপ, অ্যাডাকোর বাণিজ্যিক সফ্টওয়্যার সমাধান সরবরাহ করতে 1994 সালে অ্যাডাকোর প্রতিষ্ঠিত হয়েছিল। GNAT প্রোতে একটি সরঞ্জাম সরবরাহের জন্য GNU GCC ভিত্তিক GNAT অন্তর্ভুক্ত রয়েছে su সমন্বিত উন্নয়ন পরিবেশ.

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

"50s এর দশকের শেষের দিকে যখন সংকলনের ক্ষেত্রটি শুরু হয়েছিল, তখন এর ফোকাসটি উচ্চ স্তরের ভাষা প্রোগ্রামগুলি মেশিন কোডে অনুবাদ করার মধ্যে সীমাবদ্ধ ছিল ... সংকলক ক্ষেত্রটি কম্পিউটার আর্কিটেকচার, প্রোগ্রামিং ভাষা, আনুষ্ঠানিক পদ্ধতি সহ অন্যান্য শাখার সাথে ক্রমশ জড়িত রয়েছে is সফ্টওয়্যার ইঞ্জিনিয়ারিং, এবং কম্পিউটার সুরক্ষা।[38] "সংকলক গবেষণা: পরবর্তী 50 বছর" নিবন্ধটি অবজেক্ট-ওরিয়েন্টেড ভাষা এবং জাভার গুরুত্ব উল্লেখ করেছে। সুরক্ষা এবং সমান্তরাল কম্পিউটিং ভবিষ্যতের গবেষণার লক্ষ্যগুলির মধ্যে উদ্ধৃত হয়েছিল।

সংকলক নির্মাণ

একটি সংকলক একটি উচ্চ-স্তরের উত্স প্রোগ্রাম থেকে একটি নিম্ন-স্তরের লক্ষ্য প্রোগ্রামে একটি আনুষ্ঠানিক রূপান্তর কার্যকর করে। সংকলক ডিজাইন একটি শেষ-থেকে-শেষ সমাধানটিকে সংজ্ঞায়িত করতে পারে বা একটি সংজ্ঞায়িত উপসেটটি মোকাবেলা করতে পারে যা অন্যান্য সংকলন সরঞ্জামগুলির সাথে ইন্টারফেস করে .g প্রিপ্রোসেসর, এসেম্বলার্স, লিকারগুলি। ডিজাইন প্রয়োজনীয়তার মধ্যে সংযোজক উপাদানগুলির মধ্যে এবং বাহ্যিকভাবে সমর্থনকারী সরঞ্জামদণ্ডগুলির মধ্যে উভয় অভ্যন্তরীণভাবে কঠোরভাবে সংজ্ঞায়িত ইন্টারফেস অন্তর্ভুক্ত।

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

কোনও ব্যক্তির লিখিত অপেক্ষাকৃত সহজ ভাষার জন্য একটি সংকলক সফটওয়্যারটির একক, একঘেয়েমি হতে পারে। যাইহোক, উত্স ভাষা জটিলতায় বাড়ার সাথে সাথে নকশাটি অনেকগুলি পরনির্ভরশীল পর্যায়ে বিভক্ত হতে পারে। পৃথক পর্যায়সমূহ ডিজাইনের উন্নতি সরবরাহ করে যা সংকলন প্রক্রিয়াতে ফাংশনগুলিতে বিকাশকে ফোকাস করে।

এক-পাস বনাম বহু-পাস সংকলক

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

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

কিছু ক্ষেত্রে, ভাষার বৈশিষ্ট্যটির নকশার উত্স ধরে একাধিক পাস সঞ্চালনের জন্য একটি সংকলক প্রয়োজন হতে পারে। উদাহরণস্বরূপ, উত্সের 20 তম লাইনে উপস্থিত একটি ঘোষণার বিষয়টি বিবেচনা করুন যা 10 নং লাইনে উপস্থিত একটি বিবৃতিটির অনুবাদকে প্রভাবিত করে case এক্ষেত্রে, প্রথম পাসের সত্যিকারের অনুবাদটি ঘটানোর সাথে সাথে তারা প্রভাবিত হওয়া বক্তব্যগুলির পরে উপস্থিত ঘোষণাগুলির তথ্য সংগ্রহ করতে হবে পরবর্তী পাসের সময়

একক পাসে সংকলনের অসুবিধাটি হ'ল পরিশীলিত অনেকগুলি সম্পাদন করা সম্ভব নয় অপ্টিমাইজেশন উচ্চ মানের কোড উত্পন্ন করার প্রয়োজন। একটি অনুকূলকরণ সংকলক ঠিক কতটি পাস করে তা গণনা করা কঠিন। উদাহরণস্বরূপ, অপ্টিমাইজেশনের বিভিন্ন পর্যায়গুলি একটি অভিব্যক্তিকে বহুবার বিশ্লেষণ করতে পারে তবে কেবল একবারই অন্য অভিব্যক্তি বিশ্লেষণ করে।

ছোট প্রোগ্রামগুলিতে একটি সংকলককে বিভক্ত করা গবেষকরা সম্ভবত সঠিক সংকলক উত্পাদন করতে আগ্রহী technique ছোট প্রোগ্রামের সেটগুলির যথার্থতা প্রমাণ করতে বড়, একক, সমতুল্য প্রোগ্রামের যথার্থতা প্রমাণ করার চেয়ে প্রায়শই কম প্রচেষ্টা প্রয়োজন effort

থ্রি-স্টেজ সংকলক কাঠামো

সংকলক নকশা

সংকলক ডিজাইনে পর্যায়ের সঠিক সংখ্যা নির্বিশেষে, পর্যায়গুলি তিনটি পর্যায়ে একটিতে নির্ধারিত হতে পারে। পর্যায়ে একটি সামনের প্রান্ত, একটি মাঝের প্রান্ত এবং একটি পিছনের প্রান্ত অন্তর্ভুক্ত।

  • দ্য সামনের অংশ একটি নির্দিষ্ট উত্স ভাষা অনুযায়ী বাক্য গঠন এবং শব্দার্থবিজ্ঞান যাচাই করে। জন্য স্ট্যাটিকালি টাইপ করা ভাষা এটি সম্পাদন করে টাইপ চেকিং প্রকারের তথ্য সংগ্রহ করে। যদি ইনপুট প্রোগ্রামটি সিনথেটিকভাবে ভুল হয় বা কোনও ধরণের ত্রুটি থাকে তবে এটি ত্রুটি এবং / বা সতর্কতা বার্তা উত্পন্ন করে, সাধারণত উত্স কোডে অবস্থানটি চিহ্নিত করে যেখানে সমস্যাটি সনাক্ত করা হয়েছিল; কিছু ক্ষেত্রে প্রকৃত ত্রুটি প্রোগ্রামের আগে (অনেক বেশি) হতে পারে। সামনের প্রান্তের দিকগুলির মধ্যে লেক্সিকাল বিশ্লেষণ, বাক্য বিশ্লেষণ এবং শব্দার্থবিজ্ঞান বিশ্লেষণ অন্তর্ভুক্ত। সামনের প্রান্তটি ইনপুট প্রোগ্রামকে একটি রূপান্তর করে মধ্যবর্তী প্রতিনিধিত্ব (আইআর) মাঝের প্রান্তে আরও প্রসেসিংয়ের জন্য। এই আইআরটি সাধারণত উত্স কোডের সাথে সম্পর্কিত প্রোগ্রামের নিম্ন স্তরের প্রতিনিধিত্ব represent
  • দ্য মাঝের প্রান্ত আইপি সম্পর্কিত অপ্টিমাইজেশন সম্পাদন করে যা সিপিইউ আর্কিটেকচারকে লক্ষ্যযুক্ত করে স্বাধীন of এই উত্স কোড / মেশিন কোড স্বাতন্ত্র্যের উদ্দেশ্য জেনেরিক অনুকূলতা বিভিন্ন ভাষা এবং লক্ষ্য প্রসেসরের সমর্থনকারী সংকলকের সংস্করণগুলির মধ্যে ভাগ করা যায় optim মিডল এন্ড অপ্টিমাইজেশনের উদাহরণগুলি অকেজো অপসারণ (ডেড কোড নির্মূল) বা অ্যাক্সেসযোগ্য কোড (পুনঃব্যবহারযোগ্যতা বিশ্লেষণ), ধ্রুবক মানগুলির আবিষ্কার এবং প্রচার (ধ্রুবক প্রচার), কম ঘন ঘন মৃত্যুদন্ড কার্যকর করা জায়গায় (যেমন, একটি লুপের বাইরে) বা গণনার বিশেষায়নের প্রসঙ্গে ভিত্তিতে গণনা স্থানান্তর করা। শেষ পর্যন্ত "অপ্টিমাইজড" আইআর উত্পাদন করে যা পিছনের প্রান্তটি ব্যবহার করে।
  • দ্য পিছনে শেষ মাঝের প্রান্ত থেকে অনুকূলিত আইআর নেয়। এটি লক্ষ্য বিশিষ্ট সিপিইউ আর্কিটেকচারের জন্য নির্দিষ্ট আরও বিশ্লেষণ, রূপান্তর ও অপ্টিমাইজেশন সম্পাদন করতে পারে। পিছনের প্রান্তটি পারফরম্যান্স করে লক্ষ্য-নির্ভর সংসদীয় কোড উত্পন্ন করে বরাদ্দ নিবন্ধন প্রক্রিয়া. পিছনের প্রান্তটি সম্পাদন করে নির্দেশের সময়সূচী, যা সমান্তরাল রাখতে নির্দেশকে পুনরায় আদেশ দেয় এক্সিকিউশন ইউনিট পূরণ করে ব্যস্ত দেরি স্লট। যদিও বেশিরভাগ অপ্টিমাইজেশান সমস্যা রয়েছে এনপি-হার্ড, তাত্ত্বিক তাদের সমাধানের কৌশলগুলি উন্নত এবং বর্তমানে উত্পাদন-মানের সংকলকগুলিতে প্রয়োগ করা হয়। সাধারণত একটি ব্যাক এন্ডের আউটপুট হল কোনও নির্দিষ্ট প্রসেসর এবং অপারেটিং সিস্টেমের জন্য বিশেষীযুক্ত মেশিন কোড।

এই ফ্রন্ট / মিডল / ব্যাক-এন্ড এপ্রোচটি বিভিন্ন ভাষার জন্য বিভিন্ন প্রান্তের সাথে সামনের প্রান্তগুলি একত্রিত করা সম্ভব করে সিপিইউ মাঝের প্রান্তের অপটিমাইজেশন ভাগ করে নেওয়ার সময়।[39] এই পদ্ধতির ব্যবহারিক উদাহরণগুলি হ'ল জিএনইউ সংকলক সংগ্রহ, ঝাঁকুনি (এলএলভিএমভিত্তিক সি / সি ++ সংকলক),[40] এবং আমস্টারডাম সংকলক কিটযার একাধিক ফ্রন্ট-এন্ডস, ভাগ করা অপ্টিমাইজেশন এবং একাধিক ব্যাক-এন্ড রয়েছে।

সামনের অংশ

লেক্সার এবং পার্সার উদাহরণস্বরূপ । অক্ষরের ক্রম থেকে শুরু "যদি (নেট> 0.0) মোট + = নেট * (1.0 + কর / 100.0);", স্ক্যানার একটি ক্রম রচনা টোকেন, এবং তাদের প্রত্যেককে শ্রেণীবদ্ধ করে যেমন উদাহরণস্বরূপ সনাক্তকারী, সংরক্ষিত শব্দ, আক্ষরিক সংখ্যা, বা অপারেটর। পরের ক্রমটি পার্সার দ্বারা a তে রূপান্তরিত হয় সিনট্যাক্স ট্রি, যা পরে বাকি সংকলক পর্যায়ক্রমে চিকিত্সা করা হয়। স্ক্যানার এবং পার্সার হ্যান্ডল করে নিয়মিত এবং সঠিকভাবে প্রসঙ্গমুক্ত অংশ সি জন্য ব্যাকরণযথাক্রমে

সামনের প্রান্তটি প্রোগ্রামটির অভ্যন্তরীণ উপস্থাপনা তৈরি করতে উত্স কোডটি বিশ্লেষণ করে, যাকে বলে মধ্যবর্তী প্রতিনিধিত্ব (আইআর) এটি পরিচালনাও করে প্রতীক টেবিল, উত্স কোডে প্রতিটি প্রতীককে অবস্থান, প্রকার এবং সুযোগের মতো সম্পর্কিত তথ্যে ম্যাপিং করে এমন একটি ডেটা স্ট্রাকচার।

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

সামনের প্রান্তের প্রধান পর্যায়গুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • লাইন পুনর্গঠন ইনপুট চরিত্রের ক্রমটিকে পার্সারের জন্য প্রস্তুত একটি ক্যানোনিকাল ফর্মে রূপান্তর করে। কোন ভাষা স্ট্রপ তাদের কীওয়ার্ড বা শনাক্তকারীদের মধ্যে স্বেচ্ছাসেবী স্থানগুলিতে এই পর্যায়ে প্রয়োজন। দ্য আপাদোমোস্তোক, পুনরাবৃত্ত-বংশদ্ভুত, 1960 এর দশকে ব্যবহৃত টেবিল-চালিত পার্সারগুলি সাধারণত উত্সটি একবারে একটি অক্ষর পড়ে এবং আলাদা টোকেনাইজিং পর্বের প্রয়োজন হয় না। অ্যাটলাস অটোকোড এবং ছাপ (এবং এর কিছু বাস্তবায়ন ALGOL এবং প্রবাল 66) হ'ল স্ট্র্যাপড ভাষাগুলির উদাহরণ যাঁর সংকলকগুলির মধ্যে একটি লাইন পুনর্গঠন পর্যায়.
  • প্রাক প্রসেসিং সমর্থন করে ম্যাক্রো প্রতিস্থাপন এবং শর্তসাপেক্ষ সংকলন। সাধারণত সিনট্যাকটিক বা শব্দার্থবিজ্ঞানের বিশ্লেষণের আগে প্রিপ্রোসেসিং পর্বটি ঘটে; যেমন সি এর ক্ষেত্রে প্রিপ্রোসেসর সিন্ট্যাক্টিক ফর্মের চেয়ে লেক্সিকাল টোকেনগুলি ম্যানিপুলেট করে। তবে কিছু ভাষা যেমন পরিকল্পনা সিনট্যাকটিক ফর্মের ভিত্তিতে ম্যাক্রো বিকল্পগুলি সমর্থন করে support
  • আভিধানিক বিশ্লেষণ (এভাবেও পরিচিত লেক্সিং বা টোকেনাইজেশন) উত্স কোড পাঠ্যটিকে ছোট ছোট টুকরাগুলির ক্রম হিসাবে বিভক্ত করে লেক্সিকাল টোকেন.[41] এই পর্বটি দুটি পর্যায়ে বিভক্ত করা যেতে পারে: স্ক্যানিং, যা সিনট্যাকটিক ইউনিটগুলিতে ইনপুট পাঠকে বিভাগ করে লেক্সেমিস এবং তাদের একটি বিভাগ নির্ধারণ করুন; এবং মূল্যায়ন, যা লেসেমিকে একটি প্রক্রিয়াজাত মানতে রূপান্তর করে। একটি টোকেন হ'ল একটি জুটি যা গঠিত টোকেন নাম এবং একটি .চ্ছিক টোকেন মান.[42] সাধারণ টোকেন বিভাগগুলিতে শনাক্তকারী, কীওয়ার্ড, বিভাজক, অপারেটর, আক্ষরিক এবং মন্তব্যগুলি অন্তর্ভুক্ত থাকতে পারে, যদিও টোকেন বিভাগগুলির সেটটি বিভিন্নভাবে পরিবর্তিত হয় প্রোগ্রামিং ভাষা। লেক্সেম সিনট্যাক্স সাধারণত একটি নিয়মিত ভাষা, তাই ক সসীম রাষ্ট্র অটোমেটন একটি থেকে নির্মিত নিয়মিত প্রকাশ এটি সনাক্ত করতে ব্যবহার করা যেতে পারে। লিক্সিকাল এনালাইসিস করা সফ্টওয়্যারকে এ লেক্সিকাল বিশ্লেষক। এটি কোনও পৃথক পদক্ষেপ নাও হতে পারে the এটি পার্সিং পদক্ষেপের সাথে একত্রিত হতে পারে স্ক্যানারলেস পার্সিং, যা ক্ষেত্রে পার্সিং অক্ষরের স্তরে করা হয়, টোকেন স্তরের নয়।
  • সিনট্যাক্স বিশ্লেষণ (এভাবেও পরিচিত পার্সিং) জড়িত পার্সিং প্রোগ্রামটির সিনট্যাকটিক কাঠামো সনাক্ত করতে টোকেন ক্রম। এই পর্বটি সাধারণত একটি তৈরি করে পার্স গাছ, যা এ গাছের কাঠামোর সাথে টোকেনের লিনিয়ার সিকোয়েন্সটির পরিবর্তে এ এর ​​নিয়ম অনুসারে নির্মিত হয় আনুষ্ঠানিক ব্যাকরণ যা ভাষার সিনট্যাক্সকে সংজ্ঞায়িত করে। পার্স গাছটি প্রায়শই সংকলকটিতে বিশ্লেষণ, সংযোজন এবং পরবর্তী পর্যায়ে রূপান্তরিত হয়।[43]
  • অর্থ বিশ্লেষণ সিমেটিক তথ্য যোগ করুন পার্স গাছ এবং নির্মিত প্রতীক টেবিল। এই পর্যায়ে যেমন অর্থপূর্ণ পরীক্ষা করে টাইপ চেকিং (ধরণের ত্রুটির জন্য পরীক্ষা করা), বা বস্তু বাঁধাই (পরিবর্তন এবং ফাংশন রেফারেন্সগুলি তাদের সংজ্ঞাগুলির সাথে যুক্ত করে), বা) নির্দিষ্ট দায়িত্ব (সমস্ত স্থানীয় ভেরিয়েবলগুলি ব্যবহারের আগে শুরু করার প্রয়োজন), ভুল প্রোগ্রামগুলি প্রত্যাখ্যান করে বা সতর্কতা জারি করে। শব্দার্থবিজ্ঞানের বিশ্লেষণে সাধারণত একটি সম্পূর্ণ পার্স গাছ থাকে, যার অর্থ এই পর্বটি যৌক্তিকভাবে অনুসরণ করে পার্সিং পর্যায়, এবং যৌক্তিকভাবে পূর্বে কোড জেনারেশন পর্যায়, যদিও প্রায়শই একটি সংকলক প্রয়োগের ক্ষেত্রে কোডের এক পাসে একাধিক পর্যায় ভাঁজ করা সম্ভব।

মাঝের প্রান্ত

মাঝের প্রান্তটি, হিসাবেও পরিচিত অপ্টিমাইজার, উত্পাদিত মেশিন কোডের কার্যকারিতা এবং গুণমান উন্নত করতে মধ্যবর্তী প্রতিনিধিত্বের উপর অনুকূলিতকরণ সম্পাদন করে।[44] মাঝের প্রান্তে সেই অপ্টিমাইজেশন রয়েছে যা সিপিইউ আর্কিটেকচারকে লক্ষ্য করে স্বাধীন করা যায়।

মাঝের প্রান্তের প্রধান পর্যায়গুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

সংকলক বিশ্লেষণ যে কোনও সংকলক অপ্টিমাইজেশনের পূর্বশর্ত এবং তারা দৃ .়ভাবে একসাথে কাজ করে। উদাহরণ স্বরূপ, নির্ভরতা বিশ্লেষণ জন্য গুরুত্বপূর্ণ লুপ রূপান্তর.

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

আধুনিক বাণিজ্যিক সংকলকগণের কাছ থেকে আন্তঃবিযুক্তি বিশ্লেষণ এবং অপ্টিমাইজেশানগুলি সাধারণ এইচপি, আইবিএম, এসজিআই, ইন্টেল, মাইক্রোসফ্ট, এবং সান মাইক্রোসিস্টেমস। দ্য বিনামুল্যের সফটওয়্যার জিসিসি শক্তিশালী আন্তপ্রসারণীয় অপ্টিমাইজেশনের অভাবের জন্য দীর্ঘদিন ধরে সমালোচনা করা হয়েছিল, তবে এটি এই ক্ষেত্রে পরিবর্তন হচ্ছে। সম্পূর্ণ বিশ্লেষণ এবং অপ্টিমাইজেশন পরিকাঠামো সহ আরও একটি ওপেন সোর্স সংকলক ওপেন 64, যা গবেষণা এবং বাণিজ্যিক উদ্দেশ্যে বিভিন্ন সংস্থা ব্যবহার করে।

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

পিছনে শেষ

পিছনের প্রান্তটি সিপিইউ আর্কিটেকচারের নির্দিষ্ট অপ্টিমাইজেশনের জন্য এবং এর জন্য দায়ী কোড জেনারেশন[44].

পিছনের প্রান্তের প্রধান পর্যায়গুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

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

সংকলক নির্ভুলতা

সংকলক নির্ভুলতা সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের একটি শাখা যা দেখানোর চেষ্টা করে যে একটি সংকলক তার অনুযায়ী আচরণ করে ভাষার স্পেসিফিকেশন.[হদফ ঘ] কৌশলগুলি ব্যবহার করে সংকলক বিকাশকে অন্তর্ভুক্ত করে আনুষ্ঠানিক পদ্ধতি এবং বিদ্যমান সংকলকটিতে কঠোর পরীক্ষা (প্রায়শই সংকলক বৈধতা বলা হয়) ব্যবহার করে।

সংকলিত বনাম বর্ণিত ভাষা

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

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

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

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

প্রকার

সংকলকগুলির একটি শ্রেণিবদ্ধকরণ by প্ল্যাটফর্ম যার উপর তাদের উত্পন্ন কোড কার্যকর করে। এটি হিসাবে পরিচিত লক্ষ্য প্ল্যাটফর্ম।

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

একটি সংকলকের আউটপুট যা A এর জন্য কোড উত্পাদন করে ভার্চুয়াল মেশিন (ভিএম) একই প্ল্যাটফর্মে নির্বাহ করা হতে পারে যা সংকলক তৈরি করেছিল produced এই কারণে, এই ধরনের সংকলক সাধারণত স্থানীয় বা ক্রস সংকলক হিসাবে শ্রেণিবদ্ধ হয় না।

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

একটি সাধারণ সংকলক টাইপ আউটপুট মেশিন কোড চলাকালীন, আরও অনেক ধরণের রয়েছে:

আরো দেখুন

তথ্যসূত্র

  1. ^ PC Mag Staff (28 February 2019). "Encyclopedia: Definition of Compiler". পিসিমেগ.কম। পুনরুদ্ধার করা হয়েছে 28 ফেব্রুয়ারি 2017.
  2. ^ Compilers: Principles, Techniques, and Tools by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman - Second Edition, 2007
  3. ^ Sun, Chengnian; Le, Vu; Zhang, Qirun; Su, Zhendong (2016). "Toward Understanding Compiler Bugs in GCC and LLVM". এসিএম.
  4. ^ lecture notesCompilers: Principles, Techniques, and ToolsJing-Shin ChangDepartment of Computer Science & Information EngineeringNational Chi-Nan University
  5. ^ Naur, P. et al. "Report on ALGOL 60". এসিএম এর যোগাযোগ 3 (May 1960), 299–314.
  6. ^ চমস্কি, নোম; লাইটফুট, ডেভিড ডাব্লু। (2002) সিনট্যাকটিক স্ট্রাকচারস। ওয়াল্টার ডি গ্রুইটার। আইএসবিএন 978-3-11-017279-9.
  7. ^ Gries, David (2012). "Appendix 1: Backus-Naur Form". প্রোগ্রামিং এর বিজ্ঞান। স্প্রিঞ্জার সায়েন্স অ্যান্ড বিজনেস মিডিয়া। পি। 304। আইএসবিএন 978-1461259831.
  8. ^ আইভারসন, কেনেথ ই। (1962)। একটি প্রোগ্রামিং ভাষা। জন উইলি অ্যান্ড সন্স আইএসবিএন 978-0-471430-14-8.
  9. ^ ব্যাকাস, জন "The history of FORTRAN I, II and III" (পিডিএফ). প্রোগ্রামিং ভাষার ইতিহাস. Softwarepreservation.org.
  10. ^ Porter Adams, Vicki (5 October 1981). "Captain Grace M. Hopper: the Mother of COBOL". ইনফো ওয়ার্ল্ড 3 (20): 33. ISSN 0199-6649.
  11. ^ ম্যাকার্থি, জে .; Brayton, R.; Edwards, D.; শিয়াল, পি .; Hodes, L.; লক্ষম, ডি ;; Maling, K.; Park, D.; Russell, S. (March 1960). "LISP I Programmers Manual" (PDF). Boston, Massachusetts: Artificial Intelligence Group, M.I.T. Computation Center and Research Laboratory.
  12. ^ Compilers Principles, Techniques, & Tools 2nd edition by Aho, Lam, Sethi, Ullman আইএসবিএন 0-321-48681-1
  13. ^ Hopper, Grace Murray (1952). "The Education of a Computer". Proceedings of the 1952 ACM National Meeting (Pittsburgh): 243–249. doi:10.1145/609784.609818. এস 2 সিআইডি 10081016.
  14. ^ Ridgway, Richard K. (1952). "Compiling routines". Proceedings of the 1952 ACM National Meeting (Toronto): 1–5. doi:10.1145/800259.808980. এস 2 সিআইডি 14878552.
  15. ^ "Recursive Functions of Symbolic Expressions and Their Computation by Machine", Communications of the ACM, April 1960
  16. ^ ম্যাকার্থি, জন; আব্রাহামস, পল ডাব্লু।; এডওয়ার্ডস, ড্যানিয়েল জে ;; হার্ট, টিমোথি পি।; Levin, Michael I. (1965). Lisp 1.5 Programmers Manual। এমআইটি প্রেস। আইএসবিএন 9780262130110.
  17. ^ "BCPL: A tool for compiler writing and system programming" M. Richards, University Mathematical Laboratory Cambridge, England 1969
  18. ^ BCPL: The Language and Its Compiler, M Richards, Cambridge University Press (first published 31 December 1981)
  19. ^ The BCPL Cintsys and Cintpos User Guide, M. Richards, 2017
  20. ^ Corbató, F. J.; Vyssotsky, V. A. "Introduction and Overview of the MULTICS System". 1965 Fall Joint Computer Conference। Multicians.org.
  21. ^ Report II of the SHARE Advanced Language Development Committee, 25 June 1964
  22. ^ Multicians.org "The Choice of PL/I" article, Editor /tom Van Vleck
  23. ^ "PL/I As a Tool for System Programming", F.J. Corbato, Datamation 6 May 1969 issue
  24. ^ "The Multics PL/1 Compiler", R. A. Freiburghouse, GE, Fall Joint Computer Conference 1969
  25. ^ ডেটাামেশন column, 1969
  26. ^ Dennis M. Ritchie, "সি ভাষার বিকাশ", ACM Second History of Programming Languages Conference, April 1993
  27. ^ S.C. Johnson, "a Portable C Compiler: Theory and Practice", 5th ACM POPL Symposium, January 1978
  28. ^ A. Snyder, A Portable Compiler for the Language C, MIT, 1974.
  29. ^ K. Nygarard, University of Oslo, Norway, "Basic Concepts in Object Oriented Programming", SIGPLAN Notices V21, 1986
  30. ^ B. Stroustrup: "What is Object-Oriented Programming?" Proceedings 14th ASU Conference, 1986.
  31. ^ Bjarne Stroustrup, "An Overview of the C++ Programming Language", Handbook of Object Technology (Editor: Saba Zamir, আইএসবিএন 0-8493-3135-8)
  32. ^ Leverett, Cattell, Hobbs, Newcomer, Reiner, Schatz, Wulf: "An Overview of the Production Quality Compiler-Compiler Project", CMU-CS-89-105, 1979
  33. ^ W. Wulf, K. Nori, "Delayed binding in PQCC generated compilers", CMU Research Showcase Report, CMU-CS-82-138, 1982
  34. ^ Joseph M. Newcomer, David Alex Lamb, Bruce W. Leverett, Michael Tighe, William A. Wulf - Carnegie-Mellon University and David Levine, Andrew H. Reinerit - Intermetrics: "TCOL Ada: Revised Report on An Intermediate Representation for the DOD Standard Programming Language", 1979
  35. ^ William A. Whitaker, "Ada - the project: the DoD High Order Working Group", ACM SIGPLAN Notices (Volume 28, No. 3, March 1991)
  36. ^ CECOM Center for Software Engineering Advanced Software Technology, "Final Report - Evaluation of the ACEC Benchmark Suite for Real-Time Applications", AD-A231 968, 1990
  37. ^ P.Biggar, E. de Vries, D. Gregg, "A Practical Solution for Scripting Language Compilers", submission to Science of Computer Programming, 2009
  38. ^ M.Hall, D. Padua, K. Pingali, "Compiler Research: The Next 50 Years", ACM Communications 2009 Vol 54 #2
  39. ^ Cooper and Torczon 2012, p. 8
  40. ^ Lattner, Chris (2017). "LLVM"। ব্রাউন, এমি; Wilson, Greg (eds.). ওপেন সোর্স অ্যাপ্লিকেশনগুলির আর্কিটেকচার. সংরক্ষণাগারভুক্ত আসল থেকে 2 শে ডিসেম্বর 2016 এ। পুনরুদ্ধার করা হয়েছে 28 ফেব্রুয়ারি 2017.
  41. ^ Aho, Lam, Sethi, Ullman 2007, p. 5-6, 109-189
  42. ^ Aho, Lam, Sethi, Ullman 2007, p. 111
  43. ^ Aho, Lam, Sethi, Ullman 2007, p. 8, 191-300
  44. ^ Blindell, Gabriel Hjort (3 June 2016). Instruction selection : principles, methods, and applications। সুইজারল্যান্ড আইএসবিএন 9783319340197. ওসিএলসি 951745657.
  45. ^ Cooper and Toczon (2012), p. 540
  46. ^ Aycock, John (2003). "A Brief History of Just-in-Time". এসিএম কম্পিউটার। বেঁচে থাকা. 35 (2, June): 93–113. doi:10.1145/857076.857077. এস 2 সিআইডি 15345671.[অ প্রাথমিক-প্রাথমিক উত্স প্রয়োজন]
  47. ^ Swartz, Jordan S.; Betz, Vaugh; Rose, Jonathan (22–25 February 1998). "A Fast Routability-Driven Router for FPGAs" (পিডিএফ). FPGA '98 Proceedings of the 1998 ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays। মন্টেরে, সিএ: এসিএম: 140–149. doi:10.1145/275107.275134. আইএসবিএন 978-0897919784. এস 2 সিআইডি 7128364. সংরক্ষণাগারভুক্ত (পিডিএফ) from the original on 9 August 2017.
  48. ^ Xilinx Staff (2009). "XST Synthesis Overview"। Xilinx, Inc. সংরক্ষণাগারভুক্ত আসল থেকে 2 নভেম্বর 2016 এ। পুনরুদ্ধার করা হয়েছে 28 ফেব্রুয়ারি 2017.[অ প্রাথমিক-প্রাথমিক উত্স প্রয়োজন]
  49. ^ Altera Staff (2017). "Spectra-Q™ Engine"। Altera.com. সংরক্ষণাগার থেকে মূল 10 অক্টোবর 2016। পুনরুদ্ধার করা হয়েছে 28 ফেব্রুয়ারি 2017.[অ প্রাথমিক-প্রাথমিক উত্স প্রয়োজন]
  50. ^ "Language Translator Tutorial" (পিডিএফ). ওয়াশিংটন বিশ্ববিদ্যালয়.

আরও পড়া

বাহ্যিক লিঙ্কগুলি

Pin
Send
Share
Send