সি ++ লাইব্রেরি ব্যবহার এত জটিল কেন?


14

প্রথমত, আমি নোট করতে চাই যে আমি সি ++ পছন্দ করি এবং আমি সেই লোকদের মধ্যে একজন যারা জাভাের চেয়ে সি ++ এ কোড করা সহজ বলে মনে করি। একটি ক্ষুদ্র জিনিস বাদে: গ্রন্থাগারগুলি।

জাভাতে আপনি কেবল বিল্ড পাথটিতে কিছু জার যুক্ত করতে পারেন এবং আপনার কাজ শেষ।

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

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

উত্তর:


15

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


8
শেষ লাইনটি পুরোপুরি সঠিক নয়: মডিউলগুলি সিস্টেম ২০০৪ সাল থেকে কাজ করছে (প্রথম নথি) তবে এতটাই কাজ বোঝায় যে এটি বাস্তবায়নের অভাব হতে পারে বলে এটি এমনকি শেষ মানের জন্য সত্যই কল্পনাও করা যায়নি there প্রস্তাব সমর্থন। পরবর্তী বাস্তবায়নটি পরবর্তী সি ++ স্ট্যান্ডার্ডটি চালানোর জন্য ওয়ার্ট্কে (অন্যান্য খসড়াগুলির সাথে) রয়েছে। এটি এমন নয় যে এটি সি ++ ডিজাইনারদের অগ্রাধিকার নয়, এটি কেবলমাত্র এই বৈশিষ্ট্যগুলির মধ্যে একটি যা আপনি ভুল করতে পারবেন না, রেট্রো-কম্প্যাটিবিলিটি রাখতে হবে (বেশিরভাগ সি কোড এবং সি ++ 11 সহ) এবং সঠিকভাবে পাওয়ার পক্ষে খুব শক্ত। তাই এটি অনেক সময় নেয়।
ক্লাইম

অসাধারণ. ধন্যবাদ, ক্লাইম, তথ্যের জন্য। স্পষ্টভাবে এটি চেক আউট হবে। এটি অত্যন্ত উত্তেজনাপূর্ণ :)
পিজুসন

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

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

1
@ অ্যালেক্সবোটেনি, আমি সত্যিই সন্দেহ করি যে তারা এই শতাব্দীতে যে কোনও সময় একটি প্রমিত মডিউল সিস্টেম নিয়ে আসবে। এমনকি তারা সি ++ 11 এ ধারণাগুলিও অন্তর্ভুক্ত করেনি কারণ তারা সুনির্দিষ্ট বাস্তবায়নে সম্মত হতে পারে না। শিরোনাম / লিঙ্কার সিস্টেমের পাশাপাশি কাজ করে এমন একটি মডিউল সিস্টেম আরও জটিল এবং আমরা সম্ভবত এটি খুব দীর্ঘ সময়ের জন্য দেখতে পাব না।
চার্লস সালভিয়া

2

এটি কোনও প্রযুক্তিগত বাধা নয়। লিনাক্সে, আপনার "বিশেষ জিপ ফাইল" একটি প্যাকেজ ম্যানেজারের সাথে ইনস্টল করা একটি লাইব্রেরি-ডেভ প্যাকেজ, এবং অন্তর্ভুক্ত এবং লিঙ্কার পতাকাগুলি সেট আপ করা আপনার জিনিসগুলিতে কয়েকটি লাইন যুক্ত করার মতো configure.acযা জিনিসগুলি সেট আপ করার জন্য pkg-config ব্যবহার করে।

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

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