সি ++ গেম ডেভেলপাররা কেন বুস্ট লাইব্রেরি ব্যবহার করে না? [বন্ধ]


81

সুতরাং আপনি যদি সি ++ ট্যাগের আওতায় স্ট্যাক ওভারফ্লোতে কোনও প্রশ্ন দেখার / উত্তর দেওয়ার জন্য ব্যয় করেন , আপনি দ্রুত লক্ষ্য করবেন যে প্রায় সবাই বুস্ট লাইব্রেরি ব্যবহার করে ; কেউ কেউ এমনকি বলবেন যে আপনি যদি এটি ব্যবহার না করে থাকেন তবে আপনি "আসল 'সি ++ লিখছেন না (আমি একমত নই, তবে এটি বিন্দু নয়)।

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

গেম ডেভেলপাররা কেন সাধারণভাবে বুস্ট লাইব্রেরি ব্যবহার করে না? এটা কর্মক্ষমতা বা স্মৃতি উদ্বেগ? স্টাইল? অন্যকিছু?

আমি স্ট্যাক ওভারফ্লোতে এটি জিজ্ঞাসা করতে যাচ্ছিলাম, তবে আমি অনুভব করেছি যে প্রশ্নটি এখানে আরও জিজ্ঞাসা করা হয়েছে।

সম্পাদনা:

আমি বুঝতে পেরেছি যে আমি সমস্ত গেম প্রোগ্রামারদের পক্ষে কথা বলতে পারি না এবং আমি সমস্ত গেম প্রকল্প দেখিনি, তাই আমি বলতে পারি না গেম ডেভেলপাররা কখনই বুস্ট ব্যবহার করে না; এটি কেবল আমার অভিজ্ঞতা।

আমাকে জিজ্ঞাসা করার জন্য আমার প্রশ্নটি সম্পাদনা করার অনুমতি দিন, আপনি যদি বুস্ট ব্যবহার করেন তবে আপনি কেন এটি ব্যবহার করতে পছন্দ করেছেন?


3
সম্পর্কিত: gamedev.stackexchange.com/questions/268/...
Tetrad

2
"বুস্ট" লাইব্রেরিগুলির সংগ্রহ "ইউজ বুস্ট" বা "বুস্ট ব্যবহার করবেন না" ন্যায্য পছন্দ হিসাবে তৈরি করার পক্ষে এটি কি ন্যায়সঙ্গত হবে? এমনকি গুগল তাদের বিশ্বাসের মানগুলিতে আমি "বুস্ট" এর একটি ছোট উপসেট সীমাবদ্ধ করে।
ড্যান ওলসন

গেম বাইনারি ইতিমধ্যে যথেষ্ট বিশাল।
সৈন্যবাহিনী

3
@ টেট্রাড এসটিএল উত্সাহ দেয় না, এবং এসটিএল গেমদেবগুলিতে ভারী ব্যবহৃত হয়।
রুটলোকস

7
আমি প্রশ্নটি "গঠনমূলক নয়" সত্যিই দেখতে পাচ্ছি না, এটির ব্যাখ্যা দেওয়ার দরকার আছে।
v.oddou

উত্তর:


42

কিছু বিকাশকারী করেন, কিছু বিকাশকারী (গেম এবং অন্য কোথাও) না don't এটি সেই বিকাশকারীদের প্রয়োজনীয়তা / প্রয়োজনীয়তাগুলি এবং তাদের কী কী প্রযুক্তি ব্যবহার করতে হবে তার উপর নির্ভর করে।

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

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

  • কোনও বিকাশকারী প্ল্যাটফর্মগুলিতে কাজ করতে পারে যেখানে বুস্টের সাহায্যে উন্নত সি ++ কৌশলগুলির জন্য সংকলক সমর্থন ভাল সমর্থন করে না, যেমন বুস্ট কোডটি মোটেও সংকলন করে না বা বেশ খারাপভাবে সম্পাদন করে। এটি স্ট্যান্ডার্ড লাইব্রেরিতেও প্রযোজ্য, যদিও এই দিনগুলিতে অনেক কম।

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

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

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

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


2
আরেকটি বিষয় - কিছু সংস্থাগুলি একটি উচ্চ ইন্টারেক্টিভ বিকাশের পরিবেশে সংকলনের গতির নেতিবাচক প্রভাবের কারণে এটি বুস্ট ব্যবহার করে না।
স্টিভেন

27

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

