স্ট্যাটিকালি টাইপ করা এবং ডায়নামিকালি টাইপ করা ভাষার মধ্যে পার্থক্য কী?


945

আমি অনেক শুনেছি যে নতুন প্রোগ্রামিং ভাষা গতিশীলভাবে টাইপ করা হয় তবে যখন আমরা বলি যে কোন ভাষা গতিশীলভাবে বনাম টাইপ করা হয় তাত্ক্ষণিকভাবে টাইপ করা হয় তখন এর অর্থ কী?


25
ভাল প্রশ্ন তবে আপনার গৃহীত উত্তর সঠিক উত্তর নয়।
জন হ্যারোপ

42
আপনি কি কিছু সঠিক যা উল্লেখ করতে পারেন?
সাগিরউদ্দিন মন্ডল

@ এরিকলিশচিনস্কি আমি মনে করি ইউনিট পরীক্ষাগুলি এখন সেই সমস্যাটির সাথে সহায়তা করে এবং জাভাস্ক্রিপ্টের মতো গতিশীল টাইপ করা ভাষাগুলি নিশ্চিতভাবে কোড করা যায় যে এটি এন্টারপ্রাইজ সফ্টওয়্যার বিকাশের জন্য যোগ্য করে তোলে, আপনি কি ভাবেন না?
পিক্সেল 67

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

2
আমি জানি এই প্রশ্নটি 10 ​​বছরের পুরনো, তবে আমি মন্তব্যগুলিতে যা পড়েছি তা থেকে সম্ভবত আপনাকে "ক্রিস্টোফার টোকার" থেকে উত্তরটি গ্রহণ করতে হবে।
Rev1.0

উত্তর:


853

স্ট্যাটিকালি টাইপ করা ভাষা

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

এখানে মূল সুবিধাটি হ'ল কম্পাইলার দ্বারা সমস্ত ধরণের চেকিং করা যেতে পারে এবং অতএব প্রচুর তুচ্ছ বাগগুলি খুব প্রাথমিক পর্যায়ে ধরা পড়ে।

উদাহরণ: সি, সি ++, জাভা, মরিচা, গো, স্কালা

গতিশীল টাইপ করা ভাষা

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

উদাহরণ: পার্ল, রুবি, পাইথন, পিএইচপি, জাভাস্ক্রিপ্ট

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

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


6
@NomeN আপনি এইচএম টাইপ অনুমিতি প্রয়োগ করে এমন কোনও গতিময় টাইপের ভাষার নাম রাখতে পারবেন?
পিট কির্খাম

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

15
ভুল, স্ট্যাটিক টাইপিংয়ের অর্থ "যে কোনও রেফারেন্স মানটি স্পষ্টতই (যা সংকলনের সময় একই নয়) যে মানটি বোঝাতে পারে তার প্রকারের সাথে আবদ্ধ এবং ভাষা বাস্তবায়ন, এটি সংকলক বা অনুবাদক কিনা , উভয়ই এই সীমাবদ্ধতা যথাসম্ভব প্রয়োগ এবং প্রয়োগ করে। " এর থেকে উদ্ধৃত: c2.com/cgi/wiki?StaticType যা, আমি এটি কীভাবে বুঝতে পারি তা সঠিক is
ম্যাথিয়াস ওল্ফ

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

7
প্রথম স্ট্যাটিক্যালি টাইপ করা ভাষাগুলি স্পষ্টভাবে প্রয়োজনীয়তার দ্বারা টাইপ করা হয়েছিল। যাইহোক, ইনফারেন্স অ্যালগরিদমগুলি টাইপ করুন - একেবারে কোনও প্রকারের ঘোষণা ছাড়াই উত্স কোডটি দেখার কৌশল এবং এর ভেরিয়েবলগুলির প্রকারগুলি কি বহু বছর ধরে বিদ্যমান তা স্থির করে নেওয়ার কৌশল। এমএল ভাষা, যা এটি ব্যবহার করে। এতে উন্নতি করা হাস্কেলের বয়স এখন প্রায় 15 বছর। এমনকি সি # এখন এই ধারণাকে গ্রহণ করছে, যা প্রচুর ভ্রু উত্থাপন করবে এবং নিঃসন্দেহে এর "দুর্বল টাইপড" হওয়ার দাবি উত্থাপন করবে। অবিরত ...
বিপ্রেশ

