নিম্ন-স্তরের প্রোগ্রামিংয়ে এখনও ক্রিপ্টিক সংক্ষিপ্ত শনাক্তকারী এত সাধারণ?


64

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

কেন? পুরানো অভ্যাসগুলি ভেঙে দেওয়া কেবল শক্ত কারণেই বা এর থেকে আরও ভাল কারণ রয়েছে?

উদাহরণ স্বরূপ:

  • আতেল এটিএমইজিএ 32 ইউ 2 (2010?): TIFR1(পরিবর্তে TimerCounter1InterruptFlag), ICR1H(পরিবর্তে InputCapture1High), DDRB(পরিবর্তে DataDirectionPortB), ইত্যাদি
  • । নেট সিএলআর নির্দেশ সেট (2002): bge.s(পরিবর্তে branch-if-greater-or-equal.short), ইত্যাদি etc.

দীর্ঘ, অ-ক্রিপ্টিক নামগুলির সাথে কাজ করা সহজ নয়?


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

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

উচ্চ-স্তরের ভাষার বিপরীতে নিম্ন-স্তরের প্রোগ্রামিং সম্পর্কে মূল বিষয়টি কী আলাদা যা উচ্চ স্তরের প্রোগ্রামিং নয়, উচ্চ-স্তরের ভাষাগুলির বিপরীতে যে ক্ষুদ্র ক্রিপ্টিক নামগুলি আকাঙ্ক্ষিত করে তোলে?


82
উত্তর: আপনি নিম্ন স্তরের ভাষায় প্রোগ্রাম করছেন এমনটি অনুভূত করার জন্য।
থমাস এডিং

5
ক্রিপটিক আপেক্ষিক। JSRএটি প্রতিনিধিত্ব করে এমন অপকোডের চেয়ে তিনগুণ বেশি ( $20একটি 6502 এ) এবং এক নজরে বুঝতে যথেষ্ট সহজ।
ব্লারফ্লায়

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

4
@ জাগান: চেষ্টা করবেন set Accumulator32 to BaseIndex32? কেবল কিছু বেশি পঠনযোগ্য করার একমাত্র উপায় নয় traditionalতিহ্যগত সংক্ষিপ্ত বিবরণগুলি কেবল প্রসারিত করা।
টিমউই

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

উত্তর:


106

সফ্টওয়্যারটি সেই নামগুলি ব্যবহার করার কারণ হ'ল ডেটাশিটগুলি সেই নামগুলি ব্যবহার করে। যেহেতু সেই স্তরের কোডটি ডেটাশিট ছাড়াই বোঝা খুব কঠিন, সুতরাং আপনি যে ভেরিয়েবলের নাম অনুসন্ধান করতে পারবেন না তা তৈরি করা অত্যন্ত অসহনীয় he

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

ডাটাশিট থেকে টিআইএফআর 1 টেবিল

এছাড়াও স্কিমেটিক্স, পিন ডায়াগ্রাম এবং পিসিবি সিল্কস্ক্রেনের মতো জিনিসগুলি প্রায়শই জায়গার জন্য খুব জটিল থাকে।


7
এছাড়াও, এই উত্তরটি সত্যিকারের খাঁটি সফ্টওয়্যার
দিকটিকে বোঝায়

12
@ ক্রমিনস: আপনি যখন এই ড্যাটাশিটগুলির মাধ্যমে বাস্তবে পড়েন তখন তারা কেন এই সংক্ষিপ্ত নামগুলি ব্যবহার করেছিল তা কিছুটা স্পষ্ট। আমার হাতে থাকা একটি মাইক্রোকন্ট্রোলারের জন্য ডেটাশিটগুলি প্রায় 500 টি পৃষ্ঠাও সংক্ষিপ্ত নামগুলি জুড়ে ব্যবহার করার পরেও । যদি আমরা দীর্ঘ নাম ব্যবহার করি তবে টেক্সটগুলির প্রস্থটি বেশ কয়েকটি পৃষ্ঠাগুলি / স্ক্রিন বিস্তৃত করে রেফারেন্স ব্যবহারের জন্য এটিকে খুব অসুবিধে করে তুলবে।
সিলিকো

27
@ ক্রমিনস: দীর্ঘ নামগুলি সমানভাবে অনুসন্ধানযোগ্য, তবে সেগুলি "অ-নেটিভ"। আপনি এম্বেড থাকা প্রকৌশলীরা যদি শুনেন তবে তারা আসলে "টাইফার শূন্য" বলে, "টাইমার শূন্যের বিঘ্নিত পতাকা" নয়। আমি সন্দেহ করি যে ওয়েব বিকাশকারীরা তাদের পদ্ধতির নামগুলিতে HTTP, HTML বা JSON প্রসারিত করে ON
টিএমএন

