ক্রিয়ামূলক প্রোগ্রামিং কি অঙ্কের সাথে দৃ strongly়ভাবে সম্পর্কিত?


21

ফাংশনাল প্রোগ্রামিং কি গণিতের সাথে এতটা সম্পর্কিত কারণ কার্যকরী প্রোগ্রামিংয়ের বেশিরভাগ গাণিতিক ধারণার সাথে চিত্রিত হয়? একটি অত্যাবশ্যকীয় ব্যাকগ্রাউন্ড সহ কোনও প্রোগ্রামারের জন্য ফাংশনাল প্রোগ্রামিং শিখতে ও বুঝতে শেখার জন্য গণিতের একটি শক্ত ভিত্তি থাকা কী দরকার?


1
এই প্রশ্নটি কি সঠিকভাবে গাণিতিকের সাথে ট্যাগ করা বা এটি গণিত হওয়া উচিত?

এখানে এবং এখানে দুটি খুব একই প্রশ্ন। আমি তোমাদের মনে করি না আছে গণিত একটি 'শক্তিশালী ঘাঁটি' আছে কিন্তু আপনি দৃশ্য কিছু বিন্দু থেকে এটা নীতির একটা মোটামুটি ভাল বোঝার প্রয়োজন। জ্যামিতি মেমরি ম্যাপিংয়ের ক্ষেত্রে আমাকে সবচেয়ে বেশি সহায়তা করে, তবে আমি সংখ্যাগুলিকে খুব কমই এরকম মনে করি। ম্যাথ যদিও খুব দরকারী।
গ্রেট ক্লোবোন

উত্তর:


28

সমস্ত প্রোগ্রামিং গণিত সম্পর্কিত। প্রকৃতপক্ষে অনেক বিশ্ববিদ্যালয় তাদের কম্পিউটার বিজ্ঞান প্রোগ্রামগুলি গণিত বিভাগের আওতায় রাখে।

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

সাধারণভাবে ঘোষিত প্রোগ্রামিং ভাষাগুলি গ্রহণ করার ক্ষেত্রে আমি যে সত্যিকারের অসুবিধা পেয়েছি তা হ'ল (যার মধ্যে একটি উপসেট) এটি নিয়ন্ত্রণে থাকার তাগিদ ছেড়ে দিচ্ছে; কি করতে হবে তা কম্পিউটারকে জানাতে। এটি কিছুটা অভ্যস্ত হয়ে যায়।


সুন্দর শব্দ, +1।
মুদাসাসির

4
আপনি এসকিউএল শিখতে গেলে ভাল ঘোষণামূলক প্রোগ্রামিং এত কঠিন হয় না।

7

হ্যাঁ. মূলত, একটি কার্যকরী প্রোগ্রামটি এই জাতীয় বিবৃতিগুলির একটি গোছা:

// 1_ এবং 2_ হ'ল "ডামি আর্গুমেন্ট" চ (1_): = পাপ (1_) জি (1_, 2_): = 1_ + 2_ ইত্যাদি ...

x = f ()

y = g (x)

z = h (x, h2 (y))

ইত্যাদি ...

পূর্বনির্ধারিত মানগুলির ফাংশন হিসাবে প্রোগ্রামটি নতুন মানগুলি (নোট: পরিবর্তনশীল নয়) সংজ্ঞায়িত সমীকরণের আকারে যা করার কথা তা আপনি লিখছেন। আপনি সম্পর্ক হিসাবে ফাংশন সংজ্ঞায়িত। এটি গাণিতিক উপপাদ্যগুলির যেভাবে লেখা হয়েছে তার সাথে বেশ মিল।


আমি হ্যাশেল এবং অন্যের অদ্ভুত সিনট্যাক্সের চেয়ে গাণিতিক ক্রিয়াকলাপগুলি আরও ভালভাবে বুঝতে পারি। আপনার কোনও লিঙ্ক আছে যা কোনও কার্যকরী ভাষার সিনট্যাক্সের সাথে গণিতের পদক্ষেপগুলির সাথে সম্পর্কিত।
রেইনডক্টর 25'15