399

স্ট্যাটিকালি টাইপ করা প্রোগ্রামিং ল্যাংগুয়েজগুলি রান- টাইমের বিপরীতে সংকলন সময়ে টাইপ চেকিং (অর্থাত্ ধরণের সীমাবদ্ধতা যাচাই ও প্রয়োগের প্রক্রিয়া) করে ।

গতিযুক্ত টাইপ করা প্রোগ্রামিং ভাষা সংকলন-সময়ের বিপরীতে রান-টাইমে টাইপ চেকিং করে ।

স্ট্যাটিকালি টাইপ করা ভাষার উদাহরণগুলি: - জাভা, সি, সি ++

গতিশীলভাবে টাইপ করা ভাষার উদাহরণগুলি: - পার্ল, রুবি, পাইথন, পিএইচপি, জাভাস্ক্রিপ্ট


19
আমি মনে করি এটিই সেরা উত্তর। বিশেষত, গৃহীত উত্তরটি মূলত সত্যই ভুল।
জন হ্যারোপ

1
@ জনহরপ কীভাবে বিশেষভাবে?
1252748

21
@ থমাস: "এর অর্থ হ'ল প্রোগ্রামার হিসাবে আপনি কিছুটা দ্রুত লিখতে পারেন কারণ আপনাকে প্রতিবার টাইপ নির্দিষ্ট করতে হবে না"। স্ট্যাটিক টাইপিংয়ের সাথে আপনাকে টাইপটি নির্দিষ্ট করে লিখতে হবে না যদি আপনার টাইপের অনুমান থাকে। এসএমএল, ওক্যামেল, এফ #, হাস্কেল ...
জন হ্যারোপ

1
স্ট্যাটিকালি টাইপ করা প্রোগ ভাষাগুলিতে টাইপ চেকিং রানটাইমের আগে করা হয় তবে সংকলনের সময় ঠিক তেমন হয় না।
লুইজ ফিলিপ

307

পাইথন (ডায়নামিকভাবে টাইপ করা) এবং গো (স্ট্যাটিকালি টাইপ করা) টাইপ ত্রুটিটি কীভাবে পরিচালনা করে তার বিপরীতে এখানে একটি উদাহরণ রয়েছে:

def silly(a):
    if a > 0:
        print 'Hi'
    else:
        print 5 + '3'

পাইথন রান সময় পরীক্ষা করে টাইপ করে এবং তাই:

silly(2)

পুরোপুরি জরিমানা চালায় এবং প্রত্যাশিত আউটপুট উত্পাদন করে Hi। সমস্যাযুক্ত লাইনটি আঘাত করলেই ত্রুটি উত্থাপিত হয়:

silly(-1)

উত্পাদন

TypeError: unsupported operand type(s) for +: 'int' and 'str'

কারণ সম্পর্কিত লাইনটি আসলে কার্যকর হয়েছিল।

অন্যদিকে যান সংকলনের সময় টাইপ-চেকিং করে:

package main

import ("fmt"
)

func silly(a int) {
    if (a > 0) {
        fmt.Println("Hi")
    } else {
        fmt.Println("3" + 5)
    }
}

func main() {
    silly(2)
}

নিম্নলিখিত ত্রুটি সহ উপরেরগুলি সংকলন করবে না:

invalid operation: "3" + 5 (mismatched types string and int)

5
পরিপাটি উদাহরণের জন্য ধন্যবাদ। সুতরাং আমি অনুমান করি যে সমস্ত স্ক্রিপ্টিং ভাষা গতিময়ভাবে টাইপ করা হয়েছে, কারণ সেগুলি সংকলিত হয়নি?
CᴴᴀZ