6
@ কার্লবিলিফেল্ড এরি, কি? :) স্পষ্টতই আমি এটি বর্তমান ডেটাশিটে খুঁজে পাব না কারণ তারা পরিবর্তে সংক্ষিপ্ত নামের জন্য গিয়েছিল। এটি এই দাবিটিকে সমর্থন করে না যে সংক্ষিপ্ত নামগুলি সামান্যতম ক্ষেত্রে আরও সন্ধানযোগ্য ...
রোমান স্টারকভ

5
এটি কেবল ডেটাশিটই নয় যা স্থান-সীমাবদ্ধ sche এই সমস্ত যৌক্তিক উপাদানগুলির মধ্যে এমন নেতৃত্ব রয়েছে যা অন্যান্য উপাদানগুলির সাথে সংযুক্ত হওয়া দরকার। "টাইমারকাউন্টর 1 আন্তঃরফ্লাট ক্লেয়ার" একটি ছোট তারের উপস্থাপনার উপরে প্রায় "টিসিআইএফ.সি" উপস্থাপন করে না
এশেলি

60

জিপফের আইন

আপনি নিজেই এই টেক্সটটি দেখে পর্যবেক্ষণ করতে পারেন যে শব্দের দৈর্ঘ্য এবং ব্যবহারের ফ্রিকোয়েন্সি সাধারণভাবে, বিপরীতভাবে সম্পর্কিত। যে শব্দ খুব ঘন ঘন ব্যবহার করা হয়, মত it, a, but, you, এবং and, খুব ছোট যখন যে শব্দ কম প্রায়ই ব্যবহার করা হয় পছন্দ observe, comprehensionএবং verbosityলম্বা। ফ্রিকোয়েন্সি এবং দৈর্ঘ্যের মধ্যে এই পর্যবেক্ষিত সম্পর্কের নাম জিপফের আইন

প্রদত্ত মাইক্রোপ্রসেসরের জন্য নির্দেশে নির্দেশাবলীর সংখ্যার সংখ্যা সাধারণত কয়েক ডজন বা শত শততে থাকে। উদাহরণস্বরূপ, অ্যাটমেল এভিআর নির্দেশিকা সেটটিতে প্রায় একশ স্বতন্ত্র নির্দেশাবলী উপস্থিত রয়েছে (আমি গণনা করি নি) তবে এগুলির মধ্যে অনেকগুলি একটি সাধারণ থিমের বিভিন্নতা এবং খুব একই ধরণের স্মৃতিবিজ্ঞান রয়েছে। উদাহরণস্বরূপ, গুণটির নির্দেশাবলীর মধ্যে MUL, MULS, MULSU, FMUL, FMULS এবং FMULSU অন্তর্ভুক্ত রয়েছে। "বিআর" দিয়ে শুরু হওয়া নির্দেশগুলি শাখা, "এলডি" দিয়ে শুরু হওয়া নির্দেশগুলি বোঝা ইত্যাদি ইত্যাদি সাধারণ ধারণাটি পাওয়ার আগে আপনাকে খুব দীর্ঘ নির্দেশের তালিকার দিকে নজর দিতে হবে না: একই ভেরিয়েবলের ক্ষেত্রেও প্রযোজ্য: এমনকি জটিল প্রসেসরগুলি মানগুলি সংরক্ষণের জন্য কেবলমাত্র সীমিত সংখ্যক স্থান সরবরাহ করে: শর্তাদি রেজিস্টার, সাধারণ উদ্দেশ্যে নিবন্ধকরণ ইত্যাদি

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