টিএল; ডাঃ সংস্করণ:

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

খুব দীর্ঘ উইন্ডেড সংস্করণ:

আমি বুঝতে পারি যে এরই মধ্যে একটি স্বীকৃত উত্তর রয়েছে তবে যিনি আমার প্রায় প্রতিটি প্রকল্পে বাস্তবে বুস্ট ব্যবহার করেন, আমি ভেবেছিলাম একটি উত্তর পোস্ট করব।

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

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

এই দুটি কারণ বুস্ট লাইব্রেরিগুলি বরং একটি কঠিন কাজ ব্যবহার শিখিয়ে তোলে। এমনকি বুস্ট ব্যবহারের প্রযুক্তিগত জটিলতাগুলি খুব বেশি জটিল না হলেও, এটি একটি বিশাল গ্রন্থাগার এবং এটি যখন আপনি যখন সজ্জিত হন তখন ইন্টারনেটের অন্ধকারতম কোণ থেকে মেইলিং তালিকার ছড়িয়ে ছিটিয়ে থাকা সমস্ত তালিকা থাকে star ... হ্যাঁ, আপনি ধারণা পেতে পারেন.

আমি ১.৪৪ সংস্করণের আশেপাশের দিকে ঝুঁকে পড়েছি এবং এটি কেবলমাত্র 1.52 / 1.53 সংস্করণে পাওয়া গেছে যে আমি এটি উত্পাদন করতে যথেষ্ট স্বাচ্ছন্দ্য বোধ করি। ব্যবহার করার এবং মনে রাখার মতো অনেক কিছুই রয়েছে, এমনকি আপনি কীভাবে কনফিগারেশনকে বুস্ট ও কনফিগার করেছেন তা সাধারণ জিনিসগুলি যেমন লাইব্রেরিগুলি কীভাবে তৈরি করা হয় এবং কীভাবে কাস্টমাইজযোগ্য জিনিসগুলির কারণে সংকলনকালে আপনার পছন্দগুলির উপর ভিত্তি করে ফাংশনগুলি বন্যভাবে পরিবর্তিত হতে পারে আছে।

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

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

কেন আমি বুস্ট ব্যবহার করতে পছন্দ করি

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

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


ডকুমেন্টেশন হিসাবে খুব সঠিক। উদাহরণস্বরূপ, বুস্ট.এসিও ডকস কীভাবে আশ্চর্যজনকভাবে কয়েকটি লাইনে কোনও HTTP সার্ভার লিখতে হবে তা ব্যাখ্যা করবে, এটি যদি দুর্দান্ত হয় তবে আপনার গেমটি যদি এই বিষয়টির জন্য http (বা অন্য কোনও ভ্যানিলা টিসিপি প্রোটোকল) ব্যবহার করে তবে আপনি যদি ব্যবহার করতে চান তবে এটি আরও বেশি জটিল হয়ে উঠবে you একটি কাস্টম প্রোটোকল বা মালিকানাধীন নেটওয়ার্ক লাইব্রেরি। Boost.asio ব্যবহার করে কীভাবে ওয়েবসকেট সার্ভার তৈরি করতে হয় তা বুঝতে আমার 20 মিনিট সময় লেগেছে, তবে কীভাবে কাস্টম বুস্ট.এসিওআইও_সার্চেসের মাধ্যমে ENet ( enet.bespin.org ) ব্যবহার করবেন তা বুঝতে কয়েক সপ্তাহ লেগেছে।
ক্লোসেটিক

21

আমরা আমাদের পুরানো কর্মক্ষেত্রে কিছুটা বুস্ট ব্যাক ব্যবহার করেছি। বেশিরভাগ ক্ষেত্রে এড়ানো এবং এর ব্যবহার সীমাবদ্ধ করার মূল কারণগুলি হ'ল:

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

1
অনুমোদন :: shared_ptr? তা কেমন করে?
টিলি

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