8
হ্যাঁ. সমস্ত স্ক্রিপ্টিং ভাষা গতিশীলভাবে টাইপ করা হয়, কারণ সেগুলি যাইহোক স্ট্যাটিক টাইপ চেকিংয়ের কোনও সংকলক নয়। এই পয়েন্টটি এই নিবন্ধটিতে চিত্র নির্ধারণ করা হয়েছে সাইটটিপয়েন্ট / টাইপিং-versus-dynamic- টাইপিংয়ে
শশি

9
স্কালা স্ক্রিপ্টিং ভাষা হিসাবে ব্যবহার করা যেতে পারে এবং এটি স্ট্যাটিকালি টাইপ করা হয়! # আলোচনা @ শশী
মন্ডল

3
@ শশী সংকলনের অর্থ স্ট্যাটিক্যালি টাইপ করা নয়। runhaskellউদাহরণস্বরূপ, হাস্কেলের সাথে ব্যাখ্যা করা যেতে পারে ।
বালিনকিংঅফমোরিয়া পুনরায় ইনস্টল করা মুখ্যমন্ত্রী

2
এছাড়াও স্ক্রিপ্টিং ভাষার অর্থ দোভাষী ভাষা নয়। টাইপস্ক্রিপ্ট স্থিতিশীলভাবে টাইপ করা হয়, সংকলিত / প্রতিস্থাপন করা হয়, তবে স্ক্রিপ্টিং ভাষা।

161

সহজভাবে এটি এইভাবে রাখুন: একটি স্ট্যাটিকালি টাইপ করা ভাষা ভেরিয়েবলের প্রকারগুলি স্থির থাকে , মানে একবার আপনি কোনও ভেরিয়েবলটি কোনও প্রকারে সেট করে নিলে আপনি এটি পরিবর্তন করতে পারবেন না। এটি কারণ টাইপিং ভেরিয়েবলের সাথে সম্পর্কিত মানটির পরিবর্তে সম্পর্কিত হয়।

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

String str = "Hello";  //variable str statically typed as string
str = 5;               //would throw an error since str is supposed to be a string only

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

পাইথনে উদাহরণস্বরূপ:

str = "Hello" # variable str is linked to a string value
str = 5       # now it is linked to an integer value; perfectly OK

সুতরাং, টাইপ করা মানগুলিকে কেবল জেনেরিক পয়েন্টার হিসাবে গতিশীল টাইপ করা ভাষাগুলিতে ভেরিয়েবলগুলি ভাবা ভাল ।

সংক্ষিপ্তসার হিসাবে, ভাষার পরিবর্তে ভাষার পরিবর্তে (বা বর্ণিত হওয়া উচিত) টাইপ করুন । এটি স্ট্যাটিক্যালি টাইপড ভেরিয়েবলগুলির ভাষা হিসাবে আরও ভাল ব্যবহার করা যেতে পারে টাইপড ভেরিয়েবল আইএমএইচও-র একটি ভাষা বনাম ।

পরিসংখ্যান অনুসারে টাইপ করা ভাষাগুলি সাধারণত সংকলিত ভাষা হয়, সুতরাং, সংকলকগুলি প্রকারগুলি পরীক্ষা করে (সঠিকভাবে বোঝায় সঠিক? কারণ পরে রান টাইমে পরিবর্তিত হওয়ার অনুমতি নেই)।

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

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

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


8
এই ধারণা অনেক জ্ঞান এর. আমি মনে করি এটি এখানে অন্যান্য উত্তরের চেয়ে কমপক্ষে নামের পিছনে যুক্তিটি ব্যাখ্যা করে।
জামেঙ্গুল্ফার

এই রেফারেন্স অনুসারে পাইথন হ'ল স্ট্যাটিকালি টাইপড এবং ডায়নামিক্যালি টাইপ করা ভাষা: উইকি.পাইথন.আর.উইউইন / কে কেন জানেন?
modulitos

1
লুকাস, বিপরীতে ডকুমেন্টটি পুনরাবৃত্তি করে যে পাইথন দৃ strongly় এবং গতিশীল উভয় টাইপ করা হয়। তুমি কোথায় দেখলে? আপনি কি উদ্ধৃতি দিতে পারেন?
মেহমেট

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

