কেন আমাদের গতির জন্য বিমূর্ততা বাণিজ্য করতে হবে?


11

উচ্চ স্তরের ভাষাগুলি গতির দিক দিয়ে কখনই নিম্ন-স্তরের ভাষায় পৌঁছতে পারে না? উচ্চ-স্তরের ভাষার উদাহরণগুলি পাইথন, হাস্কেল এবং জাভা হবে। নিম্ন স্তরের ভাষাগুলি সংজ্ঞায়িত করার জন্য আরও জটিল হবে, তবে আসুন আমরা সি বলা যাক যে ইন্টারনেট 1 এর চারপাশে তুলনাগুলি পাওয়া যায় এবং তারা সকলেই সম্মত হন যে সি অনেক দ্রুত হয়, কখনও কখনও 10 বা ততোধিক সংখ্যক ফ্যাক্টর দ্বারা।1

এটি এমন কি কারণ যা পারফরম্যান্সে এত বড় পার্থক্য সৃষ্টি করে এবং উচ্চ স্তরের ভাষা কেন ধরা যায় না?

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


উদাহরণ:1


5
"এবং তারা সকলেই একমত যে সি অনেক দ্রুত" - এটি অবশ্যই ভুল।
রাফেল

2
যাইহোক, আমি মনে করি পোস্টটি একইভাবে অসুস্থ-কল্পনা করা প্রশ্নের উত্তরে আমার উত্তরের মাধ্যমে উত্তম ; প্রতিলিপি?
রাফেল

2
আরও দেখুন এখানে এবং এখানে । জাঙ্ক উত্তর সাবধান।
রাফেল

প্রাসঙ্গিক: স্ট্যাকওভারফ্লো / প্রশ্ন / 64৯6964৯৯২ /… সমস্ত "উচ্চ-স্তরের ভাষাগুলি" মন্থর হওয়ার কল্পকাহিনীটি বেশ দুঃখজনক।
এক্সজি

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

উত্তর:


19

কিছু কল্পকাহিনী

  1. ফাস্ট ল্যাঞ্জের মতো জিনিস নেই। একটি ভাষা সাধারণত দ্রুত কোড তৈরি করতে পারে, তবে বিভিন্ন ভাষা বিভিন্ন মানদণ্ডে শ্রেষ্ঠ হবে। আমরা একটি ত্রুটিযুক্ত বেঞ্চমার্কের একটি নির্দিষ্ট সেটগুলিতে ভাষাগুলি র‌্যাঙ্ক করতে পারি, তবে ভাষাগুলি শূন্যতায় র‌্যাঙ্ক করতে পারি না।

  2. সি কোডটি দ্রুত হতে থাকে কারণ যে সমস্ত লোকদের প্রতিটি ইঞ্চি পারফরম্যান্স প্রয়োজন তারা সি ব্যবহার করেন stat একটি পরিসংখ্যান যা সি "10 এর ফ্যাক্টর দ্বারা" দ্রুত হয় তা ভুল হতে পারে, কারণ এটি হতে পারে যে পাইথন ব্যবহার করা লোকেরা কেবল ততটা যত্ন নেয় না be গতি সম্পর্কে এবং অনুকূল পাইথন কোডটি লিখেনি। আমরা এটি বিশেষত হাস্কেলের মতো ভাষার সাথে দেখতে পাই। আপনি যদি সত্যিই কঠোর চেষ্টা করেন তবে আপনি হাস্কেল লিখতে পারেন যা সি এর সাথে সমান পারফর্ম করে তবে বেশিরভাগ লোকের সেই পারফরম্যান্সের প্রয়োজন হয় না, তাই আমাদের কাছে একগুচ্ছ ত্রুটিযুক্ত তুলনা রয়েছে।

  3. কখনও কখনও, এটি অসম্পূর্ণ, বিমূর্ততা নয়, এটি সি দ্রুত করে তোলে। এর অ্যারে-বাউন্ডস এবং নাল-পয়েন্টার চেকগুলির অভাব সময় সাশ্রয় করে এবং বহু বছর ধরে অসংখ্য সুরক্ষা গর্তের কারণ হয়ে দাঁড়িয়েছে।

  4. ভাষাগুলি দ্রুত নয়, বাস্তবায়নগুলি দ্রুত। অনেকগুলি বিমূর্ত ভাষা ধীরে ধীরে শুরু হয়, কারণ গতি তাদের লক্ষ্য নয়, এবং আরও এবং আরও অনুকূলিতকরণ যুক্ত হওয়ার সাথে সাথে দ্রুত হয়।

বিমূর্ততা বনাম গতি ট্রেডঅফ সম্ভবত ভুল। আমি আরও ভাল তুলনা পরামর্শ দিতে হবে:

সরলতা, গতি, বিমূর্ততা: দুটি চয়ন করুন।

যদি আমরা বিভিন্ন ভাষায় অভিন্ন অ্যালগরিদমগুলি চালিয়ে যাচ্ছি, তবে গতির প্রশ্নটি "এই কাজটি করার জন্য রানটাইমের সময় আমাদের কতটুকু জিনিস দরকার?" এই সমস্যাটিতে আসবে?

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

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

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

অ্যাবস্ট্রাক্ট মানে ধীর নয়

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

