চলক দৈর্ঘ্যের অ্যারেগুলিকে সি 2011 এ optionচ্ছিক কেন করা হয়েছিল?


12

১৯৯৯ সালে যখন ভিএলএগুলি চালু হয়েছিল, তখন আমি ভেবেছিলাম এটি ভাষার জন্য একটি দুর্দান্ত উদ্ভাবন। যাইহোক, এটি सी ২০১১ সালে optionচ্ছিকভাবে তৈরি করা শিখেছি, আমি ভাবছি যে এটির স্থিতি পরিবর্তনের কারণ কী হয়েছিল, এবং এর অর্থ যদি বৈশিষ্ট্যটি আসলে অচল হয়ে যায়। যদি তা হয় তবে গতিশীল আকারের ডেটা স্বয়ংক্রিয় পরিচালনার সমতুল্য ধারণা কি এটি প্রতিস্থাপনের জন্য বিবেচনা করা হচ্ছে?

আমি সি ২০১০ এর যুক্তি দলিলটি সন্ধান করার চেষ্টা করেছি, তবে এটি এখনও প্রকাশিত হয়নি বলে মনে হয়।


গ্রহণের অভাব?
রায়ান রেইচ

@ রায়ানরিচ: সম্ভবত, তবে কেন বিক্রেতাদের কাছ থেকে প্রতিরোধ?
jxh

উত্তর:


8

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


আন্তর্জাতিক স্ট্যান্ডার্ড - প্রোগ্রামিং ল্যাঙ্গুয়েজগুলির জন্য রেশনাল এর অধ্যায় 4 (পৃষ্ঠা 13) থেকে - সি 5.10 (2003)

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

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


@jxh এমনকি এটি দেখেনি। এটি দেখানোর জন্য ধন্যবাদ, এটি একটি পরিষ্কার এবং কম अस्पष्ट শব্দে পরিবর্তিত হয়েছে। আমি কিছু প্রসঙ্গে মোটিফকে উদ্দেশ্য এবং লক্ষ্য প্রতিশব্দ হিসাবে দেখেছি, তবে আমি বিশ্বাস করি এটি কেবল শৈল্পিক পরিস্থিতিতেই সাধারণ।
বার্নার্ডো সুলজবাচ

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

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

... কেবলমাত্র সংখ্যক সংকলক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যকই মূল্যবান মনে হবে যা স্ট্যান্ডার্ডের প্রয়োজনের বাইরে বৈশিষ্ট্য এবং গ্যারান্টি থেকে উপকার পাবেন না।
সুপারক্যাট

4

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

প্রবণতাটি ছিল যে এম্বেডেড সিস্টেমগুলিকে লক্ষ্য করে সংকলক বিক্রেতারা C90 স্ট্যান্ডার্ডে অবস্থান করে, কারণ তাদের গ্রাহকরা যে বড় বৈশিষ্ট্যগুলির জন্য জিজ্ঞাসা করছিলেন না সেগুলি প্রবর্তন করার কারণে।


অনেক ক্ষেত্রে, "বাদ দিতে বলছিলেন"। একবার আপনি যখন এই বৈশিষ্ট্যগুলি সক্ষম করেন তখন র‌্যামের পদচিহ্নের পরিবর্তনটি দেখুন look কিছু লোক কেন সেগুলি চায় না তা স্পষ্ট হয়ে যায়। এটি প্রসেসরের ব্যয় দ্বিগুণ করতে পারে, যা সিস্টেমের সবচেয়ে ব্যয়বহুল অংশ হতে পারে।

1
@ জেরি কফিন: হ্যাঁ, তবে কোডটি তখনই তৈরি করা হয় যখন আকারে () আসলে অ্যারেতে ব্যবহৃত হয়। সংকলকটির তথ্য ট্র্যাক করা দরকার যাতে এটি সঠিক কোড উত্পন্ন করতে পারে, তবে সেই তথ্যটি ভিএলএর মেমরি উপস্থাপনায় এম্বেড করা দরকার না।
jxh

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

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

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