অতিরিক্তভাবে, বিভিন্ন প্রসেসরের জন্য নির্দেশ সেটগুলি প্রায়শই অনুরূপ ক্রিয়াকলাপগুলির জন্য একই নাম ব্যবহার করে। বেশিরভাগ নির্দেশাবলী সেটগুলিতে ADD, MUL, SUB, LD, ST, BR, NOP এর জন্য ক্রিয়াকলাপ অন্তর্ভুক্ত থাকে এবং যদি তারা সঠিক নাম ব্যবহার না করে তবে তারা সাধারণত খুব কাছের নামগুলি ব্যবহার করে। একবার আপনি একটি নির্দেশিকা সেট জন্য স্মৃতিবিজ্ঞান শিখলে, অন্যান্য ডিভাইসের জন্য নির্দেশিকা সেটগুলির সাথে খাপ খাইয়ে নিতে খুব বেশি সময় লাগে না। তাই নাম আপনার কাছে মনে হতে পারে "রহস্যপূর্ণ" মত শব্দ হিসাবে সম্বন্ধে পরিচিত and, orএবং notপ্রোগ্রামারদের যারা নিম্ন স্তরের প্রোগ্রামিং শিল্পকলায় দক্ষ হয়। আমি মনে করি যে বেশিরভাগ লোক যারা সমাবেশ স্তরটিতে কাজ করেন তারা আপনাকে বলবেন যে কোডটি পড়া শিখাই নিম্ন স্তরের প্রোগ্রামিংয়ের বৃহত্তর চ্যালেঞ্জগুলির মধ্যে একটি নয়।


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

1
আপনার মন্তব্য এবং আপনার উদার বোনাস উভয়ের জন্য, @gnat, আপনাকে ধন্যবাদ।
কালেব

37

সাধারণভাবে

নামকরণের গুণাবলীর বর্ণনামূলক নাম থাকার ক্ষেত্রেই এটি অন্যান্য দিকগুলিও বিবেচনা করতে হয় না, এবং এটি সুপারিশগুলির দিকে বাড়ে:

  • যত বেশি বিশ্বব্যাপী সুযোগ হবে তত বেশি নাম বর্ণনামূলক হওয়া উচিত
  • যত বেশিবার এটি ব্যবহার করা হয় তত নামটি খাটো হওয়া উচিত
  • একই জিনিসটির জন্য সমস্ত প্রসঙ্গে একই নাম ব্যবহার করা উচিত
  • প্রসঙ্গটি আলাদা হলেও বিভিন্ন জিনিসের আলাদা আলাদা নাম থাকতে হবে
  • প্রকরণগুলি সহজেই সনাক্ত করা উচিত
  • ...

মনে রাখবেন যে এই পুনঃতফসিলগুলি পরস্পরবিরোধী।

নির্দেশনাশক

একটি সমাবেশ ভাষা প্রোগ্রামার হিসেবে ব্যবহার short-branch-if-greater-or-equalজন্য bge.sযখন আমি দেখতে চেয়ে একই ছাপ দেয়, একটি কম্পিউটারে কাজ করার একটি ভাষা প্রোগ্রামার গণনীয় জ্যামিতি করছেন, যেমন SUBSTRACT THE-HORIZONTAL-COORDINATE-OF-THE-FIRST-POINT TO THE-HORIZONTAL-COORDINATE-OF-THE-SECOND-POINT GIVING THE-DIFFERENCES-OF-THE-COORDINATE-OF-THE-TWO-POINTSপরিবর্তে dx := p2.x - p1.x। আমি কেবল সম্মত হতে পারি না যে আমি যত্ন সহকারে প্রসঙ্গগুলিতে প্রথমটি আরও পাঠযোগ্য।

নাম নিবন্ধন করুন

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


4
Is TIFR1চেয়ে সত্যিই একটি ভাল নামকরণ স্কীম InterruptFlag1যদিও, বা IptFlag1ছোট হতে যদি সত্যিই আছে?
টিমউই

4
@Timwi, InterruptFlagএবং IptFlagবেশী ভালো IFএকই ভাবে যে EnumerableInterfaceItfcEnumerableচেয়ে ভাল IEnumerable
এপ্রোগ্রামার

@ প্রোগ্রামার: আমি আপনার উত্তর এবং আপনার মন্তব্যকে সেরা বিবেচনা করি এবং আমি যদি এটি করতে পারি তবে আমি এটি গ্রহণযোগ্য হিসাবে চিহ্নিত করব। যারা বিশ্বাস করেন যে কেবল শারীরিক সীমাবদ্ধতা সংক্ষিপ্ত নামগুলি নির্দেশ করে তারা ভুল। এই আলোচনা আপনার জন্য আকর্ষণীয় হবে 37signals.com/svn/posts/...
alpav

5
@ পালাভ আপনি কি বুঝতে পারছেন যে আপনার লিঙ্কটি এই উত্তরটির বিপরীতে যুক্তি দেখায়? যদি কিছু হয় তবে এটি InterruptFlag1আরও ভাল স্পষ্টতার কারণে সম্পূর্ণ সমর্থন করে ।
রোমান স্টারকভ

