আমার সহকর্মীরা সকলেই বুঝতে না পারলেও কী মেটা-প্রোগ্রামিং ব্যবহার করা ঠিক আছে?


102

পুনরাবৃত্তিমূলক কাজগুলি এড়াতে এবং নিরাপদ থেকে ব্যবহারের বিমূর্ততা তৈরি করতে আমি প্রচুর মেটা-প্রোগ্রামিং নিয়োগ করি।

আমি সম্প্রতি একটি নতুন চাকরিতে চলে এসেছি যেখানে আমি একটি বৃহত্তর দলে কাজ করছি এবং এটি আমার কিছু সহকর্মীকে চিন্তিত করে, কারণ তারা এটি বুঝতে পারে না।

আমি সর্বদা ভাষাটির সম্পূর্ণ সম্ভাব্যতা অর্জনের চেষ্টা করি, তবে আমার সহকর্মীদের মধ্যে কিছু (সমস্ত না) বুঝতে পারে যে ঝুঁকি হিসাবে (কেউ কেউ পদ্ধতির অভ্যর্থনা জানায়)।

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

আমার প্রশ্ন, কে সঠিক, আমি কি করব?

স্পষ্টকরণ: ভাষার সম্পূর্ণ সম্ভাব্যতা অর্জনের চেষ্টা করা মানে এই নয় যে আমি প্রতিটি সমস্যায় টিএমপি নিক্ষেপ করি। সি ++ একটি টুলবক্স এবং আমার কাছে সি ++ দক্ষতা বাক্স থেকে সমস্ত সরঞ্জাম ব্যবহার করতে সক্ষম হওয়া এবং একটি নির্দিষ্ট কাজের জন্য সঠিকটি বাছাই সম্পর্কে।


38
এটি শেষ পর্যন্ত মতামত ভিত্তিক। ব্যক্তিগতভাবে, আমি এটিকে এমন জটিল বৈশিষ্ট্যগুলি ব্যবহার না করার নিয়ম করি যাতে এগুলি দুর্ঘটনাক্রমে টিউরিং-সম্পূর্ণ - যেমন সি ++ টেম্পলেট মেটাপ্রোগ্রামিং।
কিলিয়ান ফট

24
@ কিলিয়ানফট টেমপ্লেটগুলি "দুর্ঘটনাক্রমে" টুরিং-সম্পূর্ণ নয়। এগুলি সর্বদা বিমূর্ত করার শক্তিশালী সরঞ্জাম হওয়ার উদ্দেশ্যে ছিল
কালেথ

73
যে কোডটি কেউ বুঝতে পারে না তা উচ্চতর মান নয়।
gburton

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

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

উত্তর:


185

ধাতব প্রোগ্রাম ঠিক আছে। আপনি যা করার চেষ্টা করছেন তা ঠিক নয়।

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

বিষয়টি রূপক নয়, এটি:

অন্যদিকে আমরা সবাই পেশাদার সি ++ বিকাশকারী এবং আমি মনে করি আমাদের ক্লাস সহ সি লেখার চেয়ে উচ্চতর মানের দিকে আগ্রহী হওয়া উচিত।

এখানেই আপনি সমস্যায় পড়েন। আপনার মতামত আছে রূপান্তরকৃত হওয়া ভাল বলে মতামত দেওয়া ভাল। এটি মতামত নেওয়া ভাল যে আমাদের সকলকেই আরও ভাল সি ++ বিকাশকারী হওয়ার আকাঙ্ক্ষা করা উচিত।

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

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