যে কোনও স্ট্যাটিকালি টাইপ করা ভাষা রানটাইম চেকের সংখ্যা হ্রাস করে আমাদের সময় সাশ্রয় করে এবং সংকলনের সময় টাইপেকেকারকে খুশি করার জন্য আমাদের জটিলতার পরিচয় দেয়। একইভাবে, আমাদের যদি এমন কোনও ভাষা থাকে যা এনকোড করে কোনও মান তার প্রকারের সিস্টেমে নালায় যায় কিনা, আমরা সংকলন সময় নাল-পয়েন্টার চেক সহ সময় সাশ্রয় করতে পারি।


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

হাস্কেল সত্যই একটি ব্যতিক্রম যা নিয়মটি প্রমাণ করে। ;) আমি মনে করি সি ++ যতক্ষণ না আপনি ভাগ করে নেওয়া পয়েন্টারগুলিতে বাসা বাঁধেন না এবং সি এর মতো দ্রুততর হবে ততক্ষণ তার স্মার্ট পয়েন্টার দ্বারা জিসি সম্পর্কে একটি যুক্তিসঙ্গত মাঝারি
কাভেঃ

0

এখানে এই সম্পর্কে কয়েকটি মূল ধারণা দেওয়া হয়।

  • আর্ট বিমূর্ততা বনাম গতি তৈরি করার একটি সহজ তুলনা / কেস স্টাডি হল জাভা বনাম সি ++। জাভা সি ++ এর নিম্ন-স্তরের দিকগুলি যেমন মেমরি পরিচালনা সম্পর্কিত কিছু বিমূর্ত করার জন্য ডিজাইন করা হয়েছিল। প্রারম্ভিক দিনে (1990 এর দশকের মাঝামাঝি ভাষার উদ্ভাবনের সময়), জাভা আবর্জনা সনাক্তকরণ খুব দ্রুত ছিল না, তবে কয়েক দশক গবেষণার পরেও, আবর্জনা সংগ্রহকারীরা চূড়ান্তভাবে চূড়ান্ত / দ্রুত / অনুকূলিত হয়, তাই আবর্জনা সংগ্রহকারীরা বড় হিসাবে একটি হিসাবে মুছে ফেলা হয় জাভা উপর কর্মক্ষমতা ড্রেন। উদাহরণস্বরূপ, এই 1998 এর শিরোনামটি দেখুন: পারফরম্যান্স পরীক্ষাগুলি জাভাটিকে C ++ / জাভাওয়ার্ল্ডের মতো দ্রুত দেখায়

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

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


0

পারফরম্যান্স সম্পর্কে আমি যেভাবে ভাবতে চাই তা হ'ল "যেখানে রাবার রাস্তার সাথে মিলিত হয়"। কম্পিউটার বিমূর্ততা নয়, নির্দেশাবলী কার্যকর করে।

আমি যা দেখতে চাই তা হ'ল: প্রতিটি ফলাফল যা শেষ ফলাফলের জন্য যথেষ্ট অবদান রেখে "এটি পালন করে" চালিত হয়? খুব সাধারণ উদাহরণ হিসাবে, 1024 এন্ট্রিগুলির একটি সারণিতে একটি এন্ট্রি সন্ধানের বিবেচনা করুন। এটি একটি 10-বিট সমস্যা কারণ উত্তরটি জানার আগে প্রোগ্রামটিকে 10 বিট "শিখতে" হয়। যদি অ্যালগরিদম বাইনারি অনুসন্ধান হয়, তবে প্রতিটি পুনরাবৃত্তি 1 বিট তথ্য অবদান রাখে, কারণ এটি 2 এর 2 টি কারণ দ্বারা অনিশ্চয়তা সঙ্কুচিত করে তোলে তাই 10 বিবর্তন লাগে, প্রতিটি বিটের জন্য একটি করে।

অন্যদিকে লিনিয়ার অনুসন্ধান প্রাথমিকভাবে খুব অকার্যকর কারণ প্রথম পুনরাবৃত্তি একটি খুব ছোট ফ্যাক্টর দ্বারা অনিশ্চয়তা সঙ্কুচিত করে। তাই তারা ব্যয় করা প্রচেষ্টার জন্য খুব বেশি শিখছে না।

ঠিক আছে, সুতরাং যদি সংকলক ব্যবহারকারীকে "বিমূর্ত" হিসাবে বিবেচিত পদ্ধতিতে ভাল নির্দেশাবলী মোড়ানোর অনুমতি দিতে পারে তবে তা ঠিক fine


0

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

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

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

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

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

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

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

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

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

ভাষার বয়স এবং জনপ্রিয়তা উভয়ই দক্ষ প্রোগ্রামারগুলির প্রাপ্যতা এবং সিস্টেমের নীচের স্তরগুলির গুণমান (পরিপক্ক গ্রন্থাগার এবং কোড উদাহরণ সহ) উভয় ক্ষেত্রে গুরুত্বপূর্ণ বিষয় wor

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

(লোমম বিমূর্তকরণের ভাষাগুলি, প্রোগ্রামার নিয়ন্ত্রণের উপর জোর দেওয়ার কারণে, সাময়িক সময়ের সংকলন ব্যবহারের পক্ষে। )

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

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.