24

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

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

যতদূর bge.s, এটি এসেম্বলারের অনুরূপ - খুব কম লোক যাদের জানা দরকার তাদের পক্ষে কম পাঠযোগ্য less আপনি যদি মাথা ঘুরিয়ে নিতে না পারেন bge.sএবং ভাবেন branch-if-greater-or-equal.shortযে কোনও পার্থক্য আসবে - আপনি কেবল সিএলআরের সাথে খেলছেন এবং এটি জানেন না।

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

সংক্ষিপ্তসার - সংক্ষিপ্ত সংক্ষিপ্ত পরিবর্তনশীল নামগুলি যা শিল্প রীতি এবং হার্ডওয়্যার ডেটা শীটের মতো একটি বাহ্যিক প্রভাব প্রতিফলিত করে। সফ্টওয়্যার অভ্যন্তরীণ সংক্ষিপ্ত সংক্ষিপ্ত পরিবর্তনশীল নাম সাধারণত কম আকাঙ্ক্ষিত হয়।


আপনি "bge.s" রক্ষার জন্য যে যুক্তিটি ব্যবহার করেন তা যদি আমি বুঝতে পারি তবে যাঁদের TIFR1এটির জানা দরকার, তাঁদের পক্ষে কি আরও পাঠযোগ্য TimerCounter1InterruptFlag?
রোমান স্টারকভ

2
@ ক্রমিনস: একেবারে - এই ক্ষেত্রে কম বেশি .... সিএনটিআর এর বিপরীতে যার অর্থ "কাউন্টার", "নিয়ন্ত্রণ", "রুট ট্রেস করতে পারে না" ইত্যাদি হতে পারে, টি 1 এফআর 1 যথার্থ সংজ্ঞায়িত অর্থ।
mattnz

"আপনি যদি bge.s এর আশেপাশে মাথা না পেতে পারেন এবং শাখা-যদি-বৃহত্তর-বা-সমান মনে করেন ort আমি যে বিষয়ে জানি না. আমি x86 অ্যাসেম্বলিটি বেশ ভালভাবে বুঝতে পারি, তবে যতবার আমি একটি লুপ লিখি, আমাকে সমস্ত j?নির্দেশাবলীর অর্থ কী তা সন্ধান করতে হবে । আরও স্পষ্টত-নামযুক্ত নির্দেশনাটি আমাকে অবশ্যই সহায়তা করবে। তবে সম্ভবত আমি নিয়মের চেয়ে ব্যতিক্রম। তুচ্ছ বিবরণ মনে রাখতে আমার সমস্যা হয়।
কোডি গ্রে

11

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

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

তাহলে ক্রিপ্টিক সংক্ষিপ্ত শনাক্তকরণগুলি নিম্ন-স্তরের প্রোগ্রামিংয়ে এত সাধারণ কেন?

  • কারণ তাদের মধ্যে অনেকগুলি স্বল্প নামের জন্য ওয়ারেন্ট দেওয়ার জন্য স্বতন্ত্র ডোমেনে যথেষ্ট সাধারণ। এটি শেখার বক্ররেখাটিকে আরও খারাপ করে, তবে ব্যবহারের ফ্রিকোয়েন্সি দেওয়া হলেও এটি একটি উপযুক্ত বাণিজ্য off
  • কারন সাধারণত একটি হল ছোট সম্ভাবনার যে সেট সংশোধন (প্রোগ্রামার সেট যোগ করতে পারবেন না)।
  • কারণ পাঠযোগ্যতা অভ্যাস এবং অনুশীলনের বিষয় a branch-if-greater-than-or-equal.shortহয় প্রাথমিকভাবে চেয়ে বেশি পাঠযোগ্য bge.s, কিন্তু কিছু অনুশীলন সঙ্গে ঘটনাটি বিপরীত হয়ে যায়।
  • কারণ এগুলি প্রায়শই হাতে টাইপ করে পুরো টাইপ করতে হয়, কারণ নিম্ন স্তরের ভাষাগুলি প্রায়শই শক্তিশালী আইডিইগুলির সাথে আসে না যা ভাল স্বয়ংক্রিয়ভাবে পূর্ণ হয়, বা একটি / সি নির্ভরযোগ্য নয়।
  • কারণ শনাক্তকারীতে অনেক সময় প্রচুর তথ্য প্যাক করা বাঞ্ছনীয়, এবং একটি পঠনযোগ্য নামটি উচ্চ-স্তরের মানের দ্বারাও অগ্রহণযোগ্য দীর্ঘ হবে।
  • কারণ এটি হ'ল নিম্ন-স্তরের পরিবেশ historতিহাসিকভাবে দেখায়। অভ্যাস ভাঙার জন্য সচেতন প্রচেষ্টা প্রয়োজন, যারা পুরানো উপায়গুলি পছন্দ করেছেন তাদের বিরক্ত করার ঝুঁকি চালায়, এবং অবশ্যই উপযুক্ত হিসাবে ন্যায়সঙ্গত হতে হবে। প্রতিষ্ঠিত পথে আটকে থাকা "ডিফল্ট"।
  • কারণ তাদের অনেকের উদ্ভব অন্য কোথাও, যেমন স্কিম্যাটিক্স এবং ডেটাশিট। এগুলি, পরিবর্তে স্থানের সীমাবদ্ধতায় প্রভাবিত হয়।
  • কারণ নামকরণের দায়িত্বে থাকা লোকেরা কখনও পঠনযোগ্যতা বিবেচনা করেনি বা বুঝতে পারে না যে তারা কোনও সমস্যা তৈরি করছে, বা অলস।
  • কারণ কিছু ক্ষেত্রে নামগুলি ডেটা আদান প্রদানের জন্য একটি প্রোটোকলের অংশে পরিণত হয়েছে , যেমন কিছু সংকলক দ্বারা অন্তর্বর্তী উপস্থাপনা হিসাবে সমাবেশ ভাষা ব্যবহার।
  • কারণ এই স্টাইলটি তাত্ক্ষণিকভাবে নিম্ন-স্তরের হিসাবে স্বীকৃত এবং এটি গিক্সকে দুর্দান্ত দেখায়।