এই উত্তরটি সুনির্দিষ্ট। আপনি যখন গাণিতিক ফাংশন লিখছেন এবং ধাপে ধাপে পদ্ধতিতে নয় তা এফপি নিখুঁত জ্ঞান তৈরি করতে শুরু করবে start বেশিরভাগ লোকেরা প্রথমে প্রক্রিয়াজাতীয় প্রোগ্রামিং শিখেন এবং সেই ব্যাগেজ বিশাল। আমি মনে করি পদ্ধতিগত ভাষায় "ফাংশন" বলা উচিত "পদ্ধতি" "
কাকাজি

2

আইএমও ম্যাথেমেটিকা ​​এমন একটি ভাষার উদাহরণ হিসাবে যেখানে আপনি কার্যকরী প্রোগ্রামিং ব্যবহার করতে পারেন, গণিতে কোনও শক্তিশালী ব্যাকগ্রাউন্ডের প্রয়োজন হয় না। আসলে, আমি মনে করি না যে আমি আমার প্রাথমিক গণিত শিক্ষার সময় ফাংশনাল প্রোগ্রামিংয়ের মতো কোনও কিছুর মুখোমুখি হয়েছি। আমি গণিতের প্রোগ্রামিং সি-স্টাইলে শুরু করেছি এবং কয়েক বছর পরে কার্যকরী প্রোগ্রামিং আবিষ্কার করেছি। আমি মনে করি না মৌলিক কার্যকরী প্রোগ্রামিং নির্মান পছন্দ করেন Map, Apply, NestList, ইত্যাদি একেবারেই কোনও গণিত পটভূমি প্রয়োজন।


1

আসলে তা না. ফাংশনাল প্রোগ্রামিং কেবল একটি পদ্ধতি, তবে ল্যাম্বডা ক্যালকুলাস এবং এর মতো স্টাফের এটির বেস ছিল।

প্রক্রিয়াভিত্তিক ভাষায় ফাংশনাল প্রোগ্রামিং ধারণাগুলি প্রবর্তনের এক (ছোট) প্রয়াস সমাপ্তি। পরিবর্তে for(int i =0 ; i < num; i++) doStuff(arr[i]);, আপনি পরিবর্তে ধরে নিতে পারেন যে অ্যারের উপাদানগুলি অন্তর্নিহিতভাবে "তাদের সাথে স্টাফ করা" থাকতে পারেarr.each do |el| doStuff(el) end


10
আপনি কেবল কোনও বেনাম ফাংশনটির উদাহরণ দিচ্ছেন, বন্ধ নয়। Wikiedpia:The term closure is often mistakenly used to mean anonymous function. This is probably because most languages implementing anonymous functions allow them to form closures and programmers are usually introduced to both concepts at the same time. These are, however, distinct concepts. A closure retains a reference to the environment at the time it was created (for example, to the current value of a local variable in the enclosing scope) while a generic anonymous function need not do this.

1

সংক্ষিপ্ত উত্তরটি হ'ল: হ্যাঁ, কারণ নির্দিষ্ট কিছু ডিগ্রিধারী (যেমন প্রোগ্রামিং ল্যাঙ্গুয়েজ) সহ সমস্ত কিছু গণিতের বিভিন্ন ডিগ্রির জন্য দৃ mathe়ভাবে গণিতের সাথে সম্পর্কিত।

তবে, প্রোগ্রামিং ভাষা ব্যবহারের জন্য গণিতের সাথে কঠোরভাবে পরিচিতির প্রয়োজন হয় না, উদাহরণস্বরূপ ভাষার তাত্ত্বিক ভিত্তি। কোনও প্রসঙ্গমুক্ত ভাষা কী এবং কোন ভাষা ব্যবহারের জন্য এ জাতীয় ভাষা এবং আইন কী কী তা আপনার জানতে হবে না। তেমনি, জার্মান বা ফরাসী ভাষা বলতে আপনার কোনও জার্মানবাদী বা রোমানবাদী হতে হবে না।

"গাণিতিক" স্বরলিপি কার্যকরী ভাষার সাধারণ সম্পত্তি নয়। হাস্কেলের তুলনায় স্কালা এবং সমস্ত লিস্প ভিত্তিক ভাষাগুলির মধ্যে খুব আলাদা বাক্য গঠন রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.