আমি কখনও এই মত বিবৃতি বুঝতে পারি না। সত্যি কথা বলতে, এমনকি যদি আপনি কোনও ফাংশনের রিটার্নের ধরণের কথা ঘোষণা করেন, আপনি কোডের অনেকগুলি লাইন লিখে দেওয়ার পরেও তা ভুলে যেতে পারেন এবং আপনাকে এখনও সেই লাইনে ফিরে যেতে হবে যেখানে এটির অনুসন্ধান ফাংশনটি ব্যবহার করে ঘোষণা করা হয়েছে এটি পরীক্ষা করার জন্য আপনার পাঠ্য সম্পাদক
আপনি রিটার্নের ধরণটি ভুলে যাবেন না - এটি সর্বদা ঘটতে চলেছে। এটি সরঞ্জামটি আপনাকে জানাতে সক্ষম হচ্ছে যে আপনি ফেরতের প্রকারটি ভুলে গেছেন।
সংযোজন হিসাবে ফাংশনগুলি প্রকারের সাথে ঘোষিত হিসাবে funcname()...
, হাইট আউট জ্ঞান প্রকারের আপনাকে ফাংশনটি বলা হয় এমন প্রতিটি লাইন অনুসন্ধান করতে হবে, কারণ আপনি কেবল জানেন funcname
, পাইথন এবং লাইকগুলিতে আপনি কেবল অনুসন্ধান করতে পারেন def funcname
বা function funcname
যা কেবল একবার ঘটে ঘোষণাপত্রে।
এটি সিনট্যাক্সের বিষয়, যা স্থির টাইপিং থেকে সম্পূর্ণ সম্পর্কিত নয়।
সি পরিবারের বাক্য গঠনটি প্রকৃতপক্ষে বন্ধুত্বপূর্ণ যখন আপনি আপনার নিষ্পত্তিকরণে বিশেষ সরঞ্জাম না করে কোনও ঘোষণার সন্ধান করতে চান। অন্যান্য ভাষায় এই সমস্যা নেই। মরিচের ঘোষণার বাক্য গঠনটি দেখুন:
fn funcname(a: i32) -> i32
আরও বেশি, আরপিএলগুলির সাথে এটি বিভিন্ন ইনপুটগুলির সাথে তার ফিরতি প্রকারের জন্য একটি ফাংশন পরীক্ষা করার জন্য তুচ্ছ, যখন স্ট্যাটিকালি টাইপ করা ভাষাগুলির সাথে আপনাকে কোডের কয়েকটি লাইন যুক্ত করতে হবে এবং কেবল ঘোষিত টাইপটি জানার জন্য সবকিছু পুনরায় সংকলন করতে হবে।
যে কোনও ভাষার ব্যাখ্যা করা যায় এবং যে কোনও ভাষার একটি আরপিএল থাকতে পারে।
সুতরাং, কোনও ফাংশনটির রিটার্নের ধরনটি ছাড়াও যা পরিষ্কারভাবে স্ট্যাটিকালি টাইপ করা ভাষার একটি শক্তিশালী বিন্দু নয় তা জানতে, স্ট্যাটিক টাইপিং কীভাবে বড় প্রকল্পগুলিতে সত্যই সহায়ক?
আমি একটি বিমূর্ত পদ্ধতিতে উত্তর দেব।
একটি প্রোগ্রাম বিভিন্ন ক্রিয়াকলাপ নিয়ে গঠিত এবং সেই ক্রিয়াকলাপগুলি সেভাবে নির্ধারণ করা হয় কারণ বিকাশকারীরা কিছু অনুমানের কারণে করেন।
কিছু অনুমান অন্তর্নিহিত এবং কিছু স্পষ্ট হয়। কিছু অনুমান তাদের কাছাকাছি একটি অপারেশন উদ্বেগ, কিছু তাদের থেকে দূরে একটি অপারেশন উদ্বেগ। একটি ধারণা অনুধাবন করা যখন এটি স্পষ্টভাবে এবং যতটা সম্ভব তার জায়গাগুলির কাছে যতটা কাছাকাছি কাছাকাছি প্রদর্শিত হয় তখন এটি সনাক্ত করা সহজ is
একটি বাগ একটি ধারণার বহিঃপ্রকাশ যা প্রোগ্রামে বিদ্যমান তবে কিছু ক্ষেত্রে ধরে রাখে না। ত্রুটিটি সনাক্ত করতে আমাদের ভুল ধারণাটি সনাক্ত করতে হবে। ত্রুটিটি সরানোর জন্য আমাদের প্রোগ্রামটি থেকে সেই অনুমানটি সরিয়ে ফেলতে হবে বা এমন কিছু পরিবর্তন করতে হবে যাতে অনুমানটি আসলে ধারণ করে।
আমি অনুমানগুলি দুই ধরণের মধ্যে শ্রেণীবদ্ধ করতে চাই।
প্রথম ধরণটি প্রোগ্রামের ইনপুটগুলির উপর নির্ভর করে এমন ধারণাগুলি থাকতে পারে বা ধরে রাখতে পারে। এই ধরণের একটি ভুল ধারণা অনুধাবন করার জন্য, আমাদের প্রোগ্রামের সমস্ত সম্ভাব্য ইনপুটগুলির স্থান অনুসন্ধান করতে হবে। শিক্ষিত অনুমান এবং যুক্তিবাদী চিন্তাভাবনা ব্যবহার করে আমরা সমস্যাটি সঙ্কুচিত করতে পারি এবং আরও অনেক কম জায়গায় অনুসন্ধান করতে পারি। কিন্তু তবুও, কোনও প্রোগ্রাম যেমন কিছুটা বাড়তে থাকে, তার প্রাথমিক ইনপুট স্পেসটি প্রচুর হারে বৃদ্ধি পায় - যেখানে এটি সমস্ত ব্যবহারিক উদ্দেশ্যে অসীম হিসাবে বিবেচিত হতে পারে।
দ্বিতীয় ধরণের হ'ল অনুমানগুলি যা অবশ্যই সমস্ত ইনপুটগুলির জন্য ধারণ করে, বা অবশ্যই সমস্ত ইনপুটগুলির জন্য ভুল। আমরা যখন এই ধরণের কোনও অনুমানকে ভুল হিসাবে চিহ্নিত করি, তখনও আমাদের প্রোগ্রাম চালানোর বা কোনও ইনপুট পরীক্ষা করার প্রয়োজন হয় না। আমরা যখন এই ধরণের একটি অনুমানকে সঠিক হিসাবে চিহ্নিত করি, আমরা যখন কোনও বাগ ( কোনও ত্রুটি) সন্ধান করছি তখন আমাদের যত্ন নেওয়ার জন্য কম সন্দেহ আছে suspect সুতরাং, এই ধরণের যতটা সম্ভব অনুমানের মূল্য রয়েছে value
দ্বিতীয় বিভাগে (সর্বদা সত্য বা সর্বদা মিথ্যা, ইনপুট থেকে স্বতন্ত্র) একটি অনুমান স্থাপনের জন্য, অনুমানটি যেখানে করা হয়েছে সেখানে আমাদের ন্যূনতম পরিমাণে তথ্য পাওয়া দরকার। একটি প্রোগ্রামের সোর্স কোড জুড়ে, তথ্যগুলি খুব দ্রুতই বাসি হয়ে যায় (উদাহরণস্বরূপ, অনেক সংকলক আন্তঃবিদ্যুত বিশ্লেষণ করেন না, যে কোনও কলকে বেশিরভাগ তথ্যের জন্য কঠোর সীমানা করে তোলে)। প্রয়োজনীয় তথ্য টাটকা রাখার জন্য আমাদের একটি উপায় প্রয়োজন (বৈধ এবং কাছাকাছি)।
একটি উপায় হ'ল এই তথ্যের উত্স যতটা সম্ভব এটি যেখানে ব্যবহার করা হচ্ছে তার কাছাকাছি অবস্থান রাখা, তবে এটি বেশিরভাগ ক্ষেত্রে ব্যবহারের ক্ষেত্রে ব্যবহার করা অবৈধ হতে পারে। আর একটি উপায় হ'ল তথ্যকে ঘন ঘন পুনর্বার করা, উত্স কোড জুড়ে এর প্রাসঙ্গিকতা পুনর্নবীকরণ করা।
আপনি ইতিমধ্যে অনুমান করতে পারেন, স্থির প্রকারগুলি হুবহু হ'ল - সোর্স কোড জুড়ে ছড়িয়ে ছিটিয়ে থাকা টাইপের তথ্যের বীকন। সেই তথ্যটি দ্বিতীয় শ্রেণিতে টাইপের নির্ভুলতা সম্পর্কে বেশিরভাগ অনুমানগুলি ব্যবহার করতে ব্যবহার করা যেতে পারে, যার অর্থ প্রায় কোনও ক্রিয়াকে সর্বদা সঠিক বা টাইপ সামঞ্জস্যের ক্ষেত্রে যথাযথ হিসাবে ভুল হিসাবে শ্রেণীবদ্ধ করা যেতে পারে।
যখন আমাদের প্রকারগুলি ভুল হয়, বিশ্লেষণটি দেরি না করে তাত্ক্ষণিক ত্রুটিটিকে আমাদের নজরে এনে আমাদের সময় সাশ্রয় করে। যখন আমাদের প্রকারগুলি সঠিক হয়, বিশ্লেষণটি নিশ্চিত করে আমাদের সময় বাঁচায় যখন কোনও ত্রুটি ঘটে তখন আমরা তাত্ক্ষণিক ধরণের ত্রুটিগুলি বাতিল করতে পারি।