আমি ব্যক্তিগতভাবে অনুভব করি যে এগুলির মধ্যে কিছু নতুন কারণে এই নামকরণ শৈলীটি বেছে নেওয়ার কারণগুলিতে আসলে অবদান রাখে না, তবে আমি অনুভব করেছি যে এই ধরণের উত্তরে কিছু ধারণা ফিল্টার করা ভুল হবে।


10

আমি এই গন্ডগোলের মধ্যে আমার টুপি টস করতে যাচ্ছি।

উচ্চ স্তরের কোডিং কনভেনশন এবং মানগুলি নিম্ন স্তরের কোডিং মান এবং অনুশীলনের মতো নয়। দুর্ভাগ্যক্রমে, এগুলির বেশিরভাগ হ'ল লিগ্যাসি কোড এবং পুরাতন চিন্তার প্রক্রিয়াগুলি থেকে প্রাপ্ত।

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

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

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

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


1
আমি অনুভব করি যে "আমরা ক্রিপ্টিক নামগুলি ব্যবহার করব কারণ এটি হ'ল নিম্ন স্তরের প্রোগ্রামিংগুলিকে এমন মনে করে" এবং "আমরা ক্রিপ্টিক নামগুলি ব্যবহার করব কারণ এটি নিম্ন স্তরের প্রোগ্রামিংয়ের কনভেনশন" প্রায় একই রকম, সুতরাং +১ আমার কাছ থেকে এবং আমি এটি প্রাথমিকভাবে গ্রহণ করেছি তার একটি কম প্রদাহজনক রূপ হিসাবে গ্রহণ করার বিষয়ে চিন্তা করব ।
রোমান স্টারকভ

6
রসায়নবিদদের রেফারেন্সের জন্য +1 এটি প্রোগ্রামিংয়ের পৃথক পৃথক অঞ্চলের জন্য একটি ভাল উপমা তৈরি করে।

4
+1 আমি আরও বুঝতে পারি না কেন লোকেরা "জল" এর মতো সংক্ষিপ্ত, গুপ্ত নামগুলি ব্যবহার করে যদি সেখানে আরও বেশি পঠনযোগ্য "ডিহাইড্রোজেন অক্সাইড" থাকে
ইনগো

6

তারা ক্রিপ্টিক সংক্ষিপ্ত শনাক্তকারী ব্যবহার করার একটি কারণ এটি বিকাশকারীদের জন্য ক্রিপ্টিক নয়। আপনাকে বুঝতে হবে যে তারা এটির সাথে প্রতিদিন কাজ করে এবং সেই নামগুলি আসলে ডোমেনের নাম। তাই তারা টিআইএফআর 1 এর অর্থ কী তা হৃদয় দিয়ে জানে know

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

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

