আমি ফরথ সম্পর্কে কিছুটা জানি তাই আমি নিজেকে এতে সীমাবদ্ধ রাখব। এটি একটি নিম্ন স্তরের ভাষা, যা আপনাকে সমস্ত হার্ডওয়্যার সংস্থানগুলিতে প্রোগ্রামার হিসাবে অ্যাক্সেস দেয়। সুতরাং আপনি যা খুশি তা করতে পারেন।
concurrency
সমান্তরাল প্রোগ্রাম (সম্পাদনা: বাস্তব সমবর্তী প্রোগ্রাম বলতে ব্যবহৃত) পেতে আপনার কমপক্ষে দুটি এক্সিকিউশন ইউনিট (সিপিইউ-এস) প্রয়োজন। ফোরথের একটি শব্দের প্রয়োগ করা বরং তুচ্ছ হবে, উদাহরণস্বরূপ, "এই দুটি যুক্তি ব্যবহার করে প্রসেসর 2 এ এই শব্দটি চালান"। শব্দটি প্রসেসর 2 এ দুটি প্রয়োজনীয় স্ট্যাক বরাদ্দ করবে এবং শব্দটি চালানো শুরু করবে। আপনাকে সেই প্রোগ্রামটিতে কী কী কনস্ট্রাক্টস ব্যবহার করতে পারে তার জন্য নিজেকে কিছুটা সীমাবদ্ধ রাখতে হবে।
যদি যুগ্ম প্রোগ্রামগুলির সংখ্যা কার্যকরকরণ ইউনিটের সংখ্যার চেয়ে বেশি হয় তবে আপনি "সিউডো সমান্তরাল" প্রোগ্রামগুলির জন্য যেতে পারেন। মূলত এটি করার দুটি উপায় রয়েছে: কর্টাইন বা পূর্বসামগ্রী মাল্টিটাস্কিং। যে কোনও ক্ষেত্রে এটি সম্ভব (সহজ নয়, তবে সাহিত্যে বর্ণিত) কীভাবে এটি অর্জন করা যায় এবং ফোরথ আপনাকে প্রয়োজনীয় সমস্ত নিম্ন স্তরের জিনিসগুলি অ্যাক্সেস করার অনুমতি দেয়।
অলস মূল্যায়ন
অবশ্যই আপনি কেবল কোনও প্রোগ্রামিং ভাষার মতোই ফরথ এ এটি করতে পারেন। এটি হাস্কেল যেমন বলে তেমন মার্জিত বা "অন্তর্নির্মিত" হবে না। আমি খুব নিষ্পাপ উদাহরণ ব্যবহার করব।
ধারণাটি হ'ল আপনি কোনও "ফাংশন" (এখানে স্বল্পভাবে ব্যবহৃত) সংজ্ঞায়িত করেন যা কিছু সেট সেট দেয়। একটি উদাহরণ একটি ফাংশন যা সমস্ত পূর্ণসংখ্যা ফেরত দেয়। তারপরে আপনি এই সেটটিতে অপারেশন করেন এবং ফলাফল সম্পন্ন হয়ে গেলে। উদাহরণস্বরূপ, আপনি যদি যোগফলটি 1000 এর চেয়ে বড় না হওয়া পর্যন্ত সমস্ত সংখ্যার যোগফল যোগ করতে চান- এটি তখন এই সেটটিতে কাজ শুরু করবে। একটি অলস বাস্তবায়নের "সেটটিতে আমাকে পরবর্তী মান দিন" এর একটি উপায় থাকবে। এটি করার জন্য ফানকিশন "শেষ মান দিন" এর মধ্যে কেবল একটি পরিবর্তনশীল প্রয়োজন।
হাস্কেল এইভাবে জিনিসগুলি করে। অবশ্যই এটি আরও জটিল পরিস্থিতি পরিচালনা করে তবে ধারণাটি একই। এটি মূল্যায়নটিকে এমনভাবে চিনি দেয় যা আপনাকে প্রোগ্রামার হিসাবে সমস্যা সমাধানে কীভাবে সমাধান করতে পারে তা নয় concent