ধীরে ধীরে টাইপিং: "স্ট্যাটিক টাইপ সিস্টেম সহ প্রায় প্রতিটি ভাষায় একটি গতিশীল টাইপ সিস্টেম থাকে"


20

এই দাবিটি দ্বারা Aleks Bromfield বলে:

স্ট্যাটিক টাইপ সিস্টেম সহ প্রায় প্রতিটি ভাষার একটি গতিশীল টাইপ সিস্টেম থাকে। সি বাদে আমি ব্যতিক্রম ভাবতে পারি না

এটি কি বৈধ দাবি? আমি বুঝতে পারি যে রানটাইমের সময় রিফ্লেকশন বা লোডিং ক্লাসের সাথে জাভা কিছুটা এরকম হয় - তবে 'ধীরে ধীরে টাইপিং' করার এই ধারণাটি কি বৃহত সংখ্যক ভাষায় প্রসারিত করা যেতে পারে?


আমি কোনও ভাষা বিশেষজ্ঞ নই, তবে কয়েকজনের সাথে সাথেই মনে হয় যে আমি গতিশীল ধরণের কথা বিশ্বাস করি না (নেটিভালি, আপনি এগুলির সাথে একসাথে কিছু বাঁধতে পারেন না বলে বলছেন না) - ফরট্রান, অ্যাডা, পাস্কেল, কোবোল
ম্যাটঞ্জ

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

উত্তর:


37

আসল টুইটকারী এখানে here :)

প্রথমত, আমি কিছুটা বিস্মিত / হতবাক যে আমার টুইটটি এত গুরুত্ব সহকারে নেওয়া হচ্ছে! যদি আমি জানতাম যে এটি এই ব্যাপকভাবে প্রচারিত হতে চলেছে, আমি এটি লিখতে 30 সেকেন্ডেরও বেশি সময় ব্যয় করতাম!

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

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

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

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

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


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

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

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

প্রতিটি ভাষার একটি গতিশীল টাইপ সিস্টেম থাকে যা নিয়মের একটি সেট যা নির্দিষ্ট ক্রিয়াকলাপ সম্পাদন করতে নিষেধ করে।
এলাজার

7

হ্যাঁ ঠিক. যে কোনও স্থিতিযুক্ত ভাষায় আপনার কাছে সম্পত্তি ব্যাগ থাকতে পারে। বাক্য গঠনটি ভয়ানক হবে যখন একই সময়ে আপনি গতিযুক্ত টাইপ করা সিস্টেমের সমস্ত অসুবিধা অর্জন করতে পারবেন। সংকলক আপনাকে উত্তম সিনট্যাক্স ব্যবহার করার অনুমতি না দিলে সত্যিই কোনও সুবিধা নেই, সি # এর মতো কিছু dynamicকরছে।

এছাড়াও, আপনি সি তে খুব সহজেই এটি করতে পারেন।

অন্যান্য উত্তরের প্রতিক্রিয়ায়: আমি মনে করি লোকেরা স্ট্যাটিক / ডায়নামিক টাইপিংকে শক্তিশালী / দুর্বল টাইপিংয়ের সাথে ভুল করছে। ডায়নামিক টাইপিং রানটাইমের সময় ডেটার কাঠামো পরিবর্তন করতে সক্ষম হয় এবং কোড ব্যবহার করা ডেটা ব্যবহার করতে সক্ষম হয় যা কোডের প্রয়োজনীয়তার সাথে খাপ খায়। একে ডাক টাইপিং বলা হয় ।

প্রতিবিম্ব উল্লেখ করে পুরো গল্পটি বলা হচ্ছে না, কারণ প্রতিবিম্ব আপনাকে ডেটাগুলির বিদ্যমান কাঠামো পরিবর্তন করতে দেয় না। আপনি C, C ++, জাভা বা C # তে কোনও শ্রেণী বা কাঠামোয় নতুন ক্ষেত্র যুক্ত করতে পারবেন না। গতিশীল ভাষাগুলিতে, বিদ্যমান বর্গগুলিতে নতুন ক্ষেত্র বা বৈশিষ্ট্য যুক্ত করা কেবল সম্ভব নয়, তবে বাস্তবে এটি বেশ সাধারণ।

উদাহরণস্বরূপ, পাইথন-টু-সি সংকলক সিথন দেখুন । এটি স্ট্যাটিক সি কোড তৈরি করে, তবে টাইপ সিস্টেমটি এখনও এটি গতিশীল প্রকৃতি ধরে রাখে। সি স্ট্যাটিকালি টাইপড ল্যাঙ্গুয়েজ, তবু এটি পাইথন থেকে ডায়নামিক টাইপিং সমর্থন করতে সক্ষম।