আমি বলব যে তারা সাধারণত খারাপ অভ্যাসের কারণে তা করে থাকে যখন কম্পাইলাররা আপনার টাইপ করা সমস্ত কিছু স্বয়ংক্রিয়ভাবে পূর্ণ করে না।


5

সারাংশ

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

ক্রিপ্টিক নামগুলির কারণ:

  1. নিম্ন-স্তরের নির্দেশাবলী দৃ strongly়ভাবে টাইপ করা হয়
  2. নিম্ন-স্তরের নির্দেশের নামে প্রচুর ধরণের তথ্য প্যাক করা দরকার
  3. .তিহাসিকভাবে, একক-অক্ষর কোডগুলি ধরণের তথ্য প্যাকিংয়ের পক্ষে হয়।

সমাধান এবং তাদের ত্রুটিগুলি:

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

পুরো উত্তর

(ক) দীর্ঘ নামগুলি সম্ভব। উদাহরণস্বরূপ, সি ++ এসএসই 2 অন্তর্ভুক্তির নামগুলি অ্যাসেম্বলি মিমোনিকের 7 টি অক্ষরের তুলনায় গড় 12 টি অক্ষরের নাম। http://msdn.microsoft.com/en-us/library/c8c5hx3b(v=vs.80).aspx

(খ) এরপরে প্রশ্নটি আরও এগিয়ে যায়: নিম্ন স্তরের নির্দেশাবলী থেকে একজনকে কতক্ষণ / অ-নিরীক্ষণ প্রয়োজন?

(গ) এখন আমরা এই জাতীয় নামকরণের স্কিমগুলির সংশ্লেষ বিশ্লেষণ করি। নীচে একই নিম্ন-স্তরের নির্দেশের জন্য দুটি নামকরণের পরিকল্পনা রয়েছে :

  • নামকরণের স্কিম # 1: CVTSI2SD
  • নামকরণ প্রকল্প # 2: __m128d _mm_cvtsi32_sd (__m128d a, int b);

(সি .১) নিম্ন-স্তরের নির্দেশাবলী সর্বদা দৃ strongly়ভাবে টাইপ করা হয়। অস্পষ্টতা, টাইপ অনুমান, স্বয়ংক্রিয় টাইপ রূপান্তর, বা ওভারলোডিং (নির্দেশের নামের পুনরায় ব্যবহার অনুরূপ তবে অ-সমতুল্য অপারেশনগুলি বোঝাতে) থাকতে পারে না।

(সি .২) প্রতিটি নিম্ন-স্তরের নির্দেশাবলীর অবশ্যই তার নামে প্রচুর ধরণের তথ্য এনকোড করতে হবে। তথ্যের উদাহরণ:

  • আর্কিটেকচার পরিবার
  • অপারেশন
  • যুক্তি (ইনপুট) এবং আউটপুট
  • প্রকারগুলি (স্বাক্ষরিত পূর্ণসংখ্যা, স্বাক্ষরযুক্ত পূর্ণসংখ্যা, ভাসা)
  • যথার্থতা (বিট প্রস্থ)

(সি.3) প্রতিটি তথ্যের বানানটি যদি বানানো হয় তবে প্রোগ্রামটি আরও ভার্জোজ হবে।

(সি .৪) বিভিন্ন বিক্রেতাদের দ্বারা ব্যবহৃত টাইপ-এনকোডিং স্কিমগুলির দীর্ঘ historicalতিহাসিক শিকড় ছিল। উদাহরণস্বরূপ, x86 নির্দেশিকায়:

  • বি মানে বাইট (8-বিট)
  • ডাবলীর অর্থ শব্দের (16-বিট)
  • ডি অর্থ "ডাবল-ওয়ার্ড" (32-বিট)
  • Q এর অর্থ কিওয়ার্ড "কোয়াড-ওয়ার্ড" (-৪-বিট)
  • ডিকিউ অর্থ ডিকুওয়ার্ড "ডাবল-কোয়াড-শব্দ" (128-বিট)

এই historicalতিহাসিক রেফারেন্সগুলির কোনও আধুনিক অর্থ ছিল না, তবে এখনও এটি চারপাশে আঁকড়ে ধরে। আরও একটি সামঞ্জস্যপূর্ণ স্কিমটি বিট-প্রস্থের মান (8, 16, 32, 64, 128) নামে .ুকিয়ে দিত।

