- বেসিক ধারণা
- বৈশিষ্ট্য
- খাঁটি ফাংশন
- প্রথম শ্রেণীর বৈশিষ্ট্য
- রেফারেন্সিয়াল স্বচ্ছতা
- পুনরাবৃত্তি
- অপরিচ্ছন্নতা
- উদাহরণ
- আবশ্যকীয় এবং ঘোষণামূলক পদ্ধতির
- খাঁটি ফাংশন
- প্রথম শ্রেণীর অবজেক্ট হিসাবে ফাংশন
- সুবিধা
- খাটো এবং বুঝতে সহজ
- কোনও নিয়ন্ত্রণ প্রবাহ নেই
- অসুবিধেও
- অ্যাপ্লিকেশন
- কার্যকরী পদ্ধতি
- যে ভাষাগুলি কার্যকরী প্রোগ্রামিং সমর্থন করে
- ডি
- এরলং
- হাস্কেল
- এমএল
- উদ্দেশ্য ক্যামেল
- পরিকল্পনা
- তথ্যসূত্র
কার্যকরী প্রোগ্রামিং প্যাটার্ন প্রোগ্রামিং সাথে সঙ্গতিপূর্ণ একটি কার্মিক গাণিতিক মডেল বদলে প্রসেসর, যা অনুজ্ঞাসূচক প্রোগ্রামিং প্রধান ধারণা নির্দেশাবলী বর্ণিত সিকোয়েন্স যেমন একটি প্রোগ্রাম আচরণ জানায় ধারণার উপর ভিত্তি করে তৈরি।
কার্যকরী ভাষা বিবৃতি কার্যকর করার চেয়ে বিবৃতি এবং শর্তগুলিকে জোর দেয়। এই প্রোগ্রামিংয়ে, ফলাফল কেবল স্থানীয় বা বিশ্বব্যাপী রাষ্ট্রের বাধ্যতামূলক অন্যান্য ধরণের বিপরীতে কোনও ফাংশনে পাস হওয়া পরামিতিগুলির উপর নির্ভর করবে।
হাস্কেল ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজে ম্যাপিং ফাংশনটি কীভাবে পরিচালনা করে তার ডায়াগ্রাম। উত্স: প্লুক দ্বারা - নিজস্ব কাজ, সিসি কমন্স.উইকিমিডিয়া.org।
এর নামটি গাণিতিক ক্রিয়াকলাপ থেকে আসে যা আউটপুটগুলির একটি সেটকে ইনপুটগুলির একটি সেট নির্ধারণ করে। একটি গাণিতিক ফাংশন আসলে কোনও কাজ করে না, বরং কোনও প্রক্রিয়াটির মডেল বর্ণনা করে, সূত্রের মাধ্যমে ব্যাখ্যা করে যে কোনও ফাংশনে ইনপুটগুলির সেটগুলি কী উত্পন্ন করে।
বেসিক ধারণা
ফাংশনাল প্রোগ্রামিং যে ভিত্তিতে ভিত্তি করে তা হ'ল ল্যাম্বদা ক্যালকুলাস, যা বিশ শতকের তৃতীয় দশকে ফাংশনগুলি সংজ্ঞায়িত ও প্রয়োগ করার জন্য তৈরি করা হয়েছিল। এলআইএসপি হ'ল এটির প্রথম প্রোগ্রামিং ভাষা, 1960 সালে ডিজাইন করা।
যদিও বেশিরভাগ প্রোগ্রামিং ল্যাঙ্গুয়েজে ইনপুট, আউটপুট এবং বাহ্যিক ভেরিয়েবলগুলি থাকে যা ফাংশনগুলির মধ্যে থেকে সেট করা বা ব্যবহার করা যায়, ফাংশনাল প্রোগ্রামিং এড়িয়ে যায়। ধারণাটি হ'ল প্রতিবার একই প্যারামিটারগুলির সাথে কোনও ফাংশন ডাকা হলে, একই মানটি ফেরত দেওয়া উচিত।
বৈশিষ্ট্য
ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজগুলিকে অ্যাপ্লিকেশন বলা হয়, কারণ ফাংশনগুলি তাদের প্যারামিটারগুলিতে প্রয়োগ করা হয়, পাশাপাশি ঘোষণামূলক এবং অ-প্রক্রিয়াজাতীয়, যেহেতু সংজ্ঞাগুলি নির্দিষ্ট করে কী কী গণনা করতে হবে তা নির্ধারণ করে এবং এটি কীভাবে গণনা করা হয় না।
খাঁটি ফাংশন
কোনও ফাংশন বিশুদ্ধ হয় যখন এর কোনও পর্যবেক্ষণযোগ্য পার্শ্ব প্রতিক্রিয়া নেই যেমন বাহ্যিক ভেরিয়েবলগুলি পরিবর্তন করা, ফাইল সিস্টেমের পরিবর্তন ইত্যাদি।
এই ফাংশনগুলি বিশ্বাসযোগ্য হিসাবে বিবেচিত হয় কারণ তারা কোডের অন্যান্য অংশগুলির কোনও কোনও মুহুর্তের উপর নির্ভর করতে পারে এমন কোনও পরিবর্তনশীল স্পষ্টভাবে পরিবর্তন করবে না। এই সীমাবদ্ধতাগুলির সাথে কোডটি অদ্ভুত বলে মনে হবে, তবে এই ফাংশনগুলি নির্বিচারক, অনুমানযোগ্য এবং কম্পোজেবল হিসাবে বিবেচনা করা উচিত।
প্রথম শ্রেণীর বৈশিষ্ট্য
ফাংশনগুলি মান হিসাবে বিবেচিত হয় যা ভেরিয়েবলগুলিতে বরাদ্দ করা যেতে পারে, তাই এগুলি অন্য ফাংশনগুলিতে পাস এবং ফিরে আসতে পারে। অর্থাৎ কোনও ফাংশনটি ব্যবহার করা যেতে পারে যেমন এটি প্যারামিটার বা মান হিসাবে ফিরে আসছিল that
এটি বোঝায় যে ফাংশনটি কেবল ফাংশনটির ফলাফলের পরিবর্তে যেমন পাস করা যায়। উদাহরণস্বরূপ, ডাবল (এক্স) ফাংশনটি বিবেচনা করুন, যা এর ইনপুট প্যারামিটারের মান দ্বিগুণ করে দেয়। সুতরাং, ডাবল (2) 4 ফিরে আসবে।
এটি প্রথম শ্রেণীর ফাংশন হিসাবে, কোড (ডাবল (ডাবল (2)) ডাবল (4) কোডের সমান হবে This এটি আপনাকে একটি ফাংশনটিকে অন্যের প্যারামিটার হিসাবে বাসা বাঁধতে দেয়।
রেফারেন্সিয়াল স্বচ্ছতা
এটি এই প্রোগ্রামিং প্যাটার্নে কোনও অ্যাসাইনমেন্ট স্টেটমেন্ট না থাকার বিষয়টি বোঝায়। এটি হ'ল, যদি আপনি অতিরিক্ত মান সংরক্ষণ করতে চান তবে আপনাকে অবশ্যই নতুন ভেরিয়েবলগুলি সংজ্ঞায়িত করতে হবে। অতএব, একটি চলকের অবস্থা সর্বদা স্থির থাকে।
এটি অযাচিত প্রভাবগুলির সামান্যতম সম্ভাবনাটি সরিয়ে দেয়, কারণ প্রোগ্রামের কার্যকর করার যে কোনও বিন্দুতে কোনও পরিবর্তনশীল তার আসল মান দ্বারা প্রতিস্থাপিত হতে পারে।
পুনরাবৃত্তি
ফাংশনাল প্রোগ্রামিংয়ে "জন্য" এবং "যখন" লুপ থাকে না। পরিবর্তে, পুনরাবৃত্তি পুনরাবৃত্তির উপর নির্ভর করে। পুনরাবৃত্তি পুনরাবৃত্তি ফাংশন ব্যবহার করে প্রয়োগ করা হয়, যা বেস কেস না হওয়া পর্যন্ত তাদের পুনরাবৃত্তি বলে।
অপরিচ্ছন্নতা
ভেরিয়েবলগুলি পরিবর্তনযোগ্য, অর্থাত্ একবার ভেরিয়েবলটি আরম্ভ করার পরে এটি পরিবর্তন করা সম্ভব নয়। যদিও আপনি একটি নতুন ভেরিয়েবল তৈরি করতে পারেন, বিদ্যমান ভেরিয়েবলগুলি সংশোধন করার অনুমতি নেই।
উদাহরণ
আবশ্যকীয় এবং ঘোষণামূলক পদ্ধতির
একটি উদাহরণ সহ আপনি এই পদ্ধতির মধ্যে পার্থক্যটি বিশ্লেষণ করতে পারেন, উভয় বিন্যাসে একই ক্রিয়াকলাপ সম্পাদন করা যা কোন তালিকা থেকে বিজোড় সংখ্যাগুলি ফিল্টার করে যখন 5 এর চেয়ে কম সংখ্যার জন্য 5 স্থান করে দেয়।
এটি একই ফলাফল হিসাবে একই গণনা। তবে, আপনি দেখতে পাচ্ছেন যে, প্রয়োজনীয় কোডটি ভার্জোজ এবং তাৎক্ষণিকভাবে পরিষ্কার নয়। অন্যদিকে, ঘোষণামূলক পদ্ধতির পাঠযোগ্য এবং সুস্পষ্ট, কারণ এটি আপনি কী পেতে চান তার উপর দৃষ্টি নিবদ্ধ করে।
খাঁটি ফাংশন
খাঁটি এবং অপরিষ্কার ক্রিয়াকলাপ হিসাবে সংজ্ঞায়িত কিছুটি প্রাথমিক উদাহরণ দিয়ে স্পষ্ট করা যেতে পারে:
প্রথম শ্রেণীর অবজেক্ট হিসাবে ফাংশন
এর অর্থ ফাংশনগুলি একইভাবে ব্যবহার করা যেমন ডেটা ব্যবহৃত হয়। অতএব, তারা অন্য ফাংশন হিসাবে পরামিতি হিসাবে পাস করা যেতে পারে। নিম্নলিখিত উদাহরণে, int ফাংশনটি মানচিত্রের ফাংশনে প্যারামিটার হিসাবে দেওয়া যেতে পারে:
>>> তালিকা (মানচিত্র (int,))
এগুলি ভেরিয়েবলগুলিতে বরাদ্দ করা যায় এবং ফিরে আসতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত কোডে আপনি হ্যালো_ওয়ার্ল্ড ফাংশন নির্ধারণ করতে পারেন, তারপরে একটি ফাংশন হিসাবে ভেরিয়েবলটি কার্যকর করুন।
সুবিধা
- আপনি কী অর্জন করতে চান তার উপর ফোকাস করুন (ঘোষণামূলক) এবং কীভাবে এটি অর্জন করা উচিত (অপরিহার্য)।
- এগুলিতে অ্যাসাইনমেন্ট স্টেটমেন্ট থাকে না, সুতরাং ভেরিয়েবলগুলিকে একটি মান দেওয়ার পরে তারা আর পরিবর্তন করতে পারবে না। সুতরাং, কার্যকরী প্রোগ্রামগুলিতে পার্শ্ব প্রতিক্রিয়া থাকে না।
- যৌক্তিক প্রবাহ স্পষ্ট, যেহেতু রাজ্যটি কম ছড়িয়ে পড়ে এবং স্পষ্টতই সংশোধিত হয় না।
- অলস মূল্যায়নের ধারণাকে সমর্থন করে, যার অর্থ হল প্রয়োজনের সময় মূল্যটি কেবল মূল্যায়ন করা হয় এবং সংরক্ষণ করা হয়।
- যেহেতু খাঁটি ফাংশনগুলি কোনও রাজ্যে পরিবর্তন করে না এবং পুরোপুরি ইনপুটের উপর নির্ভরশীল তাই এগুলি বোঝা সহজ। এই জাতীয় ফাংশন দ্বারা প্রদত্ত রিটার্ন মান তাদের উত্পাদিত ফলাফলের মতোই।
- ভেরিয়েবলগুলি বা কোনও বাহ্যিক ডেটা পরিবর্তন হয় তা এড়াতে খাঁটি ফাংশনগুলির প্রকৃতির কারণে, একযোগের বাস্তবায়ন কার্যকর হয়।
- ফাংশনগুলিকে মান হিসাবে বিবেচনা করা হয়, পরামিতি হিসাবে অন্যান্য ফাংশনে প্রেরণ করা। এটি কোডের বোঝাপড়া এবং পাঠযোগ্যতার উন্নতি করে।
- খাঁটি ফাংশনগুলি পরামিতিগুলি একবার নেয়, অপরিবর্তনীয় আউটপুট উত্পাদন করে। অপরিবর্তনীয় মানগুলি ব্যবহার করা ডিবাগিং এবং পরীক্ষা সহজ করে তোলে।
খাটো এবং বুঝতে সহজ
এগুলি অপরিহার্যতার চেয়ে খাটো এবং সহজে বোঝা যায়। অধ্যয়নগুলি দেখিয়েছে যে কোডের লাইনগুলির ক্ষেত্রে গড় প্রোগ্রামার উত্পাদনশীলতা কোনও প্রোগ্রামিং ভাষার জন্য কম বা বেশি একই রকম হয়, উচ্চ উত্পাদনশীলতায় অনুবাদ করে।
কোনও নিয়ন্ত্রণ প্রবাহ নেই
কোনও ফাংশন কল করা তার ফলাফলের গণনার চেয়ে আলাদা প্রভাব ফেলতে পারে না। এটি ত্রুটিগুলির একটি বৃহত উত্সকে এড়িয়ে যায়, মৃত্যুদন্ড কার্যকর করার ক্রমকেও অপ্রাসঙ্গিক করে তোলে, যেহেতু কোনও পার্শ্ব প্রতিক্রিয়া কোনও অভিব্যক্তির মান পরিবর্তন করতে পারে না এবং এটি যে কোনও সময় মূল্যায়ন করা যেতে পারে।
প্রোগ্রামার নিয়ন্ত্রণের প্রবাহ স্থাপনের বোঝা থেকে মুক্তি পেয়েছে। যেহেতু ভাবগুলি যে কোনও সময়ে মূল্যায়ন করা যায়, ভেরিয়েবলগুলি তাদের মানগুলি দ্বারা প্রতিস্থাপিত হতে পারে।
এই স্বায়ত্তশাসন প্রচলিত কর্মসূচীর চেয়ে কার্যকরী প্রোগ্রামগুলিকে আরও গাণিতিকভাবে পরিচালিত করে তোলে।
অসুবিধেও
- কার্যকরী প্রোগ্রামিং দৃষ্টান্ত সহজ নয়, তাই কোনও শিক্ষানবিশকে বুঝতে অসুবিধা হয়।
- এনকোডিংয়ের সময় অনেকগুলি বস্তুর বিকাশ হওয়ায় এটি বজায় রাখা কঠিন difficult
- কিছু ক্ষেত্রে খাঁটি ফাংশনগুলি লেখার ফলে কোডের পঠনযোগ্যতা হ্রাস পায়।
- পুনরাবৃত্তির সাথে সংমিশ্রণে অপরিবর্তনীয় মানগুলি সিস্টেমের কার্যক্ষমতাতে মারাত্মক হ্রাস পেতে পারে।
- পুনঃব্যবহার খুব জটিল এবং ধ্রুবক রিফ্যাক্টরিং প্রয়োজন।
- লুপ বা লুপগুলি ব্যবহার না করে পুনরাবৃত্ত শৈলীতে প্রোগ্রামগুলি লেখা একটি খুব দু: খজনক কাজ হতে পারে।
- অবজেক্টগুলি সমস্যাটিকে সঠিকভাবে উপস্থাপন করতে পারে না।
- যদিও খাঁটি ফাংশনগুলি লেখা সহজ বলে প্রমাণিত হয় তবে এটিকে বাকী প্রয়োগের সাথে এবং ইনপুট / আউটপুট ক্রিয়াকলাপগুলির সাথে একত্রিত করা বেশ কঠিন
অ্যাপ্লিকেশন
কৃত্রিম বুদ্ধিমত্তা প্রোগ্রামিং কার্যকরী প্রোগ্রামিং ভাষাতে করা হয় এবং কৃত্রিম বুদ্ধিমত্তার কৌশলগুলি বাস্তব বিশ্বের অ্যাপ্লিকেশনগুলিতে মাইগ্রেট করে।
জটিল গাণিতিক মডেলগুলির প্রয়োগেও এটি দুর্দান্ত। এই কারণে, কার্যকরী ভাষার অন্যতম প্রধান ব্যবহার traditionতিহ্যগতভাবে একাডেমিক হয়েছে। এটি এক্সিকিউটেবল স্পেসিফিকেশন এবং প্রোটোটাইপ বাস্তবায়ন বিকাশের জন্য দরকারী।
অনেক কার্যকরী ভাষা সমান্তরাল প্রক্রিয়াকরণ বাস্তবায়নেও দক্ষতা অর্জন করে। এটি খাঁটি ফাংশনগুলির সুবিধা নেওয়ার ক্ষমতার কারণে হয়, যা তারা কার্যকর করা হয় তার আদেশ নির্বিশেষে সর্বদা একই মান প্রদান করে।
কার্যকরী পদ্ধতি
হোয়াটসঅ্যাপ এরলং প্রোগ্রামিং ভাষা ব্যবহার করে, যা কার্যকরী প্রোগ্রামিংয়ের মডেল অনুসরণ করে, এর ফলে এর শতাধিক কর্মচারী প্রায় ১.6 বিলিয়ন লোকের ডেটা পরিচালনা করতে পারবেন।
ক্রিয়ামূলক প্রোগ্রামিং শৈলীর আর একটি গুরুত্বপূর্ণ বাহক হ্যাস্কেল। এটি তার এন্টিসপ্যাম সিস্টেমে ফেসবুক ব্যবহার করে। এমনকি জাভা স্ক্রিপ্ট, যা সর্বাধিক ব্যবহৃত একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ, একটি গতিশীল টাইপযুক্ত কার্যকরী ভাষার বৈশিষ্ট্যগুলি flaunts।
যে ভাষাগুলি কার্যকরী প্রোগ্রামিং সমর্থন করে
ডি
এটি সি ++ এর পরে তৈরি করা হয়েছিল, সি এর সাথে সামঞ্জস্যপূর্ণ থাকার তার লক্ষিত দুর্বলতাগুলি দূর করার সময় এর সমস্ত সুবিধা পেয়েছিল getting
এরলং
এটি অত্যন্ত স্কেলযোগ্য এবং সমবর্তী, এটি টেলিযোগযোগ এবং অন্যান্য অ্যাপ্লিকেশনগুলির জন্য আদর্শ করে তোলে যা একটি অবিশ্বাস্য ক্রমে বিশাল পরিমাণে ডেটা প্রাপ্ত করে।
হাস্কেল
এটি খাঁটি ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজ, যা ল্যাম্বদা ক্যালকুলাস ব্যবহার করে।
এমএল
এটি গাণিতিক, বৈজ্ঞানিক, আর্থিক, বিশ্লেষণাত্মক এবং অন্যান্য অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়। এর অন্যতম শক্তি অন্যান্য প্রোগ্রামগুলি পরিচালনা করতে সফটওয়্যার তৈরি করছে।
উদ্দেশ্য ক্যামেল
এটি একটি মুক্ত উত্স ভাষা যা ক্যামেলের উপর ভিত্তি করে। এটি খুব লাইটওয়েট প্রোগ্রামগুলি তৈরি করে, অন্যান্য ভাষার দ্বারা নির্মিত সেগুলির চেয়ে লোড এবং দ্রুত চালাতে তাদের সহায়তা করে।
পরিকল্পনা
এটি LISP সিনট্যাক্স এবং ALGOL কাঠামোর উপর ভিত্তি করে। এর সরলতার কারণে এটি কম্পিউটার প্রোগ্রামিংয়ের কয়েকটি মূল বিষয়গুলি প্রদর্শন করার জন্য প্রোগ্রাম ডিজাইনের পরিচিতি হিসাবে অনেক কম্পিউটার বিজ্ঞান কোর্সে ব্যবহৃত হয়।
তথ্যসূত্র
- কে এটি হোস্ট করছে (2019)। ফাংশনাল প্রোগ্রামিং শিখুন: কোডিংয়ের এই স্টাইলটি আপনার মনকে উজ্জীবিত করবে। থেকে নেওয়া: whoishostingthis.com।
- আন্দ্রে বার্তোলি (2019)। কার্যকরী প্রোগ্রামিংয়ের পর্যাপ্ত ভূমিকা থেকে নেওয়া: dev.to.
- হ্যাকার আর্থ (2020)। ফাংশনাল প্রোগ্রামিং। থেকে নেওয়া: haakerrear.com।
- ক্লোজার (2020)। ফাংশনাল প্রোগ্রামিং। থেকে নেওয়া: Clojure.org।
- আখিল ভাদওয়াল (2020)। কার্যকরী প্রোগ্রামিং: ধারণা, সুবিধা, অসুবিধা এবং অ্যাপ্লিকেশন। টাট্টু. থেকে নেওয়া: হ্যাকআরিও।
- গুরু 99 (2020)। ফাংশনাল প্রোগ্রামিং কি? উদাহরণ সহ টিউটোরিয়াল। গৃহীত: guru99.com।