আপনি যদি তাদের রূপান্তরকাজের সাথে ঠিক থাকতে উত্সাহিত করতে চান তবে ছোট শুরু করুন । এমন একক দিয়ে শুরু করুন enable_ifযা এপিআই পড়তে সহজ করে তোলে। তারপরে এর থেকে দিবালোকগুলি মন্তব্য করুন । তারপরে সম্ভবত এমন একটি কেস সন্ধান করুন যেখানে কোনও টেম্পলেট মেটাফাংশন 10 ছোট সহায়কদের সাথে 10 টি বৃহত পুনরাবৃত্তি শ্রেণিকে 1 শ্রেণিতে পরিণত করে। এটি থেকে হ্যাক মন্তব্য করুন। প্রতিক্রিয়া পেতে. এটি সম্পর্কে লোকেরা কী ভাবছেন তা সন্ধান করুন। যদি তারা আপনাকে এটি না করতে বলে তবে ঠিক আছে। এমন একটি কুলুঙ্গি সন্ধান করুন যেখানে রূপান্তরকেন্দ্রটি এটিকে পুরোপুরিভাবে উপার্জন করতে পারে যাতে আপনার মহাবিদ্যালয়গুলি সকলেই (মিনতি করে) সম্মত হন যে এটি কাজের উপযুক্ত সরঞ্জাম ছিল।

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

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

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


72
কিছু অন্যান্য স্টাইল, কৌশল, প্রযুক্তি, গ্রন্থাগার দিয়ে "রূপক" প্রতিস্থাপন করুন এবং উত্তরটি এখনও দুর্দান্ত!
আন্দ্রেজ

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

4
@ t3chb0t: একজন অভিজ্ঞ বস জানেন যে গ্রাহক পরিষেবায় (অর্থাত্ বাগ ফিক্সিং এবং নতুন বৈশিষ্ট্যগুলি) কীভাবে ব্যয় করা উচিত এবং কীভাবে এই ব্যয়টি হ্রাস করা যায়। রক্ষণাবেক্ষণ হ'ল সেই উদ্দেশ্যে সর্বাধিক শক্তিশালী সরঞ্জাম। এই মনিব প্রযুক্তিগত বিবরণ না জেনে থাকতে পারে তবে এমন একটি দল তৈরি করতে সক্ষম হওয়া উচিত যা বিশ্বাস করা যায়।
mouviciel 12

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

15
@ জোশুয়া আমি যা পেয়েছি তা হ'ল "কোড যেটির রক্ষণাবেক্ষণের প্রয়োজন হয় না" বলে কোনও জিনিস নেই।
কর্ট অ্যামোন

39

প্রথম এবং সর্বাগ্রে, এটি দলের সমস্যা, এবং আপনাকে এটি দলের সাথে সমাধান করতে হবে। নির্দিষ্ট উপাদান এবং কনস্ট্রাক্টস ব্যবহার করে প্রোগ্রামিংয়ের জন্য যদি আপনার দল থেকে ব্যাকআপ থাকে তবে এটি করুন; যদি তা না হয় তবে তাদের সাথে এটি নিয়ে আলোচনা করুন এবং যদি আপনি তাদের বোঝাতে না পারেন এবং "আপনার দৃষ্টিভঙ্গি" কেন স্পষ্টতই ভাল, আপনি যদি এটি ব্যবহার না করেন তবে আপনি আরও ভাল।

নোট করুন যে সি ++ তে টেমপ্লেট মেটা-প্রোগ্রামিং ব্যবহার করা সর্বদা একটি বাণিজ্য-বন্ধ: অবশ্যই, এটি কখনও কখনও কোনও অ্যাপ্লিকেশনের কিছু অংশকে আরও ডিআরওয়াই ডিজাইনে সহায়তা করতে পারে এবং এটি অত্যন্ত দক্ষ এবং অত্যন্ত পুনরায় ব্যবহারযোগ্য লাইব্রেরি তৈরি করতে অবশ্যই সহায়ক।

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


আমি সম্মত তবে আপনি কোডে রাখার আগে এটি QA এর সাথে আলোচনা করুন। এমন কিছু তৈরি করার কোনও ধারণা নেই যা প্রত্যাখ্যাত হবে।
shawnhcorey