বিপরীতে, এলএলভিএম নিম্ন-স্তরের নির্দেশাবলীতে ধারাবাহিকতার দিকের একটি সঠিক পদক্ষেপ: http://llvm.org/docs/LangRef.html#funtions

(ডি) নির্দেশনা নামকরণের পরিকল্পনা নির্বিশেষে, নিম্ন-স্তরের প্রোগ্রামগুলি ইতিমধ্যে ভার্জোজ এবং বোঝা শক্ত কারণ তারা কার্যকর করার মিনিটের বিশদটিতে ফোকাস করে। নির্দেশের নামকরণের স্কিমটি পরিবর্তন করা লাইন-টু-লাইন স্তরে পাঠযোগ্যতা উন্নত করবে, তবে কোডের একটি বড় অংশের ক্রিয়াকলাপ বোঝার অসুবিধা দূর করবে না।


1
উন্নত লাইন-টু-লাইন পঠনযোগ্যতা অগত্যা পুরো জিনিসটি বোঝার জন্য কিছুটা প্রভাব ফেলবে, তবে একা নামকরণ করা অবশ্যই এটি তুচ্ছ করতে পারে না।
রোমান স্টারকভ

3
এছাড়াও, অফ-টপিকের মতো, তবে বা এর CVTSI2SDচেয়ে বেশি কোনও তথ্য বহন করে না , তবে পরবর্তীকালে তা তাত্ক্ষণিকভাবে স্বীকৃতিযোগ্য, যেখানে প্রাক্তনটিকে অবশ্যই ConvertDword2DoubleConvInt32ToFloat64
অনর্থক ঘোষণা করা

2

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

ওপকোড এবং নাম নিবন্ধনের ক্ষেত্রে দীর্ঘ নামগুলি আসলে পাঠযোগ্যতার ক্ষতি করে। সংক্ষিপ্ত স্মৃতিবিজ্ঞান কোনও যোগাযোগ প্রোটোকলের জন্য (সংকলক এবং সংশ্লেষের মধ্যে) জন্য ভাল, এবং সমাবেশ ভাষা বেশিরভাগ সময় যোগাযোগ প্রোটোকল। সংকলক কোডটি পড়া সহজ, যেহেতু সংক্ষিপ্ত স্মৃতিবিজ্ঞান প্রোগ্রামারদের জন্য আরও ভাল।


আপনার যদি স্থান বাঁচাতে হয়, কেবল এটিকে জিপ করুন! ... আপনার যদি ওভারহেডের প্রয়োজন না হয় তবে পরিবর্তে বাইনারি বিন্যাসটি ব্যবহার করুন! আপনি যদি পাঠ্যটি ব্যবহার করছেন, আপনি পড়ার জন্য লক্ষ্য রেখে চলেছেন - তবে কেন পুরো পথটি না গিয়ে এটিকে সঠিকভাবে পাঠযোগ্য করে তুলবেন না?
রোমান স্টারকভ

2
@ ক্রমিন, দুটি স্থানীয় প্রক্রিয়ার মধ্যে একটি পাঠ্য-ভিত্তিক যোগাযোগ প্রোটোকল সংকোচন করছেন? এটা নতুন কিছু। বাইনারি প্রোটোকলগুলি অনেক কম শক্তিশালী। এটি একটি ইউনিক্স উপায় - পাঠ্য-ভিত্তিক প্রোটোকলগুলি মাঝে মধ্যে পাঠযোগ্যতার জন্য রয়েছে। এগুলি কেবল যথেষ্ট পাঠযোগ্য।
এসকে-যুক্তি

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

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

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

1

বেশিরভাগ ক্ষেত্রে এটি মূর্খ। @ টিএমএন যেমন অন্য কোথাও বলেছে, ঠিক যেমন আপনি লেখেন না import JavaScriptObjectNotationবা import HypertextTransferProtocolLibraryপাইথনে, আপনি Timer1LowerHalf = 0xFFFFসি তে লিখেন না এটি প্রসঙ্গে একইভাবে হাস্যকর বলে মনে হচ্ছে। যাদের জানা দরকার তারা ইতিমধ্যে জানে।

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

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

volatile char MAGIC_REGISTER @ 0x7FFFABCD;

এখন অস্তিত্বের একমাত্র আইডিই হ'ল এটি হাইটেকের নিজস্ব আইডিই ( হাইটাইড )। অন্য কোনও সম্পাদকে, আপনাকে এটিকে ম্যানুয়ালি, মেমোরি থেকে, প্রতিবার টাইপ করতে হবে। এটি খুব দ্রুত পুরানো হয়।

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

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


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

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

