সমস্ত ফাংশনাল প্রোগ্রামিং টিউটোরিয়াল কেন এত ম্যাথি?


20

আমি কার্যকরী প্রোগ্রামিং শিখতে চেষ্টা করেছি এবং বেশিরভাগ টিউটোরিয়ালগুলি খুঁজে পেয়েছি আরও জটিল জটিল নির্মাণের জন্য উদাহরণ হিসাবে গণিতের ব্যবহার (কিছু ক্ষেত্রে এমনকি সাধারণগুলি )ও। কেন? আমি কল্পনা করতাম আরও সহজ কিছু ব্যবহার করা যেতে পারে। এটি শিখতে অসুবিধে করছে।

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


কেবলমাত্র সামান্য, আপনার প্রস্তাবিত অন্যান্য 3 টি ভাষা আমি ব্যবহার করে
চার্লস ল্যামবার্ট ২

যদি আপনি সি # জানেন তবে F # শুরু করা সবচেয়ে সহজ কাজ। বড় অঙ্কের জ্ঞানের জন্য অনুরোধ করে না।
11:46 এ সিএনডি

6
এসআইসিপি চেষ্টা করে দেখুন - এটি উচ্চ বিদ্যালয়ের গণিতের বাইরে খুব বেশি যায় না।
এসকে-যুক্তি

@ চার্লস ল্যামবার্ট - অফিসস্পেসে যান এবং আপনি জোবের মন্তব্যের দ্বিতীয় অংশ পাবেন।
জেটি

@ চার্লস ল্যামবার্ট: গ্রেট গুডের জন্য হাস্কেল শিখুন খুব ম্যাথিক নয়: ডি
ম্যাথিউ মিঃ

উত্তর:


21

তারা গণিত ব্যবহার করে কারণ ফাংশনাল প্রোগ্রামিং গাণিতিক নির্মাণের মডেলিংয়ে খুব ভাল এবং গাণিতিক ধারণাগুলিতে বিশেষত ল্যাম্বডা ক্যালকুলাসের সাথে আবদ্ধ। এছাড়াও যেহেতু I / O সাধারণত বিভিন্ন ভাষার আরপিএলগুলির মাধ্যমে কার্যকরী দৃষ্টান্তের গণিতের প্রচুর ভাষায় মোটামুটি কাঁটাযুক্ত এবং উন্নত বিষয় তাই প্রথমে ভাষা শেখানোর একটি ভাল উপায় হয়ে ওঠে।

যেহেতু ফাংশনাল প্রোগ্রামিং ফাংশনগুলিকে প্রোগ্রামিং ভাষার মধ্যে প্রথম শ্রেণীর গঠন হিসাবে বিবেচনা করে, ফাংশন জেনারেশন খুব গুরুত্বপূর্ণ হয়ে ওঠে। সুতরাং উচ্চতর গণিত মোটামুটি গুরুত্বপূর্ণ হয়ে ওঠে বিশেষত গ্রাফ তত্ত্ব।

অপরিহার্য ভাষাগুলি ঠিক তেমনি ম্যাথিক তবে এটি মেশিনের কাছাকাছি থাকায় এটি কেবল গাণিতিক যা কেবল যাইহোক যোগ করতে পারে। উচ্চতর বিমূর্ততা সহ কার্যকর ভাষাগুলি গণিতের দিকে বেশি ঝোঁক। একাডেমিয়ায় সাধারণ ব্যবহার হয় না কারণ তারা ব্যবহার করে এবং এইভাবে এমন লোকেরা শেখায় যাঁরা প্রচুর গণিত জানেন এবং এমন লোকদের শেখাচ্ছেন যারা প্রচুর গণিত শিখবেন বলে আশা করছেন। সুতরাং কথা বলতে গেলে "এটিকে বোবা" করা সম্ভব তবে এই কারণগুলি দেওয়া সম্ভব না।

http://learnyouahaskell.com/ - সম্ভবত ফাংশনাল প্রোগ্রামিংয়ের অন্যতম মৃদু পরিচয়, আমি দ্বিগুণ পরীক্ষা করে দেখেছি এবং সেখানে মৌলিক বীজগণিত এবং গ্রাফ তত্ত্বের বাইরে কিছুই নেই।


আপনি যদি হ্যাস্কেল ছাড়াও অন্য কিছু চান তবে শিখুনিওসমোরং ডট কম an
ট্র্যাভিস

11

এর অনেকগুলি কারণ রয়েছে এবং এগুলি সমস্ত প্রকারের সাথে সম্পর্কিত:

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

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


