নতুন সি প্রকল্পগুলি কখন খুব পুরানো সি স্ট্যান্ডার্ড (> 20 বছর পুরাতন, অর্থাৎ C89) লক্ষ্য করা উচিত?


12

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

নতুন সি প্রকল্পগুলির জন্য খুব পুরানো সি মানকে লক্ষ্য করা কখন এবং কেন ন্যায়সঙ্গত?

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

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


10
"আমি এমন দৃশ্যের কথা কল্পনা করতে পারি না যেখানে ব্যবহারকারীর সিস্টেমের অবশ্যই একেবারে তার সি সংকলকটি আপডেট না করে তবে নতুন সফ্টওয়্যার ইনস্টল করার জন্য নিখরচায় রয়েছে" " আপনি যথেষ্ট এমবেডড কাজ করেননি ;-)
ফিলিপ কেন্ডাল

2
@ ফিলিপ কেন্ডল আমি কোনও এম্বেড থাকা কাজ করিনি। আমি আপনাকে উত্তর দিয়ে আমাকে আলোকিত করতে উত্সাহিত করি!
প্রেক্সোলাইটিক

2
একবার একটি মান প্রতিষ্ঠিত হয়ে গেলে এটি কার্যত চিরকাল ধরে রাখবে। কখনও কখনও 2000 বছরেরও বেশি দীর্ঘ
ডক ব্রাউন 13

1
@ ডকব্রাউন তবে নোট করুন যে পৃষ্ঠাটি ব্যাখ্যা করেছে যে এটি 2000 বছরের পুরানো মান যে দাবিটি মিথ্যা।
জেস্পার

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

উত্তর:


14

... "পুরানো এবং মানক সর্বদা আরও বহনযোগ্য এবং ভাল" যা হাস্যকর ...

এই বিবৃতিটি হাস্যকর হয়ে পৌঁছেছিল যখন এটি আরও ভাল হয় , যা সম্পূর্ণ বিষয়গত। আপনি কোনও প্রকল্পের জন্য কোনও ভাষা এবং মান নির্বাচন করেন না কারণ আপনি যে সর্বশেষ সাক্ষাতে গিয়েছিলেন তার অর্ধেক লোকেরা এটি ব্যবহার করেছিল; আপনি এটি বেছে নিয়েছেন কারণ আপনি যে সমস্যার সমাধান করছেন তা অধ্যয়ন করেছেন এবং বুঝতে পেরেছেন এবং নির্ধারণ করেছেন যে এটি কাজের জন্য সঠিক সরঞ্জাম।

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

বিশেষত সি এর জন্য, সর্বশেষ মানটির আনুগত্যের বিনিময়ে আপনি কী পাবেন তা নিয়ে প্রশ্ন রয়েছে। কে অ্যান্ড আর-টু-সি 89 রূপান্তরটি একটি বড় পরিবর্তন ছিল যা পুরানো কোড সাফ করার জন্য প্রচুর প্রচেষ্টা প্রয়োজন তবে শেষ পর্যন্ত অনেক ভাল কাজ করেছিল। সি 99 এবং সি 11-পরিবর্তনগুলিতুলনায় তুলনামূলকভাবে সামান্য এবং সাম্প্রতিক বিকাশিত সিআইয়ের বেশিরভাগ মুখোমুখি এখনও সি 89 কে পাস করবে কারণ এটি নতুন বৈশিষ্ট্যগুলি ব্যবহার করে না। এটি বিতর্ক করা শক্ত যে C89-র উপরে C99 জারি করা সঠিক কাজ হবে কারণ এটি এক-লাইন মন্তব্য সমর্থন করে, একটি বুলিয়ান ডেটা টাইপ রয়েছে এবং পরিবর্তনশীল দৈর্ঘ্যের অ্যারে করতে পারে। মন্তব্যগুলি এবং বুলিয়ানগুলির অ-কুশল কর্মক্ষেত্র রয়েছে এবং ভিএলএগুলি অন্যান্য, সামান্য-কম-দক্ষ উপায়ে পরিচালনা করা যেতে পারে। সি 11, ভিএলএসকে alচ্ছিকভাবে হ্রাস করে, এবং এটি পুরানো সি 99 বেছে নেওয়ার পক্ষে যুক্তিযুক্ত হতে পারে যদি তারা আপনার প্রয়োগের ক্ষেত্রে বিশিষ্টভাবে চিত্রিত করে।


3
ভাল, পরিবর্তনশীল ঘোষণা এবং বিবৃতি মিশ্রণ বোধগম্যতা জন্য বেশ ভাল। ইনলাইন-ফাংশন, ইউনিকোড-সীমাবদ্ধ সীমিত এবং long longএটিও খুব সুন্দর।
অনুদানকারক

এছাড়াও, মাল্টিথ্রেডিং কখনও কখনও ভাল লাগতে পারে ...
ডাব্লুকিপেটর

@ উত্সাহক আমি C99 এবং C11 এর মধ্যে থাকা উন্নতিগুলির সাথে একমত নই। আপনি চাইলে সমস্ত সি 11 লিখতে পারেন যদি আপনি পুরানো পরিবেশে বহনযোগ্যতার মানকে ছাড়িয়ে সুন্দর-থেকে-হ্যাভের মানটির জন্য ব্যবসায়িক কেস তৈরি করতে পারেন। ফাইলটি যা "সমস্যাটি অধ্যয়ন করে এবং কাজের জন্য সঠিক সরঞ্জামটি সন্ধান করে under"
blrfl

2
ঠিক আছে, মুল বক্তব্যটি হ'ল আপনি গুরুত্বপূর্ণ উন্নতির সঠিক কথা উল্লেখ করেন নি ।
উত্সাহক

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

10

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

একটি ধারণাও রয়েছে যার মধ্যে সি 89 হ'ল "সর্বনিম্ন সাধারণ ডিনোমিনেটর"। এটি প্রথম যথাযথভাবে মানসম্পন্ন সংস্করণ ছিল এবং এটি ব্যবহারের জন্য যে কোনও সংকলক আজ ব্যবহার করছেন তা C89 এর কিছু সুপারসেট বাস্তবায়নের জন্য অনুমান করা যায়।

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


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

1
@ প্রেক্সিওলিটিক এটি সত্যিই একটি প্রশ্ন যা আপনি এমন কোড তৈরি করছেন কিনা যা বিবিধ বিভিন্ন লোক ব্যবহার করবে। কারণ সেখানে পুরানো সংকলকগুলি ব্যবহার করে প্রচুর লোক বেরিয়ে আসবে, হয় তারা আপগ্রেড করতে পারে না, বা তারা এটিকে আপগ্রেড করার জন্য খুব বেশি ঝুঁকি এবং প্রচেষ্টা বিবেচনা করে।
সাইমন বি

3

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

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

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

প্লাগইন এবং এমএসভিসির সাথে উত্সের সামঞ্জস্যতা ছাড়াও অন্যান্য ভাষার সাথে ইন্টারপও রয়েছে। কিছু অন্যান্য ভাষা এসডিকে একটি এফএফআই এর মাধ্যমে ব্যবহার করে এবং সেই সাথে এফএফআইগুলির মধ্যে কয়েকটি কেবল সি 89 বোঝে। ডিলিব থেকে ফাংশন আমদানি করার সময় তারা বুঝতে boolবা _Boolসহজ উদাহরণ হিসাবে বুঝতে পারে না , কেবল বলে, বলুন int

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

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

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

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

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