ভাল প্রোগ্রামার হওয়ার জন্য হার্ডওয়্যার পর্যায়ে কী হচ্ছে তা বোঝার দরকার আছে কি?


24

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

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

প্রোগ্রামিং প্রক্রিয়াটি বোঝার একটি স্তর কতটা ভাল একজন ভাল প্রোগ্রামার অবশ্যই অর্জন করতে পারে?


3
আমার পরামর্শ: কিছু x86 সমাবেশ শিখুন (ডস বা অন্যথায়)। তারপরে সি কোডের কয়েকটি ছোট টুকরো এর এসেমব্লার আউটপুট পড়তে শিখুন। আপনি আউটপুট বুঝতে না পারলে প্রশ্ন জিজ্ঞাসা করুন। পদ্ধতি পুনরাবৃত্তি করুন। এটি আপনাকে সিপিইউ স্তরে কী ঘটছে তা বুঝতে বাধ্য করবে
আর্লজ


আর্লজ - আপনি কি বলতে চান যে আমার x86 নির্দেশিকা সেট ব্যবহার করে প্রোগ্রাম করা শিখতে হবে? এটাই কি 'সিপিইউ স্তর'?
bev

কাজ - thx, যে মজা ছিল। তিনি আসলে কয়েকটি ত্রুটি করেছেন, কেবলমাত্র এফওয়াইআই।
bev

উত্তর:


33

না । হার্ডওয়্যার স্তরে কী চলছে তা কেউ বুঝতে পারে না।

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

তবে আবার ...

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

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

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

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


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

@ বেভ: সেক্ষেত্রে আপনার সত্যই আরডুইনোর মতো প্ল্যাটফর্ম পরীক্ষা করা উচিত।
কালেব

নিস্তেজ হওয়ার জন্য দুঃখিত, তবে আমি আড়ডিনো পরীক্ষা করে দেখেছি এবং সত্যিকার অর্থে আমি দেখতে পাচ্ছি না যে এটি ব্যবহার করে আমাকে বুঝতে সাহায্য করবে যে কোনও সংকলক কীভাবে পয়েন্টারগুলিকে আলাদাভাবে আচরণ করে ar আমি কি দেখছি না?
bev

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

আহ, ঠিক আছে. হোমপেজ তাদের পণ্যগুলির সেই দিকটিতে কিছুটা দুর্বল। আমি আবার তাকান।
bev

10

আপনি হার্ডওয়্যার স্তর সম্পর্কে কথা বলছেন না, আপনি যা করতে বলছেন তা সংকলকটি আসলে কী করে তা নিয়ে আপনি কথা বলছেন।

আপনার স্পষ্টতই এই স্তরটি বোঝার দরকার নেই যখন এটি স্পষ্ট নয়, বিশেষত যখন কোনও স্মৃতি স্ট্যাম্প পরিস্থিতি নিয়ে কাজ করেন তখন কী ভুল হয়েছিল figure