5
অন্যান্য উত্তরগুলি আমার মনে আরও প্রশ্ন তৈরি করেছিল। এটি তাদের সকলকে সাফ করেছে। এই উত্তরটি সত্যই শীর্ষ আইএমএইচওতে হওয়া উচিত
হামি তরুন

39

http://en.wikipedia.org/wiki/Type_system

স্ট্যাটিক টাইপিং

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

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

if <complex test> then 42 else <type error>

দুর্বল টাইপযুক্ত হিসাবে প্রত্যাখাত হবে, কারণ একটি স্থির বিশ্লেষণ নির্ধারণ করতে পারে না যে অন্য শাখা নেওয়া হবে না। [1] স্থির প্রকারের চেকারগুলির রক্ষণশীল আচরণ সুবিধাজনক যখন মিথ্যাটিকে খুব কম মূল্যায়ণ করা হয়: স্ট্যাটিক প্রকারের পরীক্ষক খুব কম ব্যবহৃত কোড পাথগুলিতে টাইপ ত্রুটিগুলি সনাক্ত করতে পারে। স্ট্যাটিক টাইপ চেকিং ছাড়াই, 100% কোড কভারেজ সহ কোড কভারেজ পরীক্ষাগুলিও এই ধরণের ত্রুটি খুঁজে পেতে পারে না। কোড কভারেজ পরীক্ষাগুলি এই ধরণের ত্রুটিগুলি সনাক্ত করতে ব্যর্থ হতে পারে কারণ যেখানে মানগুলি তৈরি করা হয় এবং যেখানে নির্দিষ্ট মান ব্যবহার করা হয় সে সব জায়গাগুলির সংমিশ্রণ অবশ্যই বিবেচনায় নেওয়া উচিত।

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

গতিশীল টাইপিং

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

ডায়নামিক টাইপিংয়ের ফলে রানটাইম টাইপ ত্রুটি হতে পারে — অর্থাৎ রানটাইমের সময় একটি মান অপ্রত্যাশিত টাইপ থাকতে পারে এবং এই ধরণের জন্য অপারেশন অযৌক্তিক প্রয়োগ করা হয়। এই অপারেশনটি যেখানে প্রোগ্রামিংয়ের ভুল হয়েছিল সেই জায়গার অনেক পরে ঘটতে পারে - যা সেই জায়গায় যেখানে ভুল ধরণের ডেটা এমন জায়গায় প্রবেশ করা উচিত নয়। এটি বাগ সনাক্ত করতে অসুবিধা সৃষ্টি করে।

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

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

তথ্যসূত্র

  1. পিয়ার্স, বেঞ্জামিন (2002) প্রকার এবং প্রোগ্রামিং ভাষা। এমআইটি প্রেস। আইএসবিএন 0-262-16209-1।

75
এসওর মূল ধারণা হ'ল জ্ঞানের একটি বডি তৈরি করা, অন্য জায়গাগুলির লিঙ্ক সরবরাহ করা নয়। আপনার কমপক্ষে প্রশ্নের উত্তর দেওয়া উইকিটির একটি অংশ তৈরি করার চেষ্টা করা উচিত।
নোটন

5
এটি কেবল অযৌক্তিক বলে মনে হয়েছিল এটি উইকিপিডিয়া এবং কোনও ক্ষণস্থায়ী ওয়েবসাইটের লিঙ্ক নয়, তবে পরবর্তী সময়টি আমি মনে রাখব।
জ্যাকব 13

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

3
@ নভেলিজেটর ওল্ড মন্তব্য করুন তবে এমন একটি দৃশ্যের কল্পনা করুন যেখানে কোনও দূরবর্তী সার্ভার থেকে কিছু ডেটা তুলে নেওয়া হবে তখন সেই তথ্যটি কোনও অবজেক্টের বাইরে সম্পত্তি বেছে নিতে ব্যবহৃত হয়। উদা: myObject[remoteDataName]। তারপরে কোন সম্পত্তিটি এটি বেছে নেবে বা এমনকি এটি বৈধ সম্পত্তি হলেও তা জানার কোনও উপায় নেই।
মাইক ক্লক

14

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

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

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

একটি ইউনি টাইপ করা ভাষা যা এটি করে তাকে ডায়নামিকালি টাইপড বলা হয়।

