বিটওয়াইজ অপারেটরদের ব্যাখ্যা করা কতটা কঠিন?
আমি এম্বেডেড সিস্টেমগুলি প্রোগ্রাম করি। আমি এই জিনিস প্রচুর অনুশীলন করেছি। কোড সহ হ্যাশ মানচিত্র সম্পর্কে আপনার লিঙ্কিত প্রশ্ন
static int hash(int h) {
// This function ensures that hashCodes that differ only by
// constant multiples at each bit position have a bounded
// number of collisions (approximately 8 at default load factor).
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);
}
কোডটি জোরে জোরে শোনার জন্য যতক্ষণ না আমার সম্পর্কে নির্ভুল ধারণা তৈরি হয়েছিল perfect বর্ণিত ঘটনাগুলি bitCount
তাত্ক্ষণিকভাবে পরিষ্কার, তবে এটি কেন বিটকে গণনা করে তা কার্যকর করতে এক মিনিট সময় নেয়। মন্তব্যগুলি দুর্দান্ত হবে, তবে কোডটি হ্যাশ সমস্যার তুলনায় কেবল কিছুটা শক্ত করে কী তা বোঝায়।
কোডটি পড়া এবং বোঝার মধ্যে পার্থক্য করা গুরুত্বপূর্ণ। আমি bitCount
কোডটি ব্যাখ্যা করতে পারি এবং এটি কী করে তা পড়তে পারি, তবে কেন এটি কাজ করে তা প্রমাণ করে বা এটি কাজ করেও এক মিনিট সময় নেয়। কোডটি মসৃণভাবে পড়তে পারা এবং কোডটি কেন এমনভাবে হয় তা ছাঁটাইতে সক্ষম হওয়ার মধ্যে পার্থক্য রয়েছে। কিছু অ্যালগরিদম কেবল শক্ত। কি এর hash
কোড অনুভূতি তৈরি, কিন্তু মন্তব্য ব্যাখ্যা কেন কৃতকর্মের হচ্ছে। যদি বিটওয়াইস অপারেটরগুলি ব্যবহার করে কোনও ফাংশন বোঝা শক্ত হয় তবে হতাশ হবেন না, তারা প্রায়শই ছদ্মবেশী গাণিতিক জিনিসগুলি ব্যবহার করেন যা বিন্যাসের কোনও কারণই নয় hard
একটি উপমা
আমি এই জিনিস অভ্যস্ত। একটি বিষয় যা আমি অভ্যস্ত নই তা হ'ল রেজেক্স। আমি তাদের সাথে মাঝে মাঝে স্ক্রিপ্টগুলি তৈরি করার বিষয়ে ডিল করি, তবে কখনই দৈনিক বিকাশের কাজে হয় না।
আমি জানি কীভাবে একটি রেজেক্সের নিম্নলিখিত উপাদানগুলি ব্যবহার করতে হয়:
[]
অক্ষর ক্লাস
- দ্য
*
, .
এবং +
ওয়াইল্ডকার্ডস
- স্ট্রিংয়ের শুরু এবং স্ট্রিংয়ের
^
সমাপ্তি$
- \ D, \ w এবং character এর অক্ষর শ্রেণি
- / জি পতাকা
এটি সাধারণ জিজ্ঞাসাগুলি তৈরির জন্য যথেষ্ট এবং আমি দেখছি এমন অনেকগুলি প্রশ্ন এ থেকে দূরে সরে যায় না।
এই তালিকায় কিছু নেই, আমি প্রতারণার শীটে পৌঁছেছি। আর কিছু বাদে - {}
এবং ()
ঠকানো শীট যথেষ্ট হবে না। আমি এই ছেলেরা সম্পর্কে জানতে যথেষ্ট জানি যে আমার একটি হোয়াইটবোর্ড, একটি রেফারেন্স ম্যানুয়াল এবং সম্ভবত সহকর্মী প্রয়োজন। আপনি কিছু ক্রেজি অ্যালগরিদমকে রেগেক্সের কয়েকটি স্বল্প লাইনে প্যাক করতে পারেন।
একটি রেইজেক্স ডিজাইন করতে যা আমার পরিচিত উপাদানগুলির তালিকায় নেই এমন যা কিছু প্রয়োজন বা প্রস্তাব দেয়, আমি সমস্ত শ্রেণীর ইনপুটগুলি তালিকাভুক্ত করব যা আমি প্রত্যাশা করি এবং সেগুলি পরীক্ষার স্যুটে রাখব expect আমি প্রচুর বিরতিযুক্ত পদক্ষেপ সহ ধীরে ধীরে এবং ক্রমবর্ধমানভাবে রেজেক্স তৈরি করতে যাচ্ছি, এবং উত্স নিয়ন্ত্রণে এই পদক্ষেপগুলি প্রতিশ্রুতিবদ্ধ করছি এবং / বা এগুলিকে একটি মন্তব্যে রেখেছি যাতে আমি বুঝতে পারি যে এটি ভেঙে যাওয়ার পরে কী হওয়ার কথা ছিল। যদি এটি প্রোডাকশন কোডে থাকে তবে আমি এটি নিশ্চিত করতে যাচ্ছি যে এটি আরও অভিজ্ঞতার সাথে কেউ পর্যালোচনা করে gets
আপনি কি এখানে বিটওয়াইজ অপারেটরদের সাথে আছেন?
আপনি ভাল বৃত্তাকার হতে চান?
আমার অনুমান অনুসারে, আপনি যদি কাগজের টুকরো টেনে বা হোয়াইটবোর্ডে গিয়ে এবং ম্যানুয়ালি ক্রিয়াকলাপটি চালিয়ে এই জাতীয় কোডটি কী করে তা ব্যাখ্যা করতে সক্ষম হন তবে আপনি যথাযথভাবে গোল করতে পারবেন। বিটওয়াইজ ক্রিয়াকলাপগুলির ক্ষেত্রে ভাল ভাল-গোলাকার প্রোগ্রামার হিসাবে যোগ্যতা অর্জনের জন্য আপনার চারটি জিনিস করতে সক্ষম হওয়া উচিত:
ফ্ল্যাশলি কমন অপারেশনগুলি পড়তে এবং লিখতে সক্ষম হন
অ্যাপ্লিকেশন প্রোগ্রামারটির জন্য, বিটওয়াইজ অপারেটরগুলির সাথে সাধারণ অপারেশনগুলির প্রাথমিক অপারেটরগুলি |
এবং &
সেট সেট করতে এবং পতাকা পরিষ্কার করতে অন্তর্ভুক্ত থাকে । এটি সহজ হওয়া উচিত। আপনার মতো স্টাফ পড়তে এবং লিখতে সক্ষম হওয়া উচিত
open('file', O_WRONLY | O_APPEND | O_CREAT );
// Use an OR operator ^ here and ^ here to set multiple flags
ধীর না করে (ধরে নিচ্ছেন যে পতাকাগুলি কী বোঝায় )।
কিছু কাজ করে আরও জটিল ক্রিয়াকলাপগুলি পড়তে সক্ষম হোন
শাখা ছাড়াই হে (লগ (এন)) সময়ে বিটগুলি গণনা করা সত্যিই দ্রুত, হ্যাশকোডের সংঘর্ষের সংখ্যা একটি সীমানা পরিমাণের সাথে পৃথক হতে পারে এবং ইমেল ঠিকানা , ফোন নম্বর , বা পার্সিং নিশ্চিত করে একটি রেইজেক্স সহ এইচটিএমএল কঠিন সমস্যা hard যারা এই অঞ্চলের বিশেষজ্ঞ নয় তাদের পক্ষে হোয়াইটবোর্ডের কাছে পৌঁছানো যুক্তিসঙ্গত, এটি বোঝার জন্য কাজ শুরু করতে অক্ষম হওয়া অযৌক্তিক।
প্রচুর কাজের সাথে কিছু জটিল অ্যালগরিদম লিখতে সক্ষম হোন
আপনি যদি বিশেষজ্ঞ না হন তবে আপনার জটিল এবং কঠিন স্টাফ করতে সক্ষম হওয়ার আশা করা উচিত নয়। তবে একটি ভাল প্রোগ্রামারকে এটি অবিচ্ছিন্নভাবে কাজ করে তা সম্পন্ন করতে সক্ষম হওয়া উচিত। এটি যথেষ্ট করুন, এবং আপনি শীঘ্রই বিশেষজ্ঞ হবেন :)