type safety - type - একটি জোরালো টাইপ করা ভাষা এবং একটি স্থিরভাবে টাইপ করা ভাষা মধ্যে পার্থক্য কি?




google input tools installation (6)

উত্তর ইতিমধ্যে উপরে দেওয়া হয়। শক্তিশালী বনাম সপ্তাহ এবং স্ট্যাটিক বনাম গতিশীল ধারণা মধ্যে পার্থক্য করার চেষ্টা করছেন।

Strongly টাইপ VS দুর্বল টাইপ করা হয় কি?

দৃঢ়ভাবে টাইপ করা: স্বয়ংক্রিয়ভাবে এক ধরনের অন্য রূপে রূপান্তরিত হবে না

গো বা পাইথন দৃঢ়ভাবে টাইপ করা ভাষাগুলির মত "2" + 8 একটি টাইপ ত্রুটি বাড়াতে পারে, কারণ তারা "টাইপ জোর করে" করার অনুমতি দেয় না।

দুর্বল (নিঃসন্দেহে) টাইপ করা: স্বয়ংক্রিয়ভাবে এক ধরনের অন্য রূপে রূপান্তরিত হবে: জাভাস্ক্রিপ্ট বা পার্ল মত দুর্বল টাইপ করা ভাষা কোনও ত্রুটি নিক্ষেপ করবে না এবং এই ক্ষেত্রে জাভাস্ক্রিপ্ট ফলাফল '28' এবং পার্ল ফলাফল 10 হবে।

পার্ল উদাহরণ:

my $a = "2" + 8;
print $a,"\n";

Main.pl এ সংরক্ষণ করুন এবং perl main.pl এবং আপনি আউটপুট পাবেন 10।

স্ট্যাটিক ভিএস ডায়্যামিক টাইপ কি?

প্রোগ্রামিংতে, প্রোগ্যামারটি স্থির টাইপ এবং গতিশীল টাইপ নির্ধারণ করে যা বিন্দুটির সাথে সম্পর্কিত যেখানে পরিবর্তনশীল প্রকারগুলি পরীক্ষা করা হয়। স্ট্যাটিক টাইপ করা ভাষাগুলির মধ্যে টাইপ চেকিং কম্পাইল-টাইমে করা হয়, যেখানে গতিশীল টাইপ করা ভাষাগুলি টাইপ চেকিংয়ের সময় টাইপ চেকিংয়ে হয়।

  • স্ট্যাটিক: রান টাইম আগে চেক করা
  • গতিশীল: নির্বাহের সময়, ফ্লাই চেক টাইপ

এই মানে কি?

যান ইন এটি রান টাইম (স্ট্যাটিক চেক) আগে টাইপ চেক। এর অর্থ এটি কেবলমাত্র অনুবাদ এবং টাইপ-চেক কোডটি চালানো হয় না তবে এটি সমস্ত কোড স্ক্যান করবে এবং কোডটি চালানোর আগেই ত্রুটিটি ফাঁকা হবে। উদাহরণ স্বরূপ,

package main

import "fmt"

func foo(a int) {
    if (a > 0) {
        fmt.Println("I am feeling lucky (maybe).")
    } else {
        fmt.Println("2" + 8)
    }
}

func main() {
    foo(2)
}

Main.go এ এই ফাইলটি সংরক্ষণ করুন এবং এটি চালান, আপনি এই জন্য সংকলন ব্যর্থ বার্তা পাবেন।

go run main.go
# command-line-arguments
./main.go:9:25: cannot convert "2" (type untyped string) to type int
./main.go:9:25: invalid operation: "2" + 8 (mismatched types string and int)

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

def foo(a):
    if a > 0:
        print 'I am feeling lucky.'
    else:
        print "2" + 8
foo(2)
foo(0)

আপনি নিম্নলিখিত আউটপুট দেখতে হবে

