"রচনা না" এর অর্থ কী?


35

আমি প্রচুর পাঠ্য দেখতে পাচ্ছি, বিশেষত ক্রিয়ামূলক প্রোগ্রামিং পাঠগুলি দাবি করে যে নির্দিষ্ট সিএস ধারণাগুলি "রচনা করবেন না" । উদাহরণগুলি হ'ল: লকগুলি রচনা করে না, মনাদগুলি রচনা করে না।

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

উপরের দুটি উদাহরণের (যেমন, তালা এবং মোনাদ) মত অভিব্যক্তি ব্যবহার করার সময় এই বাক্যাংশটির অর্থ কী কেউ ব্যাখ্যা করতে পারেন?


এটি একত্রিত করার চেয়ে কার্যকরী রচনার অর্থের কাছাকাছি।
আন্দ্রেস এফ।

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

উত্তর:


35

লোকেরা যখন "এক্স রচনা করে না" বলে, তখন তাদের "রচনা" বলতে যা বোঝায় তার অর্থ "একসাথে রাখা" এবং আপনি কী এবং কীভাবে তাদের একসাথে রেখেছিলেন তা "এক্স" ঠিক কী তার উপর নির্ভর করে খুব আলাদা হতে পারে।

এছাড়াও, যখন তারা "রচনা করেন না" বলে তারা কিছুটা আলাদা জিনিস বোঝাতে পারে:

  1. আপনি পিরিয়ড এ দুটি এক্স একসাথে রাখতে পারবেন না।
  2. আপনি করতে পারেন দুই XS একত্র করা, কিন্তু এর ফলে একটি এক্স নাও হতে পারে (IOW: এক্স নয় রচনা অধীনে বন্ধ ।)
  3. আপনি দুটি এক্স একসাথে রাখতে পারেন, তবে ফলাফলযুক্ত এক্স আপনার প্রত্যাশা মতো কাজ করতে পারে না।

# 1 এর উদাহরণস্বরূপ স্ক্যানার / লেক্সার যুক্ত পার্সার। আপনি "স্ক্যানার / লেক্সারগুলি রচনা করেন না" কথাটি শুনতে পাবেন। এটি আসলে সত্য নয়। তাদের অর্থ "পার্সার যা আলাদা লেক্সিং স্টেজ ব্যবহার করে তা রচনা করে না" is

আপনি কেন পার্সার রচনা করতে চান? ঠিক আছে, কল্পনা করুন যে আপনি জেটব্রেইনস, ইক্লিপস ফাউন্ডেশন, মাইক্রোসফ্ট বা এমবারকাডেরোর মতো আইডিই বিক্রেতা এবং আপনি ওয়েব ফ্রেমওয়ার্কের জন্য একটি আইডিই তৈরি করতে চান। সাধারণ ওয়েব বিকাশে আমরা প্রায়শই ভাষা মিশ্রিত করি। আপনার কাছে <script>ECMAScript রয়েছে এমন উপাদান সহ HTML ফাইল রয়েছে<style>সিএসএসযুক্ত উপাদানসমূহ। আপনার এইচটিএমএল, কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ এবং কিছু টেমপ্লেট ল্যাঙ্গুয়েজ মেটাসিসট্যাক্সযুক্ত টেম্পলেট ফাইল রয়েছে। আপনি "পাইথন", "পাইথনটি একটি টেম্পলেটে এম্বেড করা", "সিএসএস", "এইচটিএমএল এর মধ্যে সিএসএস", "ইসিএমএএসক্রিপ্ট", "এইচটিএমএল-র মধ্যে ইসমাস্ক্রিপ্ট", "এইচটিএমএল", "এইচটিএমএল এর মধ্যে বিভিন্ন সিনট্যাক্স হাইলাইটার লিখতে চান না একটি টেম্পলেট "এবং আরও অনেক কিছু। আপনি পাইথনের জন্য একটি সিনট্যাক্স হাইলাইটার লিখতে চান, এইচটিএমএল জন্য একটি, টেম্পলেট ভাষার জন্য একটি এবং তারপরে তিনটি একটি টেম্পলেট ফাইলের জন্য একটি সিনট্যাক্স হাইলাইটারে রচনা করুন।

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

