উচ্চ পর্যায়ের বিকাশকারীদের পক্ষে অ্যাসেম্বলি অধ্যয়নের সময় কাটাওয়াই কি বুদ্ধিমানের কাজ? [বন্ধ]


33

এটা পরিষ্কার যে নিম্ন স্তরের স্টাফগুলির জ্ঞান আমাদের কাজের ক্ষেত্রে খুব গুরুত্বপূর্ণ।

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

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


এক পোস্টে প্রচুর প্রশ্ন :)
শামীম হাফিজ

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

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

উত্তর:


43

কেউ বিশ্বাস করতে পারেন না যে কেউ ডিবাগিংয়ের কথা উল্লেখ করেনি ...

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

কিন্তু আমি এখনও disassembler পর্যন্ত খুলতে পারে এবং দেখুন সেখানে কি আপনার উচ্চ পর্যায়ের যুক্তিবিজ্ঞান অবশেষে শেষ পর্যন্ত করছেন , এর উৎপত্তি খারাপ ডেটা ফিরে ট্রেস, যিনি FPU নিয়ন্ত্রণ রেজিস্টার পরিবর্তিত জানতে ...

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


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

3
এটির মূল প্রতিচ্ছবি হ'ল অপটিমাইজেশন। কমপ্লায়ার কীভাবে আপনার কোডটি অ্যাসেমব্লিতে অনুবাদ করে তা এটিকে নাটকীয়ভাবে দ্রুততর করতে আপনাকে সহায়তা করতে পারে তা জেনে!
lambacck

3
+1 এসেম্বলি হ'ল একমাত্র ভাষা যা আপনাকে বোঝাতে বাধ্য করে যে কোনও প্রসেসর আসলে কীভাবে কাজ করে। এটি আপনাকে উচ্চ স্তরের ভাষা দিয়ে আপনার বিকাশে সহায়তা করে। অবশ্যই পড়তে হবে: ব্লগস.এমএসডন.কম

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

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

15

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

আপনি যেমনটি বলেছেন, নিম্ন স্তরের স্টাফগুলির জ্ঞান গুরুত্বপূর্ণ, তবে সমাবেশে ব্যবহারিক জ্ঞান তা নয়।


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

11

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

এছাড়াও, মনে রাখবেন যে সমাবেশটি কোনও ভাষা নয়! এটি একটি জেনেরিক শব্দ, এর মূল অর্থ একটি প্রসেসরের নির্দেশ সেট যা প্রতীকী ভাষায় বিমূর্ত হয়ে যায়। বিভিন্ন প্রসেসরের বিভিন্ন নির্দেশিকা সেট থাকে এবং তাই বিভিন্ন সমাবেশের ভাষা assembly আপনি যখন 'সমাবেশ' শিখেন, তখন আপনি একটি প্রক্রিয়া শিখেন, কোনও ভাষা নয়।


8

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

কম্পিউটার সংস্থাপন এবং ডিজাইনের চেষ্টা করুন


1

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

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


1

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


1

আপনার দিকের সাথে সম্পর্কিত স্টাফগুলিতে মনোনিবেশ করা কি আরও যুক্তিসঙ্গত নয়? বা যাইহোক নিম্ন-স্তরের বেসিকগুলি শিখতে আপনার কিছুটা সময় ব্যয় করার কোনও কারণ আছে?

উত্তর:

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

0

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


0

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


0

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

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

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

Maths -> Physics                ->
      -> Chemistry -> Materials -> Hardware Design -> Microcode      -> Assembler
                                                   -> Bus Interfaces -> Peripherals

... Assembler    -> Low Level      -> High Level   ->
... OS / Drivers -> API Level      -> Applications -> User

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

সুতরাং: আপনার কি একটি উচ্চ স্তরের কোডার হিসাবে এসেম্বলার জানা দরকার?  এটা সাহায্য করবে.


0

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

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

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