8
কীভাবে: "আমি সম্মত। কিন্তু ..." এটিকে "" এ পরিবর্তন করে অর্থ পুরোপুরি পরিবর্তন করে। আপনার কিউএর সাথে সময় ব্যয় করার আগে সর্বদা অস্বাভাবিক কিছু নিয়ে আলোচনা করা উচিত। আপনি বলেছিলেন যে সময় ব্যয় করার পরে কোড পর্যালোচনায় এই আলোচনা হওয়া উচিত।
shawnhcorey

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

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

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

18

আমার সাধারণ মতামত: নীচের তিনটি বিকল্পের মধ্যে যদি আপনার পছন্দ হয়, যেমনটি প্রায়শই হয়:

  • অনেকগুলি এনট্রিভিয়াল কোড স্ট্রাকচার বার বার হাত দ্বারা টাইপ করুন;
  • কোড জেনারেশনকে স্বয়ংক্রিয় করতে সি ++ টেমপ্লেট মেটাপোগ্রামিং ব্যবহার করুন;
  • সি ++ উত্স ফাইল উত্পন্ন করতে ম্যাক্রো বা কিছু অন্যান্য প্রোগ্রামিং ভাষা জাতীয় কিছু কোড উত্পাদন প্রক্রিয়া ব্যবহার করুন

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

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

আমি মনে করি না যে আমরা যে ধরণের কোড লিখতে চাইছি তার উদাহরণ না দেখে আমরা কে সঠিক বা ভুল তা বিচার করতে পারি।


2
আপনি হাত দ্বারা টাইপ না করে অনুলিপি + পেস্ট ব্যবহার করতে পারেন ;-)
পেলো ইবারম্যান

4
@ পাওলোএবারম্যান: হেক নং!
জোশুয়া

2
@ পাওলোএবারম্যানের একটি দোকানে আমাকে সেই পদ্ধতির নামে ডাকা হয়েছিল, "শুরুর চিহ্ন-বাগ, শেষ-চিহ্ন-বাগ, কপি-বাগ, অনুলিপি-বাগ, অনুলিপি-বাগ"।
কেলি এস ফরাসি

12

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

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


9

সমবেদনা থেকে একটি যুক্তি:

আপনার কাজটি কি শিখার জন্য ফ্রি সময় দেয়, বা বিকল্প হিসাবে, আপনি কি এই ভাষা বৈশিষ্ট্যগুলি শেখার জন্য কিছু ঘন্টা বরাদ্দ করতে আপনার কর্তাদের বোঝাতে পারেন?

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


8

কোডটি মানুষের লেখার জন্য প্রথমে লিখতে হবে, এবং ঘটনাক্রমে কেবল সংকলককে বিশ্লেষণ করতে পারে।

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

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

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

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

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


7

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


3
আপনি কোড তৈরি করতে নিযুক্ত হয়েছেন যা কোনও স্পেসিফিকেশন সন্তুষ্ট করে। হ্যাঁ, তবে আপনি এটিকে ভুলে যাচ্ছেন সেরা জ্ঞানের কাছে
t3chb0t

2

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

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

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


0

এই প্রশ্নের একটিও সঠিক উত্তর নেই।

কারণ আপনার নিজের থেকে নিজেকে প্রথমে জিজ্ঞাসা করা উচিত: কোন পরিস্থিতিতে আপনার কর্মসংস্থান আপনি রেখেছেন? কিছু লোকেরা কোডিং স্পেসিফিকেশনগুলির জন্য কোড বানর হিসাবে নিযুক্ত হয়, অন্যরা দলের খেলোয়াড় হিসাবে নিযুক্ত হয়, অন্যরা জ্ঞান কর্মী বা বিশেষজ্ঞ হিসাবে নিযুক্ত হয়।

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


-4

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


আমি সম্প্রতি একটি নতুন চাকরিতে চলে এসেছি যেখানে আমি একটি বৃহত্তর দলে কাজ করছি এবং এটি [মেটা-প্রোগ্রামিং] আমার কয়েকজন সহকর্মীকে চিন্তিত করে, কারণ তারা এটি বুঝতে পারে না।