জাভাস্ক্রিপ্ট, পাইথন, এবং রুবির মতো ভাষাগুলি সবই টাইপযুক্ত। আবার typeofজাভাস্ক্রিপ্টে অপারেটর typeএবং পাইথনে ফাংশনের বিভ্রান্তিকর নাম রয়েছে; তারা অপারেডগুলির সাথে যুক্ত ট্যাগগুলি তাদের ধরণের নয়, ফিরিয়ে দেয়। একইভাবে, dynamic_castসি ++ এবং instanceofজাভাতে টাইপ চেক করবেন না


7

সংকলিত বনাম ব্যাখ্যা করা

"যখন উত্স কোড অনুবাদ করা হয়"

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

টাইপিং

"যখন প্রকারগুলি পরীক্ষা করা হয়"

5 + '3'গো এবং পাইথনের মতো দৃ strongly়ভাবে টাইপ করা ভাষায় টাইপ ত্রুটির একটি উদাহরণ , কারণ তারা "ধরণের জবরদস্তি" -> নির্দিষ্ট প্রসঙ্গে যেমন দুটি ধরণের মার্জ করার ক্ষেত্রে কোনও মান পরিবর্তনের জন্য ক্ষমতা দেয় না। দুর্বলভাবে টাইপ করা ভাষা যেমন জাভাস্ক্রিপ্ট কোনও ধরণের ত্রুটি ফেলবে না (ফলস্বরূপ '53')।

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

"স্ট্যাটিক অ্যান্ড কম্পাইল্ড" এবং "ডায়নামিক অ্যান্ড ইন্টারপ্রিটেড" এর সংজ্ঞাগুলি একই রকম ... তবে মনে রাখবেন এটি "যখন সোর্স কোড অনুবাদ করা হয় তখন টাইপগুলি" বনাম "চেক করা হয়" remember

ভাষাটি সংকলিত বা ব্যাখ্যা করা নির্বিশেষে আপনি একই ধরণের ত্রুটি পাবেন ! আপনাকে এই পদগুলি ধারণাগতভাবে আলাদা করতে হবে।


পাইথন উদাহরণ

গতিশীল, ব্যাখ্যা করা

def silly(a):
    if a > 0:
        print 'Hi'
    else:
        print 5 + '3'

silly(2)

পাইথন দু'টি ব্যাখ্যা করা এবং গতিশীলভাবে টাইপ করা হয়, এটি কেবল এটি সম্পাদন করে কোডটি অনুবাদ করে এবং টাইপ-চেক করে। elseব্লক কখনো executes, তাই 5 + '3'এমনকি দিকে তাকিয়ে না হয়!

যদি এটি স্থিরভাবে টাইপ করা হত?

কোডটি চালানোর আগে একটি ধরণের ত্রুটি নিক্ষেপ করা হবে। এটি ব্যাখ্যার পরেও রান-টাইমের আগে টাইপ-চেকিং সম্পাদন করে।

যদি এটি সংকলন করা হত?

elseব্লক অনূদিত করা হবে / রান সময়ের আগে দিকে তাকিয়ে থাকলেও কারণ এটি পরিবর্তনশীল টাইপ করা হচ্ছে এটি একটি ত্রুটির নিক্ষেপ না! কার্যকরভাবে টাইপ করা ভাষাগুলি মৃত্যুদন্ড কার্যকর হওয়া পর্যন্ত প্রকারগুলি পরীক্ষা করে না এবং সেই লাইনটি কখনও কার্যকর করে না।


যান উদাহরণ

স্থির, সংকলিত

package main

import ("fmt"
)

func silly(a int) {
  if (a > 0) {
      fmt.Println("Hi")
  } else {
      fmt.Println("3" + 5)
  }
}

func main() {
  silly(2)
}

প্রকারগুলি দৌড়ানোর আগে পরীক্ষা করা হয় (স্থিতিশীল) এবং টাইপ ত্রুটি সঙ্গে সঙ্গে ধরা পড়ে! ধরণগুলি একই ব্যাখ্যা থাকলেও এটি ব্যাখ্যা করা হলে রান-টাইমের আগে পরীক্ষা করা হবে। যদি এটি গতিশীল হয় তবে সংকলনের সময় কোডটি লক্ষ্য করা সত্ত্বেও এটি কোনও ত্রুটি ফেলবে না।