10
(মেক-শেয়ার্ড ব্যবহারের ফলে সমস্যা উপশম হতে পারে
th

আমি মনে করি এই উত্তরটি মোটামুটি পরিষ্কার যে লোকেরা এড়ানো এড়ানোর আরও বেশি কারণ রয়েছে যা কেবলমাত্র একটি বা দুটি খারাপ ক্লাসকে ডজ করার চেয়ে বেশি।
কাইলোটন

16

"আরও স্ট্যান্ডার্ড" এসটিএল-তে একই কথা বলা হয়েছিল (ছিল?)। এই নিবন্ধটি গেম বিকাশের প্রয়োজনীয়তাগুলিকে "আরও জেনেরিক" অ্যাপ্লিকেশন বিকাশের চেয়ে পৃথক করার জন্য ইলেক্ট্রনিক আর্টস দ্বারা গৃহীত (এসিটিএল) এর অভ্যন্তরীণ পুনর্লিখনের EASTL সম্পর্কে আলোচনা করেছে।

সুতরাং, হয়তো, কেউ কোথাও পুনরায় লেখা (এর অংশের) হয় বুস্ট খেলা উন্নয়নে তাদের চাহিদা অন্তর্ভুক্ত করুন!


নিবন্ধের জন্য +1। আমি মনে করি এটি সুন্দরভাবে প্রশ্নের উত্তর দেয়।
egarcia

9
আমার অভিজ্ঞতা হ'ল আপনার কোডবেস যত বেশি পোর্টেবল হবে ততই আপনি এসটিএলের মতো "স্ট্যান্ডার্ড" উপাদানগুলি পুনরায় লেখার কাজ শেষ করবেন।
জারি কম্প্পা

6

কে বলে যে তারা বুস্ট ব্যবহার করে না? আমি এক বা দুটি সি ++ ইঞ্জিনগুলি জানি যেগুলি বুস্ট ব্যবহার করেছে। আমি তাদের সাথে সরাসরি কখনও কাজ করি নি; তবে, এটি বেশিরভাগ ক্ষেত্রেই আমার অভিজ্ঞতা অবাস্তব in

যে কারণে আমি বুস্ট ব্যবহার না করার জন্য মুখোমুখি হয়েছি এবং এগুলি বিষয়গত:

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

এটি মূলত এগুলিতে সিদ্ধ হয়: একটি সাধারণ সমাধান সবসময় "সঠিক ফিট" হয় না।

আমি নিশ্চিত যে লাইব্রেরির সাথে প্রকৃতপক্ষে কাজ করা কেউই আরও ভাল মন্তব্য করতে পারেন।


সত্য, এর জন্য অ্যাকাউন্টে আমার প্রশ্ন সম্পাদনা করেছে।
জেমস

5

আমি স্ট্যাকওভারফ্লোতে বসে আছি এবং বুস্ট ব্যবহার করি না। আমি আমার যুক্তি যুক্ত করব, কারণ এটি এখনও উল্লেখ করা হয়নি।

বুস্টের অনেক দুর্দান্ত ধারণা রয়েছে, সত্যই। আমি তারা কী করেছে তা দেখতে এবং নতুন জিনিস এবং ধারণাগুলি চেষ্টা করে দেখতে চাই। এগুলি দুর্দান্ত, কারণ এটি অনেকগুলি সি ++ উন্নতির জন্য প্রজনন ক্ষেত্র।

তবে বুস্ট হ'ল বহু কারণে অনাবশ্যক জন্তু। কারণগুলির মধ্যে একটি হ'ল তাদের যে কোনও তিরস্কারের সাথে কার্যত যে কোনও সংকলকের সাথে সামঞ্জস্য থাকা প্রয়োজন (চান)। ফলস্বরূপ তাদের এমপিএলকে এড়িয়ে যাওয়ার জন্য অনেক কৌশল ব্যবহার করতে হবে। উদাহরণস্বরূপ (অনেক দিন আগে) আমি তাদের শেয়ারড_পিটারটি ব্যবহার করতে চেয়েছিলাম, এটি চালিয়ে যাওয়ার অর্থ আমার উত্স এবং লাইব্রেরিগুলি দরকার যা 90% এর উত্সাহের মতো অনুভব করেছিল। আমি আমার নিজের লেখা শেষ করেছি; 50 কোডের পঠনযোগ্য লাইন। (আমার প্রয়োজনীয়তা যেখানে কঠোর, কোনও দুর্বল_পিটার বা থ্রেড সুরক্ষার মতো নয়))

প্রায়শই আপনার উত্সাহের একটি খুব ছোট উপসেট প্রয়োজন, তবে বুস্টের সম্পূর্ণতা একীকরণ করা ঝামেলা করার উপযুক্ত নয়।

সম্পাদনা করুন :