3
একাডেমিয়ায় বিকাশের জন্য +1: ফাংশনাল ভাষা তৈরি করা লোকেরা এটি গাণিতিক বৈশিষ্ট্যের ভিত্তিতে তৈরি করে, তাই এটি ফাঁস হয়ে যায় ...
ম্যাথিউ এম।

@ ম্যাথিউ এম: গণিতের বৈশিষ্ট্যগুলিতে একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ বেইজিং সঠিক সফ্টওয়্যার লিখতে এবং বিকাশের সময় হ্রাস করতে সহায়তা করে। উদাহরণস্বরূপ, আমি অবশ্যই আমার সি ++ কোডের চেয়ে আমার হাস্কেল কোডটি ডিবাগ করতে কম সময় ব্যয় করছি। বিকাশের সময় (এবং ব্যয়) হ্রাস করা একটি বিশাল ব্যবহারিক সুবিধা যা কিছু গণিত শেখার প্রয়াসকে ন্যায়সঙ্গত করতে পারে। যেহেতু টিডামাররা উল্লেখ করেছে, কয়েকটি অতিরিক্ত ধারণা রয়েছে যা শিখতে হবে তবে আপনি কয়েকটি মূল ধারণা বুঝতে পেরে এফপি হ'ল প্রয়োজনীয় প্রোগ্রামিংয়ের মতো স্বজ্ঞাত।
জর্জিও

আমি টেডামারদের সাথেও একমত যে অপরিহার্য ভাষাগুলিও গাণিতিক ধারণাগুলি ব্যবহার করে বর্ণনা করা যায়। আসলে, একটি আবশ্যক প্রোগ্রামের গাণিতিক বিবরণ সাধারণত কার্যকরী প্রোগ্রামের গাণিতিক বিবরণের চেয়ে অনেক বেশি জটিল। আইএমও এটি ব্যাখ্যা করে যে কেন অপরিহার্য ভাষাগুলিতে বাগ থাকায় বেশি সম্ভাবনা থাকে: অপরিহার্য কোডটি সম্পূর্ণরূপে বোঝা আরও কঠিন। অন্ততপক্ষে, কয়েক বছরের ফাংশনাল প্রোগ্রামিং এবং আরও অনেক বছর ধরে চলমান প্রোগ্রামিংয়ের সাথে এটি আমার ব্যক্তিগত অভিজ্ঞতা।
জর্জিও

@ জর্জিও: "ভাষায় ফাঁস" (কোনওভাবে) এবং "টিউটোরিয়ালটিতে ফাঁস" এর মধ্যে পার্থক্য রয়েছে। আমি নিশ্চিত যে আপনি এগুলিতে এতগুলি গণিত ছাড়াই কার্যকরী প্রোগ্রামিং টিউটোরিয়াল লিখতে পারেন। অবশ্যই তারা আরও ভাল হবে কিনা তা বিতর্ক অবধি এবং সম্ভবত বিষয়গত ective
ম্যাথিউ এম .9

@ ম্যাথিউইউম: আপনি ফাঁস (টিউটোরিয়ালটি ফাঁস) বলতে কী বোঝাতে চেয়েছিলেন তা স্পষ্ট করার জন্য অনেক ধন্যবাদ: আপনার মন্তব্যটি এখন আমার কাছে আরও বেশি অর্থবোধ করে। আমি আপনার সাথে একমত যে এফপি সম্পর্কিত টিউটোরিয়ালটিতে যতটা সম্ভব অল্প গণিত থাকা উচিত। আমি আপনার মন্তব্যের একরকম ভুল ব্যাখ্যা করেছিলাম: ইন্ডাস্ট্রিতে এবং একাডেমিয়ায় দু'জনেই কাজ করে আমি "একাডেমিয়ায় তারা এমন অনেক গণিত করে যা রিয়েল-ওয়ার্ল্ডে অব্যর্থ নয়" এর মত কিছু ধরণের মন্তব্য করে। আপনার মন্তব্য এবং টিডামার এর উত্তর উভয়ের জন্য +1।
জর্জিও

5

এটি কারণ মৌলিকভাবে, কম্পিউটার প্রোগ্রামিং গণিত হয়। কার্যকরী ভাষাগুলি এটি বিবেচনায় রেখে ডিজাইন করা হয়েছিল এবং এ কারণেই টিউটোরিয়ালগুলির বেশিরভাগই গণিতের দিকে মনোনিবেশ করে।

আপনি যদি গাণিতিক ভিত্তি হিসাবে কম্পিউটার প্রোগ্রামিংয়ের চিন্তা করতে অভ্যস্ত না হন তবে এটি শেখা কেবলমাত্র মুশকিল।


