সি কি দৃ strongly়ভাবে টাইপ করা হয়?


88

উইকিপিডিয়া উদ্ধৃত :

দুটি সাধারণ ব্যবহৃত ভাষা যা বহু ধরণের অন্তর্নিহিত রূপান্তরকে সমর্থন করে সেগুলি হ'ল সি এবং সি ++, এবং কখনও কখনও দাবি করা হয় যে এগুলি দুর্বলভাবে টাইপ করা ভাষা। তবে অন্যরা যুক্তি দেখান যে এই ভাষাগুলি বিভিন্ন প্রকারের ক্রিয়াকলাপগুলি কীভাবে মিশ্রিত হতে পারে তার পক্ষে যথেষ্ট বিধিনিষেধ সৃষ্টি করে, দু'টিকেই দৃ .়ভাবে টাইপ করা ভাষা হিসাবে বিবেচনা করা উচিত।

এর চেয়ে আরও সুস্পষ্ট উত্তর আছে কি?


190
সি প্রোগ্রামারকে শক্তিশালী টাইপিংয়ের অর্থ কীগুলি আরও শক্ত করে টিপানো।
ড্যান ডায়ার

4
টাইপিং ধারাবাহিকতায় সি দুর্বল দিকে রয়েছে। তবে উভয় পাশে পর্যাপ্ত আইটেম রয়েছে যে আপনি উভয় দিক দিয়ে তর্ক করতে পারেন। আপনি যখন এটির দিকে ছিলেন তখন আপনি ভালভাবে জিজ্ঞাসা করতে পারেন (vi বা emacs, নেটবিন বা গ্রীকস ইত্যাদি)
Cervo

4
উইকিপিডিয়ায় খেলার অবস্থা যথেষ্ট খারাপ ছিল যে আমি বেশ কয়েকটি উইকিপিডিয়া পৃষ্ঠাগুলি সম্পাদনা করতে বাধ্য হয়েছিল। বিষয়গুলি এখন কিছুটা ভাল better হতে পারে.
নরম্যান রামসে

40
পুনঃ: ড্যানের মন্তব্য (যেখানে যথাযথ creditণ দেওয়ার জন্য) পিটার ভ্যান ডের লিন্ডেনের "বিশেষজ্ঞ সি প্রোগ্রামিং" বইটিতে নিম্নলিখিত পংক্তিটি রয়েছে: "আজ অবধি অনেক সি প্রোগ্রামাররা বিশ্বাস করেন যে 'শক্তিশালী টাইপিংয়ের অর্থ কেবল কীবোর্ডে অতিরিক্ত চাপ দেওয়া।"
আলেকজান্দ্রোস গেজারিস

খুব ভাল প্রশ্ন !!!
ডেস্ট্রাক্টর

উত্তর:


154

