এরিক উত্তর দিন:
এই মুহুর্তে সুস্পষ্ট প্রশ্নটি হ'ল: সিপিএস যদি এত দুর্দান্ত হয় তবে আমরা কেন এটি সারাক্ষণ ব্যবহার করি না? কেন বেশিরভাগ পেশাদার বিকাশকারীরা এটি সম্পর্কে কখনও শোনেনি, বা যাদের আছে, তারা এটিকে কেবল সেই ক্রেজি স্কিম প্রোগ্রামাররা কিছু মনে করে?
প্রথমত, বেশিরভাগ লোকদের পক্ষে যারা সাব্রুটিনগুলি, লুপগুলি সম্পর্কে চিন্তা করতে অভ্যস্ত, অবশেষে চেষ্টা করুন-এবং আরও কিছু এইভাবে নিয়ন্ত্রণ প্রবাহের জন্য প্রতিনিধিদের ব্যবহার করার বিষয়ে যুক্তিযুক্ত কারণ হিসাবে বোঝা যায়। আমি এখনই CS442 থেকে সিপিএসে আমার নোটগুলি পর্যালোচনা করছি এবং আমি দেখতে পাচ্ছি যে 1995 সালে আমি একটি প্রোফোট লিখেছিলাম: "ধারাবাহিকতায় আপনাকে নিজের মাথার উপরে দাঁড়াতে হবে এবং নিজেকে ভিতরে টেনে তুলতে হবে"। প্রফেসর দুগ্গান (*) একেবারে সঠিক বলেছিলেন। কয়েক দিন আগে থেকে স্মরণ করুন যে সি # এক্সপ্রেশন এম (বি ()? সি (): ডি ()) এর চারটি লাম্বদা জড়িত সিপিএস রূপান্তরের আমাদের ক্ষুদ্র ছোট্ট উদাহরণ। উচ্চতর অর্ডার ফাংশনগুলি ব্যবহার করে এমন কোড পড়ার ক্ষেত্রে সকলেই ভাল নয়। এটি একটি বিশাল জ্ঞানীয় বোঝা চাপায়।
তদ্ব্যতীত: কোনও ভাষায় বেকড নির্দিষ্ট কন্ট্রোল ফ্লো স্টেটমেন্ট থাকার সম্পর্কে একটি দুর্দান্ত বিষয় হ'ল তারা আপনার কোডটি প্রক্রিয়াগুলি লুকিয়ে রাখার সময় নিয়ন্ত্রণ প্রবাহের অর্থ পরিষ্কারভাবে প্রকাশ করতে দেয় - কল স্ট্যাক এবং রিটার্নের ঠিকানা এবং ব্যতিক্রম হ্যান্ডলারের তালিকা এবং সুরক্ষিত অঞ্চলসমূহ ইত্যাদি। ধারাবাহিকতা নিয়ন্ত্রণ প্রবাহের প্রক্রিয়াগুলি কোডের কাঠামোর মধ্যে সুস্পষ্ট করে তোলে। যান্ত্রিকতার উপর জোর দেওয়া সমস্ত কোডের অর্থকে ছাপিয়ে যেতে পারে ।
ইন পরের নিবন্ধ , তিনি কীভাবে asynchrony এবং continuations ঠিক পরস্পর সমতুল্য, এবং, একটি সহজ গ্রহণ (কিন্তু ব্লক,) সমলয় নেটওয়ার্ক অপারেশন এবং asyncronous শৈলী এটা rewriting একটি বিক্ষোভের ধরে যায়, সব গোপন আবরণ নিশ্চিত এটি সঠিকভাবে পেতে কভারগুলি থাকতে হবে। এটি কোডের একটি বিশাল মেসে পরিণত হয় । শেষে তার সংক্ষিপ্তসার:
পবিত্র দেবতা, আমরা কী ভ্রষ্টা জগাখিচুড়ি করেছি। আমরা দেখেছি সবচেয়ে godশ্বরবাদী স্প্যাগেটির দুটি ডজন লাইনে পুরোপুরি পরিষ্কার কোডের দুটি লাইন আমরা প্রসারিত করেছি। এবং অবশ্যই এটি এখনও সংকলন করে না কারণ লেবেলগুলি সুযোগে নেই এবং আমাদের একটি নির্দিষ্ট দায়িত্ব ত্রুটি রয়েছে। এই সমস্যাগুলি সমাধানের জন্য আমাদের এখনও কোডটি পুনরায় লিখতে হবে।
মনে রাখবেন আমি সিপিএসের সুবিধাগুলি সম্পর্কে কী বলছিলাম?
- প্রো: ইচ্ছামত জটিল এবং আকর্ষণীয় নিয়ন্ত্রণ প্রবাহগুলি সহজ অংশগুলির বাইরে তৈরি করা যায় - চেক করুন।
- কন: ধারাবাহিকতার মাধ্যমে নিয়ন্ত্রণ প্রবাহের সংশোধনটি পড়া শক্ত এবং এর পক্ষে যুক্তিযুক্ত - চেক।
- কন: নিয়ন্ত্রণ প্রবাহের প্রক্রিয়াগুলির প্রতিনিধিত্বকারী কোডটি পুরোপুরি কোডটির অর্থকে ছাড়িয়ে যায় - চেক।
- কন: সাধারণ কোড নিয়ন্ত্রণ প্রবাহকে সিপিএস-এ রূপান্তরকরণ হ'ল এক ধরণের জিনিস যা কম্পাইলাররা ভাল এবং অন্য কেউ হয় না - পরীক্ষা করে।
এটি কিছু বৌদ্ধিক অনুশীলন নয়। প্রকৃত লোকেরা যখন অ্যাসিক্রোনির সাথে ডিল করেন তখন নৈতিকভাবে উপরের কোডটির সমান কোড লেখেন end এবং বিদ্রূপাত্মকভাবে, এমনকি প্রসেসরগুলি আরও দ্রুত এবং সস্তা হয়ে উঠেছে, আমরা প্রসেসরের সাথে আবদ্ধ নয় এমন স্টাফের জন্য আমাদের আরও বেশি সময় ব্যয় করি । অনেক প্রোগ্রামে, প্রসেসরের বেশিরভাগ সময় হল নেটওয়ার্ক প্যাকেটগুলির ইংল্যান্ড থেকে জাপান এবং আবার ফিরে, বা ডিস্ক স্পিন করার জন্য বা অন্য যে কোনও কিছুতে অপেক্ষা করার জন্য অপেক্ষা করা।
আপনি আরও অ্যাসিক্রোনাস অপারেশন রচনা করতে চাইলে কী হয় তা নিয়ে আমি কথাও বলিনি। মনে করুন আপনি আর্কাইভ ডকুমেন্টসকে একটি অ্যাসিক্রোনাস অপারেশন করতে চান যা কোনও প্রতিনিধি গ্রহণ করে। এখন যে সমস্ত কোড এটি কল করে সেগুলি সিপিএসেও লিখতে হবে। কলঙ্ক মাত্র ছড়িয়ে পড়ে।
অবিচ্ছিন্ন যুক্তি সঠিকভাবে পাওয়া গুরুত্বপূর্ণ, ভবিষ্যতে এটি কেবল আরও গুরুত্বপূর্ণ হতে চলেছে
, এবং অধ্যাপক দুগগান বিজ্ঞতার সাথে বলেছিলেন যেভাবে আমরা আপনাকে যে সরঞ্জামগুলি দিয়েছি তা আপনাকে
"আপনার মাথার উপরে দাঁড়াতে এবং নিজেকে ভিতরে ফিরিয়ে আনতে" তৈরি করে ।
ক্রমাগত উত্তীর্ণ শৈলী শক্তিশালী, হ্যাঁ, তবে উপরের কোডের চেয়ে সেই শক্তির ভাল ব্যবহারের আরও ভাল উপায় হতে পারে।
উভয় নিবন্ধ এবং একটি নতুন সি # ভাষা বৈশিষ্ট্যের উপরের সিরিজ যা এই সমস্ত জগাটি সংকলককে সরিয়ে নিয়ে যায় এবং আপনাকে নির্দিষ্ট কোড হিসাবে একটি নির্দিষ্ট কীওয়ার্ড সহ সাধারণ নিয়ন্ত্রণ প্রবাহ হিসাবে আপনার কোড লিখতে দেয়, এমনকি যদি আপনি ' কোনও সি # বিকাশকারী নন। আমি নই, তবে আমি যখন প্রথমবারের মতো এটি চালিয়েছিলাম তখনও এটি ছিল বেশ আলোকিত অভিজ্ঞতা।