প্রযুক্তিগতভাবে, আপনি এটি সি # তে সংস্করণ 4 এর মতো হিসাবে করতে পারেন ExpandoObject, যদিও এটি জাভাস্ক্রিপ্ট বা রুবির বিপরীতে অনেকটাই একটি অপ্ট-ইন প্রক্রিয়া। তবুও, আপনি একটি অত্যন্ত গুরুত্বপূর্ণ পয়েন্টটি তৈরি করেছেন, এটি হ'ল হাঁসের টাইপিং (99% বিকাশকারীরা যখন "ডায়নামিকালি টাইপড" বলে তখন আসলে কী বোঝায়) এবং প্রতিচ্ছবি মোটেও একই জিনিস নয়।
অ্যারোনআউট

আমি আরও যুক্ত করতে পারি যে পাইথনের আসল হাঁসের টাইপিং নেই। আপনার নিজের "প্রয়োগ করতে" এর জন্য এটির কিছু হুক রয়েছে (একটি ম্যাজিক পদ্ধতি রয়েছে যা True"এই পাগল জিনিসটি আমি যে শ্রেণীর সংজ্ঞা দিচ্ছি তার উদাহরণ") বলতে ফিরে আসতে পারে) আমি যতদূর বুঝতে পারি ওক্যামেলের এই বৈশিষ্ট্যটি রয়েছে তবে আমি সত্যি জানি না।
vlad-ardelean

6

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

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


তবে castালাই স্থিরভাবে করা হয়। এটি কীভাবে ডায়নামিক টাইপের উদাহরণ, তা দেখতে আমি ব্যর্থ।
osa

@osa শুধু কারণ কোড বলছেন String foo = (String) barএটা মানে এই নয় যে barআসলে একটি হয় String। আপনি চালনার সময়ে নিশ্চিতভাবেই এটি জানতে পারবেন, সুতরাং কাস্টটি কীভাবে "স্ট্যাটিকালি" করা হয় তা আমি দেখতে পাই না।
ডোভাল

আমি এর সাথে একমত নই অন্তত জাভাস্ক্রিপ্টে, আপনি রানটাইমে অবজেক্টগুলিতে নতুন পদ্ধতি এবং বৈশিষ্ট্য যুক্ত করতে পারেন। সি # তে, আপনাকে এটি করার জন্য স্পষ্টভাবে কোনও dynamicঅবজেক্ট ব্যবহার করতে হবে। আপনি যদি কোনও object... তে কোনও সম্পত্তি যুক্ত করার চেষ্টা করেন তবে আপনি পারবেন না।
আর্তুরো টরেস সানচেজ

3

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

void horribleJava(List untypedList) {
  for (Object o : untypedList)
    ((SpecificType) o).frobnicate();
}

রানটাইমের সময় প্রতিটি আইটেমের প্রকারটি কীভাবে পরীক্ষা করা হয় তা লক্ষ্য করুন। সমতুল্য স্ট্যাটিকালি টাইপ করা পদ্ধতিটি হ'ল:

void goodJava(List<SpecificType> typedList) {
  for (SpecificType o : typedList) {
    o.forbnicate();
  }
}

সি-তে, মানগুলি (এবং বিশেষত পয়েন্টার) রানটাইমের সময় তাদের ধরণ ধরে রাখে না - প্রতিটি পয়েন্টারটি a এর সমতুল্য void *। পরিবর্তে, ভেরিয়েবল এবং এক্সপ্রেশন একটি প্রকার আছে। ডায়নামিক টাইপিং অর্জনের জন্য, আপনাকে টাইপ তথ্যটি নিজের কাছে বহন করতে হবে (যেমন কোনও কাঠামোর ক্ষেত্র হিসাবে)।


1
আমি মনে করি না কোনও কাস্ট কোনও বাস্তব ব্যবহারিক অর্থে গতিশীল টাইপিং হিসাবে গণ্য। এটি এখনও সংকলন সময়ে ধরণের জ্ঞান প্রয়োজন, এটি কেবল রানটাইম পর্যন্ত আসল বৈধতা স্থগিত করে। frobnicateপ্রথমে না জেনে আপনি এখানে পদ্ধতিটি চালিত করতে পারবেন না SpecificType
অ্যারোনআউট

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

