কোনও বিকাশকারীকে কম্পিউটারের হার্ডওয়্যারটির অভ্যন্তরীণ কাজগুলি জানতে হবে? [বন্ধ]


13

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

আপনারা কতজন এই সব জানেন?

উত্তর:


31

এটি আপনি যা করেন তার উপর নির্ভর করে।

যদি আপনি একটি এম্বেডেড বিকাশকারী হন (এবং আপনি খুব ছোট ডিভাইসে ধাতবটির খুব কাছাকাছি লিখছেন), আপনাকে সিস্টেমের প্রতিটি উপাদান এবং প্রতিটি উপাদান জানতে হবে।

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

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

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

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


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

@ রবার্ট হার্ভে: সঠিক, যে কারণে আমি বলি " জানার দরকার নেই "। যাইহোক, এই জিনিসগুলি অবশ্যই জেনে ক্ষতি করে না। :)
গ্রেফ্যাড

2
+1, তবে আমি কয়েকজন ওয়েব বিকাশকারীকে জানি (যারা কখনও মেমরির ব্যবহার বিবেচনা করে না।
টিম পোস্ট

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

@ অ্যান্ড্রুহিল: কখন এটি একটি হার্ডওয়্যার বিষয় এবং একটি অ্যালগরিদমিক নয়? প্রশ্নটি উচ্চ-স্তরের অ্যালগরিদম নয়, নিম্ন-স্তরের হার্ডওয়্যার আচরণ বোঝার বিষয়ে।
গ্রেফ্যাড

12

না, আপনি না আছে , কিন্তু আমি মনে করি এটা একটি চমৎকার ধারণা। যৌক্তিক স্তরে জিনিসগুলি কীভাবে কাজ করে সে সম্পর্কে একটি সাধারণ ওভারভিউ শিখলে সত্যই আমাকে বিকাশে সহায়তা করেছে।


6

আমি মনে করি অ্যাপ্লিকেশন বিকাশকারী এবং ওয়েব বিকাশকারীদের সম্পর্কে মন্তব্যগুলি ভুল।

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

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

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

শেষ পর্যন্ত, আপনি কোন ধরণের উন্নয়ন করেন তা নির্বিশেষে এটি গুরুত্বপূর্ণ। আপনার বোঝার জন্য প্রয়োজনীয় স্তরের স্তরটি বিতর্কযোগ্য।


2

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

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


1

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


0

আমি প্রায় 25 বছর আগে একটি কম্পিউটার আর্কিটেকচার ক্লাসে এবং এটিতে একটি অ-বাস্তব-বিশ্ব আর্কিটেকচারে শিখেছি কতটুকু আমি জানি।

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


0

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

আমি ওভারবোর্ডে যাই না - কেবল সাধারণ ধারণাগুলি যেমন কীভাবে মেমরিতে জিনিসগুলি সঞ্চয় করা হয় তা শিক্ষার্থীদের সহায়তা করে বলে মনে হয়।


0

আমি শিরোনামে জিজ্ঞাসা করা হিসাবে এর উত্তর দিতে যাচ্ছি:

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

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

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

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


0

প্রতিটি বিকাশকারীকে কম্পিউটার ইঞ্জিনিয়ারিংয়ের সাথে যুক্ত প্রাথমিক ধারণাগুলি জানতে হবে: বাইনারি পাটিগণিত, বেস রূপান্তর, বুলিয়ান বীজগণিত, লজিক গেটস, সিপিইউয়ের সংমিশ্রণ (এবং উপাদানগুলি কী করে), ক্যাশে, ভার্চুয়াল মেমরি, সংক্ষেপণ, ত্রুটি সনাক্তকরণ এবং সংশোধন ...

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

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