তারা চিন্তিত যে আপনি তাদের চেয়ে আরও ভাল। এটা ভালো. আপনি নতুন বিশেষজ্ঞ হতে চলেছেন। আপনি কেবল তাদের স্থিতাবস্থা বিশ্বকে ধ্বংস করেছেন।


আমি সর্বদা ভাষাটির সম্পূর্ণ সম্ভাব্যতা অর্জনের চেষ্টা করি, তবে আমার সহকর্মীদের মধ্যে কিছু (সমস্ত না) বুঝতে পারে যে ঝুঁকি হিসাবে (কেউ কেউ পদ্ধতির অভ্যর্থনা জানায়)।

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


আমি সম্মত হই যে কোড লিখতে সমস্যা যেটি দলের অন্য কেউ বুঝতে পারে না।

আমি না। আমি মনে করি এটি আপনার দক্ষতা দেখাচ্ছে।


আমার প্রশ্ন, কে সঠিক, আমি কি করব?

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


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


সম্পাদনা

এই প্রশ্নটি নিয়ে অনেক বিভ্রান্তি রয়েছে বলে মনে হচ্ছে। মন্তব্যগুলি দেখায় যেহেতু অনেকে মনে করেন এটি সাধারণ কোড পঠনযোগ্যতা সম্পর্কে। না এইটা না. এটি নির্দিষ্ট ভাষার বৈশিষ্ট্য / নির্মাণগুলি নিষিদ্ধ করা উচিত বা এড়ানো উচিত কিনা তা সম্পর্কে কিছু দলের সদস্যরা তাদের বোঝে না।

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

এই জাতীয় নিষেধাজ্ঞাগুলি কীভাবে নির্ধারণ করা যায় তা প্রদর্শনের জন্য, আসুন একটি সহজ উদাহরণটি ধরুন: আপনাকে একটি সফটওয়্যার ইঞ্জিনিয়ার হিসাবে নিয়োগ দেওয়া হবে তবে আপনার ভবিষ্যত বস আপনাকে বলবে আপনাকে do/whileলুপ ব্যবহার করতে দেওয়া হবে না কারণ সেখানে কয়েকজন লোক রয়েছেন যে দলটি তাদের আগে কখনও ব্যবহার করেনি এবং তাও যাচ্ছে না কারণ তারা সবসময় forলুপগুলি সর্বদা ব্যবহার করে যাওয়ায় তারা do/whileলুপগুলি বিভ্রান্তিকর খুঁজে পান ।

এখন আপনি ভাবছেন এটি বোকা এবং পাগল, তাই না? তবে তাই অন্যান্য বৈশিষ্ট্য বারণ করা হয়। কিছু পোপল তাদের ব্যবহার করতে পারে এবং অন্যরা তাদের শিখতে চায় না।

আপনি কেন আরও খারাপ কোড তৈরি করবেন যদি আপনি জানেন যে এমন কিছু আছে যা আপনাকে খুব কম পরিশ্রম করে একই কাজ করতে দেয় এবং এরপরে আরও বেশি পঠনযোগ্য ফলস্বরূপ কোড হয়?

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


10
এই উত্তরটি ভয়াবহ। মেটা-প্রোগ্রামিং আধিপত্য এবং বিপরীত বোঝায় না
polfosol

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

3
অন্যরা পড়তে পারে না এমন কোড লিখন প্রমাণ করে না যে আপনি তাদের চেয়ে ভাল। এটি প্রমাণ করে যে আপনি পঠনযোগ্য কোড লিখতে পারবেন না।
স্টিগ হেমার

3
@ স্টিগহ্যামার স্পষ্টতই আপনি প্রশ্নটি বুঝতে পারেন নি এবং আপনি বিষয়টি পরিবর্তন করছেন। এটি অ-পঠনযোগ্য কোড সম্পর্কে নয় তবে অন্যদের জ্ঞানের অভাবের কারণে অপ্রয়োজনীয় কোড সম্পর্কে।
t3chb0t

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