আমি আমার শেষ মন্তব্যে যেমন বলেছিলাম, এটি একটি তাত্ত্বিক পার্থক্য যা আমি কখনও দেখা হয়নি এমন কোনও প্রোগ্রামারই সত্যই যত্নবান নয়। আপনি ঘৃণ্যভাবে তর্ক করতে পারেন যে লোকেরা ভুল পরিভাষা ব্যবহার করছে (এবং এটি প্রকৃতপক্ষে প্রতীয়মান হয় যে মূল টুইটটি স্পষ্টতই সেই ধরণের অন্ধকারের জন্য চলেছিল) তবে যারা প্রকৃতপক্ষে খন্দকের, গতিশীল টাইপিং = হাঁসের টাইপিংয়ের ক্ষেত্রে রয়েছেন। প্রকৃতপক্ষে সংজ্ঞাটি এতটাই সাধারণ যে সি # এর মতো ল্যাঙ্গুয়েজগুলি আসলে এটির কোডিং করেছে (অর্থাত dynamicকীওয়ার্ড সহ)। Equating স্ট্যাটিক করার কম্পাইল-টাইম এবং গতিশীল করার জন্য রানটাইম বেশিরভাগই শুধু muddies জলের।
অ্যারোনআউট

@ অ্যারোনআউট: যদি কেউ কোনও ইন্টারফেসে কাস্ট করে, এবং যদি এমন ক্লাসগুলি উদ্দিষ্ট অর্থের সাথে কোনও পদ্ধতি প্রয়োগ করে তবে ধারাবাহিকভাবে একই ইন্টারফেসটি বলার জন্য এটি প্রয়োগ করে, তবে অবশ্যই মূলত রান-টাইম হাঁস-টাইপিং করা হবে। যদিও কিছু যুক্তি দিতে পারে যে "হাঁসের টাইপিং" কেবলমাত্র নামটির নাম ব্যবহার করা উচিত, আমি মনে করি "সত্য" পদ্ধতির নামটিকে ইন্টারফেসের নাম এবং পদ্ধতির নাম হিসাবে বিবেচনা করা আরও সহায়ক হবে। অন্যথায়, উচিত [1,2].Add([3,4])উত্পাদ [1,2,3,4], [1,2,[3,4]]অথবা [4,6]?
সুপারক্যাট

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

2

স্ট্যাটিক বনাম গতিশীল টাইপিং মূলত প্রকারভেদে কীভাবে পরীক্ষা করা হয় তা বোঝায়। স্ট্যাটিক টাইপিংয়ের অর্থ হ'ল বিভিন্ন পরিবর্তনশীল বা এক্সপ্রেশনগুলির ধরণের যাচাইকরণটি আসল কোডের ভিত্তিতে (সাধারণত সংকলক দ্বারা) পরীক্ষা করা হয় যখন একটি গতিশীল টাইপ সিস্টেমে এই যাচাইটি রানটাইম পরিবেশ দ্বারা কেবল রানটাইম সঞ্চালিত হয়।

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


তাহলে এটি সঠিক নয়। সি ++, পাস্কাল, ফোর্টরান --- যে কোনও সংকলিত ভাষায় --- প্রকারগুলি কেবল স্থিরভাবে পরীক্ষা করা হয়, এবং গতিশীল নয় (যদি আপনি ডায়নামিক_কাস্ট ব্যবহার না করেন)। আপনি মেমোরিতে নির্বিচারে স্টাফ লেখার জন্য পয়েন্টার ব্যবহার করতে পারেন, এবং কেউ প্রকারগুলি জানতে পারবে না। সুতরাং স্থিতিশীল টাইপিংয়ের অর্থ কেবলমাত্র চেক স্ট্যাটিকালি, অন্যদিকে ডায়নামিক টাইপিংয়ের অর্থ কেবলমাত্র রন্টটাইমে চেক করা।
osa

-1

এক্সপিশন ভুল: সিতেও একটি গুরুত্বপূর্ণ গতিশীল টাইপ সিস্টেম রয়েছে। এটি কেবল এটি চেক করে না ("সি দৃ strongly়ভাবে টাইপযুক্ত, দুর্বলভাবে পরীক্ষা করা হয়েছে")। উদাহরণস্বরূপ, স্ট্রাক্টকে double( reinternpret_cast-স্টাইল) হিসাবে চিকিত্সা করার ফলে অপরিজ্ঞাত আচরণের ফল পাওয়া যায় - একটি গতিশীল ধরণের ত্রুটি।


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