"সিস্টেম প্রোগ্রামিং" বলতে কী বোঝায়?


33

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

অ্যাডভান্টেজ যুক্ত

  • ডাইরেক্টএক্স / ওপেনজিএল জ্ঞান।
  • 3 ডি ম্যাথস এবং ফিজিক্সে স্ট্রং কমান্ড।
  • সি ++ বিকাশের জন্য ভিজ্যুয়াল স্টুডিও আইডিই।
  • সিস্টেম প্রোগ্রামিং এবং ওএস ধারণাগুলি।

সিস্টেম প্রোগ্রামিং এবং ওএস ধারণাগুলি দ্বারা এগুলি ঠিক কী বোঝায়?

আমার কি উইন্ডোজ প্রোগ্রামিং পড়া উচিত? অথবা আমার লিনাক্স প্রোগ্রামিংয়ের সাথে যাওয়া উচিত (অর্থাত তারা আমাকে গুরুত্বপূর্ণ ধারণাগুলি জানতে চায়)। নাকি একেবারে আলাদা কিছু?


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
জোশ

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

@ ফারাপ প্রযুক্তিগতভাবে, উইন্ডো খুলতে পারে এমন কোনও লিনাক্স "ওএস এপিআই" নেই, এবং এটি উইন্ডো খোলার জন্য গ্লুট, জিএলএফডাব্লু, বা অনুরূপ ব্যবহার করা ভাল তাই এটি এক্স এবং ওয়েল্যান্ড (এবং উইন্ডোজ এবং ম্যাকোস) উভয়ের সাথে কাজ করবে।
মাজোরা 320

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

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

উত্তর:


54

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

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

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


2
সংক্ষেপে, আমি বলব যে নন-সিস্টেমস প্রোগ্রামিং (আসল খেলা) বেশিরভাগ প্ল্যাটফর্মের জন্য স্বাধীন হবে (এটি ম্যাক / পিসি / এক্সবক্সের ক্ষেত্রে সত্যই যত্নশীল হবেন না), যেখানে সিস্টেম প্রোগ্রামিং অনেক বেশি প্ল্যাটফর্ম-নির্দিষ্ট হবে (ক্রম অনুযায়ী) নন-সিস্টেম প্রোগ্রামারদের জন্য প্ল্যাটফর্ম-স্বতন্ত্র স্তর সরবরাহ করতে)।
ট্রিপহাউন্ড

22

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

আমাদের সিস্টেমস টিম প্রচুর স্টাফের দায়িত্বে রয়েছে:

  • গণিত গ্রন্থাগার
  • এসটিডি প্রতিস্থাপন গ্রন্থাগার
  • কোর গেম ফ্রেমওয়ার্ক
  • কোর অ্যাপ্লিকেশন ফ্রেমওয়ার্ক
  • ইনপুট
  • ইভেন্ট মেসেজিং
  • উপাদান-সত্ত্বা সিস্টেম
  • স্ক্রিপ্ট বাঁধাই
  • (এবং আরও)

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

কিছু কিছু বিষয় যা "সিস্টেমস" দলের অধীনে আসতে পারে যা আমরা পৃথক দলে বিভক্ত হয়েছি (তবে আমাদের সিস্টেমস টিম এখনও বেশ ভারী সাথে ইন্টারঅ্যাক্ট করে):

  • পদার্থবিদ্যা
  • লিনাক্স (ডেডিকেটেড সার্ভার)
  • অন্যান্য ওএসের জন্য সরাসরি সমর্থন (আইওএস / ম্যাক / কনসোলস ইত্যাদি)
  • বিল্ড সিস্টেম
  • অডিও

0

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


আমি মনে করি না গ্রাফিক্স প্রোগ্রামাররা (ওপেনজিএল বিশেষজ্ঞরা) একটি সিস্টেম প্রোগ্রামার কাজের জন্য প্রয়োগ করবে ...
ভায়ল্যানকোর্ট

গ্রাফিক্স প্রোগ্রামিং এবং ওপেনজিএল প্রোগ্রামিং দুটি আলাদা জিনিস। একটি কম্পিউটার গ্রাফিক্স অ্যালগরিদম নিয়ে কাজ করে, অন্যটি API এর বিশদ সম্পর্কিত।
কেম কল্যাঙ্কু

0

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


-6

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

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

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

এমএসডিএন হ'ল উইন্ডোজ প্রোগ্রামিং এপিএস, লাইব্রেরি ইত্যাদির জন্য জ্ঞানের ভিত্তি https://msdn.microsoft.com/

আপনি আটকে থাকলে আসল কোডিংয়ের জন্য স্ট্যাকওভারফ্লো।


উইন্ডোজ কোনও একক ব্যবহারকারীর ওএস নয়।
ম্যাক্সিমাস মিনিমাস

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

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

@ LeComteduMerde-fou যদি আপনি কেবল ব্যবহারকারীরা কীভাবে পরিচালনা করছেন তা দেখুন, এটি। -> সুরক্ষা কী (ctrl + Alt + মুছুন), জিইউআই ইত্যাদি Un ইউনিক্স // বিএসডি ব্যবহারকারীদের সম্পূর্ণ ভিন্নতরভাবে পরিচালনা করে
গিট

@ জিসমো আমি বেঁচে থাকার জন্য ড্রাইভার লিখি - ড্রাইভারের আরও অনেক কিছুই আছে যা ওএস-নির্দিষ্ট অংশ তত্কালীন এপিআই নয়;) সিস্টাবলগুলি সম্পর্কে আমার বক্তব্য আলাদা ছিল তখন চালকদের সম্পর্কে। লিনাক্সে অবশ্যই আপনার লাইব্রেরি রয়েছে তবে আমার বক্তব্যটি হল লিনাক্সের সিস্কলগুলির জন্য একটি এবিআই রয়েছে - অর্থাত্ কমপক্ষে তাত্ত্বিকভাবে সিস্কলগুলি স্থিতিশীল এবং নথিভুক্ত (এবং পসিক্সের পরে ঘনিষ্ঠভাবে মডেলিং)। উইন্ডোজের জন্য ইউজারস্পেস <-> কার্নেল ইন্টারফেস রিলিজ জুড়ে স্থিতিশীল বলে মনে করা হয় না।
ম্যাকিয়েজ পাইচোটকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.