কেবল তৈরি করা স্পষ্ট, যেহেতু এটি পরিষ্কারভাবে আসে না (যেমন ডাউনওয়েট)। আমি তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করি । তবে বেশিরভাগ ক্ষেত্রে, সমস্ত জিনিস সমান, তৃতীয় পক্ষের লাইব্রেরি সংহত করে বা উত্সাহ দেয়, অন্য তৃতীয় পক্ষের গ্রন্থাগারটি দ্রুত এবং ক্লিনার। বাকিগুলি "2 এইচ" আঙুলের অনুশীলনে করা হয়। এটি তৈরি করতে বা প্রশ্ন কেনার ক্ষেত্রে আমি খুব কড়া নজর দিই।


1
বিসিপি, ইয়াকেনের মতো সরঞ্জাম রয়েছে।
বারটেক বানচেউইচজ

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

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

3
পুনঃটুইট করেছেন আপনি বলছেন যে আপনি ১৫ বছর ধরে সি ++ করছেন এবং তারপরে বার্তেকের কাছে একটি স্নিগ্ধ কট্টর মন্তব্যে মনে হয় বারটেক যখন "প্যাকেজগুলি" এর সাথে মিল রেখে "রক্ষণাবেক্ষণ" করবেন তখন তার অর্থ আপনি বুঝতে পারছেন না। রক্ষণাবেক্ষণের অর্থ এগুলি ঠিক করা নয়। কেবলমাত্র নতুন রিলিজে আপডেট করা বা একাধিক টার্গেটের জন্য সংস্করণগুলি সংরক্ষণ করা সাধারণত এর অর্থ। শুধু এফওয়াইআই।

3
সিঘ বুস্ট বাক্সের বাইরেও কাজ করে, তবুও আপনি এটি বজায় রাখার কথা উল্লেখ করেছেন। আমি এখানে আপনার যুক্তি দেখতে ব্যর্থ।
বারটেক বানাচেউইচজ

4

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

কিন্তু আমরা কি আমাদের সমস্ত কোডের উপর পোর্ট করতে চাই? আসলে তা না. আমি ধরে নিয়েছি আরও অনেক সংস্থাই একই সংশয়ের মুখোমুখি হচ্ছে। হয় প্রচুর পরীক্ষিত ও কার্যকরী কোড পুনর্লিখন করুন বা স্ট্যান্ড / বুস্ট ব্যবহার করবেন না।


5
এটি সত্য, এবং এমন কিছু যা আমি ভেবে দেখিনি, তবে আমি লক্ষ্য করেছি যে সি ++ তে গেম ডেভলপমেন্ট শুরু করা প্রচুর লোক বুস্ট / স্টাডি ব্যবহার করে না। কখনও কখনও আমি এটি অনুভব করি কারণ শেখার উত্সাহ সম্পূর্ণ নতুন ভাষা শেখার মতো like
জেমস

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

1

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

পার্শ্ব নোটে, আমি মনে করি যে নিজের কোডটি সি ++ তে লিখলে মজাদার হয়, এজন্য আমি কখনও বুস্ট বা এর মতো কিছু ব্যবহার করি নি।


3
এটি মজাদার, তবে উত্সাহটি হ'ল লোকেদের চাকাটি পুনরায় উদ্ভাবনের পরিবর্তে, সম্পন্ন করতে চান for
বারটেক বানচেউইচজ

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

2
আপনি বুস্ট :: এএসআই ব্যবহার করে আপনার গেমটিতে পুরো নেটওয়ার্কিং / মাল্টিপ্লেয়ার স্তর যুক্ত করতে পারেন এবং এর জন্য আপনার নিজস্ব যোগাযোগ প্রোটোকল উদ্ভাবন করতে পারেন। এটি হ'ল 100% নিখুঁতভাবে বৈধ কারণ হ'ল আপনি যে কোনও গেমটি লিখেন যা কোনও ধরণের নেটওয়ার্ক সম্পর্কিত ফাংশন প্রয়োজন। "আপনার নিজের রোলিং" দুর্দান্ত হতে পারে যখন আপনি নতুন হন এবং আপনার শিখতে হবে। কিছুতেই ভুল নেই। তবে দিন শেষে আমি নিজের ক্রস প্ল্যাটফর্ম অ্যাসিঙ্ক্রোনাস যোগাযোগ স্তরটি লেখার চেষ্টা করার সময় নষ্ট করতে যাচ্ছি না যখন এটি ইতিমধ্যে হয়ে গেছে এবং ভাল well

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

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

0

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


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

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

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

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

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