সবার আগে, আমি এরলং শেখার বিষয়ে আমার সঠিক মতামতের জবাবের সাথে একমত। এটি বেশিরভাগ কার্যকরী ভাষা (যদিও সংবিধান একটি বড় ভূমিকা পালন করে), এবং এর সমস্ত বৈশিষ্ট্য দোষ-সহনশীলতা এবং দৃust়তার দিকে যেতে যোগ করা হয়েছিল, যা জাভাস্ক্রিপ্টের ঠিক একই জায়গায় নকশার লক্ষ্য নয়।
সর্বোপরি, নোড.জেএসকে এরলাংয়ের জন্য ছেড়ে যাওয়া কিছুটা ভুল জায়গায়। নোড.জেএস একটি একক সার্ভার / ফ্রেমওয়ার্ক যা কলব্যাক্সের সাহায্যে ইভেন্ট-চালিত পদ্ধতিতে সবকিছু করার পথে চলে। এরলংয়ের নিজস্ব কাঠামো (ওটিপি) রয়েছে তবে এটি মোটেও একই স্তরের নয়।
যদি আপনি এরলং শেখার পরিকল্পনা করে থাকেন তবে আমি আমার ব্লগ এন্ট্রি টিউটোরিয়ালগুলিতে ডাইভিংয়ের আগে ইন্ট্রো রিডিং হিসাবে এরলং বিগিনিয়ার (বা অনুলক) কে একটি ওপেন লেটারের পরামর্শ দিচ্ছি ।
নিদর্শন এবং ব্যবহারের দিক থেকে আপনি কেবলমাত্র এরলং এবং নোড.জেএসকে তুলনা করতে পারবেন তা কীভাবে ইভেন্ট-চালিত। তবে এখানে দুটি বড় বড় পার্থক্য রয়েছে। নোড.জেসের মডেল ইভেন্টগুলিতে আবদ্ধ কলব্যাকের উপর ভিত্তি করে। এরলং বার্তার সারি এবং নির্বাচনী প্রাপ্তির উপর ভিত্তি করে। সেখানে এর অর্থ কী?
প্রথমত, আপনি যদি কলব্যাক ভিত্তিক উপায়ে জিনিসগুলি করেন তবে আপনি কেবল রাষ্ট্রটি বহন করে চলেছেন তা হয় বিশ্বব্যাপী রাখা বা ধারাবাহিকতা-পাসিং স্টাইল প্রোগ্রামিংয়ে যাওয়া। দ্বিতীয়ত, আপনাকে নিজেরাই পুরো ইভেন্টের ম্যাট্রিক্সের যত্ন নিতে হবে। এর একটি উদাহরণ হ'ল আমরা যদি একটি খুব সাধারণ সসীম রাষ্ট্রের মেশিন কল্পনা করি: একটি মিটেক্স সেম্যাফোর, ইভেন্ট-চালিত।
মিউটেক্স সেম্যাফোরে দুটি রাজ্য রয়েছে: লকড এবং ফ্রি। যখনই গণনার কোনও প্রদত্ত ইউনিট (কর্মী, প্রক্রিয়া, ফাংশন বা থ্রেড) মুটেক্সে অ্যাক্সেস পেতে চায়, তখন এটি এমন একটি ইভেন্টকে নিক্ষেপ করতে হবে যা এটি 'আমার আগ্রহী' বলে দেয়। এখন আপনাকে নিম্নলিখিত ধরণের ইভেন্টগুলির যত্ন নিতে হবে:
- নিঃশব্দটি বিনামূল্যে এবং আপনি লকটি পেতে বলছেন
- মিউটেক্সটি অন্য কারও দ্বারা লক করা আছে এবং আপনি লকটি পেতে চান
- মিউটেক্স নিজেই লক হয়ে গেছে এবং আপনি মুটেক্সকে মুক্ত করতে চান
তারপরে আপনার অতিরিক্ত ইভেন্টগুলি বিবেচনা করতে হবে যেমন ডেডলকগুলি এড়ানোর জন্য সময় নির্ধারণের:
- মিউটেক্সটি লক হয়ে গেছে এবং আপনি খুব দীর্ঘ সময়ের জন্য অপেক্ষা করেছিলেন, একটি টাইমার আগুন বন্ধ করে দেওয়ার জন্য
- মিউটেক্সটি লক হয়ে গেছে এবং আপনি কেবলমাত্র দীর্ঘ সময়ের জন্য অপেক্ষা করেছিলেন, লকটি পেয়েছেন, তারপরে সময়সীমা বন্ধ হয়ে গেছে
তারপরে আপনারও সীমাবদ্ধ ইভেন্টগুলি বাইরে চলে যাবে:
- আপনি কেবল মুটেক্সটিকে লক করে রেখেছিলেন যখন কিছু কর্মী এটি মুক্ত হওয়ার প্রত্যাশা করে। এখন সেই কর্মীর প্রশ্নের সন্ধান করতে হবে যাতে এটি যখন মুক্ত হয় তখন তা আবার পরিচালনা করা হয়
- আপনার সমস্ত কাজকে অবিচ্ছিন্ন করতে হবে
ইভেন্ট ম্যাট্রিক্স খুব দ্রুত জটিল হয়ে ওঠে। আমাদের এফএসএমের এখানে কেবলমাত্র 2 টি রাজ্য রয়েছে। এরলংয়ের ক্ষেত্রে (বা নির্বাচিত কোনও ভাষা এবং সম্ভাব্য সিঙ্ক্রোনাস ইভেন্টগুলির সাথে সংযুক্তি প্রাপ্ত) এর ক্ষেত্রে আপনাকে কয়েকটি ক্ষেত্রে যত্নশীল হতে হবে:
- নিঃশব্দটি বিনামূল্যে এবং আপনি লকটি পেতে বলছেন
- মিউটেক্সটি অন্য কারও দ্বারা লক করা আছে এবং আপনি লকটি পেতে চান
- মিউটেক্স নিজেই লক হয়ে গেছে এবং আপনি মুটেক্সকে মুক্ত করতে চান
এবং এটাই. রিসিভগুলি সম্পন্ন হওয়ার সাথে সাথে টাইমারগুলি পরিচালনা করা হয় এবং 'মুক্ত হওয়া অবধি অপেক্ষা করুন' এর সাথে যে কোনও কিছু করার জন্য বার্তাগুলি স্বয়ংক্রিয়ভাবে সারিবদ্ধ থাকে: কর্মীকে কেবল একটি উত্তরের জন্য অপেক্ষা করতে হয়। এই ক্ষেত্রে মডেল অনেক বেশি, অনেক সহজ।
এর অর্থ হ'ল সাধারণ ক্ষেত্রে সিপিএস এবং কলব্যাক-ভিত্তিক মডেলগুলি যেমন নোড.জেএস এর মতো একটি আপনি কীভাবে ইভেন্টগুলি পরিচালনা করেন তাতে খুব চতুর হতে বলে, বা সম্পূর্ণ জটিল ইভেন্টের ম্যাট্রিক্সকে পুরোপুরি যত্ন নিতে বলে, কারণ অদ্ভুত সময় সংক্রান্ত সমস্যা এবং রাষ্ট্রীয় পরিবর্তনের ফলে প্রাপ্ত প্রতিটি অসম্পূর্ণ ক্ষেত্রে আপনাকে আবার ফোন করতে হবে।
নির্বাচিত প্রাপ্তি সাধারণত আপনাকে সমস্ত সম্ভাব্য ইভেন্টগুলির কেবলমাত্র একটি উপগোষ্ঠীতে ফোকাস করার অনুমতি দেয় এবং আপনাকে সেই ক্ষেত্রে ইভেন্টগুলি সম্পর্কে আরও বেশি স্বাচ্ছন্দ্যের সাথে যুক্তি দিতে দেয়। নোট Erlang নামক জিনিসের একটি আচরণ (নকশা প্যাটার্ন / ফ্রেমওয়ার্ক বাস্তবায়ন) আছে যে gen_event
। জেন_ভেন্ট বাস্তবায়ন আপনাকে নোড.জেএস-তে কী ব্যবহার করা হচ্ছে তার অনুরূপ একটি প্রক্রিয়া করার অনুমতি দেয় যদি এটি আপনি চান তবে।
তাদের মধ্যে পার্থক্য রয়েছে এমন অন্যান্য পয়েন্টগুলি থাকবে; এরলং এর পূর্বনির্ধারিত সময়সূচী রয়েছে যখন নোড.জেএস এটি সমবায় করে তোলে, এরলং কিছু খুব বড় আকারের অ্যাপ্লিকেশনগুলিতে (বিতরণ এবং সমস্ত) আরও উপযুক্ত, তবে নোড.জেএস এবং এর সম্প্রদায়টি সর্বশেষ ওয়েব প্রবণতা সম্পর্কে সাধারণত আরও ওয়েব অ্যাপ্লিকেশন এবং জ্ঞানসম্পন্ন। এটি সেরা সরঞ্জামটি বেছে নেওয়ার প্রশ্ন এবং এটি আপনার পটভূমি, আপনার সমস্যার ধরণ এবং আপনার পছন্দগুলির উপর নির্ভর করবে। আমার ক্ষেত্রে, এরলংয়ের মডেলটি আমার চিন্তাভাবনার পদ্ধতিটিকে খুব ভালভাবে ফিট করে। এটি অগত্যা সবার ক্ষেত্রে হয় না।
আশাকরি এটা সাহায্য করবে.