ক্রিয়ামূলক প্রোগ্রামিং একটি ঘোষণামূলক দৃষ্টান্ত। এফপি সহ একটি স্ট্রিংহট পার্শ্ব-প্রতিক্রিয়া এড়ানো হয়। এটি বলা হয় যে কিছু সমস্যার জন্য এফপি ভাল ফিট হয় না।
কোন সাধারণ সমস্যাগুলির জন্য ফাংশনাল প্রোগ্রামিং ভাল ফিট হয় না?
ক্রিয়ামূলক প্রোগ্রামিং একটি ঘোষণামূলক দৃষ্টান্ত। এফপি সহ একটি স্ট্রিংহট পার্শ্ব-প্রতিক্রিয়া এড়ানো হয়। এটি বলা হয় যে কিছু সমস্যার জন্য এফপি ভাল ফিট হয় না।
কোন সাধারণ সমস্যাগুলির জন্য ফাংশনাল প্রোগ্রামিং ভাল ফিট হয় না?
উত্তর:
অ্যাপ্লিকেশনগুলি যা প্রকৃতির খুব রাজ্যময়। ভিডিও গেমগুলি একটি ভাল উদাহরণ কারণ তারা আসল বিশ্বের মডেল করে। প্রতিবার কিছু পরিবর্তন হওয়ার সাথে সাথে পূর্ববর্তী রাষ্ট্র থেকে পুনর্নির্মাণের পরিবর্তে বিশ্বের অবস্থা পরিবর্তন করার বিষয়ে চিন্তাভাবনা করা আরও বেশি জ্ঞান লাভ করে।
একটি দৃ concrete় উদাহরণটি দৈত্যটির গুলিবিদ্ধ হওয়ার পরে তার স্বাস্থ্যের পরিবর্তন করবে। একেবারে নতুন দৈত্যের পরিবর্তে এটির স্বাস্থ্যের পরিবর্তন করা আরও অনেক বুদ্ধিমান, এখনই যার স্বাস্থ্য কম it এই ধরণের পরিবর্তনগুলি গেম জগতের প্রায় সমস্ত কিছুকেই তৈরি করে এবং খাঁটি কার্যকরী পদ্ধতিতে এটি করা খুব স্বজ্ঞাত নয়। আমি ধারণা করি কিছু কার্যকর পারফরম্যান্স জরিমানা থাকতে পারে, কমপক্ষে যদি আপনি এটি নিখুঁত কার্যকরী ভাষায় করছেন।
(পার্শ্ব নোট হিসাবে, গেমগুলির কিছু সমস্যাগুলি ক্রিয়াগত প্রোগ্রামিং যেমন এআই এর জন্য খুব ভাল উপযুক্ত suited এই ক্ষেত্রে একটি সংকর কার্যকরী / অপরিহার্য ভাষা হবে সেরা ফিট))
রিয়েল-টাইম এম্বেডেড প্রোগ্রামিং সমস্ত পার্শ্ব প্রতিক্রিয়া সম্পর্কে। ডিজিটাল এবং অ্যানালগ আইও, টাইমারস, সিরিয়াল এবং সমান্তরাল পোর্টগুলির সাথে কথোপকথন করা, আকর্ষণীয় সবকিছু পার্শ্বের প্রভাবগুলির সাথে ফাংশনগুলি কল করে সম্পন্ন করা হয়।
আমি যুক্তি দিয়েছি যে জিইউআই প্রোগ্রামিং কার্যকরী প্রোগ্রামিংয়ের জন্য উপযুক্ত নয়। জিইউআই সাধারণতঃ রাষ্ট্রীয় হয় এবং পার্শ্ব-প্রতিক্রিয়া মুক্ত ব্যবহারের পরিবর্তে রাজ্য ব্যবহার করে মডেলিং / পরিচালনা করা অনেক সহজ। জিইউআইয়ের জন্য কার্যকরী প্রোগ্রামিং ভাষা ব্যবহার করা অবশ্যই সম্ভব ... তবে এটি সম্ভবত ভাল ধারণা নয়।
অন্য উত্তরে যেমন উল্লেখ করা হয়েছে, গেমগুলি প্রায়শই ট্র্যাকিং স্টেটের মাধ্যমে পরিচালনা করা সহজ হয় এবং আপনি যখন একটি কার্যকরী ভাষায় একটি গেম লিখতে পারেন তবে "রাষ্ট্রীয়" ভাষায় এটি করা প্রায়শই সহজ এবং আরও কার্যকর (যেমন কোনও বস্তু-কেন্দ্রিক) ভাষা).
ডেটা-চালিত ব্যবসায়িক অ্যাপ্লিকেশন। ইউজার ইন্টারফেস এবং সাধারণ ডেটা ক্রিয়াকলাপগুলির এফপি দরকার হয় না।
filter
, reduce
এবং map
। কিছু নিক্ষেপ sort
, partition
, groupBy
। সব পরে, এই ধরণের অ্যাপ্লিকেশনের লেখার জন্য বহুল ব্যবহৃত প্রোগ্রামিং ভাষা এক্সেল, যা হয় একটি কার্মিক ভাষা।
প্রতি সেটের কার্যক্ষম প্রোগ্রামিংয়ের জন্য উপযুক্ত নয় এমন কোনও সমস্যা সেট আপনি সহজেই খারিজ করতে পারবেন না।
ফাংশনাল প্রোগ্রামিং এবং এর বৈশিষ্ট্যগুলির জন্য ব্যবহৃত প্রকৃত ভাষার উপর অনেক কিছুই নির্ভর করে।
রিয়েলটাইম এম্বেড-সিস্টেমগুলির জন্য ইতিমধ্যে উল্লিখিত এরলং এর একটি উদাহরণ lang
কার্যনির্বাহী প্রোগ্রামিংয়ের বিরুদ্ধে রাষ্ট্রীয় পূর্ণতাও একটি ভাল মাপকাঠি নয়, এটি মোকাবেলায় কার্যকরী প্রোগ্রামিং ভাষায় বেশ কয়েকটি সফল উপায় প্রয়োগ করা হয়েছে।
পার্শ্ব প্রতিক্রিয়াগুলি প্রায়শই কার্যকরী প্রোগ্রামিংয়ের বিরুদ্ধেও উল্লেখ করা হয়। সম্পূর্ণ প্রোগ্রামিং নয় এমন প্রতিটি প্রোগ্রামের পার্শ্ব প্রতিক্রিয়া রয়েছে। সুতরাং প্রতিটি বাস্তব বিশ্বের এফপি ভাষার সাথে এটি মোকাবেলা করার কিছু উপায় রয়েছে, এটি কেবলমাত্র পার্শ্ব প্রতিক্রিয়াগুলি কীভাবে মার্জিতভাবে সজ্জিত করা যায় তা কেবল বিষয়।
গ্লোবাল ভেরিয়েবলের মতো স্বেচ্ছাচারী পার্শ্ব প্রতিক্রিয়াগুলির কোনও দরকার নেই।
তবে এমন সমস্যা সেট রয়েছে যা কার্যকরী প্রোগ্রামিংয়ে যাওয়া সহজ করে তোলে কারণ তারা সমস্যাটিকে ততটা দেখার মতো আপনার মোড়কে মোচড় দেয় না। তবে একবার আপনি কার্যনির্বাহী ভাবেন এবং আরও বেশি সমস্যা সেট কম পার্শ্ব-প্রতিক্রিয়া খোলে।
সি প্রোগ্রামিংয়ের সময়ও গ্লোবাল ভেরিয়েবলের মতো স্বেচ্ছাচারী পার্শ্ব প্রতিক্রিয়া যতটা সম্ভব হ্রাস করা সর্বদা একটি ভাল ধারণা।