গতিশীল ভাষাগুলিতে যেমন জাভাস্ক্রিপ্ট বা পাইথনগুলিতে একটি চলকটির ধরণ রানটাইম সময়ে নির্ধারিত হয়। এটি জাভা হিসাবে টাইপ করা ভাষার চেয়ে ধীর গতির একটি কারণ।
টাইপ চেকিং কিভাবে সম্পাদিত হয়? এই প্রক্রিয়াটি ধীর হওয়ার প্রয়োজনীয় কারণ কী?
গতিশীল ভাষাগুলিতে যেমন জাভাস্ক্রিপ্ট বা পাইথনগুলিতে একটি চলকটির ধরণ রানটাইম সময়ে নির্ধারিত হয়। এটি জাভা হিসাবে টাইপ করা ভাষার চেয়ে ধীর গতির একটি কারণ।
টাইপ চেকিং কিভাবে সম্পাদিত হয়? এই প্রক্রিয়াটি ধীর হওয়ার প্রয়োজনীয় কারণ কী?
উত্তর:
প্রশ্নে বিভ্রান্তি আছে।
এমন একটি অনুমান রয়েছে যে প্রকারের চেকিংটি ধীর, যা অগত্যা ক্ষেত্রে হয় না।
প্রশ্নটি টাইপ চেকিংয়ের সাথে প্রকার প্রেরণের প্রক্রিয়াটিকেও বিভ্রান্ত করছে বলে মনে হয় এবং এগুলি দুটি ভিন্ন জিনিস। একটি প্রক্রিয়া যা রান সময়ে সম্পন্ন হয়, অন্যটি সংকলনের সময় একটি প্রক্রিয়া। আমি সন্দেহ করি যে প্রশ্নটি সত্যিই টাইপ প্রেরণের বিষয়ে জিজ্ঞাসা করছে।
এটি টাইপ প্রেরণ যা রানটাইমের সময় ওভারহেডকে পরিচয় করিয়ে দিতে পারে, কারণ গণনাটি সঞ্চয়ের সময় যে মানগুলি দেখায় সেগুলির ভিত্তিতে গতিশীলভাবে, কী পদক্ষেপ নেবে সেই সিদ্ধান্তের সাথে সময় ব্যয় করে। উদাহরণস্বরূপ, একটি গতিশীল ভাষায়, আমি যদি দুটি বিষয়ের উপর "+" প্রয়োগ করি, তবে আমি সংখ্যার সংযোজন বা স্ট্রিং কনটেন্টেশন বোঝাতে পারি, তাই কী করতে হবে তা স্থির করার জন্য আমার হাতে কী আছে তা দেখার জন্য সময় ব্যয় করা দরকার। গতিশীল প্রেরণের ব্যয় হ্রাস করতে পারে এমন মূল্যায়নের কৌশল রয়েছে। (যেমন, জেআইটি-র ট্রেসিং)
জাভাস্ক্রিপ্টে টাইপ-চেকিংয়ের ক্ষেত্রে, দেখুন: http://www.cs.brown.edu/~sk/ প্রজাতন্ত্র / পত্রিকা / প্রকাশিত / gsk- ফ্লো-typing-theory / । টাইপ চেকাররা কীভাবে কাজ করে তার আরও সাধারণ ওভারভিউয়ের জন্য, একটি প্রমিত প্রোগ্রামিং ভাষার পাঠ্যপুস্তক আলগোরিদিমগুলি কভার করবে। উদাহরণস্বরূপ, http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/
মূলত, টাইপযুক্ত ভাষায়, প্রতিটি রেফারেন্স এমন কোনও বস্তুর দিকে নির্দেশ করে যা প্রকার এবং মান উভয়ই অন্তর্ভুক্ত করে। উদাহরণস্বরূপ var a = 3
একটি উদাহরণের দিকে নির্দেশ করে যার মধ্যে মান 3 এবং টাইপ ইন্ট থাকে, আপনি যদি তৈরি করেন a = "bla"
তবে রেফারেন্সটি এমন একটি উদাহরণে আপডেট করা হয় যাতে স্ট্রিং "ব্লে" থাকে এবং টাইপ স্ট্রিং থাকে, পুরাতন বস্তুটি ফেলে দেওয়া হয়, ইত্যাদি ...
এটি ধীরে ধীরে কারণ প্রতিটিবার যখন a + b
এই মৌলিক ধরণের উপর কোনও অপারেশন (উদাঃ ) করা আবশ্যক, রানটাইম অবশ্যই প্রথমে অবজেক্টগুলিকে অবলম্বন করবে, তাদের প্রকারটি উপযুক্ত কিনা তা পরীক্ষা করতে হবে, অপারেশনটি সম্পাদন করবে, একটি নতুন অবজেক্ট তৈরি করবে।
বিপরীতে, a + b
সি ++ বা জাভা সংকলনের সময় পরীক্ষা করে যে প্রকারগুলি বৈধ এবং সামঞ্জস্যপূর্ণ হয়, তারপরে a এবং b তাত্ক্ষণিক মান হিসাবে উল্লেখ করা হয় (রেফারেন্স নয়), এবং সংযোজন এই মানগুলিতে একটি সাধারণ প্রসেসর অপারেশন।
অবশ্যই, এটি সব খুব তাত্ত্বিক। অনুশীলনে, বেশিরভাগ ওভারহেড এড়াতে এই প্রক্রিয়াটিতে প্রচুর অপ্টিমাইজেশন করা যেতে পারে এবং গতিশীলভাবে টাইপ করা ভাষাগুলি বেশ দ্রুত পেতে পারে।