কর্মক্ষমতা

একটি সংকলিত ভাষার রান-টাইমে স্টাটিকালি টাইপ করা থাকলে (বনাম ডায়নামিকভাবে) ভাল পারফরম্যান্স পাবে; ধরণের জ্ঞান মেশিন কোড অপ্টিমাইজেশনের জন্য অনুমতি দেয়।

কার্যকরভাবে চালানোর সময় প্রকারভেদগুলি পরীক্ষা করার প্রয়োজন হয় না বলে স্ট্যাটিক্যালি টাইপ করা ভাষাগুলি অভ্যন্তরীণভাবে রান-টাইমে আরও ভাল পারফরম্যান্স পায় (এটি চলার আগে এটি পরীক্ষা করে)।

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

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


আরও পার্থক্য

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

num = 2
num = '3' // ERROR

গতিশীল টাইপিং আরও নমনীয়, যা কিছু প্রশংসা করে। এটি সাধারণত ভেরিয়েবলকে প্রকার পরিবর্তন করার অনুমতি দেয়, যার ফলে অপ্রত্যাশিত ত্রুটি হতে পারে।


" যেহেতু পাইথন উভয় ব্যাখ্যায়িত এবং গতিশীলভাবে টাইপ করা হয়, এটি কেবল এটি অনুবাদ করে এবং টাইপ-চেক কোড এটি প্রয়োগ করে যা " - এটি আসলে ঘটনা নয়। পাইথন (কমপক্ষে রেফারেন্স বাস্তবায়ন) আপনার সমস্ত কোড আমদানির সময় সংকলন করে (আপনি আমদানি করার আগে / মডিউলগুলিও संकलित করতে পারেন)। সংকলকটি বিভিন্ন অপটিমাইজেশন (কমপক্ষে পাইথনের গতিশীল প্রকৃতি অনুমতি দেয়) পরিচয় করিয়ে দেয়।
এলি করভিগো

6

স্ট্যাটিকালি টাইপ করা ভাষা : প্রতিটি ভেরিয়েবল এবং এক্সপ্রেশন ইতিমধ্যে সংকলন সময়ে জানা যায় known

(int a; একটি রানটাইমের সময় শুধুমাত্র পূর্ণসংখ্যার ধরণের মান নিতে পারে)

উদাহরণ: সি, সি ++, জাভা

ডায়নামিকালি টাইপ করা ভাষাগুলি : চলকগুলি রানটাইমে বিভিন্ন মান অর্জন করতে পারে এবং রান টাইমের সময় তাদের ধরন নির্ধারিত হয়।

( var a;একটি রানটাইমের সময় যে কোনও ধরণের মান নিতে পারে)

উদাহরণ: রুবি, পাইথন।


5

সংকলনের সময় স্ট্যাটিকালি টাইপ করা ভাষা টাইপ-চেক করুন এবং প্রকারটি পরিবর্তন করতে পারে না। (টাইপ-কাস্টিং মন্তব্যের সাথে সুন্দর হয়ে উঠবেন না, একটি নতুন ভেরিয়েবল / রেফারেন্স তৈরি করা হবে)।

সচলভাবে টাইপ করা ভাষাগুলি রান-টাইমে টাইপ-চেক এবং চলক সময়ে পরিবর্তিত একটি ভেরিয়েবলের ধরণ changed


4

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


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

2

সি ++, জাভা এবং পাইথনের মতো ডায়নামিকালি টাইপ করা ভাষাগুলির মতো স্ট্যাটিকালি টাইপ করা ভাষাগুলি কেবল ভেরিয়েবলের ধরণের কার্যকরকরণের ক্ষেত্রে পৃথক হয়। স্ট্যাটিকালি টাইপ করা ভাষাগুলিতে ভেরিয়েবলের জন্য স্ট্যাটিক ডেটা টাইপ থাকে, এখানে সংকলনের সময় ডেটা টাইপ পরীক্ষা করা হয় তাই ডিবাগ করা অনেক সহজ ... যেখানে ডাইনামিকালি টাইপ করা ভাষাগুলি একই কাজ করে না, ডাটা টাইপ যাচাই করে যা প্রোগ্রাম চালায় এবং তাই ডিবাগিং কিছুটা কঠিন।