"দৃ typ়ভাবে টাইপ করা" এবং "দুর্বলভাবে টাইপ করা" এমন পদগুলি যার কোনওরকম প্রযুক্তিগত অর্থ নেই widely শর্তাদির যেগুলির একটি সুস্পষ্ট সংজ্ঞাযুক্ত অর্থ রয়েছে are

  • ডায়নামিক্যালি টাইপ করা মানে এই যে টাইপগুলি রান সময় মানগুলির সাথে সংযুক্ত থাকে এবং বিভিন্ন ধরণের মানগুলি মিশ্রিত করার প্রচেষ্টা "রান-টাইম টাইপ ত্রুটি" সৃষ্টি করতে পারে। উদাহরণস্বরূপ, যদি স্কিমে আপনি এটি লিখে সত্যকে যুক্ত করার চেষ্টা করেন তবে (+ 1 #t)একটি ত্রুটি ঘটবে। আপনি যদি আক্রমণাত্মক কোডটি কার্যকর করার চেষ্টা করেন তবেই আপনি ত্রুটিটি সম্মুখীন হন।

  • স্ট্যাটিক্যালি টাইপ করা মানে হ'ল সংকলনের সময় প্রকারগুলি পরীক্ষা করা হয় এবং কোনও প্রোগ্রামের স্থির প্রকার নেই তা সংকলক দ্বারা প্রত্যাখ্যান করা হয়। উদাহরণস্বরূপ, যদি এমএলটিতে আপনি লেখার মাধ্যমে সত্যকে যুক্ত করার চেষ্টা করেন তবে 1 + trueপ্রোগ্রামটি সম্ভবত (সম্ভবত কোনও ক্রিপ্টিক) ত্রুটি বার্তা দিয়ে প্রত্যাখ্যাত হবে। কোডটি কখনও কার্যকর না করা হলেও আপনি সর্বদা ত্রুটি পান।

তারা নমনীয়তার জন্য কতটা মূল্যবান এবং রান-টাইম ত্রুটি সম্পর্কে তারা কতটা চিন্তিত তার অংশ অনুসারে বিভিন্ন লোক বিভিন্ন সিস্টেম পছন্দ করে।

কখনও কখনও "দৃ strongly়ভাবে টাইপড" এর অর্থ "স্ট্যাটিকালি টাইপড" অর্থ স্বল্পভাবে ব্যবহৃত হয় এবং "গতিযুক্ত টাইপড" অর্থ "গতিযুক্ত টাইপড" বলতে ভুলভাবে ব্যবহৃত হয় is "দৃ typ়ভাবে টাইপড" শব্দটির আরও ভাল ব্যবহার হ'ল "আপনি টাইপ সিস্টেমের আশেপাশে কাজ করতে বা বিকশিত করতে পারবেন না", তবে "দুর্বলভাবে টাইপ করা" মানে "টাইপ সিস্টেমে লুফোলস রয়েছে"। বিপরীতভাবে, স্ট্যাটিক টাইপ সিস্টেমগুলির সাথে বেশিরভাগ ভাষায় লুফোল থাকে, যখন ডায়নামিক টাইপ সিস্টেমের সাথে অনেকগুলি ভাষার কোনও ফাঁক থাকে না।

এই শর্তগুলির কোনওটি কোনও ভাষায় উপলভ্য রূপান্তর সংখ্যার সাথে কোনওভাবেই সংযুক্ত নেই।

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

স্থিতিশীল এবং গতিশীল টাইপিংয়ের বিষয়ে আমি আরও লিখেছি কেন-ব্যাখ্যা করা-ল্যাংস-বেশিরভাগ-হাঁস ধরণের-সংকলিত-থাকতে-শক্ত-টাইপিং রয়েছে


4
আপনি শক্তিশালী / দুর্বল টাইপিংয়ের জন্য প্রস্তাবিত সংজ্ঞাটি কোথায় পেয়েছেন (লুফোল জিনিসটি)?
সিডিয়াস

4
গতিশীল টাইপিং পরিবেশে আপনার কেন একটি "লুফোল" দরকার?
ক্রিস কনওয়ে

4
@ সিডিয়াস: প্রোগ্রামিং ভাষা এবং টাইপ সিস্টেমগুলি ডিজাইন, তৈরি এবং বিশ্লেষণকারী লোকদের সাথে গত ২০ বছরের বেশিরভাগ সময় ব্যয় করা থেকে। এটি আমার বেতনযুক্ত কাজ :-)
নরম্যান রামসে

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

4
@ নরম্যান রামসে আমার মনে হয় ক্রিস তার প্রশ্নের সাথে উল্লেখ করছিলেন:whereas "weakly typed" means "there are loopholes in the type system
নির আলফাসি

23

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

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


দুর্দান্ত উত্তর, যদিও "টাইপকাস্টস ... এবং সংকলকটি শান্ত হওয়া উচিত" আমাকে বিরক্ত করে। একটি টাইপকাস্ট কোনও সতর্কতা বন্ধ করার মতো নয়, এটি আসলে উল্লেখ হওয়া মানের ব্যাখ্যা ব্যাখ্যা করে।
লম্বা জেফ

15
আপনি টাইপিংয়ের সাথে সম্পর্কিত "স্ট্যাটিক" এবং "শক্ত"। এই দুটি ধারণা একে অপরের থেকে স্বাধীন।
বেন্ডিন

4
ডেনিস রিচি (সি লেখক) সি বলেছিলেন '
দৃ strongly়ভাবে

11

সাহিত্যিক এ সম্পর্কে পরিষ্কার নয়। আমি মনে করি দৃ strongly়ভাবে টাইপ করা হ্যাঁ / না, শক্তিশালী টাইপের বিভিন্ন ডিগ্রি রয়েছে।

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

সুতরাং:

যে সমস্ত ভাষা প্রতিটি ক্ষেত্রে রানটাইমের সময় কী ঘটে তা নির্দিষ্ট করে (যেমন একটি স্ট্রিংয়ের সাথে একটি সংখ্যার যোগ করে) ডায়নামিকভাবে টাইপ করা হয়। সংকলনের সময় ত্রুটিযুক্ত প্রোগ্রামগুলি কার্যকর করতে বাধা দেয় এমন ভাষাগুলি স্ট্যাটিকালি টাইপ করা হয়। যে ভাষাগুলি কী ঘটে তা নির্দিষ্ট করে না এবং ত্রুটিগুলি রোধ করার জন্য কোনও টাইপ সিস্টেম নেই তাদের দুর্বলভাবে টাইপ করা হয় called

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

সুতরাং সি দৃ strongly়ভাবে টাইপ করা হয় বা দুর্বল টাইপ করা হয়? সি দৃ strongly়ভাবে টাইপ করা হয়েছে কারণ টাইপ সিস্টেমটি কিছু ধরণের ত্রুটি অস্বীকার করে। তবে এটি অন্যান্য ক্ষেত্রে দুর্বলভাবে টাইপ করা হয় যখন কী ঘটে যায় তা সংজ্ঞায়িত করা হয় (এবং টাইপ সিস্টেমটি আপনাকে সুরক্ষা দেয় না)।


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

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

11

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


4
উইকিপিডিয়া এখানে বিভ্রান্ত করছে। সি দৃ strongly়ভাবে টাইপ করা হয়েছে, প্রকারগুলি খুব বৈধ এবং সংকলক যদি সেগুলি ভুল হয়ে যায় তবে তা বার্ফ করে দেবে, তবে সি আপনাকে এড়াতে বৈশিষ্ট্যগুলিও সরবরাহ করে। BCPL এর মতো ভাষার সাথে তুলনা করুন যা কেবলমাত্র 'বাইট' টাইপ করে।
gbjbaanb

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

সিতে কোনও জিনিস ফেলতে সক্ষম করে কি এটি দুর্বল প্রকারের জন্য অবদান রাখে? ?? আমার কাছে এই সন্দেহ চিরকালের জন্য
সুরজ জৈন

8

সি জাভাস্ক্রিপ্টের চেয়ে বেশি জোরালোভাবে টাইপ করা হয় এবং অ্যাডাদের চেয়ে কম শক্তভাবে টাইপ করা হয়।

আমি বলব এটি ধারাবাহিকের দৃ strongly়ভাবে টাইপ করা অংশে আরও পড়ে। তবে অন্য কারও সাথে একমত হতে পারে (এমনকি তারা ভুল হলেও)।

কীভাবে তা নিশ্চিত?


এটি কিছুটা জিভ-ইন-গাল উত্তর ছিল। তবে অন্যায়ের উপর বিস্তারিত বর্ণনা করুন।
মাইকেল বারার 16

4
জাভাস্ক্রিপ্ট দৃ strongly়ভাবে টাইপ করা হয়। এটি কেবল স্থিতিশীলভাবে টাইপ করা হয়নি। সমস্ত প্রকারের চেক রানটাইমের সময়ে ঘটে (গতিশীল, স্থিতিশীল নয়) তবে সেগুলি ঘটে থাকে এবং মেমোরিটিকে দূষিত করা থেকে রোধ করে না (শক্তিশালী টাইপের একটি দিক)।
বেনডিন

4
ঠিক আছে, নরম রামসির খুব ভাল উত্তরটি ইঙ্গিত দেয় যে, "দৃ strongly়ভাবে টাইপ করা" এবং "দুর্বলভাবে টাইপ করা" বিশেষভাবে সংজ্ঞাযুক্ত পদ নয় not এছাড়াও, যতদূর জাভাস্ক্রিপ্ট দৃ strongly়ভাবে টাইপ করা হচ্ছে, কেউ কেউ বিশ্বাস করতে পারেন যে ("4" / ​​"2") একটি বৈধ জাভাস্ক্রিপ্ট এক্সপ্রেশন হ'ল অন্যথায় নির্দেশ করতে পারে।
মাইকেল বারার

5

সি স্ট্যাটিকালি টাইপ করা বিবেচনা করা হয় (আপনি int থেকে ভাসা পর্যন্ত পরিবর্তনশীল পরিবর্তন করতে পারবেন না)। একবার কোনও ভেরিয়েবল ঘোষিত হলে এটি সেভাবে আটকে যায়।

তবে এগুলি দুর্বলভাবে টাইপ করা হিসাবে বিবেচনা করা হয় কারণ ধরণেরগুলি ফ্লিপ করা যায়।