4
মৌলিকভাবে কম্পিউটিং যুক্তি এবং পাটিগণিতের সংমিশ্রণ। এটি গণিত নয়। আপনি গাণিতিক সূত্রে কোনও শাখার নির্দেশ প্রকাশ করতে পারবেন না - সুতরাং এটি গণিতে ভিত্তি করে করা যায় না। ক্রিয়ামূলক প্রোগ্রামিং ভিড় এটি গণিতের ভিত্তিতে থাকতে চাইবে যাতে তারা প্রোগ্রামের ভাষাগুলি বিকাশ করে যা এমন আচরণ করে যা শাখার নির্দেশাবলীর অস্তিত্ব নেই।
জেমস অ্যান্ডারসন

9
@ জেমস অ্যান্ডারসন, আপনি কি বলছেন যে যুক্তি এবং পাটিগণিত গণিত নয়? এবং আমি কয়েকটা গাণিতিক সূত্র দেখেছি যার শাখার নির্দেশাবলী রয়েছে (সাধারণত একটি স্যুইচের মতো ফর্মালিজমে প্রকাশ করা হয়)।
পিটার টেলর

4
পাটিগণিত গণিতের একটি উপসেট যা সাধারণ গণনা নিয়ে কাজ করে। যুক্তি গণিতের একটি সুপারসেট যা সমস্ত যুক্তিযুক্ত চিন্তার ভিত্তি। ঘটনাক্রমে ফাংশনাল প্রোগ্রামিং এমন সমস্যা সমাধানের জন্য একটি খুব ভাল ধারণা যা গাণিতিকভাবে প্রকাশ করা যেতে পারে; যখন আপনি জিএপি (সাধারণত স্বীকৃত অ্যাকাউন্টিং অনুশীলন) এর মতো স্বেচ্ছাচারী নিয়মের একটি অযৌক্তিক জগাখিচুড়ি অনুসরণ করার চেষ্টা করছেন তখন এটি এত গরম হয় না
জেমস অ্যান্ডারসন

6
@ আইয়ান 31, আপনি " মৌলিক " শব্দটি কীভাবে সংজ্ঞায়িত করবেন ? আপনি জানেন, সিভিল ইঞ্জিনিয়ারিংও পদার্থবিজ্ঞান এবং গণিতের উপর ভিত্তি করে তৈরি হয়, অন্যদিকে ব্যবহারিকভাবে এটি লোকেদের ব্যবহার এবং উপভোগ করার জন্য স্টাফ তৈরির বিষয়। এবং, যে কোনও উপায়ে কিছু বাস্তব-বিশ্ব সমস্যার সমাধানের প্রোগ্রামিংয়ের কথা চিন্তা করার আগে আপনাকে অবশ্যই সেই সমস্যাটি কিছু গাণিতিক আনুষ্ঠানিকতায় অনুবাদ করতে হবে । এটি ঠিক অন্যভাবে কাজ করবে না। প্রোগ্রামিং সমস্ত আনুষ্ঠানিকতা সম্পর্কে।
এসকে-যুক্তি

6
@ ian31, প্রোগ্রামিং ভাষায় হয় formalisms। তাদের আচরণ কঠোরভাবে সংজ্ঞায়িত এবং অনুমানযোগ্য। সুতরাং, কোনও নির্দিষ্ট মডেলকে কোডিং (এটি অস্পষ্ট হলেও) এটিকে একটি সাজানোর আনুষ্ঠানিকতায় রূপান্তরিত করে। গণিতটি এই অস্পষ্ট অঞ্চলে ভাল স্কেল করে, এটির সাধারণ ধারণাটি সুনির্দিষ্টভাবে সংজ্ঞায়িত কঠোর মডেলের চকচকে ক্রিস্টাল-স্পষ্ট বিশ্বে সীমাবদ্ধ থাকে।
এসকে-লজিক

1

আমি মনে করি "দি লিটল স্কিমার" কার্যকরী প্রোগ্রামিংয়ের দুর্দান্ত ভূমিকা এবং এটি কোনও ম্যাথিক নয়। এটি মোনাডে getোকে না, সুতরাং এটি আপনার স্বাদগুলির জন্য খুব বেসিক হতে পারে তবে শেষের দিকে ওয়াই-সংযুক্তকারীটির উত্সও ঘটে।

আমি 12 বছর আগে কলেজের পরে কোনও কার্যকরী প্রোগ্রামিং না করার পরে সম্প্রতি এটি পেরিয়েছি এবং এটি একটি দুর্দান্ত রিফ্রেশার ছিল, আমি র‌্যাকেট ব্যবহার করে বইয়ের বেশিরভাগ সমস্যার সাথে কাজ করার পরে অবশ্যই আরও উন্নত জিনিসগুলি মোকাবিলায় প্রস্তুত বোধ করছি।

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