গেম ডেভেলপারদের জন্য সি / সি ++ কেন পছন্দ করা হয়?


14

কিছু লোক বলে যে এটি বিকাশকারীদের আরও নিয়ন্ত্রণ সরবরাহ করে, তবে সি ++ এর মাধ্যমে নিয়ন্ত্রণ করা যায় ঠিক কী এটি, যা জাভা ব্যবহার করে নিয়ন্ত্রণ করা যায় না?

উত্তর:


21

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

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

গেমসের জন্য এটি বিপর্যয়কর হতে পারে। প্রতি কয়েক ফ্রেমে কিছু আবর্জনা সংগ্রাহক আপনার যে প্রতিটি বরাদ্দ তা এখনও ব্যবহার হচ্ছে কিনা তা পরীক্ষা করে দেখার জন্য আসে ? মন্দার কথা বলুন!

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

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

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

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


1
কেবল একটি নটপিক, তবে বেশিরভাগ অপারেটিং পরিবেশের অধীন নেটিভ কোডটি ভার্চুয়াল মেশিনে চলে। ভার্চুয়াল মেশিনের ভিতরে জাভা ভার্চুয়াল মেশিনে চলে।
স্কাইলার সালেহ

1
@ আরটিএস: ওপ -> মাইক্রো-অপের অনুবাদকে ভার্চুয়াল মেশিনে কল করা কিছুটা প্রসারিত, যদি আপনি এটিই পেয়ে যাচ্ছেন।

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

@ আরটিএস আমি নিশ্চিত নই যে কার্য বিচ্ছিন্নতা সত্যই ভিএম হিসাবে যোগ্যতা অর্জন করে। এটি একটি আরএম (রিয়েল মেশিন) অন্তর্নির্মিত কিছু সুরক্ষা সহ fet আনতে / এক্সিকিউটিভের মধ্যে কোনও সুস্পষ্ট নির্দেশনা বিমূর্তকরণ স্তর নেই। সংকলক এবং লিকারগুলি প্রয়োজন হিসাবে পুনঃস্থাপনযোগ্য কোড উত্পন্ন করে। সিপিইউ এর বেশিরভাগ ক্ষেত্রে হার্ডওয়্যার সমর্থন সরবরাহ করে - যা "ভার্চুয়াল" দিকটি সরিয়ে দেয়।
ডিভে 21

2

সংক্ষিপ্ত উত্তর: সি ++ স্থানীয় কোডের সাথে সংকলন করে, তাই সঞ্চালনটি ডেভেলপারের উপর নির্ভর করে, রানটাইম বা ভিএম নয়।

দীর্ঘ উত্তর:

সি ++ "দ্রুত" হওয়ার সাথে সি ++ এর কোনও সম্পর্ক নেই। এই মুহুর্তে, এটি উপলব্ধ এমন কয়েকটি ভাষার মধ্যে একটি যা একাধিক প্ল্যাটফর্মের জন্য স্বতন্ত্র, নেটিভ কোড উত্পাদন করে এমন সরঞ্জামগুলির দ্বারা সমর্থিত by

আগের দিন, আপনি সি, সি ++, বেসিক / 2, ডেলফি ইত্যাদি ব্যবহার করতে এবং দক্ষ, ফ্রিস্ট্যান্ডিং এক্সিকিউটেবল পেতে পারেন। ভাষার পছন্দটি ব্যক্তিগত পছন্দ এবং বাজার শক্তির বিষয় ছিল।

এই দিনগুলিতে, "C ++ দ্রুত" এমন ধারণাটি মূলত একটি স্ব-পরিপূর্ণ ভবিষ্যদ্বাণী, যদিও এলএলভিএম পরিবর্তনের পক্ষে ভাল অবস্থানে রয়েছে যা এটি পার্সার মুটের মধ্যে যা যা ঘটেছিল তা যেমন হয়েছিল একসময়।

বোরল্যান্ডের এটি ঠিক আছে: একাধিক ভাষাগুলি যেগুলি পার্স করা হয়েছিল, প্রথমে অনুকূলিতকরণ প্রয়োগ হয়েছে, তারপরে একটি সাধারণ ব্যাকএন্ড সংকলক এবং লিঙ্কারে প্রেরণ করা হয়েছে। যা কার্যকরভাবে এলএলভিএমের অন্যতম বড় সাফল্য।

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

আমার ক্রিসমাস তালিকার শীর্ষে? ফিরে যাওয়ার এবং বৈশিষ্ট্যগুলি যুক্ত করার জন্য একটি টাইম মেশিন, আসল ব্যতিক্রম হ্যান্ডলিং এবং আসল ওয়ার্কিং পলিমারফিজম সি ++ এ, এবং পার্সারটি নিজেরাই আবিষ্কার করতে পারে এমন f "d আপ অ্যার সিনট্যাক্স ক্র্যাপ থেকে মুক্তি পান I আমি 10 বছরের জন্য একটি প্রিপ্রসেসর লিখেছিলাম আগে কারণ এটি নির্বুদ্ধিতা freaking।


আপনি কি অপ্রত্যক্ষ সদস্যের অ্যাক্সেস বলতে বোঝাতে চান (h-> x এর মতো)? এটি মুছে ফেলা হ্যান্ডেল এবং স্মার্ট পয়েন্টার ধরণের উপায়কে কম দরকারী করে তুলবে। যদি আপনি এটি কেবল কাঁচা পয়েন্টারগুলির জন্য পরিবর্তন করার পক্ষে যুক্তি দেখান তবে আপনি ভাষাটিকে কম সামঞ্জস্য করেছেন।
লার্স ভিক্লুন্ড

1
সি ++ এর বহুমুখিতা সম্পর্কে কী কাজ করে না?
কেসি

@ লার্স ভিক্লুন্ড হ্যাঁ, এটাই আমার অর্থ। তবে, ঠিকানা, অবজ্ঞা এবং সদস্য অপারেটরগুলি (এবং, *, ::, -> ...) এর আলাদা আলাদা অর্থ রয়েছে, বেশিরভাগ সময় প্রসঙ্গ থেকে drsjted ফলাফল নির্ধারণ করা সম্ভব। অন্যান্য ভাষাতে যেমন জিনিসগুলি সরল করা যেতে পারে তেমন। একটি ছোট স্টিকিং পয়েন্ট, তবে কোড জটিলতা বৃদ্ধির সম্ভাবনা রয়েছে এমন একটি (এবং এইভাবে সময় এবং ব্যয়)।
ডিভে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.