0 কি? '\ 0', মিথ্যা, 0.0, ইত্যাদি।

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

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

অন্যান্য ভাষার সাথে তুলনা করুন যেখানে স্ট্রিং প্রকার রয়েছে, এনাম প্রকার যা কেবলমাত্র নির্ধারিত মানগুলিতে নির্ধারিত হতে পারে, বুলিয়ান প্রকার যেখানে কেবল বুলিয়ান বা সত্য / মিথ্যা উত্পাদন করে এমন অভিব্যক্তি ব্যবহার করা যেতে পারে।

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


দয়া করে আপনার যুক্তিটি ব্যাখ্যা করুন যে পার্ল সি এর চেয়ে কম জোরালোভাবে টাইপ করা হয়েছে
ব্যবহারকারীর 151568

"টেস্টিং" + 0 # পার্ল মুদ্রণ 0 করবে; $ var = "স্ট্রিং"; $ var = 1; $ var = 123.4; এটি কোন ধরণের পরিবর্তনশীল?
সার্ভো

সি চর * পরীক্ষা = "পরীক্ষা"; প্রিন্টফ (টেস্টিং + 0); এখনও একটি স্ট্রিং হবে, এটি সি এর সূচক পরিবর্তিত হবে যদি শূন্যের পরিবর্তে আমি একটি নম্বর ব্যবহার করি। এটি এখনও বেশ দুর্বল, তবে পার্ল কিছুটা শক্তিশালী। চর * পরীক্ষা; পরীক্ষা = 0; পরীক্ষা = 123.4; পরীক্ষা = "সি"; ... আমার সংকলক ত্রুটিগুলি উত্পন্ন করে
সার্ভো

ত্রুটি বলে যে একটি castালাই প্রয়োজন। পার্লের তুলনায় এটি কোনও প্রকারের চেকের চেয়ে কিছুটা শক্তিশালী তাই ধারাবাহিকতায় আমাকে বলতে হবে পার্লের চেয়ে সি দৃ strongly়ভাবে টাইপ করা আছে। আপনি এখনও পরীক্ষা = (চর *) যেতে পারেন এবং তারপরে 0, 123.4, 'সি' ইত্যাদি ব্যবহার করতে পারেন But তবে এটি এটি করা একটি ত্রুটি।
সার্ভো

4

এখানে ভাল উত্তর প্রচুর। আমি রিয়েল ওয়ার্ল্ড হাস্কেল থেকে একটি গুরুত্বপূর্ণ বিষয় আনতে চাই :

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

(স্নিপ)

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

সুতরাং, সি এবং সি ++ সম্পর্কে উত্তরগুলি দেখুন তবে মনে রাখবেন যে 'শক্তিশালী' এবং 'দুর্বল' 'ভাল' এবং 'খারাপ' এর মানচিত্র দেয় না।


4

ডেনিস রিচি ( সি এর স্রষ্টা ) এবং ব্রায়ান কর্নিগানের মতে , সি একটি শক্তভাবে টাইপ করা ভাষা নয়। নিম্নলিখিত লাইনগুলি সি প্রোগ্রামিং ভাষার পৃষ্ঠা পৃষ্ঠা 3 অনুচ্ছেদ 5 থেকে রয়েছে

সি একটি দৃ strongly়-টাইপিত ভাষা নয়, তবে এটি যেমন বিবর্তিত হয়েছে, এর ধরণের চেকিং আরও শক্তিশালী হয়েছে।


3

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

সি এর কাঁচা পয়েন্টার এবং এর সাথে এটিতে এসেম্বলার "এম্বেড" রয়েছে।


3

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

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

আপনি দৃ a়ভাবে টাইপ করা ভাষার মূল দিকগুলি কী কী তা একবার দেখে নিতে চাইতে পারেন ? এখানে স্ট্যাকওভারফ্লোতে।


4
আমি একমত নই "দৃ typ়ভাবে টাইপ করা" এর অর্থ হ'ল কোনও মানের ডেটা ধরণ নির্ধারণ করা সম্ভব এবং কেবলমাত্র সেই ধরণের জন্য উপযুক্ত অপারেশনগুলিকেই অনুমোদিত। যখন এই সংকল্পটি করা যায় তখন "গতিশীল" এবং "স্থিতিশীল" ঠিকানা।
joel.neely