python main.py
I am feeling lucky.
Traceback (most recent call last):
  File "pyth.py", line 7, in <module>
    foo(0)
  File "pyth.py", line 5, in foo
    print "2" + 8
TypeError: cannot concatenate 'str' and 'int' objects

এছাড়াও, এক অন্য বোঝা?


একটি জোরালো টাইপ করা ভাষা এবং একটি স্থিরভাবে টাইপ করা ভাষা মধ্যে পার্থক্য কি?

একটি স্ট্যাটিকালি টাইপ করা ভাষাটির একটি টাইপ সিস্টেম রয়েছে যা বাস্তবায়ন (কম্পাইলার বা ইন্টারপ্রেটার) দ্বারা কম্পাইল সময়তে পরীক্ষা করা হয়। টাইপ চেক কিছু প্রোগ্রাম প্রত্যাখ্যান করে, এবং চেক পাস প্রোগ্রাম সাধারণত কিছু গ্যারান্টি সঙ্গে আসে; উদাহরণস্বরূপ, কম্পাইলার ভাসমান-বিন্দু সংখ্যার উপর পূর্ণসংখ্যা গাণিতিক নির্দেশাবলী ব্যবহার না করার নিশ্চয়তা দেয়।

"দৃঢ়ভাবে টাইপ করা" অর্থগুলির কোনও সত্যিকারের চুক্তি নেই, যদিও পেশাদার সাহিত্যের সর্বাধিক ব্যাপকভাবে ব্যবহৃত সংজ্ঞাটি হল "দৃঢ়ভাবে টাইপ করা" ভাষাতে, প্রোগ্রামার দ্বারা টাইপ সিস্টেম দ্বারা আরোপিত সীমাবদ্ধতাগুলির জন্য কাজ করা সম্ভব নয় । এই শব্দটি প্রায়শই স্ট্যাটিকালি টাইপ করা ভাষা বর্ণনা করতে ব্যবহৃত হয়।

স্ট্যাটিক বনাম গতিশীল

স্ট্যাটিক্যাল টাইপ করা বিপরীত "গতিশীলভাবে টাইপ করা", যার মানে

  1. রান সময় ব্যবহৃত মান ধরনের মধ্যে শ্রেণীবদ্ধ করা হয়।
  2. এই ধরনের মানগুলি কীভাবে ব্যবহার করা যেতে পারে সে সম্পর্কে বিধিনিষেধ রয়েছে।
  3. যখন এই বিধিনিষেধ লঙ্ঘন করা হয়, লঙ্ঘনটি একটি (গতিশীল) টাইপ ত্রুটি হিসাবে রিপোর্ট করা হয়।

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

শক্তিশালী বনাম দুর্বল

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

সত্যিই এখানে কি যাচ্ছে?

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

  • অপেশাদার প্রায়ই তাদের "স্ট্যাটিক" এবং "গতিশীল" সঙ্গে conflate।

  • আপাতদৃষ্টিতে "দুর্বল টাইপিং" কিছু ব্যক্তি আপেক্ষিক প্রবণতা বা অন্তর্নিহিত রূপান্তর অনুপস্থিতির বিষয়ে কথা বলতে ব্যবহার করে।

  • পেশা পদার্থ মানে ঠিক কি একমত হতে পারে না।

  • সামগ্রিকভাবে আপনি অবহিত বা আপনার শ্রোতাদের আলোকিত করা অসম্ভব।

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

বিপরীতে, স্ট্যাটিক টাইপিং মানে প্রোগ্রামগুলি কার্যকর হওয়ার আগে চেক করা হয় এবং এটি শুরু হওয়ার আগে একটি প্রোগ্রাম বাতিল হতে পারে। ডাইনামিক টাইপিংয়ের অর্থ হল মানগুলির প্রকারগুলি কার্যকরকরণের সময় চেক করা হয় এবং একটি খারাপ টাইপ হওয়া ক্রিয়াকলাপটি প্রোগ্রামটিকে স্থগিত করতে বা রান করার সময় কোনও ত্রুটি সংকেত দিতে পারে। স্ট্যাটিক টাইপিংয়ের প্রাথমিক কারণ এমন প্রোগ্রামগুলিকে বাতিল করতে হয় যা "গতিশীল টাইপ ত্রুটি" থাকতে পারে।

