কোডের পিছনে উদ্দেশ্যটি 'আইডিয়োমেটিক' হচ্ছে জ্ঞানীয় ওভারহেড হ্রাস করার জন্য?


22

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

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

আমি এই ধারণাটি এমনভাবে ব্যাখ্যা করার মাধ্যমে সামনে এসেছি যা লোককে তাদের কোড পরিবর্তন করতে অনুপ্রাণিত করে:

  • কোডটি এমনভাবে লেখা যাতে এটি পাঠকের জ্ঞানীয় ওভারহেড হ্রাস করে (যেমন আমি মনে করতে পারি না এটি প্রথম ধরণের ভেক্টর - বা 5 তম ধরণের ভেক্টর কিনা)
  • কোড যা উদ্দেশ্যটিকে বুঝতে সহজ করে তোলে (উদাহরণস্বরূপ এই ভেক্টরটি কীসের জন্য?)

(একদিকে যেমন, আমি জ্যো অফ অফ ক্লজুর বইয়ের প্রথম প্রকাশের আগে অবহিত ছিলাম আইডিয়োমেটিক ক্লোজারের খসড়া শিরোনাম ছিল So সুতরাং এটি কোডটি 'আইডিয়োমেটিক' তৈরি করার, পাঠকের জন্য 'আনন্দ আনার' কারণ বলে মনে হবে) )।

আমার প্রশ্ন হ'ল কোডটি 'আইডিয়োমেটিক' হওয়ার পেছনের উদ্দেশ্যটি কি জ্ঞানীয় ওভারহেড হ্রাস করতে পারে?


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

উত্তর:


19

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

অদ্ভুত বা নির্দিষ্ট ভাষা বা উপভাষার বৈশিষ্ট্য: আইডেমোমেটিক ফরাসি।

হ্যাঁ, আইডিয়োমেটিক কোড সাধারণত জ্ঞানীয় ওভারহেড হ্রাস করে, বিশেষত ইন্টারফেস সংজ্ঞায় যেখানে স্ট্যান্ডার্ড লাইব্রেরি এবং যে কোনও তৃতীয় পক্ষের লাইব্রেরি প্রকল্পের প্রয়োজন হয় (কার্যত) সমস্ত অহংকার হয়।

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

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


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

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

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

10

আমি জানি না আপনি কোথায় এই ধারণা পেয়েছেন যে মূর্খাদের কোনও নৈতিক ধারণা রয়েছে ot আইডিয়ামগুলি জিনিস প্রকাশ করার এক উপায়। এগুলি স্বতন্ত্র শব্দ বা বাক্যাংশের চেয়ে বৃহত্তর আকারে নিদর্শন।

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

কম্পিউটারের ভাষা আলাদা নয়।

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


5

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

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

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

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

লোকে বলে কোড অবশ্যই পড়তে সহজ হবে। এটি শুধুমাত্র অর্ধেক সত্য। এটি অবশ্যই বুঝতে সহজ হবে, যার জন্য এটির পক্ষে যুক্তিও সহজ হওয়া দরকার। এর জন্য বিমূর্ততাগুলির পর্যাপ্ত ব্যবহার প্রয়োজন । বেশিরভাগ জিনিসের মতো এটিও সঠিক ভারসাম্য রক্ষার বিষয়।


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