স্বাক্ষরবিহীন ইন্টের সিএলএস অনুগত হয় না কেন?


111

স্বাক্ষরবিহীন পূর্ণসংখ্যা কেন সিএলএসের অনুগত নয়?

আমি ভাবতে শুরু করি যে প্রকারের স্পেসিফিকেশন কেবল পারফরম্যান্সের জন্য, সঠিকতার জন্য নয়।

উত্তর:


88

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

উদ্ধৃতি থেকে:

http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx

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

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


@ কেভিন: আমি কেবল বিষয়টি নিয়ে অবাক হয়েছি। আপনি উত্তর যুক্তিযুক্ত বলে মনে হচ্ছে। আমি শুধু বিষয়টি নিয়ে ভাবতে চাই। আমি মনে করি এটি পাস্কালের মতো ধরণের লজ্জাজনক বিষয়গুলি সিএলআর-তে পরিণত করেনি। তবে অন্যান্য ভাষাগুলি সম্পর্কে আপনার যুক্তি: যে স্ট্রংলি স্ট্যাটিক টাইপড সিএলআর তে দৃ strongly়ভাবে ডায়নামিক টাইপিং (ডিএলআর) ব্যবহার করে আয়রন পাইথন থামেনি?
দোকম্যান

@ ডোকম্যান: হ্যাঁ আয়রন পাইথন এবং আয়রন রুবি দেখিয়েছেন যে সিএলআর এমন একটি প্ল্যাটফর্ম সরবরাহ করতে পারে যার উপর আপনি গতিময়ভাবে টাইপ করা ভাষাগুলি তৈরি করতে পারেন, সিএলএসের লক্ষ্য ছিল এমন একটি মানচিত্রের সেট সরবরাহ করা যা ভাষার কার্যকারিতা ছাড়িয়ে যায় এবং তাদেরকে সফলভাবে এবং নিরাপদে আন্তঃযোগাযোগের অনুমতি দেয়। আমি মনে করি না যে কোনও ভাষা ডিএল বৈশিষ্ট্য যুক্ত করার ক্ষেত্রে সিএলএস / সিটিএস-এ যা যা উচিত তা সরাসরি সম্পর্কিত say
কেভ

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

23

ইস্যুটির একটি অংশ, আমার সন্দেহ, এই সত্যের চারদিকে ঘোরে যে সি তে স্বাক্ষরযুক্ত পূর্ণসংখ্যার ধরণের সংখ্যা হিসাবে সংখ্যার পরিবর্তে একটি বিমূর্ত বীজগণিত রিংয়ের সদস্য হিসাবে আচরণ করা প্রয়োজন [অর্থাত্ উদাহরণস্বরূপ, যদি স্বাক্ষরযুক্ত 16-বিট পূর্ণসংখ্য পরিবর্তনশীল শূন্যের সমান হয় , এটি হ্রাস করা প্রয়োজন65,535 উত্পাদন করতে এবং যদি এটি 65,535 এর সমান হয় তবে বৃদ্ধি করা শূন্যের ফলন প্রয়োজন]] এমন সময়গুলি ঘটে যখন এই ধরনের আচরণ অত্যন্ত কার্যকর, তবে সংখ্যার ধরণের আচরণ এমন আচরণ কিছু ভাষার চেতনাবিরোধী হতে পারে। আমি অনুমান করব যে স্বাক্ষরবিহীন প্রকারগুলি বাদ দেওয়ার সিদ্ধান্তটি সম্ভবত চেক এবং চেক না হওয়া উভয় সংখ্যার প্রসঙ্গে সমর্থন করার সিদ্ধান্তের পূর্বাভাস দেয়। ব্যক্তিগতভাবে, আমি ইচ্ছা করি স্বাক্ষরযুক্ত সংখ্যা এবং বীজগণিতের রিংগুলির জন্য পৃথক পূর্ণসংখ্যার ধরন থাকত; স্বাক্ষরবিহীন 32-বিট সংখ্যায় আনরি বিয়োগ অপারেটর প্রয়োগ করলে 64৪-বিট স্বাক্ষরিত ফলাফল পাওয়া উচিত [শূন্য ব্যতীত অন্য কিছু উপেক্ষা করলে negativeণাত্মক সংখ্যা আসবে] তবে একটি রিংয়ের ধরণে অ্যালারি মাইনাস প্রয়োগ করলে সেই আংটির মধ্যে অ্যাডিটিভ ইনভার্স পাওয়া উচিত।

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


গাণিতিক দৃষ্টিকোণ থেকে দুর্দান্ত ব্যাখ্যা!
বিচ্ছিন্ন

6

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

সিএলএস অনুবর্তী হ'ল লক্ষ্য হ'ল এক শ্রেণিকে প্রচুর ভাষা থেকে ব্যবহার করা যায় ...

মনে রাখবেন যে কেউ আপনাকে সিএলএসের অনুগত হতে পারে না।

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


16
আপনি যদি কোনও বিট-বুদ্ধিমান পাটিগণিত করেন তবে সেগুলি বেশ প্রয়োজনীয়।
নিকোডেমাস 13

@ নিকোডেমাস 13 আপনি যখন শেষবারের মতো এমন কোনও ব্যবসায়িক অ্যাডমিন সিস্টেম দেখেছেন যার সমস্যার ডোমেনে বিট-বুদ্ধিমান গাণিতিক ছিল? (যেমন VB.NET প্রোগ্রামাররা যে ধরণের সফ্টওয়্যার লিখেছেন)
আয়ান রিংরোজ

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

5

স্বাক্ষরবিহীন পূর্ণ সংখ্যাগুলি সিএলএসের অনুগত নয় কারণ তারা নির্দিষ্ট ভাষার মধ্যে আন্তঃযোগযোগ্য নয়।

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