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