@romkyns - এছাড়াও, একটি বিশুদ্ধরূপে ব্যবহারিক অর্থে, আমি মনে করি সি # কিছু মাইক্রোপ্রসেসর এর আইডিই এবং আবেদন উন্নয়নে রেজিস্টার একটা টেবিল মধ্যে পার্থক্য এই: UP রেজিস্টার একটা টেবিল অনুযায়ী প্রদর্শিত হবে: Timer1InterruptFlag, Timer2InterruptFlag, ..., Timer9InterruptFlag, IOPortAToggleMask, IOPortBToggleMask, ইত্যাদি x100। উচ্চ স্তরের ভাষায় আপনি এমন ভেরিয়েবলগুলি ব্যবহার করবেন যা আরও অনেক বেশি পৃথক হয় ... বা আপনি আরও কাঠামো ব্যবহার করবেন। Timer1InterruptFlagতুলনায় 75% অপ্রয়োজনীয় শব্দ T1IF। আমি মনে করি না যে আপনি সি # তে ভেরিয়েবলের একটি বিশাল তালিকা তৈরি করবেন যা সবেমাত্র এর চেয়ে আলাদা।
স্পষ্টভাবে

1
@ ক্রমকিন্স - আপনি যে বিষয়ে সচেতন হতে পারেন তা হ'ল আপনার বর্ণনার দিকে কিছুটা পরিবর্তন এসেছে। মাইক্রোচিপের সাম্প্রতিক সংকলকগুলি এমন লাইব্রেরিগুলির সাথে আসে যা কেবল রেজিস্ট্রিগুলির চেয়ে অনেক বেশি ভার্বোস এবং বর্ণনামূলক। UARTEnable(UART1, BITS_8, PARITY_N, STOP_1, BAUD_115200)। তবে এগুলি এখনও অবিশ্বাস্যরূপে আড়ম্বরপূর্ণ এবং এগুলি অনেকগুলি দিকনির্দেশ এবং অদক্ষতার সাথে জড়িত। আমি যেখানে সম্ভব সেখানে সেগুলি ব্যবহার করার চেষ্টা করি, তবে বেশিরভাগ সময় আমি রেজিস্ট্রি ম্যানিপুলেশনকে আমার নিজের কার্যগুলিতে গুটিয়ে রাখি এবং এটি উচ্চ-স্তরের যুক্তি থেকে কল করি।
স্পষ্টভাবে

@ বিশদভাবে: সিসিএস সংকলকটিতে এ জাতীয় পদ্ধতি ছিল এবং অন্য কিছু প্রসেসরও তা করতে পারে। আমি সাধারণত তাদের অপছন্দ করি। রেজিস্টার স্পেসটি রেজিস্টারগুলিকে ব্যবহার করে এমন কোড লেখার জন্য যথেষ্ট এবং এটি রেজিস্টারগুলি কী করে তা দেখার জন্য রেজিস্টার ব্যবহার করে এমন কাউকে কোড পড়তে দেওয়া যথেষ্ট। যদি একটি হার্ডওয়্যার প্রেসক্যালারের কাছে এন এর মান লেখার কাজটি সময়কালকে N + 1 নির্ধারণ করে (বেশ সাধারণ), তবে এর সঠিক অর্থ IMHO হ'ল set_prescalar(TMR4,13);তার চেয়ে অনেক কম স্পষ্ট TMR4->PSREG=12;। প্রথম কোডটি কী করে তা
সন্ধানের

1

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

  1. প্রোগ্রামারটির বৈজ্ঞানিক পটভূমি।
  2. প্রোগ্রামার প্রোগ্রামিং দক্ষতা।
  3. প্রোগ্রামার পরিবেশ।

আমি মনে করি নিম্ন স্তরের বা উচ্চ স্তরের প্রোগ্রামিং সম্পর্কে আলোচনার কোনও লাভ নেই। একেবারে শেষের দিকে এটি সর্বদা পূর্বের তিনটি দিক থেকে পিন করা যায়।


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

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

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


কেউ অলসতার কথা উল্লেখ করেনি - কারণ এটি এখানে প্রাসঙ্গিক নয়। আর যে অন্যান্য বিজ্ঞান নিয়ে আলোচনা করা হয় না ওহ সহজ: না করার জন্য এই সাইটের আলোচনা । এটা তোলে জন্য প্রশ্ন ও উত্তর
মশা

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