সফ্টওয়্যারটি লেখার বিষয়টি স্ক্র্যাচ থেকে পড়া এবং বোঝার চেয়ে সহজ? [বন্ধ]


12

আমি এবং আমার এক বন্ধু গতকাল একটি বৃহত সি ++ সফ্টওয়্যার লেখার এবং এটি একটি নতুন নিয়োগ হিসাবে বুঝতে পারার মধ্যে পার্থক্য সম্পর্কে আলোচনা করছিলাম।

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

এটি প্রথমে অদ্ভুত মনে হলেও আমরা কিছুটা চিন্তা করার পরে এটি যুক্তিসঙ্গত বলে মনে হয়েছিল


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

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

উত্তর:


41

আমার অভিজ্ঞতার ভিত্তিতে, আমি নিম্নলিখিত ক্রিয়াকলাপগুলি সহজতম থেকে সবচেয়ে শক্ততার জন্য র‌্যাঙ্ক করব।

  1. ভাল কোড পড়া
  2. খারাপ কোড লেখা
  3. ভাল কোড লিখছি
  4. খারাপ কোড পড়া

উপরের র‌্যাঙ্কিংটি 2 সিদ্ধান্তে পৌঁছায়

  1. খারাপ কোড পড়ার চেয়ে কোড লেখা সহজ, আপনার নিজের কোড লেখার চেয়ে ভাল কোড পড়া আরও সহজ
  2. খারাপ কোড লেখা ভাল কোড লেখার চেয়ে সহজ তবে খারাপ কোড লেখা আপনার খারাপ কোড পড়ার জন্য সেট আপ করে, যা সবার মধ্যে কঠিনতম বিষয়। বিশেষত যেহেতু খারাপ কোড লেখা হয় তার চেয়ে বেশি পড়া হয়।

অবশ্যই, ভাল কোড এবং খারাপ কোড বিস্তৃত সাধারণীকরণ। ভাল কোড সম্পর্কে আরও তথ্যের জন্য আমি কোড কমপ্লিট এবং ক্লিন কোডের প্রস্তাব দিই ।


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

এছাড়াও, কীভাবে ভাল কোড লিখবেন: cdn.thenextweb.com/files/2011/01/65987_700b.jpg
কার্টিসএইচএক্স

2
আমার স্কেলে, খারাপ কোড পড়া ভাল কোড লেখার চেয়ে সহজ থেকে যায়। সবচেয়ে খারাপ সময়ে, আপনি যে খারাপ কোডটি পড়ার চেষ্টা করছেন তার উপর একটি ডিবাগার চালু করতে পারেন, বা এটি একটি রিফ্যাক্টরিং সরঞ্জাম দিয়ে সম্পাদনা করতে পারেন।
mouviciel

2
খারাপ কোড লেখা কেবলমাত্র সেই বিন্দুতে সহজ যেখানে এটি সংহত এবং কাজ করতে হয় বা পরিবর্তনের প্রয়োজনীয়তার সাথে সম্মতিতে পরিবর্তন করতে হয়। যদি আপনি "নিজেকে একটি কোণায় প্রোগ্রাম করেন" তবে এটি আর সহজ নয়।
কাজ

@ মউভিচিয়েল খুব চালাক প্রোগ্রামারদের দ্বারা লেখা খারাপ কোড পড়া খুব খারাপ হতে পারে। নিষ্পাপ প্রোগ্রামারদের দ্বারা লেখা খারাপ কোড পড়া সহজ। কেবলমাত্র আপনার "নিষ্পাপ টুপি" রাখুন এবং কোডটি সম্পাদন করার চেষ্টা করতে ব্যর্থ হচ্ছে তা স্পষ্ট হয়ে যায়। :)
কাজ

13

এই প্রশ্নটি একটি মিথ্যা sensকমত্যের কাছে আবেদন করে। http://en.wikipedia.org/wiki/False-consensus_effect

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


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

7
আপনি একেবারে সঠিক। জিজ্ঞাসা শুরু। এবং, যে মিথ্যা সম্মতি রয়েছে তা বোঝার জন্য উপকারী। এ কারণেই আমি প্রশ্নটিকে কেবল এড়িয়ে যাওয়ার পরিবর্তে "উত্তর" দিয়েছি।
mawcsco

7

একটি বড় সি ++ সফ্টওয়্যার লেখার এবং এটিকে একটি নতুন নিয়োগ হিসাবে বোঝার মধ্যে পার্থক্য

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

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

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


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

একটি 'প্রোটোটাইপ' বা 'ব্রোকেন টয়' (পরিচিত ঘাটতি এবং শুধুমাত্র বিকল্পগুলি অনুসন্ধান করার জন্য) তৈরি করা উপরের প্রশ্নগুলি নিজেকে ভাবতে "বাধ্য" করতে সহায়তা করবে। রিফ্যাক্টরিংয়ের পরে উপাদানগুলি যুক্ত করা এবং বৈশিষ্ট্যগুলি যুক্ত করা হাতের সমস্যা এবং প্রার্থীদের সমাধানগুলির ক্ষেত্রে (সম্ভবত ফোরাম অনুসন্ধানের মাধ্যমে) সমস্যার "অনুভূতি" পেতে সহায়তা করবে get
গুরুএম 21

4

এটি একটি আকর্ষণীয় প্রশ্ন, তবে আমি এটি তৈরির চেয়ে পড়ার এবং বুঝতে সহজ হওয়ার দিকের দিকে ঝুঁকতে চাই।

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

আপনি যদি নতুন প্রোগ্রামার হন তবে "আপনি যা জানেন না আপনি তা জানেন না" এবং তাই আপনাকে সমস্ত ছোট জিনিস আবিষ্কার করতে / শিখতে হবে এবং খুব সম্ভবত আপনার কিছু অদক্ষতা থাকতে হবে কোড। তবে আপনি সম্ভবত ভাষার বৃহত্তর বোঝার বিকাশ করবেন।

তবে এই উভয় ক্ষেত্রেই কোডটি পড়া এবং সেখান থেকে পুরোপুরি স্ক্র্যাচ থেকে সম্পূর্ণ লেখার চেয়ে সহজ হওয়া সহজ হবে easier


2

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

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

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


আপনি কোড লিখতে পারেন এবং এটি বুঝতে পারবেন না? কপি কর
জেফো

@ জেফো সর্বদা - ও ... ...
রবি ডি

1

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

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

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


1

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

এটি প্রশ্ন বাড়ে: এই বিষয়টি কি?

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

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


1

আমি স্টোমটারস্পার্কের উত্তরের মধ্যে আছি, কেবল যোগ করছি:
এটি অনেকগুলি কারণের উপর নির্ভর করে এটি হ্যাঁ বা কোনও প্রশ্ন হতে পারে না, উদাহরণস্বরূপ:

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

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

1
সম্পূর্ণরূপে একমত, এটি ব্যক্তির উপরও অনেক কিছু নির্ভর করে। শুধু খেয়াল করুন যে ওউর কাজের প্রয়োজনের কারণে আমাদের মধ্যে কেউ স্ক্র্যাচ থেকে প্রচুর বিকাশ করে অন্যরা অনেকগুলি রক্ষণাবেক্ষণ করেন। এটি অবশ্যম্ভাবীভাবে দুটি পৃথক দক্ষতা নিখুঁত করবে, যদি তারা উভয় একই সুশৃঙ্খলভাবে চিন্তাভাবনা, একই স্তরের যুক্তি এবং ভাষা নির্দিষ্টকরণ বোঝার সাথে শুরু করে, ...
জোসেটিক্সিরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.