কেন এখনও দুর্বল টাইপযুক্ত ভাষাগুলি সক্রিয়ভাবে বিকশিত হচ্ছে?


17

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

$someVar = 1;
(...)  // Some piece of code
$someVar = 'SomeText';

পরিবর্তে অনেক ভিন্ন, স্টংলি টাইপড সংস্করণ ব্যবহার করার পরিবর্তে

int someInt = 1;
(...)
string SomeString = 'SomeText';

এটি সত্য যে আপনার দ্বিতীয় উদাহরণে একটি অ্যাডিশনাল ভেরিয়েবল ঘোষণা করা দরকার, তবে এটি কি সত্যই আঘাত করে? সমস্ত ভাষাগুলি দৃ strongly়-টাইপ করার চেষ্টা করা উচিত নয় যেহেতু এটি সংকলন সময়ে টাইপ-সুরক্ষা কার্যকর করে, ফলে টাইপ-কাস্টিংয়ের কিছু সমস্যা এড়ানো যায়?


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

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

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

6
প্রথম উদাহরণটি পাইথনের মতো কিছুটা যেখানে ভেরিয়েবলগুলির কোনও ঘোষিত প্রকার নেই। যাইহোক, পাইথন একটি খুব দৃ strongly়ভাবে টাইপিত ভাষা কারণ বস্তুগুলি - তাদের - একটি প্রকার রয়েছে যা পরিবর্তন বা জোর করা প্রায় অসম্ভব। আমি মনে করি পরিভাষার অপব্যবহার এই প্রশ্নের উত্তর দেওয়া খুব কঠিন করে তোলে।
এস .লট

1
@ ডেলানান এই প্রশ্নটি যে দুটি যুক্তিসঙ্গত উত্তর দেয় এবং শিখা যুদ্ধে পরিণত হয়নি তা সত্য।
অ্যাডাম শিখুন

উত্তর:


25

শক্তিশালী / দুর্বল টাইপিং এবং স্ট্যাটিক / ডায়নামিক টাইপিং অরথোগোনাল।

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

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

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


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

4

দুর্বল টাইপ করার লাইন বরাবর বেশি 1 == "TRUE"উইকিপিডিয়ায় এই বিভাগটি পার্থক্যটি সুন্দরভাবে চিত্রিত করে।

দয়া করে নোট করুন যে উইকিপিডিয়া থেকে প্রাপ্ত কোনও উদাহরণই স্ট্যাটিকালি টাইপ করা হয়নি, যা আপনি নিজের দ্বিতীয় উদাহরণে উল্লেখ করেছেন।

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


0

দুর্বল ধরণের ভাষা এখনও বিকাশ করা হচ্ছে কারণ লোকেরা তাদের ব্যবহার করে এবং তাদের পছন্দ করে। আপনি যদি দুর্বল টাইপিং পছন্দ করেন না তবে দুর্বল টাইপ করা ভাষা ব্যবহার করবেন না। কোনও কিছুকেই ওয়ান ট্রু ওয়ে বলে ঘোষণা করা এবং প্রত্যেকের উচিত এটি করা উচিত ওয়ান ট্রু ওয়ে বিশ্বের জটিলতা উপেক্ষা করে।


0

সমস্ত ভাষাগুলি দৃ strongly়-টাইপ করার চেষ্টা করা উচিত নয় যেহেতু এটি সংকলন সময়ে টাইপ-সুরক্ষা কার্যকর করে, ফলে টাইপ-কাস্টিংয়ের কিছু সমস্যা এড়ানো যায়?

অগত্যা। উদ্দেশ্য-সি শেখার: প্রাইমার উদ্দেশ্য প্রশ্ন-সি এর প্রসঙ্গে সরাসরি সেই প্রশ্নটিকে সম্বোধন করে:

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

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