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