4
আপনি অন্য একটি সংজ্ঞা চালু করে কোন সম্মত-সংজ্ঞা সংজ্ঞা নেই যে দৃser়তা অস্বীকার করার চেষ্টা করার বিড়ম্বনা বুঝতে পারি , তাই না?
J:18rg ডব্লু মিত্তাগ

4
@ জর্জি: অন্য একটি পরিচয় করানোর চেষ্টা করছেন না; আমি যে চেনাশোনাগুলিতে চলেছি সেগুলিতে কেবলমাত্র ব্যবহৃত একটিকে উল্লেখ করে।
joel.neely

1

"দুর্বলভাবে টাইপ করা" এবং "দৃ strongly়ভাবে টাইপ করা", এমন দুটি পদ যা একদম ভালভাবে সংজ্ঞায়িত হয় না তার মধ্যে একাধিক সমান্তরাল উপায়ের সাথে একটি ধারাবাহিকতা রয়েছে।

সিটি স্ট্যাটিকালি টাইপ করা হয়, এতে কম্পাইলার জানে যে প্রতিটি স্থানীয় ভেরিয়েবল এবং স্ট্রাক্ট সদস্যের ঘোষিত প্রকারটি কী।

ডায়নামিকালি টাইপ করা ভাষাগুলি এখনও দৃ strongly়ভাবে টাইপ করা যেতে পারে, যদি প্রতিটি বস্তুর একটি নির্দিষ্ট প্রকার থাকে তবে সংকলকটির জন্য সেই ধরণের জানার উপায় নেই way


0

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


বেশিরভাগ কৌতূহল, তবে আমি সি পদের জন্য আবেদন করছি, এবং তারা আমাকে এ সম্পর্কে জিজ্ঞাসাবাদ করার ক্ষেত্রে জানতে চেয়েছিল।
সিডিয়াস

তারপরে সম্ভবত দীর্ঘতর উত্তর যা "দৃ .়ভাবে টাইপ করা হয়েছে" তার সংক্ষিপ্তসার দেয় কেবল "হ্যাঁ" বা "না" বলার চেয়ে সেরা পন্থা।
ববিশ্যাফটয়ে

0

যখন "দৃ strongly় টাইপড" এর একটি কংক্রিট সংজ্ঞা না থাকে তখন একটি শক্ত উত্তর সরবরাহ করা কঠিন। আমি বলব যে সি দৃ strongly়ভাবে টাইপ করা হয় যে প্রতিটি ভেরিয়েবল এবং প্রতিটি এক্সপ্রেশনটিতে একটি টাইপ থাকে তবে দুর্বলভাবে টাইপ করা হয় যে এটি আপনাকে ক্যাসেট ব্যবহার করে প্রকার পরিবর্তন করতে এবং এক প্রকারের অন্যভাবে উপস্থাপনের পুনরায় ব্যাখ্যা করতে দেয়।


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

0

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

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

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



-1

জোরালোভাবে টাইপ করা হয়নি।

নিম্নলিখিত ফাংশন প্রোটোটাইপটি আপনাকে আর্গুমেন্টের ডেটা ধরণের সম্পর্কে কী বলে তা বিবেচনা করুন:

কিছুই না। সুতরাং আমি পরামর্শ দিচ্ছি যে শক্তিশালী টাইপিং এখানে প্রয়োগ হয় না।


হাহ? এটি আপনাকে জানায় যে আপনার কোন int আছে, তার পরে একটি চর এবং তার পরে কোনও ধরণের আর্গুমেন্ট। এটি "কিছুই নয়"।
লরেন্স ডল

... আপনাকে যে আর্গুমেন্টগুলি পাস করা হয়েছে তার সম্পর্কে কিছুই জানায় না। এটি সত্য যে ফাংশনটি নিজেই জানা ছিল। এটিই সফটওয়্যার বানর বলেছে।
জোহানেস স্কাউব - লিটব

সেই "যে কোনও ধরণের যে কোনও সংখ্যক আর্গুমেন্ট" সেগুলিই আমি বলছি। একটি চেইন কেবল তার দুর্বল লিঙ্কের মতোই শক্তিশালী।
joel.neely

-3

আমি বলব এটি দৃ strongly় প্রকারের কারণ প্রতিটি অভিব্যক্তির একটি ধরন রয়েছে যা এর মানটির কোনও ক্রিয়া নয়; ei এটি রানটাইমের আগে জানা যাবে।

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


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