কেন কনওয়ের "গেম অফ লাইফ" কোড পশ্চাদপসরণের জন্য ব্যবহৃত হয়?


15

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

একটি জিনিস যা আমি এখনও পাই না তা হ'ল "গেম অফ লাইফ" টিডিডি-র জন্য একটি ভাল সমস্যা, এবং এর জন্য ভাল এবং খারাপ টিডিডি কেমন লাগে।

উপলব্ধি করুন এটি একটি দুর্দান্ত খোলা সমাপ্ত প্রশ্ন, তাই বিনা দ্বিধায় মন্তব্য করুন।


এটি মনে হয় এমন একটি অত্যন্ত আলোচনামুখী প্রশ্নের মতো যা আমাদের সফ্টওয়্যার ইঞ্জিনিয়ারিং চ্যাটে সবচেয়ে ভাল হবে ।
আদম লিয়ার

@ আনা লার্ন: ধন্যবাদ, তবে চ্যাট করতে খুঁজছেন না, উত্তর খুঁজছেন। এটি যদি ভাল প্রশ্ন না হয় তবে তা ঠিক আছে।
সাঙ্ঘাতিক ভুল

3
@ অ্যান্নাআল, আমি মনে করি যে ওপি নিজেকে কৃতিত্ব দেওয়ার চেয়ে প্রশ্নটি প্রশ্নে বেশি।
টম স্কুয়ার্স

1
@ টম আমি নিজে থেকে এটি সম্পর্কে চিন্তাভাবনা করছিলাম এবং আমি এটি ভাল করে দেখে আনন্দিত। ভুল হতে পেরে খুশি। :)
অ্যাডাম শিখুন

উত্তর:


26

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

এর পরে, যদিও বেশ কয়েকজন সক্রিয় সুবিধাবাদী হিসাবে (বিশেষত ২০০৯ সালে আমার ভ্রমণযাত্রার সময় এবং বুখারেস্টে অ্যালেক্স বোলবোয়াকা) শিখার সরঞ্জাম হিসাবে জিওএল ব্যবহারের তদন্ত করেছিলেন। একই সাথে আমরা কোডরেট ফর্ম্যাটটি এটি বর্তমানে কী পরিণত হয়েছে তা বিকশিত করছিলাম। ২০০৯-এ, অ্যালেক্স কমপক্ষে আরও একটি সমস্যা (জুজু হ্যান্ড স্কোরিং) চেষ্টা করেছিল, তবে এটি গোলের মতো কার্যকর মনে হয়নি। আপনি ইতিহাস সম্পর্কে আরও জানতে পারেন http://coderetreat.org/history এ

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

এখন বেশ কয়েকটি লোক রয়েছে যারা একাধিক কোড্রেট্রিট করেছেন এবং তারা এখনও অনুশীলন হিসাবে ব্যবহার করতে সমস্যার আকর্ষণীয় দিকগুলি খুঁজে পান find


10

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

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


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

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

3

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

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

এক্স পুনরাবৃত্তির পরে আপনি পরিচিত ইনপুট এবং পরিচিত আউটপুট পেয়েছেন এবং সেখানে পৌঁছানোর সমস্ত পদক্ষেপগুলি আপনি জানেন ... কেবলমাত্র পদক্ষেপগুলি খুব বেশি এবং খুব বেশি সময় নেয় except চশমাগুলির মধ্যে ফিট করার জন্য আপনাকে অবশ্যই কিছু চমত্কার চূড়ান্ত অনুকূলকরণ করতে হবে perform বিটগুলির একটি নির্দিষ্ট আকারের ডাবল-বাফার 2 ডি অ্যারে স্ক্যান করার সাথে তুচ্ছ অ্যালগরিদম সম্পূর্ণ অপর্যাপ্ত হয়ে যায় কারণ এর কার্যকারিতা আকারের ও (N ^ 2) এর সাথে অবনমিত হয়। নতুন বানানো বস্তু হিসাবে ভরাট ব্লকগুলির চিকিত্সা হঠাৎ করে প্রচুর পরিমাণে মেমরি খায় এবং ধীর হয়ে যায়। সীমিত আকারের বোর্ডগুলিতে সবকিছুকে পৃথক করা কখনও কখনও কাজ করে, কখনও কখনও ব্যর্থ হয় ...

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


2

এটি আপনার প্রক্রিয়াটির কোন দিকটির জন্য অনুশীলন / প্রশিক্ষণ নিতে চান তা নির্ভর করে।

আপনার চয়ন করা পদ্ধতির / প্রকল্প পরিচালনার দৃষ্টান্ত নির্বিশেষে সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের সমস্ত দিক কভার করার জন্য একটি একক দিনই যথেষ্ট নয়। সুতরাং এটি কার্যকর করতে আপনার সম্ভবত সম্পূর্ণ একটি ছোট উপসেটে মনোনিবেশ করা উচিত।

উদাহরণস্বরূপ আপনি যদি টিডিডির প্রযুক্তিগত দিকগুলিতে মনোনিবেশ করেন তবে আপনি গ্রাহকের সাথে প্রয়োজনীয়তা এবং সম্পর্কের আশেপাশে বৃহত্তর ধূসর অঞ্চলগুলি যেতে দিতে পারেন এবং সমাধানের কোডিংয়ের ডানদিকে কাটাতে পারেন।

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

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

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

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