তদুপরি তাদের একটি খুব ছোট পার্থক্য রয়েছে এবং দৃ strongly ়ভাবে টাইপ করা এবং দুর্বল টাইপ করা ভাষার সাথে সম্পর্কিত হতে পারে । একটি দৃ strongly়ভাবে টাইপ করা ভাষা আপনাকে এক ধরণের অন্য উদাহরণ হিসাবে ব্যবহার করতে দেয় না। সি এবং সি ++ ... যেখানে দুর্বলভাবে টাইপ করা ভাষাগুলি যেমন, উদাহরণস্বরূপ allow


2

স্ট্যাটিকালি টাইপড

প্রকারগুলি রান-টাইমের আগে পরীক্ষা করা হয় যাতে ভুলগুলি আগে ধরা যেতে পারে।

উদাহরণ = সি ++

ডায়নামিকালি টাইপড

প্রবাহের সময় প্রকারগুলি পরীক্ষা করা হয়।

উদাহরণ = পাইথন


2
এটি সত্যিই এমন কিছু যুক্ত করে না যা এখনও অন্য জবাব দ্বারা আওতাভুক্ত নয়, তাই না?
রবার্ট

1
হ্যাঁ, তবে বেশিরভাগ উত্তর খুব পরিষ্কার ছিল না তাই আমি এমন উত্তর চেয়েছিলাম যা বুঝতে সহজ।
অ্যাটিকাস ডেনউমন্ট

1

স্ট্যাটিক টাইপ করা ভাষা (সংকলক পদ্ধতি কলগুলি এবং সংকলন রেফারেন্সগুলি সমাধান করে):

  • সাধারণত ভাল পারফরম্যান্স
  • দ্রুত সংকলন ত্রুটি প্রতিক্রিয়া
  • আরও ভাল আইডিই সমর্থন
  • অপরিজ্ঞাত ডেটা ফর্ম্যাটগুলির সাথে কাজ করার জন্য উপযুক্ত নয়
  • যখন মডেল সংজ্ঞায়িত হয় না তখন কোনও উন্নয়ন শুরু করা শক্ত er
  • দীর্ঘ সংকলন সময়
  • অনেক ক্ষেত্রে আরও কোড লিখতে হবে

গতিশীল টাইপ করা ভাষা (চলমান প্রোগ্রামে নেওয়া সিদ্ধান্ত):

  • কম কর্মক্ষমতা
  • দ্রুত বিকাশ
  • কিছু বাগগুলি কেবল রান-টাইমে পরে সনাক্ত হতে পারে
  • অপরিজ্ঞাত ডেটা ফর্ম্যাটগুলির জন্য ভাল (মেটা প্রোগ্রামিং)

0

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


-15

স্ট্যাটিক টাইপিং: জাভা এবং স্কালার মতো ভাষাগুলি স্থির টাইপযুক্ত।

ভেরিয়েবলগুলি কোনও কোডে ব্যবহার করার আগে তাদের সংজ্ঞায়িত করতে হবে এবং শুরু করতে হবে।

প্রাক্তন জন্য ইন্ট এক্স; x = 10;

System.out.println (x) এর;

ডায়নামিক টাইপিং: পার্ল একটি ডায়নামিক টাইপ করা ভাষা।

ভেরিয়েবলগুলি কোডে ব্যবহৃত হওয়ার আগে তাদের আরম্ভ করার দরকার নেই।

Y = 10; কোডের পরবর্তী অংশে এই পরিবর্তনশীলটি ব্যবহার করুন


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

দেখে মনে হচ্ছে আপনি "ভেরিয়েবল" শব্দটির অপব্যবহার করছেন, তার পরিবর্তে আপনার "প্রকার" বলা উচিত ছিল।
আমির

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