আমি এই উত্তরগুলির বেশিরভাগ ক্ষেত্রে যা দেখছি তা নিয়ে আমি আপত্তি জানাই, যা কোনও ফাংশনকে একটি ফাংশন করে তোলে তা হ'ল এটি একটি মান দেয়।
একটি ফাংশন কেবল কোনও পুরানো পদ্ধতি নয় যা কোনও মান দেয়। তাই নয়: কোনও পদ্ধতির আসল ফাংশন হওয়ার জন্য এটি অবশ্যই সর্বদা একটি নির্দিষ্ট ইনপুট দেওয়া একই মানটি প্রদান করে। একটি পদ্ধতির উদাহরণ যা কোনও ফাংশন নয় random
, বেশিরভাগ ভাষায় পদ্ধতিটি কারণ এটি যদি কোনও মান ফেরত দেয় তবে মানটি সর্বদা এক রকম হয় না।
সুতরাং একটি ফাংশন একটি মানচিত্রের অনুরূপ (যেমন যেখানে x -> x'
একটি মাত্রিক ফাংশন )। এটি নিয়মিত পদ্ধতি এবং ফাংশনগুলির মধ্যে একটি খুব গুরুত্বপূর্ণ পার্থক্য কারণ সত্যিকারের ফাংশনগুলির সাথে কাজ করার সময় এবং ক্রম যা তাদের মূল্যায়ন করা হয় তা বিবেচনা করা উচিত যেখানে এটি সর্বদা অ-কার্যকারিতার ক্ষেত্রে নয়।
এখানে এমন একটি পদ্ধতির আরও একটি উদাহরণ যা ফাংশন নয় তবে অন্যথায় এখনও একটি মান প্রদান করবে।
// The following is pseudo code:
g(x) = {
if (morning()) {
g = 2 * x;
}
else {
g = x;
}
return g;
}
পদ্ধতিগুলি মানগুলি ফেরায় না এমন ধারণাটি নিয়ে আমি আরও আপত্তি করি। একটি পদ্ধতি একটি ফাংশন বা পদ্ধতি সম্পর্কে কথা বলার একটি নির্দিষ্ট উপায়। সুতরাং এর অর্থ যদি আপনার পদ্ধতিটি সংজ্ঞায়িত করে বা প্রয়োগ করে এমন অন্তর্নিহিত পদ্ধতি যদি কোনও মান দেয়, তবে অনুমান করুন যে সেই পদ্ধতিটি কোনও মান কী করে দেয়। উদাহরণস্বরূপ এসআইসিপি থেকে নিম্নলিখিত স্নিপেট নিন :
// We can immediately translate this definition into a recursive procedure
// for computing Fibonacci numbers:
(define (fib n)
(cond ((= n 0) 0)
((= n 1) 1)
(else (+ (fib (- n 1))
(fib (- n 2))))))
আপনি কি ইদানীং পুনরাবৃত্ত প্রক্রিয়া শুনেছেন? তারা একটি পুনরাবৃত্তি ফাংশন (একটি বাস্তব ফাংশন) সম্পর্কে কথা বলছে এবং এটি একটি মান ফিরিয়ে দিচ্ছে এবং তারা "পদ্ধতি" শব্দটি ব্যবহার করছে। তাহলে কি পার্থক্য আছে?
ঠিক একটি ফাংশন সম্পর্কে চিন্তাভাবনার অন্য উপায় (উপরে উল্লিখিত অর্থ ছাড়াও) সংখ্যার মতো আদর্শের একটি বিমূর্ত উপস্থাপনা হিসাবে। একটি পদ্ধতি হ'ল সেই জিনিসটির আসল বাস্তবায়ন। আমি ব্যক্তিগতভাবে মনে করি তারা বিনিময়যোগ্য।
(দ্রষ্টব্য, আপনি যে লিঙ্কটি আমি সরবরাহ করেছি তা থেকে আপনি যদি এই অধ্যায়টি পড়ে থাকেন তবে বুঝতে পারেন যে শক্ত ধারণা উপলব্ধি করা কোনও ফাংশন এবং একটি পদ্ধতির মধ্যে নয়, একটি প্রক্রিয়া এবং একটি পদ্ধতির। পুনরাবৃত্ত প্রক্রিয়া?)
পদ্ধতির জন্য একটি অ্যানালগ হ'ল রেসিপি। উদাহরণ স্বরূপ; ধরুন আপনার কাছে একটি মেশিন রয়েছে যা make-pies
এই মেশিনটির উপাদান গ্রহণ করে (fruit, milk, flower, eggs, sugar, heat)
এবং এই মেশিনটি a প্রদান করে pie
।
এই মেশিনের একটি উপস্থাপনা দেখতে পারে
make-pies (fruit, milk, flower, eggs, sugar, heat) = {
return (heat (add fruit (mix eggs flower milk)))
}
অবশ্যই পাই তৈরির একমাত্র উপায় এটি নয়।
এই ক্ষেত্রে আমরা দেখতে পাচ্ছি:
A function is to a machine
as a procedure is to a recipe
as attributes are to ingredients
as output is to product
এই সাদৃশ্যটি ঠিক আছে তবে আপনি যখন কম্পিউটার প্রোগ্রামের সাথে ডিল করছেন তখন সমস্ত কিছু বিমূর্ততা বিবেচনায় নেওয়ার পরে তা ভেঙে যায়। সুতরাং কোনও মেশিনের রেসিপিটির বিপরীতে আমরা দুটি জিনিস তুলনা করছি যা নিজেরাই বিমূর্ততা; দুটি জিনিস যা একই জিনিস হতে পারে। এবং আমি ধরে রাখছি যে তারা (সমস্ত উদ্দেশ্য এবং উদ্দেশ্যে) একই জিনিস।