একটি স্ক্যানারবিহীন পার্সার, যা কেবল অক্ষরগুলি পড়ে, অক্ষর প্রবাহটি আলাদা আলাদা করে যায়, যা এটি আবার ফিরিয়ে দিতে পারে, ফলে তাদের রচনা করা আরও সহজ করে তোলে।

# 2 এর একটি উদাহরণ তাদের মধ্যে এসকিউএল কোয়েরিগুলির সাথে স্ট্রিং। আপনার দুটি স্ট্রিং থাকতে পারে, যার প্রতিটিটির মধ্যে সিন্ট্যাক্টিক্যালি সঠিক এসকিউএল কোয়েরি রয়েছে, তবে আপনি যদি দুটি স্ট্রিংকে একত্রে পরিণত করেন, ফলাফলটি সিনট্যাক্টিক্যালি সঠিক এসকিউএল কোয়েরি নাও হতে পারে। কেন আমরা মত ক্যোয়ারী algebras আছে যে ARel, যা না রচনা করুন।

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


1
অন্য কথায়, "রচনা দেয় না" এর অর্থ "সেমিগ্রুপ গঠন করে না" (বা, কিছুটা বেশি দৃ strongly়তার সাথে, একটি মনোয়েড)।
জন পুরী

আমি অসচেতনতার প্রয়োজনীয়তা সম্পর্কে নিশ্চিত নই, তাই আরও একটি ম্যাজমার মতো (যা আমি আক্ষরিক 3 সেকেন্ড আগে শিখেছিলাম :
জার্গ ডব্লু মিট্টাগ

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

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

20

যৌগিকতার অর্থ হ'ল আপনি বৃহত্তর উপাদান এবং আরও জটিল কার্যকারিতা উত্পাদন করতে সহজেই এবং নির্ভরযোগ্যভাবে প্রোগ্রামের উপাদানগুলিকে একত্রিত করতে পারেন।

কিছু জিনিস যা উপাদানগুলিকে আরও কমপোজযোগ্য করতে সহায়তা করে:

  1. Idempotence। আদর্শ পন্থা ফাংশন সর্বদা একই আউটপুট বা পার্শ্ব প্রতিক্রিয়া তৈরি করে, যদি একই প্যারামিটার মানগুলির সাথে একাধিকবার বলা হয়। এটি কম্পনযোগ্যতা উন্নত করে কারণ একটি ফাংশন কলের ফলাফল অনুমানযোগ্য।

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

  3. অপরিবর্তনীয়তা। একটি অপরিবর্তনীয় বস্তুর অবস্থা তৈরি হয়ে গেলে তা পরিবর্তন করা যায় না। এটি কমপোবিলিটিটির উন্নতি করে কারণ আপনি কোনও ক্রিয়া বা বস্তু কোথাও কোথাও তৈরি হওয়ার পরে অবজেক্টের অবস্থার পরিবর্তন করেছে কিনা তা চিন্তা না করে আপনি অবজেক্টের স্থিতিশীল মানের উপর নির্ভর করতে পারেন।

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

লকগুলি রচনা করে না কারণ এগুলি একটি বাহ্যিক উপাদান যা আপনাকে দুটি রাজ্য ভাগ করে নেওয়ার জন্য দুটি ক্রিয়াকলাপ একত্রিত করার সময় এবং নির্ভরযোগ্য সমস্ত কারণের জন্য লকগুলি ব্যবহারের অন্তর্নিহিত জটিলতার সাথে করতে হবে এমন নির্ভরশীল ly

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


4
আমি মনে করি stackoverflow.com/questions/7040844/... একটি ভাল ব্যাখ্যাতে "monads রচনা না" সম্ভবত মানে, যদিও আমি সম্মত হন যে monads অনেক কেশ চেয়ে বেশি composable হয় পেশা আছে।
Ixrec

"রেফারেন্সিয়াল স্বচ্ছতা" এবং "বিশুদ্ধতা" এর জন্য আপনার বুলেট পয়েন্টগুলি আসলে বিশুদ্ধতার জন্য দুটি প্রয়োজনীয়তা । "উল্লেখযোগ্য স্বচ্ছতা" শব্দটি এড়ানো উচিত কারণ এটি সঠিকভাবে সংজ্ঞায়িত হয়নি
ব্লুরাজা - ড্যানি প্লেফুঘুফুট

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