কেউ কি অন্যকে বোঝায়?

একটি pedantic স্তরে, না, কারণ "শক্তিশালী" শব্দ সত্যিই কিছু মানে না। কিন্তু বাস্তবে, প্রায় সবসময় দুটি জিনিস এক করে:

  • তারা (ভুলভাবে) "স্ট্যাটিক" এবং "গতিশীল" মানে "শক্তিশালী" এবং "দুর্বল" ব্যবহার করে, এ ক্ষেত্রে তারা (ভুলভাবে) "দৃঢ়ভাবে টাইপ করা" এবং "স্থিরভাবে টাইপ করা" একে অপরের সাথে ব্যবহার করে।

  • স্ট্যাটিক টাইপ সিস্টেমগুলির বৈশিষ্ট্যগুলির তুলনা করার জন্য তারা "শক্তিশালী" এবং "দুর্বল" ব্যবহার করে। কেউ "শক্তিশালী" বা "দুর্বল" গতিশীল টাইপ সিস্টেম সম্পর্কে কথা বলতে খুব বিরল। ফরথের ব্যতীত, যা কোনও ধরনের টাইপ সিস্টেমের সাথে থাকে না, আমি একটি গতিশীলভাবে টাইপ করা ভাষা সম্পর্কে চিন্তা করতে পারি না যেখানে টাইপ সিস্টেমটি বিলোপ করা যায়। সংজ্ঞা দ্বারা সাজানো, যারা চেক execution ইঞ্জিন মধ্যে bulit হয়, এবং মৃত্যুদন্ড কার্যকর করার আগে প্রতিটি অপারেশন সান্নিধ্য জন্য চেক করা হয়।

কোনও উপায়ে, যদি কোনও ব্যক্তি "দৃঢ়ভাবে টাইপ করা" একটি ভাষা বলে তবে সে ব্যক্তিটি স্ট্যাটিক্যাল টাইপ করা ভাষা সম্পর্কে কথা বলা খুব সম্ভবত।


এক অন্য বোঝা না। স্ট্যাটিক্যাল টাইপ করা একটি ভাষার জন্য এটি সমস্ত ভেরিয়েবলের ধরনগুলি কম্পাইল সময়তে পরিচিত বা অনুমিত।

একটি জোরালো টাইপ করা ভাষা আপনাকে অন্যের মতো এক ধরনের ব্যবহার করার অনুমতি দেয় না। সি একটি দুর্বল টাইপ ভাষা এবং দৃঢ়ভাবে টাইপ করা ভাষা কি অনুমতি দেয় না একটি ভাল উদাহরণ। সি-তে আপনি ভুল টাইপের ডেটা উপাদানটি পাস করতে পারেন এবং এটি অভিযোগ করবে না। দৃঢ় টাইপ ভাষা আপনি করতে পারেন না।


এটি প্রায়শই ভুল বোঝায় তাই আমাকে এটি মুছে ফেলতে দিন।

স্ট্যাটিক / গতিশীল টাইপিং

স্ট্যাটিক টাইপিং যেখানে টাইপ পরিবর্তনশীল আবদ্ধ হয়। ধরন কম্পাইল সময় চেক করা হয়।

টাইপ মান মান আবদ্ধ যেখানে ডায়নামিক টাইপিং হয় । ধরন রান সময় চেক করা হয়।

সুতরাং উদাহরণস্বরূপ জাভাতে:

String s = "abcd";