লরেন - হ্যাঁ! সাধারণ সত্যের জন্য ধন্যবাদ। সি ++ সংকলকরা তাদের ডেটা ধরণের সাথে কী করে তা শিখার জন্য এখন আমার সেরা উপায়টি খুঁজে বের করা উচিত। বিটিডাব্লু, একজন ইই হিসাবে, আমি জানি যে এটি আক্ষরিকভাবে হার্ডওয়্যার স্তর নয়। আমি ঠিক জানতাম না যে আপনি সিএস গিকস এটি কী বলে। (এখনও এই বিষয়টির জন্য নেই
Comp সংকলক

বিটিডাব্লু - মেমরি স্টম্প?
bev

@ বেভ: আপনি এখানে আমার বক্তব্যটি প্রমাণ করেছেন - আপনি যদি মেমরি স্টম্প কী তা জানেন না তবে তার কারণে একটি বাগ খুঁজে পাওয়ার জন্য আপনার সময় খারাপ লাগবে। একটি স্মৃতি স্টম্প হ'ল কোনও কিছু যখন এমন কোনও স্থানে লিখেন যা এটি হওয়ার কথা না এবং সেখানে যা ঘটেছিল তা মুছে দেয় (স্টম্পস)। আপনি যদি ভাগ্যবান হন তবে আপনি যা কিছু আঘাত করেছেন তা তাত্ক্ষণিকভাবে গুরুত্বপূর্ণ এবং কমপক্ষে এটি ফুরিয়েছে। আপনি যদি দুর্ভাগ্য হন তবে প্রোগ্রামটি কেবল তার ডেটাতে কিছু গর্ত দিয়ে চলেছে।
লরেন পেচটেল

স্পষ্টতার জন্য ধন্যবাদ। এটি আমার দেখায় যে আমি কতটা জানি না, যেহেতু আমি জানি যতটা আমি জরিমানা নিয়ন্ত্রণ না করে কেবল গাদা বা স্ট্যাককে লিখি।
bev

@ বেভ: সমস্যাটি এমন সময় আসে যখন আপনি কোথাও লিখলে আপনি ভাবেন না যে আপনি লিখছেন। আপনার স্ট্যাকের কিছু আছে এবং আপনি এটিতে একটি পয়েন্টার তৈরি করেন। আপনি রুটিনটি ছেড়ে দিন - আইটেমটি চলে যায়, পয়েন্টারটি যায় না। এখন আপনি যখন সেই পয়েন্টারে লিখবেন তখন কি হবে ?? বা আপনার কাছে 100 টি আইটেমের অ্যারে রয়েছে - আপনি # 200 এ আইটেমটি লিখলে কী ঘটে?
লোরেন পেচটেল

6

প্রোগ্রাম মেমোরি বোঝা! = হার্ডওয়্যার বোঝা

মেমরি শ্রেণিবদ্ধতা বোঝা == হার্ডওয়্যার বোঝা


আপনার জেনেরিক প্রশ্নের উত্তর দিতে: এটি নির্ভর করে। এটি হার্ডওয়্যার বোঝার জন্য আঘাত করতে পারে না, তবে এটি বোঝা সমস্ত ক্ষেত্রে সাহায্য করবে না।

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

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


স্টারগাজার - আমি এখনও সেই পর্যায়ে নেই যেখানে আমি পারফরম্যান্স সম্পর্কিত সমস্যা নিয়ে চিন্তিত হতে পারি। শীঘ্রই, আশা করি। মন্তব্যের জন্য আপনাকে ধন্যবাদ।
বেভ

5

আপনি যদি না প্রতীকী ভাষান্তর একটি বিট শিখতে করার সিদ্ধান্ত নেন, তাহলে সম্ভবত 6502 প্রতীকী ভাষান্তর ভালো কিছু একটি কমোডর 64 (অবশ্যই, emulated) জানতে পারেন, অথবা 68000 একটি অ্যামিগার মত উপর করা উচিত নয়।

কমোডোর 64 সম্পর্কে আপনি এখানে কিছু ধারণা পেতে পারেন ...

http://thepiratebay.org/torrent/4609238/Tag3-Saal2-Slot16_00--ID2874-the_ultimate_commodore_64_talk-Main

আপনাকে জানার জন্য প্রয়োজনীয় ক্লাসিক সবকিছুই এখানে বর্ণিত একটি ...

http://reprog.wordpress.com/2010/03/12/programming-books-part-3-programming-the-commodore-64/

আপনি আশেপাশে তাকালে আপনি সম্ভবত একটি পিডিএফ স্ক্যান খুঁজে পেতে পারেন।

আইএমও, 6502 জেড 80 এর চেয়ে সহজ, এবং 68000 8086 এর চেয়ে সহজ - আরও নিয়মিত নির্দেশিকা সেট ইত্যাদি etc.

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

সি 64 এর 6502 এর একটি বিশেষ সুবিধাটি হ'ল কেবল সিপিইউই সহজ নয়, তবে হার্ডওয়ারের সাথে হ্যাক-আশেপাশের খুব সহজ কিছু রয়েছে। আমি এসআইডি মিউজিক চিপটির সাথে চারপাশে খেলতে খুব মজা পেতাম।

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

এসেমবেলারে কাজ করা শিখতে পারেন এমন কয়েকটি দরকারী জিনিস ...

  • সিপিইউ কীভাবে কাজ নিবন্ধভুক্ত করে।
  • মেমরি ঠিকানার কাজ সহ কীভাবে কাজ করে,
  • সিপিইউ স্ট্যাক কীভাবে কাজ করে।
  • বিটওয়াইজ লজিক কীভাবে কাজ করে।
  • সিপিইউ কীভাবে আই / ও ডিভাইসগুলি নিয়ন্ত্রণ করে।
  • কীভাবে কাজে বাধা দেয়।

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

এখন most বিষয়গুলির বেশিরভাগটি জানা ঠিক কীভাবে দরকারী তা যদিও একটি কঠিন প্রশ্ন।

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

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

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

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

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

এটি তার জন্য আমার একটি প্রিয় বই ...

http://dickgrune.com/Books/MCD_1st_Edition/

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


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

1
আমি পরামর্শ দেব যে পিডিপি -11 এসেম্বলার উল্লিখিত অন্যান্যগুলির তুলনায় শিখতে কিছুটা সুন্দর। অন্যরা যা শিখায় সেগুলি হ'ল আরও সীমাবদ্ধ হার্ডওয়্যার রিসোর্স দ্বারা সীমাবদ্ধতা, এবং / অথবা আরও সীমিত হার্ডওয়্যার ডিজাইন এবং পূর্বাভাস দ্বারা। অতি সাধারণ একটি 5০৫১ পরিবারের মধ্যে এমন কিছু শেখায় যে প্রোগ্রামিং মডেলটি এমন সীমিত হার্ডওয়্যারটিতে কীভাবে সত্যই উদ্ভট হতে পারে (যেখানে স্টিভের বিভিন্ন ঠিকানা স্পেসের উল্লেখ যেমন উদাহরণস্বরূপ, খেলতে আসে)।
গ্রেগ এ উডস

@ গ্রেগ - আমি কখনই পিডিপি -11 এর সাথে খেলতে পারিনি, আমি ভয় করি। না একটি 8051 - আমি কিছু সময়ের জন্য কিছু এম্বেড থাকা কাজ করেছি, তবে এটি একটি 8096-পরিবার চিপ ব্যবহার করছে। আমি এখানে যদিও একবার আকর্ষণীয় - আকর্ষণীয় ছিল। আমি কিছু সময়ের আগে হার্ভার্ড আর্কিটেকচার সম্পর্কে শুনেছিলাম, তবে আমার কোনও ধারণা ছিল না এর মতো এমন কিছু আছে যা খুব জনপ্রিয় এবং এখনও ব্যবহৃত হচ্ছে in
স্টিভ 314

4

বিশ বছর আগে এটি গুরুত্বপূর্ণ ছিল, তবে এখন এতটা নয় - সফ্টওয়্যার এবং আধুনিক হার্ডওয়্যারগুলির মধ্যে অনেকগুলি বিমূর্ত স্তর রয়েছে।

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

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


হ্যাঁ, আপনি ঠিক বলেছেন, আমি সংকলকটির সাথে আরও উদ্বিগ্ন। এছাড়াও, একাধিক থ্রেড, একাধিক কোর ইত্যাদির বিষয়ে আপনার পরামর্শের জন্য THX এটি আমার টু লার্ন নোট ফাইলের মধ্যে চলে গেছে।
bev

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

@ স্কিথ - টিপটির জন্য ধন্যবাদ। আমি এটা মনে রাখব।
bev

4

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

আপনি যদি একটি ক্ষুদ্রতর পরিবর্তনকে ক্ষমা করেন: এটি কয়েক বছর আগে আমি উল্লেখ করেছি এমন কিছু সম্পর্কে মনে করিয়ে দেয়। কয়েক দশক আগে (১৯ 1970০ এর দশকের শেষের দিকে) বেশিরভাগ লোকেরা মনে করেছিল যে কম্পিউটারগুলি যাদুবিদ্যার এক ধাপ ছোট ছিল - পদার্থবিজ্ঞানের আইন দ্বারা খুব কমই প্রভাবিত হয়েছিল, এমন সমস্ত ধরণের বিষয় যা সামান্য সত্যিকার অর্থে তৈরি করেছিল, এবং এমনভাবে সক্ষম। সেই সময়, আমি লোকদের বোঝানোর জন্য বেশিরভাগ সময় ব্যয় করে (বেশিরভাগ অসফল) ব্যয় করেছি যে না, তারা যাদু ছিল না। এগুলি সত্যিই মোটামুটি সাধারণ মেশিন ছিল যা খুব দ্রুত এবং নির্ভরযোগ্যভাবে সীমিত সংখ্যক কাজ করেছিল, তবে অন্যথায় অত্যন্ত জাগতিক ছিল।

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

যদিও কম্পিউটার সম্পর্কে আমার দৃষ্টিভঙ্গি পরিবর্তন হয়েছে। আমি হট চিপস এ গিয়েছি এবং এর আগে মাইক্রোপ্রসেসর ফোরামটি 1990-এর দশকের মাঝামাঝি ফিরে যাবে। আমি সম্ভবত চেয়ে প্রোগ্রামারদের 99 কমপক্ষে% মাইক্রোপ্রসেসর হার্ডওয়্যার সম্পর্কে আরো জানতে - এবং বুদ্ধিমান আমি কি, আমি এই বলবো: তারা না আর সাধারণ। তারা কি প্রায় পদার্থবিদ্যা আইন ভঙ্গ করো না। আমি অনেক নিচু স্তর পরীক্ষা করেছি এবং আমি এটি নিশ্চিত করে বলতে পারি: সিপিইউ দ্বারা তৈরি করা মায়া কাটিয়ে ওঠা এবং হার্ডওয়্যার কীভাবে কাজ করে তা প্রায়শই অবিশ্বাস্যরকম কঠিন তা দেখানোর স্তরে পৌঁছেছি into আমি আশা করি যে কেবল মাত্র একটিটি সঠিকভাবে পরিমাপ করতে কেবল 4 টিরও কম লজিক বিশ্লেষক কেবলের নীচে সমাহিত কম্পিউটারের সাথে আমাদের একটি সেটআপের ছবি পোস্ট করতে পারতাম wish আধুনিক সিপিইউতে ক্যাচিং কীভাবে কাজ করে তার দিক (আমরা যা পরিমাপ করেছি তা সিপিইউ ঠিক কী করছিল তা নিশ্চিত করার জন্য কিছু সত্যবাদী প্রোগ্রামিংয়ের উল্লেখ না করা এবং অন্য কিছুই নয়)।


জেরি - আপনার মন্তব্যের জন্য ধন্যবাদ। EE হওয়ায় আমি কিছু উচ্চতর বিমূর্ত স্তরের তুলনায় ট্রানজিস্টর স্তরের সাথে আরও আরামদায়ক। আমি সত্যিই ভাবছি ভাল সি ++ প্রোগ্রামার হওয়ার জন্য আমার কী প্রয়োজন know
bev

ছবিটি আকর্ষণীয় মনে হচ্ছে। আপনি কেন এটি পোস্ট করতে পারবেন না?
ম্যাসন হুইলারের

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

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

1

বিভিন্ন ভাষা হার্ডওয়্যার থেকে বিমূর্ততার বিভিন্ন স্তরে কাজ করে। সি এবং সি ++ খুব নিম্ন স্তরের। অন্যদিকে, ভাষা স্ক্রিপ্ট করার জন্য অন্তর্নিহিত বিশদ সম্পর্কে আপনার কম জানা দরকার।

যাইহোক, আমি এখনও বলব যে সমস্ত ক্ষেত্রে, আপনি যত বেশি জানেন, একজন প্রোগ্রামার আপনার পক্ষে আরও ভাল। প্রোগ্রামিংয়ের অংশ একই সাথে বিমূর্ততার একাধিক স্তরকে জাগল করতে সক্ষম হয়।

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


স্কট - "একটি আধুনিক সিপিইউ কীভাবে কাজ করে তার একটি খুব ভাল বোঝার দ্বারা" ... আপনি কী বোঝাতে চেয়েছেন কীভাবে ডিজিটাল লজিক কাজ করে (উদাহরণস্বরূপ কার্নাহ মানচিত্র, সত্যের টেবিলগুলি এবং / অথবা / এনওআর / এক্সওর গেটস কীভাবে কাজ করে)? বা আপনার অর্থ সংকলক সরাসরি কী সংস্থানগুলি ব্যবহার করে (যেমন নিবন্ধগুলি)?
bev

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

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

@ স্কটউইটলক - ধন্যবাদ - এটি কেবলমাত্র সুনির্দিষ্ট সুপারিশগুলির সন্ধান যা আমি খুঁজছিলাম।
bev

0

আমি সি এর মতো উচ্চ স্তরের ভাষার ওভারাল নকশা সম্পর্কে একটি পয়েন্ট যুক্ত করতে চাই

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

সিএম প্রোগ্রামের ডিএমআরের কাগজ পোর্টিবিলিটি এবং ইউএনআইএক্স সিস্টেমটি সি এর জন্য (বিমূর্ত) মেশিনের মডেলটি নিয়ে আলোচনা করতে আমার প্রথম মনে পড়ে

আমি মনে করি সি এর ইতিহাস এবং বিকাশের বিষয়ে ডিএমআর এর কাগজটি ভাষার নকশাকে প্রকৃত হার্ডওয়্যারকে কীভাবে প্রভাবিত করে তা দেখানোর ক্ষেত্রেও অত্যন্ত দরকারী এবং সম্ভবত এটি প্রাথমিক প্রোগ্রামিং ভাষার নকশার উদাহরণ: সি ভাষার বিকাশ


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

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

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