এটি একটি বন্ধুর সাথে আলোচনায় উঠে এসেছিল এবং কোনও ভাল যুক্তি ভাবার জন্য নিজেকে কঠোর মনে হয়েছিল। দুর্বল টাইপিংয়ের সাথে কী কী সুবিধা পাওয়া যায়?
এটি একটি বন্ধুর সাথে আলোচনায় উঠে এসেছিল এবং কোনও ভাল যুক্তি ভাবার জন্য নিজেকে কঠোর মনে হয়েছিল। দুর্বল টাইপিংয়ের সাথে কী কী সুবিধা পাওয়া যায়?
উত্তর:
এই ধরণের আলোচনার সমস্যাটি হ'ল "দুর্বল টাইপিং" এবং "শক্তিশালী টাইপিং" পদগুলি অপরিজ্ঞাত, উদাহরণস্বরূপ "স্ট্যাটিক টাইপিং", "গতিশীল টাইপিং", "স্পষ্টত টাইপিং", "অন্তর্নিহিত টাইপিং", " হাঁসের টাইপিং "," স্ট্রাকচারাল টাইপিং "বা" নামমাত্র টাইপিং "। হেক, এমনকি "ম্যানিফেস্ট টাইপিং" এবং "সুপ্ত টাইপিং" পদগুলি এখনও গবেষণা এবং আলোচনার খোলার ক্ষেত্র সম্ভবত আরও ভাল সংজ্ঞা দেওয়া হয়েছে।
সুতরাং, যতক্ষণ না আপনার বন্ধু "দুর্বল টাইপিং" শব্দের সংজ্ঞা প্রদান করেন যা আলোচনার ভিত্তি হিসাবে পরিপূরক হিসাবে যথেষ্ট স্থিতিশীল, ততক্ষণ পর্যন্ত এই প্রশ্নের উত্তর দেওয়ার পক্ষেও তা বোঝা যায় না।
দুর্ভাগ্যক্রমে, নিকের উত্তর ছাড়াও , উত্তরদাতাদের মধ্যে কেউই তাদের সংজ্ঞা প্রদান করতে বিরক্ত করেনি এবং আপনি কিছু মন্তব্যে যে বিভ্রান্তি সৃষ্টি করেছিলেন তা দেখতে পাচ্ছেন। এটি বলা শক্ত, যেহেতু কেউ আসলে তাদের সংজ্ঞা দেয় না, তবে আমি মনে করি আমি কেবল এই পৃষ্ঠায় কমপক্ষে তিনটি আলাদা গণনা করেছি।
সর্বাধিক ব্যবহৃত সংজ্ঞাগুলির কয়েকটি হ'ল (এবং হ্যাঁ, আমি জানি যে এগুলির মধ্যে কোনোটাই কোনও অর্থবোধ করে না, তবে সেগুলি সংজ্ঞাগুলি যা আমি মানুষকে ব্যবহার করতে দেখেছি):
যে তিনটি সংজ্ঞা সবচেয়ে বেশি ব্যবহৃত হয় বলে মনে হয় তা হ'ল
যদি না সবাই কি "দুর্বল টাইপিং" এমনকি একটি সংজ্ঞা উপর সম্মত হয় , এটা এমনকি অর্থে কি এর সুবিধাগুলো হতে পারে আমার মনে হয় না। কি লাভ? এমনকি খারাপ, যদি কোন সংজ্ঞা নেই এ সব , তারপর সবাই শুধু তাদের সংজ্ঞা তাদের আর্গুমেন্ট মাপসই নামান করতে পারেন, এবং যে আলোচনা প্রায় কাছাকাছি একটি flamewar মধ্যে বর্তা নিশ্চিত করা হয়।
আমি নিজে কয়েক বছর ধরে ব্যক্তিগতভাবে নিজের সংজ্ঞাটি বেশ কয়েকবার পরিবর্তন করেছি এবং এখন এমন পর্যায়ে পৌঁছেছি যেখানে আমি শর্তাদি আরও কার্যকর মনে করি না। আমি এটাও ভাবতাম যে দুর্বল টাইপিংয়ের (এর বিভিন্ন সংজ্ঞায়) শেল স্ক্রিপ্টিংয়ের একটি জায়গা রয়েছে তবে বাশ এবং পাওয়ারশেলের ক্ষেত্রে যখনই আমাকে একই সমস্যাটি সমাধান করতে হবে তখন আমি কষ্ট সহকারে মনে করিয়ে দিয়েছি যে আমি কী ভুল ছিল।
মনে রাখবেন দুটি প্রধান ধারণা রয়েছে যা সাধারণত বিভ্রান্ত হয়:
একটি প্রোগ্রামিং ল্যাঙ্গুয়েজকে গতিশীল টাইপ করা হয় বলা হয় যখন এর বেশিরভাগ টাইপ চেকিং রান-টাইমে সংকলন-সময়ের বিপরীতে সঞ্চালিত হয়। গতিশীল টাইপিংয়ে, মানগুলির প্রকার থাকে তবে ভেরিয়েবলগুলি থাকে না; অর্থাৎ, একটি ভেরিয়েবল যে কোনও প্রকারের মান উল্লেখ করতে পারে।
এখানে সুবিধাগুলি প্রায়শই কেবল "নতুন" প্রোগ্রামার হিসাবে খারিজ করা হয়, তবে যে কোনও প্রোগ্রামার জন্য এটি সুবিধাজনক হতে পারে:
if (!(arr is Array)) arr = [arr]; // is, instanceof, .constructor ==, whatever
আপনাকে অন্যথায় কোনও নতুন মান কাস্ট করতে বা অর্পণ করতে হবে এমন ক্ষেত্রে কম কোড:
if (data is Array)) {
i = data.length; // no i = ((Array)data).length or Array myArr=(Array)data;
}
দুর্বল টাইপিংয়ের অর্থ হ'ল কোনও ভাষা যখন ব্যবহার করা হয় তখন স্পষ্টভাবে রূপান্তরিত হয় (বা ক্যাসেট) প্রকারগুলি।
উপকারিতা:
অন্তর্নিহিত বুলিয়ান মূল্যায়ন । যে কোনও ধরণের বুলিয়ান হিসাবে মূল্যায়ন করা যেতে পারে। এর পার্শ্ব সুবিধাগুলি যেমন ||
বুলিয়ান রূপান্তর ছাড়াই অ্যাসাইনমেন্টে একটি অংশ ব্যবহার করা যেতে পারে:
var a = param || defaultValue;
আবার, কম কোড:
var num = 5;
var str = "Hello";
input.innerHTML = input.value = num;
for (var i=0; i < input.value; i++) { ... }
এমনকি জাভাও কিছুটা যেতে হয়েছিল, .toString()
যখন একটির সাথে বস্তুর সংমিশ্রণ করার জন্য অন্তর্নিহিত কল দিয়ে String
; অন্যথায় জাভা প্রোগ্রামাররা সারাদিন এটি অভিশাপ দিয়ে থাকবে (লগ স্টেটমেন্টগুলি নিয়ন্ত্রণের বাইরে থাকবে)।
উভয় সংজ্ঞা http://en.wikedia.org/wiki/Type_system থেকে । এটি আমার চেয়ে ভাল বলেছে।
if
ব্লক ব্যবহৃত হয় বা আরও কিছু জটিল (এমনকি রানটাইম বা গতিশীল) যুক্তিযুক্ত না কেন, পরবর্তী লাইনটি আইনী এবং ত্রুটি থেকে নিরাপদ থাকবে।
প্রধান যুক্তি জন্য দুর্বল টাইপিং কর্মক্ষমতা অন্যতম। (এটি ওপিএসের প্রশ্নের উত্তর হিসাবে বর্ণিত হয়েছে)। গতিশীল বনাম স্ট্যাটিক, অন্তর্নিহিত বনাম সুস্পষ্ট সম্পর্কে প্রচুর ভাল আলোচনা রয়েছে। প্রভৃতি
সি হ'ল সর্বাধিক বিখ্যাত দুর্বলভাবে টাইপ করা ভাষা এবং এটি কোনও রান টাইম চেকিং সম্পাদন করে না বা ভেরিয়েবলের ধরণের টাইম চেক সংকলন করে না। সারাংশ আপনি একটি কাস্ট করতে পারেন char *
একটি থেকে int *
এবং ভাষা পরোয়া না। তাহলে আপনি এই কাজ করবেন কেন?
সি প্রোগ্রামিং আপনি সমাবেশের সাথে জিনিসগুলি যেভাবে করতে চান তার খুব কাছাকাছি, তাই এমন সময় রয়েছে যেখানে আপনি কেবল কোনও ঠিকানা সম্পর্কে যত্নশীল হন। void *
সেই কারণেই কোনও রেফারেন্স কাস্ট করা বা পাস করা অস্বাভাবিক কিছু নয় । আপনি যদি জানেন যে কীভাবে স্মৃতিটি সংগঠিত হয় (আবার একটি সি এবং অ্যাসেম্বলি উদ্বেগ), void *
আপনার প্রয়োজনীয় তথ্য পেতে আপনি ঠিকানার ঠিকানার ভিত্তিতে কিছু দুর্দান্ত শীতল গণনা করতে পারেন । উদাহরণস্বরূপ জাভাতে আপনাকে যে প্রক্রিয়াটি করতে হবে এটি আপনাকে শর্ট সার্কিট করতে দেয়।
রান-টাইম টাইপ চেকিংয়ে অসাধারণ কিছু ওভারহেড না থাকলেও এমন সময় আসে যখন একটি সমালোচনামূলক বিভাগটি খুব ধীর হয়ে যায়। আমি বেশিরভাগ ক্ষেত্রে এম্বেড থাকা প্রোগ্রামিং এবং এই ক্ষেত্রে রিয়েল টাইম সিস্টেমগুলি সম্পর্কে ভাবছি।
এটি বলেছে, বেশিরভাগ ক্ষেত্রে একটি শক্তিশালী টাইপ সিস্টেম থাকে যা হয় সময় চেক করা সংকলন হয় বা রানটাইম চেক করা তার ব্যথার চেয়ে প্রায়শই সহায়তা করে।
দুর্বল টাইপিং সাধারণত newbies উপলব্ধি করা সহজ, উদাহরণস্বরূপ এক্সেল, জাভাস্ক্রিপ্ট এবং vbscript এর মতো জিনিসগুলিতে। আপনি সম্ভাব্য ত্রুটিগুলির জন্য কিছু বিকাশের গতিও বাণিজ্য করেন।
বিষয়টিতে ভাল নিবন্ধ: শক্তিশালী টাইপিং বনাম স্ট্রং টেস্টিং