s উইল "চিরতরে" একটি String হতে। তার জীবনের সময় এটি বিভিন্ন String গুলি নির্দেশ করতে পারে (যেহেতু s জাভা একটি রেফারেন্স)। এটি একটি null মান থাকতে পারে কিন্তু এটি একটি Integer বা একটি List উল্লেখ করবে না। যে স্ট্যাটিক টাইপ করা হয়।

পিএইচপি ইন:

$s = "abcd";          // $s is a string
$s = 123;             // $s is now an integer
$s = array(1, 2, 3);  // $s is now an array
$s = new DOMDocument; // $s is an instance of the DOMDocument class

যে গতিশীল টাইপিং।

শক্তিশালী / দুর্বল টাইপিং

(সতর্কতা সম্পাদনা করুন!)

শক্তিশালী টাইপ একটি ব্যাপকভাবে অর্থ উপর সম্মত সঙ্গে একটি ফ্রেজ। স্ট্যাটিক টাইপিং ব্যতীত অন্য কিছু বোঝার জন্য এই শব্দটি ব্যবহার করে বেশিরভাগ প্রোগ্রামার এটি বোঝায় যে কম্পাইলার দ্বারা প্রয়োগ করা একটি ধরণের শৃঙ্খলা রয়েছে। উদাহরণস্বরূপ, CLU এর একটি শক্তিশালী টাইপ সিস্টেম রয়েছে যা ক্লায়েন্ট কোডটি টাইপের সাহায্যে প্রদত্ত কনস্ট্রাক্টর ব্যবহার করে বিমূর্ত টাইপের মান তৈরি করার অনুমতি দেয় না। সিটি কিছুটা শক্তিশালী টাইপ সিস্টেম রয়েছে তবে এটি একটি ডিগ্রিতে "বিভাজন" করা যেতে পারে কারণ একটি প্রোগ্রাম সর্বদা অন্য পয়েন্টারের মানের জন্য একটি পয়েন্টার টাইপের মান নিক্ষেপ করতে পারে। উদাহরণস্বরূপ, সি-তে আপনি malloc() দ্বারা ফেরত মান গ্রহণ করতে পারেন এবং আনন্দে এটি FILE* নিক্ষেপ করতে পারেন, এবং কম্পাইলার আপনাকে থামাতে চেষ্টা করবে না-এমনকি আপনাকে সতর্ক করবে যে আপনি কিছু করছেন।

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

দুর্বল টাইপিং বোঝায় যে কম্পাইলার একটি টাইপিং ডিস্কলাইন প্রয়োগ করে না, অথবা সম্ভবত এটি প্রয়োগ করা সহজে বিচ্ছিন্ন করা যেতে পারে।

এই উত্তরের মূলটি নিরবচ্ছিন্ন রূপান্তর সহ দুর্বল টাইপিং (কখনও কখনও "অন্তর্নিহিত প্রচার" নামেও পরিচিত)। উদাহরণস্বরূপ, জাভাতে:

String s = "abc" + 123; // "abc123";

এই কোডটি নিখুঁত প্রচারের একটি উদাহরণ: 123টি "abc" সাথে সংযুক্ত হওয়ার আগে সম্পূর্ণভাবে একটি স্ট্রিং রূপান্তরিত হয়। এটা জাভা কম্পাইলার যুক্তিযুক্ত করে যে কোডটি পুনরায় লিখতে পারে:

String s = "abc" + new Integer(123).toString();

একটি ক্লাসিক পিএইচপি বিবেচনা "সমস্যা সঙ্গে শুরু" বিবেচনা করুন:

if (strpos('abcdef', 'abc') == false) {
  // not found
}

এখানে ত্রুটি হল strpos() ম্যাচের সূচী ফিরিয়ে দেয়, 0. 0 হচ্ছে বুলিয়ান false এবং এই অবস্থায় এটি আসলে সত্য। সমাধান === পরিবর্তে == অন্তর্নির্মিত রূপান্তর এড়ানোর জন্য ব্যবহার করা হয়।

