অ্যালগরিদম আদৌ প্রকাশ করা যায় না বা না তার চেয়ে আমি সবসময় এটিকে সুবিধার বিষয় হিসাবে দেখেছি। আমি যদি সত্যি মিচেলের কনট্রিভড প্রোগ্রামের মতো প্রোগ্রামগুলি চালাতে চাইতাম তবে আমি কেবল আমার স্ট্যাটিচ্যালি টাইপ করা ভাষায় যথাযথ টুরিং মেশিন সিমুলেটরটি লিখতাম।
একটি স্ট্যাটিক টাইপ সিস্টেমের কৌশলটি হ'ল ক্ষেত্রে যে ক্ষেত্রে নমনীয়তা আপনাকে আরও সহজেই রক্ষণাবেক্ষণযোগ্য কোড লিখতে দেয় সেই ক্ষেত্রে উপযুক্ত ধরণের নমনীয়তা সরবরাহ করা।
প্রোগ্রাম কাঠামোগত কৌশলগুলির কয়েকটি উদাহরণ এখানে রয়েছে যা কখনও কখনও স্থিতিযুক্ত ভাষার চেয়ে গতিময়ভাবে পরিচালনা করা সহজ বলে মনে করা হয়।
জেনারিক্স এবং ধারক
এমএল (সি। 1973) এবং সিএলইউর (সি। 1974) এর আগে স্ট্যাটিকভাবে টাইপ করা ভাষাগুলিতে স্ট্রিংগুলির একটি লাল-কালো গাছ, পূর্ণসংখ্যার একটি লাল-কালো গাছ, ভাসমানের একটি লাল-কালো গাছ তৈরি করা কঠিন ছিল না a নির্দিষ্ট ধরণের উপাদানগুলির লাল-কালো গাছ Foo
। তবে, লাল-কালো গাছের একক বাস্তবায়ন তৈরি করা কঠিন (সম্ভবত অসম্ভব) ছিল যা উভয়ই স্থিরভাবে পরীক্ষা করা হয়েছিল এবং যা এইগুলির মধ্যে যে কোনও একটি ডেটা পরিচালনা করতে পারে। সমস্যার আশেপাশের উপায়গুলি হ'ল (১) টাইপ সিস্টেমটি সম্পূর্ণভাবে বিচ্ছিন্ন করা (উদাহরণস্বরূপ: ব্যবহার করে byvoid *
সি), (২) নিজেকে কোনও ধরণের ম্যাক্রো প্রিপ্রোসেসর লিখুন এবং তারপরে ম্যাক্রোগুলি লিখুন যা আপনার প্রয়োজনীয় প্রতিটি নির্দিষ্ট ধরণের কোড তৈরি করে বা (3) ল্যাস্প / স্মলটালক (এবং জাভা) এক্সট্র্যাক্টের ধরণটি পরীক্ষা করার পদ্ধতি ব্যবহার করুন গতিশীলভাবে বস্তু।
এমএল এবং সিএলইউ যথাক্রমে অনুমিত এবং স্পষ্টভাবে ঘোষিত (স্থিতিশীল) প্যারামিটারাইজড ধরণের ধারণার প্রবর্তন করে, যা আপনাকে জেনেরিক, স্ট্যাটিকালি টাইপড, ধারক প্রকারের লেখার অনুমতি দেয়।
সাব টাইপ পলিমারফিজম
সিমুলা (c (সি। ১৯6767 ) এবং হোপের (সি। 1977) এর আগে স্ট্যাটিকভাবে টাইপ করা ভাষাগুলিতে গতিশীল প্রেরণ এবং স্ট্যাটিকভাবে উভয়ই সম্ভব ছিল না যে আপনি প্রতিটি উপ- টাইপের ক্ষেত্রে কেসটি কভার করেছেন। অনেক ভাষায় কিছু ট্যাগযুক্ত ইউনিয়ন ছিল , তবে তাদের case
বা switch
বিবৃতি, বা তাদের জাম্প টেবিলগুলি, প্রতিটি সম্ভাব্য ট্যাগটি coveredেকে রেখেছিল তা নিশ্চিত করা প্রোগ্রামারের দায়িত্ব ছিল was
সিমুলা মডেলের নিম্নলিখিত ভাষা (সি ++, জাভা, সি #, আইফেল) সাবক্লাসিং সহ বিমূর্ত ক্লাস সরবরাহ করে যেখানে সংকলকটি পরীক্ষা করতে পারে যে প্রতিটি সাবক্লাস প্যারেন্ট ক্লাস দ্বারা ঘোষিত সমস্ত পদ্ধতি কার্যকর করেছে। হপ মডেল অনুসরণকারী ভাষাগুলির (এসএমএল / এনজে থেকে হাস্কেলের মাধ্যমে সমস্ত এমএল রূপগুলি) বীজগণিত উপ-টাইপ রয়েছে যেখানে সংকলকটি পরীক্ষা করতে পারে যে প্রতিটি typecase
বিবৃতিতে সমস্ত উপ-প্রকার অন্তর্ভুক্ত রয়েছে।
বানর প্যাচিং এবং অ্যাস্পেক্ট ওরিয়েন্টেড প্রোগ্রামিং
ডায়নামিক টাইপ সিস্টেমগুলি বিভিন্ন প্রোটোটাইপিং কৌশলগুলি আরও সহজ করে তোলে। যে ভাষাগুলিতে স্ট্রিং থেকে ফাংশনগুলিতে হ্যাশ ম্যাপ দ্বারা প্রকারের প্রতিনিধিত্ব করা হয় (উদাহরণস্বরূপ, পাইথন, জাভাস্ক্রিপ্ট, রুবি) প্রতিটি মডিউলের যে কোনও নির্দিষ্ট ধরণের উপর নির্ভর করে তার আচরণটি বিশ্বব্যাপী পরিবর্তন করা বেশ সহজ, কেবল হ্যাশ ম্যাপকে প্রতিনিধিত্ব করে প্রতিনিধিত্ব করে টাইপ করুন।
যদিও বানর প্যাচিংকে প্রোগ্রামগুলি বজায় রাখা শক্ততর করার পক্ষে স্পষ্ট উপায় রয়েছে তবে এমন কিছু উপায় রয়েছে যাতে এটি "মন্দ" না হয়ে "ভাল" জন্য ব্যবহার করা যেতে পারে। বিশেষত দিক ভিত্তিক প্রোগ্রামিংয়ের মাধ্যমে কেউ ভার্চুয়ালাইজড ফাইল সিস্টেমে নির্দেশ করতে ফাইল টাইপ পরিবর্তন করে "ফ্রি" এর জন্য ইউনিট-পরীক্ষামূলক অবকাঠামোগত নির্মাণের অনুমতি দিতে বা সাধারণ ব্যতিক্রম প্রকারের সংশোধন করার মতো কৌশলগুলি ব্যবহার করতে পারে one প্রতিবার লগ বার্তা প্রিন্ট করুন যখন তারা আরও ভাল ডিবাগিবিলিটির জন্য ধরা পড়ে।
জেনারিক্স এবং সাব টাইপ পলিমারফিজমের বিপরীতে যেখানে মূল স্ট্যাটিক চেকিং আইডিয়াগুলি ১৯ 1970০ এর দশকে পাওয়া গেল, দিক ওরিয়েন্টেড প্রোগ্রামিংয়ের স্থির চেকিং (আমার মনে হয়) একটি সক্রিয় গবেষণা ক্ষেত্র। 2001 সাল থেকে AspectJ নামে একটি ভাষা আছে তা ছাড়া আমি এ সম্পর্কে খুব বেশি কিছু জানি না ।