সংকলকের অনুবাদ দক্ষতার জন্য একটি ভাল পরীক্ষা হ'ল স্ব-সংকলন: কোনও সংকলক নিজেই সংকলন করতে কতক্ষণ সময় নেয়? সি ++ এর জন্য এটি খুব দীর্ঘ সময় (ঘন্টা?) সময় নেয়। তুলনা করে, একটি পাস্কাল / মডুলা -২ / ওবেরন সংকলক আধুনিক মেশিনে এক সেকেন্ডেরও কম সময়ে নিজেকে সংকলন করবে [1]।
গো এই ভাষাগুলি দ্বারা অনুপ্রাণিত হয়েছে, তবে এই দক্ষতার কয়েকটি কারণের মধ্যে রয়েছে:
দক্ষ স্ক্যানিং এবং পার্সিংয়ের জন্য একটি স্পষ্টভাবে সংজ্ঞায়িত বাক্য গঠন যা গাণিতিকভাবে শব্দ sound
একটি টাইপ-নিরাপদ এবং স্ট্যাটিক্যালি সংকলিত ভাষা যা মডিউল সীমানা জুড়ে নির্ভরতা এবং টাইপ চেকিংয়ের সাথে পৃথক সংকলন ব্যবহার করে , শিরোনাম ফাইলগুলি অপ্রয়োজনীয় পুনরায় পড়া এবং অন্যান্য মডিউলগুলির পুনরায় সংকলন এড়াতে - যেখানে সি / সি ++ এর মতো স্বাধীন সংকলনের বিপরীতে where সংকলক দ্বারা এই জাতীয় কোনও ক্রস-মডিউল চেক সঞ্চালিত হয় না (তাই সাধারণ এক-লাইনের "হ্যালো ওয়ার্ল্ড" প্রোগ্রামের জন্য এই সমস্ত শিরোলেখ ফাইলগুলি বারবার পুনরায় পড়ার প্রয়োজন হয়)।
একটি দক্ষ সংকলক বাস্তবায়ন (উদাহরণস্বরূপ একক-পাস, পুনরাবৃত্ত-বংশোদ্ভূত শীর্ষ-ডাউন পার্সিং) - যা অবশ্যই উপরের 1 এবং 2 পয়েন্টের সাহায্যে ব্যাপকভাবে সহায়তা করে।
এই নীতিগুলি ইতিমধ্যে মেসা, অ্যাডা, মডিউলা -2 / ওবেরন এবং বেশ কয়েকটি অন্যান্য ভাষায় 1970 এবং 1980 এর দশকে পরিচিত এবং পুরোপুরি প্রয়োগ করা হয়েছে এবং এখন (2010 এর দশকে) গো (গুগল) এর মতো আধুনিক ভাষায় তাদের পথ খুঁজে পেয়েছে , সুইফ্ট (অ্যাপল), সি # (মাইক্রোসফ্ট) এবং আরও বেশ কয়েকজন।
আসুন আশা করি এটি শীঘ্রই ব্যতিক্রম নয়, আদর্শ হবে। সেখানে যাওয়ার জন্য দুটি জিনিস হওয়া দরকার:
প্রথমত, গুগল, মাইক্রোসফ্ট এবং অ্যাপলের মতো সফ্টওয়্যার প্ল্যাটফর্ম সরবরাহকারীদের অ্যাপ্লিকেশন বিকাশকারীদের নতুন সংকলন পদ্ধতি ব্যবহার করতে উত্সাহিত করার মাধ্যমে তাদের বিদ্যমান কোড বেসটি পুনরায় ব্যবহার করতে সক্ষম হওয়া শুরু করা উচিত । এটিই এখন অ্যাপলটি সুইফট প্রোগ্রামিং ভাষার সাথে কাজ করার চেষ্টা করছে যা অবজেক্টিভ-সি এর সাথে সহ-বিদ্যমান থাকতে পারে (যেহেতু এটি একই রানটাইম পরিবেশটি ব্যবহার করে)।
দ্বিতীয়ত, অন্তর্নিহিত সফ্টওয়্যার প্ল্যাটফর্মগুলি অবশেষে এই নীতিগুলি ব্যবহার করে সময়ের সাথে সাথে আবার লিখিত হওয়া উচিত, একই সাথে প্রক্রিয়াটিতে মডিউল স্তরক্রমকে পুনরায় ডিজাইন করার সময় এগুলিকে কম একতরফা করা যায়। এটি অবশ্যই একটি বিশাল কাজ এবং এটি এক দশকের আরও ভাল অংশ নিতে পারে (তারা যদি সত্যিই এটি করতে যথেষ্ট সাহসী হয় - যা গুগলের ক্ষেত্রে আমি মোটেই নিশ্চিত নই)।
যাই হোক না কেন, এটি এমন প্ল্যাটফর্ম যা ভাষা গ্রহণকে চালিত করে, অন্যভাবে নয় not
তথ্যসূত্র:
[1] http://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.System.pdf , পৃষ্ঠা 6: "সংকলক প্রায় 3 সেকেন্ডের মধ্যে নিজেকে সংকলন করে"। এই উদ্ধৃতিটি স্বল্প মূল্যের জিলিনিক্স স্পার্টান -৩ এফপিজিএ বিকাশ বোর্ডের জন্য একটি ঘড়ির ফ্রিকোয়েন্সি 25 মেগাহার্টজ চলমান এবং 1 মেগাবাইট মূল স্মৃতি বিশিষ্ট। সহজেই করতে পারে 1 গিগাহার্জ ওপরে একটি ঘড়ির ফ্রিকোয়েন্সি চলমান একটি আধুনিক প্রসেসরের এবং সহজেই বেশিরভাগ গিগাবাইটের প্রধান মেমরির (যেমন জিলিনেক্স স্পার্টান -৩ এফপিজিএ বোর্ডের চেয়ে বেশি শক্তিশালীতার কয়েকটি অর্ডার) এক্সট্রোপোলেট করা যায়, এমনকি I / O গতি অ্যাকাউন্টে নেওয়ার সময়ও। ইতিমধ্যে 1990 সালে যখন ওবারন 2 মেগাবাইট প্রধান মেমরির 25MHz এনএস 32X32 প্রসেসরে চালিত হয়েছিল, তখন সংকলকটি কয়েক সেকেন্ডের মধ্যেই নিজেকে সংকলন করেছিল। আসলে অপেক্ষা করার ধারণাসংকলকটির জন্য একটি সংকলন চক্র শেষ করতে ওবারন প্রোগ্রামারদের তখনও সম্পূর্ণ অজানা ছিল। টিপিক্যাল প্রোগ্রাম, এটি সবসময় বেশি সময় নিয়ে নিলো মাউস বাটন যে সংকলন মাত্র আলোড়ন সৃষ্টি সম্পূর্ণ করার জন্য কম্পাইলার জন্য অপেক্ষা করতে চেয়ে কম্পাইল কমান্ড আলোড়ন থেকে আঙুল মুছে ফেলার জন্য। এটি ছিল সত্যিকারের তাত্ক্ষণিক সন্তুষ্টি, প্রায় শূন্য অপেক্ষা অপেক্ষা সময় সহ। এবং উত্পাদিত কোডের গুণমান, যদিও তত্ক্ষণাত্ সর্বোত্তম উপলব্ধ সংকলকগুলির সাথে সর্বদা সমান হয় না, বেশিরভাগ কাজের জন্য অসাধারণ ছিল এবং সাধারণভাবে বেশ গ্রহণযোগ্য।