এই উদাহরণটি ব্যাখ্যা করে যে নিরপেক্ষ রূপান্তর এবং গতিশীল টাইপিংয়ের সমন্বয় কীভাবে প্রোগ্রামারদের বিপথে পরিচালিত করতে পারে।

Ruby যে তুলনা করুন:

val = "abc" + 123

যা একটি রানটাইম ত্রুটি কারণ রুবিতে বস্তু 123 কেবলমাত্র রূপান্তরিত হয় না কারণ এটি একটি + পদ্ধতিতে পাস করা হয়। রুবিতে প্রোগ্রামারকে অবশ্যই রূপান্তর করা উচিত:

val = "abc" + 123.to_s

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

স্ট্যাটিক / গতিশীল বনাম শক্তিশালী / দুর্বল

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

সুতরাং আপনার প্রশ্নের উত্তর দিতে: এটি বেশিরভাগ সঠিক যে এটি দেখার আরেকটি উপায় বলতে হয় স্ট্যাটিক টাইপিং কম্পাইল-টাইম টাইপ সুরক্ষা এবং শক্তিশালী টাইপিং রানটাইম টাইপ সুরক্ষা।

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

তবে এটি বোঝা গুরুত্বপূর্ণ যে ভাষাটি স্ট্যাটিক / স্ট্রং, স্ট্যাটিক / দুর্বল, গতিশীল / শক্তিশালী বা গতিশীল / দুর্বল হতে পারে।


দৃঢ়ভাবে টাইপ করা হয়েছে যে ধরনের মধ্যে রূপান্তর মধ্যে নিষেধাজ্ঞা আছে। স্ট্যাটিক্যাল টাইপ করা মানে যে গতিগুলি গতিশীল নয় - এটি তৈরি হওয়ার পরে আপনি একটি পরিবর্তনশীলের ধরন পরিবর্তন করতে পারবেন না।


স্ট্রং টাইপিংয়ের অর্থ সম্ভবত যে ভেরিয়েবলগুলির একটি ভাল-সংজ্ঞায়িত টাইপ আছে এবং এক্সপ্রেশনগুলিতে বিভিন্ন ধরণের ভেরিয়েবলগুলির মিশ্রন সম্পর্কে কঠোর নিয়ম রয়েছে। উদাহরণস্বরূপ, যদি A পূর্ণসংখ্যা এবং বি একটি ভাসমান হয়, তবে A + B সম্পর্কে কঠোর নিয়ম হতে পারে যে A একটি ভাসে নিক্ষেপ করা হয় এবং ফলটি ফ্লোট হিসাবে ফিরে আসে। যদি A পূর্ণসংখ্যা এবং B একটি স্ট্রিং হয়, তবে কঠোর নিয়ম হতে পারে যে A + B বৈধ নয়।

স্ট্যাটিক টাইপিংয়ের অর্থ সম্ভবত কম্পাইলাইল সময় (অথবা এটি অ-সংকলিত ভাষার জন্য সমতুল্য) এ নির্ধারিত হয় এবং প্রোগ্রাম কার্যকর করার সময় পরিবর্তন করতে পারে না।

মনে রাখবেন যে এই শ্রেণীবিভাগ পারস্পরিক একচেটিয়া নয়, প্রকৃতপক্ষে আমি তাদের ঘন ঘন একসাথে হতে আশা করি। অনেক দৃঢ়ভাবে টাইপ করা ভাষাগুলি স্ট্যাটিকালি টাইপ করা হয়।

এবং মনে রাখবেন যে যখন আমি 'সম্ভবত' শব্দটি ব্যবহার করি, কারণ এই পদগুলির সর্বজনীনভাবে গ্রহণযোগ্য সংজ্ঞা নেই। আপনি ইতিমধ্যে পর্যন্ত উত্তর থেকে দেখা হবে।