আমি মনে করি এটি তিনটি অর্জন করা কঠিন। আমি মনে করি দু'টি সম্ভব! উদাহরণস্বরূপ, আমি মনে করি কিছু ক্ষেত্রে দক্ষতা এবং পাঠযোগ্যতা অর্জন করা সম্ভব তবে মাইক্রো-টিউন কোড সহ রক্ষণাবেক্ষণ শক্ত হতে পারে be গ্রহের সবচেয়ে দক্ষ কোডটি সাধারণত রক্ষণাবেক্ষণ এবং পঠনযোগ্যতা উভয়েরই অভাব বোধ করবে যা সম্ভবত বেশিরভাগের কাছেই স্পষ্ট, যদি না আপনি এমন ধরণের হন যে হাতটি SoA- ভেক্টরাইজড, মাল্টিথ্রেডেড সিমডি কোডটি বুঝতে পারে যা ইনট ইনলাইনড অ্যাসেম্বলি দিয়ে লিখেছেন বা সর্বাধিক কাটিয়া মাত্র 2 মাস আগে প্রকাশিত 40-পৃষ্ঠার গাণিতিক গবেষণাপত্র এবং একটি অবিশ্বাস্যভাবে জটিল ডাটা স্ট্রাকচারের জন্য 12 লাইব্রেরি কোডের মূল্য সহ শিল্পে ব্যবহৃত অ্যালগরিদম।
মাইক্রো-দক্ষতা
একটি জিনিস যা আমি জনগণের মতামতের বিপরীতে হতে পারি তা হ'ল হ'ল স্মার্ট টেকসই অ্যালগরিদমিক কোডটি প্রায়শই সর্বাধিক মাইক্রো-সুরযুক্ত সোজা আলগোরিদমের চেয়ে বজায় রাখা আরও কঠিন। এই ধারণাটি যে স্কেলাবিলিটি উন্নতি হ'ল মাইক্রো-টিউনড কোডের (অর্থাত: ক্যাশে-বান্ধব অ্যাক্সেস প্যাটার্নস, মাল্টিথ্রেডিং, সিমডি ইত্যাদির জন্য) আরও বেশি পরিমাণে ঝাঁকুনি দেয় যা আমি চ্যালেঞ্জ জানাতে চাই, কমপক্ষে অত্যন্ত জটিল একটি শিল্পে ভরা শিল্পে কাজ করেছি ডেটা স্ট্রাকচার এবং অ্যালগরিদম (ভিজ্যুয়াল এফএক্স শিল্প), বিশেষত জাল প্রসেসিংয়ের মতো অঞ্চলে, কারণ ঠাঁই বড় হতে পারে তবে আপনি যখন নতুন অ্যালগরিদম এবং ডেটা স্ট্রাকচার প্রবর্তন করেন তখন ব্যাকটি অত্যন্ত ব্যয়বহুল হয় কারণ তারা ব্র্যান্ড হওয়ার আগে কেউ এর আগে কখনও শুনেনি of নতুন। আরও, আমি '
সুতরাং এই ধারণাটি যে অ্যালগোরিদমিক অপ্টিমাইজেশন সর্বদা ট্রাম্প করে, বলে, মেমরির অ্যাক্সেসের ধরণগুলির সাথে সম্পর্কিত অপ্টিমাইজেশানগুলি সর্বদা এমন একটি বিষয় যা আমি যথেষ্টভাবে একমত না। অবশ্যই আপনি যদি বুদ্বুদ বাছাই ব্যবহার করেন তবে কোনও পরিমাণে মাইক্রো-অপ্টিমাইজেশন আপনাকে এখানে সহায়তা করতে পারে না ... তবে কারণগুলির মধ্যে, আমি মনে করি না এটি সর্বদা এত পরিষ্কার। এবং যুক্তিযুক্তভাবে অ্যালগরিদমিক অপ্টিমাইজেশানগুলি মাইক্রো-অপ্টিমাইজেশনের চেয়ে বজায় রাখা আরও বেশি কঠিন difficult আমি এটি রক্ষণাবেক্ষণ করতে আরও সহজ খুঁজে পেয়েছি, বলুন, ইন্টেলের এমব্রি যা একটি ক্লাসিক এবং সোজা বিভিএইচ অ্যালগরিদম নেয় এবং কেবল অ্যালগরিদম ত্বক তরল সিমুলেশনকে কাটানোর জন্য ড্রিম ওয়ার্কের ওপেনভিডিবি কোডের চেয়ে ক্রেপটিকে মাইক্রো-সুর দেয়। কমপক্ষে আমার শিল্পে, আমি কম্পিউটার আর্কিটেকচারের সাথে পরিচিত আরও বেশি লোককে আরও মাইক্রো-অপ্টিমাইজ করতে দেখতে দেখতে চাই, যেমনটি ইন্টেল যখন দৃশ্যে পা রেখেছিল, হাজার হাজার এবং হাজার হাজার নতুন অ্যালগরিদম এবং ডেটা স্ট্রাকচারের বিপরীতে। কার্যকর অণু-অপ্টিমাইজেশনের মাধ্যমে, লোকেরা নতুন অ্যালগরিদম উদ্ভাবনের সম্ভাব্য কম এবং কম কারণগুলি খুঁজে পেতে পারে।
আমি আগে একটি লিগ্যাসি কোডবেজে কাজ করেছি যেখানে প্রায় প্রতিটি একক ব্যবহারকারীর নিজস্ব অনন্য ডেটা কাঠামো এবং এর পিছনে অ্যালগরিদম ছিল (শত শত বহিরাগত ডেটা স্ট্রাকচার যুক্ত করে)। এবং তাদের বেশিরভাগের অত্যন্ত দক্ষতার বৈশিষ্ট্য ছিল খুব সংকীর্ণভাবে প্রযোজ্য। সিস্টেমটি যদি আরও কয়েক ডজন আরও ব্যাপকভাবে প্রয়োগযোগ্য ডেটা স্ট্রাকচারের চারপাশে ঘুরতে পারে তবে এটি এত সহজ হত এবং আমি মনে করি যে তারা যদি আরও ভালভাবে মাইক্রো-অপ্টিমাইজড হয় তবে এমনটিই ঘটতে পারত। আমি এই কেসটি উল্লেখ করছি কারণ মাইক্রো-অপ্টিমাইজেশন সম্ভাব্যভাবে রক্ষণাবেক্ষণের ক্ষেত্রে এ জাতীয় ক্ষেত্রে যথেষ্ট উন্নতি করতে পারে যদি এর অর্থ শত শত মাইক্রো-হতাশাজনক ডেটা স্ট্রাকচারের মধ্যে পার্থক্য যা কেবলমাত্র কঠোর পঠন-কেবলমাত্র উদ্দেশ্যে ব্যবহার করা যায় না যা ক্যাশে বাম হাতছাড়া করে এবং ডান বনাম
কার্যকরী ভাষা
ইতোমধ্যে বেশিরভাগ রক্ষণাবেক্ষণযোগ্য কোডের মুখোমুখি হয়েছি যেগুলি কার্যকরী ভাষায় রচিত হওয়ায় যুক্তিযুক্ত দক্ষ কিন্তু পড়া খুব কঠিন। সাধারণভাবে পাঠযোগ্যতা এবং উবার রক্ষণাবেক্ষণযোগ্যতা আমার মতে বিরোধী ধারণা।
কোডটি পঠনযোগ্য, এবং বজায় রাখতে সক্ষম, এবং একসাথে সমস্ত দক্ষ করা সত্যিই শক্ত। সাধারণত আপনাকে সেই তিনজনের মধ্যে একটিতে কিছুটা হলেও আপস করতে হবে যেমন দু'টি নয় তবে রক্ষণাবেক্ষণের জন্য পাঠযোগ্যতার সাথে আপোস করা বা দক্ষতার জন্য রক্ষণাবেক্ষণের সাথে আপস করতে হবে। আপনি যখন অন্য দু'জনের প্রচুর সন্ধান করেন তখন এটি সাধারণত রক্ষণাবেক্ষণের মুখোমুখি হয়।
পঠনযোগ্যতা বনাম রক্ষণাবেক্ষণ
Now এর মত বলল, আমি বিশ্বাস করি পাঠযোগ্যতা এবং maintainability হয় না সুরেলা ধারণা। সর্বোপরি, আমাদের বেশিরভাগ পাঠযোগ্য কোড মানব চিন্তার নিদর্শনগুলির জন্য খুব স্বজ্ঞাত মানচিত্রের মানচিত্র, এবং মানব চিন্তার নিদর্শনগুলি সহজাতভাবে ত্রুটি-প্রবণ: " যদি এটি ঘটে থাকে তবে এটি করুন If যদি তা ঘটে থাকে তবে তা করুন Otherwise অন্যথায় এটি করুন O ওফ! , আমি কিছু ভুলে গেছি! যদি এই সিস্টেমগুলি একে অপরের সাথে যোগাযোগ করে তবে এটি হওয়া উচিত যাতে এই সিস্টেমটি এটি করতে পারে ... ওহ অপেক্ষা করুন, এই ইভেন্টটি যখন ট্রিগার হয় তখন সেই সিস্টেমটির কী হবে?"আমি সঠিক উক্তিটি ভুলে গিয়েছিলাম তবে একজন একবার বলেছিলেন যে রোমটি যদি সফ্টওয়্যারটির মতো তৈরি করা হত তবে এটি কেবল একটি পাখিটিকে একটি দেওয়ালে নেমে যাওয়ার জন্য নেমে যেতে লাগবে। বেশিরভাগ সফ্টওয়্যারের ক্ষেত্রেই এটি ঘটে থাকে often এখানে কিছু আপাতদৃষ্টিতে নিস্পষ্ট কোডের কয়েকটি লাইন এবং এটি আমাদের পুরো ডিজাইনের পুনর্বিবেচনা করার বিষয়টিকে থামিয়ে দিতে পারে, এবং উচ্চ স্তরের ভাষাগুলি যা যতটা সম্ভব পঠনযোগ্য হতে লক্ষ্য করে যেমন মানব নকশার ত্রুটিগুলি ব্যতিক্রম নয় ।
খাঁটি কার্যকরী ভাষাগুলি প্রায় এটি অদম্যরূপে কাছাকাছি থাকায় যে কেউ সম্ভবত এটি পেতে পারে (এমনকি অদৃশ্যতার কাছাকাছিও নয়, তবে বেশিরভাগের তুলনায় তুলনামূলকভাবে অনেক বেশি কাছাকাছি)। এবং এটি আংশিক কারণ তারা মানুষের চিন্তায় স্বজ্ঞাতভাবে মানচিত্র তৈরি করে না। এগুলি পঠনযোগ্য নয়। তারা আমাদের উপর চিন্তার নিদর্শন জোর করে যা আমাদের ন্যূনতম পরিমাণ জ্ঞান ব্যবহার করে এবং কোনও পার্শ্ব প্রতিক্রিয়া সৃষ্টি না করে যতটা সম্ভব সম্ভব কয়েকটি বিশেষ ক্ষেত্রে সমস্যাগুলি সমাধান করতে বাধ্য করে। তারা চূড়ান্ত অর্থেগোনাল, তারা কোডটি প্রায়শই বিস্মিত ও বিস্ময়ের পরিবর্তে এতই মহাকাব্যিকভাবে মঞ্জুরি দেয় যে আমাদের কোনও অঙ্কন বোর্ডে নকশাটি পুনর্বিবেচনা করতে হবে, এমনকি সামগ্রিক নকশা সম্পর্কে আমাদের মন পরিবর্তন করার বিন্দুতে, সমস্ত কিছুই পুনরায় লিখে না রেখে। এটির চেয়ে এটি রক্ষণাবেক্ষণ করা সহজ বলে মনে হচ্ছে না ... তবে কোডটি এখনও পড়া খুব শক্ত,