বিভাগীয় তত্ত্বটি কার্যকরী প্রোগ্রামিং শেখার জন্য কার্যকর?


118

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

আমি বিভাগের তত্ত্বটি শিখতে চাই যাতে আমি হাসকেলে আরও উন্নত হতে পারি।

বিভাগ তত্ত্বের কোন বিষয়গুলিতে আমার হাসকলকে বোঝার জন্য একটি ভাল ভিত্তি সরবরাহ করা শিখতে হবে?



1
আমি প্রশংসা করি আপনি প্রোগ্রামিং এবং সিএস পার্থক্য।
jmite

উত্তর:


115

একটি তাত্ত্বিক কম্পিউটার বিজ্ঞান সাইটে পূর্ববর্তী উত্তর , আমি তাকে বললাম যে বিভাগ তত্ত্ব টাইপ তত্ত্বের "ভিত্তি" হয়। এখানে, আমি আরও শক্তিশালী কিছু বলতে চাই। বিভাগ তত্ত্বটি টাইপ থিওরি । বিপরীতে, টাইপ তত্ত্বটি বিভাগের তত্ত্ব । আমাকে এই বিষয়গুলিতে প্রসারিত করুন

বিভাগ তত্ত্বটি টাইপ থিওরি

f:ABABf

ABf

প্রকারের তত্ত্বটি বিভাগের তত্ত্ব

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

.তিহাসিকভাবে, ডানা স্কট সম্ভবত এটি উপলব্ধি হতে পারে। তিনি টাইপড (এবং টাইপযুক্ত) ল্যাম্বদা ক্যালকুলাসের উপর ভিত্তি করে প্রোগ্রামিং ল্যাঙ্গুয়েজের সিমেটিক মডেল তৈরিতে কাজ করেছিলেন। প্রচলিত সেট-তাত্ত্বিক মডেলগুলি এই উদ্দেশ্যে অপ্রতুল ছিল, কারণ প্রোগ্রামিং ভাষাগুলিতে সীমাহীন পুনরাবৃত্তি জড়িত যা তত্ত্বের অভাবে সেট করে। স্কট প্রোগ্রামিং ঘটনাগুলি ক্যাপচার করে এমন একাধিক শব্দার্থক মডেল আবিষ্কার করেছিলেন এবং উপলব্ধি করতে পেরেছিলেন যে টাইপ করা ল্যাম্বদা ক্যালকুলাস হুবহু কার্টেসিয়ান ক্লোজড ক্যাটাগরি নামে পরিচিত শ্রেণির একটি শ্রেণির প্রতিনিধিত্ব করে । প্রচুর কার্তেসিয়ান ক্লোজড বিভাগ রয়েছে যা "সেট-থিওরেটিক" নয়। তবে টাইপড ল্যাম্বদা ক্যালকুলাস তাদের সকলের জন্য সমানভাবে প্রযোজ্য। স্কট " ল্যাম্বডা ক্যালকুলাসের সাথে সম্পর্কিত তত্ত্বগুলি " নামে একটি দুর্দান্ত প্রবন্ধ লিখেছিলেন"কী চলছে তা ব্যাখ্যা করে, যার কিছু অংশ ওয়েবে উপলব্ধ বলে মনে হচ্ছে The মূল নিবন্ধটি" টু এইচবি কারি: রচনা অন সংযুক্তি যুক্তি, ল্যাম্বদা ক্যালকুলাস এবং ফর্মালিজম "নামে একটি খণ্ডে প্রকাশিত হয়েছিল, একাডেমিক প্রেস, ১৯৮০। বেরি এবং কুরিয়েন সম্ভবত একইভাবে উপলব্ধি করতে পেরেছিলেন, সম্ভবত স্বাধীনভাবেই They তারা এই ধারণাগুলি কার্যকরী ভাষাগুলি বাস্তবায়নে ব্যবহার করার জন্য একটি শ্রেণিবদ্ধ অ্যাবস্ট্রাক্ট মেশিন (সিএএম) সংজ্ঞায়িত করেছিলেন এবং তারা যে ভাষায় প্রয়োগ করেছেন তাকে "সিএএমএল" বলা হয় যা মাইক্রোসফ্টের এফ # এর অন্তর্নিহিত কাঠামো ।

×Listপলিমারফিক ফাংশনগুলির ধারণাটি যথাযথভাবে আনতে। তারা তাদেরকে "প্রাকৃতিক রূপান্তর", "প্রাকৃতিক" বলেছিল কারণ তারা কেবলমাত্র টাইপ ভেরিয়েবল ব্যবহার করে টাইপ-সঠিক উপায়ে লিখতে পারে। সুতরাং, কেউ বলতে পারেন যে প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি ভাষা প্রতিষ্ঠার আগেই পলিমারফিক প্রোগ্রামিং ভাষাগুলি আনুষ্ঠানিকভাবে প্রবর্তনের জন্য বিভাগ তত্ত্বটি আবিষ্কার করা হয়েছিল!

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


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

তবে ওয়েবে প্রচুর সংস্থান রয়েছে যা প্রোগ্রামারগুলিকে লক্ষ্য করে। Haskellwiki পৃষ্ঠা একটি ভাল আদ্যস্থল হতে পারে। এ মিডল্যান্ডস গ্রাজুয়েট স্কুল , আমরা বিভাগ তত্ত্ব (অন্যদের মধ্যে) বক্তৃতা আছে। গ্রাহাম হাটনের কোর্সটি একটি "শিক্ষানবিশ" কোর্স হিসাবে তৈরি হয়েছিল এবং আমার একটি "অ্যাডভান্সড" কোর্স ছিল। তবে উভয়ই বিভিন্ন গভীরতায় গিয়ে মূলত একই বিষয়বস্তু coverেকে রাখে। চামার্স বিশ্ববিদ্যালয় বিশ্বজুড়ে বই এবং বক্তৃতা নোটগুলির জন্য একটি দুর্দান্ত উত্স পৃষ্ঠা রয়েছে। "Sigfpe" এর উত্সাহী ব্লগ সাইট এছাড়াও একটি দেখুন প্রোগ্রামার এর বিন্দু থেকে ভাল intuitions অনেকটা প্রদান করে।

আপনি যে প্রাথমিক বিষয়গুলি শিখতে চান তা হ'ল:

  • বিভাগগুলির সংজ্ঞা এবং বিভাগগুলির কয়েকটি উদাহরণ
  • ফান্টেক্টর এবং সেগুলির উদাহরণ
  • প্রাকৃতিক রূপান্তর এবং তাদের উদাহরণ
  • পণ্যগুলির সংজ্ঞা, কপোড্রাক্টস এবং এক্সপোশন (ফাংশন স্পেস), প্রাথমিক এবং টার্মিনাল অবজেক্ট।
  • adjunctions
  • monads, বীজগণিত এবং Kleisli বিভাগ

আমার নিজের বক্তৃতা নোট মধ্যে মিডল্যান্ডস গ্রাজুয়েট স্কুল গত এক (monads) ছাড়া এই সব বিষয় জুড়ে। আজকাল মনদেদের জন্য প্রচুর অন্যান্য সংস্থান রয়েছে। সুতরাং এটি কোনও বড় ক্ষতি নয়।

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


3
@ উদয়রেডি আমি ধরণের তত্ত্বের সাথে বিভাগের তত্ত্বের সনাক্তকরণের সাথে দৃ strongly়ভাবে একমত নই। আধুনিক প্রকারের তত্ত্বটি সম্মতিযুক্ত প্রক্রিয়াগুলির ধরণের সম্পর্কে ধ্রুবকভাবে থাকে, যেমন অধিবেশন ধরণের তত্ত্বের traditionতিহ্য। আমার জ্ঞানের সর্বোপরি এই জাতীয় টাইপিং সিস্টেমগুলির কোনও শ্রেণিবদ্ধ বোঝাপড়া নেই।
মার্টিন বার্গার

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

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

1
f:PQfPQ

2
"দুর্ভাগ্যক্রমে, প্রোগ্রামারগুলিকে লক্ষ্য করে শ্রেণীবদ্ধ তত্ত্ব সম্পর্কিত কোনও পাঠ্য বই রয়েছে বলে মনে হয় না।" প্রোগ্রামার্সের জন্য বার্তোস মাইলিউস্কির বিভাগীয় তত্ত্বে এই জাতীয় একটি "পাঠ্যপুস্তক" এখন কমবেশি উপস্থিত রয়েছে । বার্তোস্জ একটি অনুষঙ্গী বক্তৃতা সিরিজও তৈরি করেছেন ।
alx9r

30

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

  1. বিভাগের বস্তুগুলির সাথে হ্যাসেল প্রকারগুলি
  2. AB f:AB
  3. প্রাথমিক বস্তুর সাথে বীজগণিতের ডেটাটাইপগুলি
  4. ফান্টেক্টর সহ কনস্ট্রাক্টর টাইপ করুন
  5. ইত্যাদি

তালিকা এবং উপর যায়, কিন্তু এক গুরুত্বপূর্ণ পয়েন্ট যে আপনি ভালো জিনিস সংজ্ঞায়িত করতে পারেন monads এবং algebras বিভাগ তত্ত্ব ও ধারণার উভয় গণিতবিদ দরকারী কিন্তু Haskell, প্রোগ্রামিং অভ্যাস পরিব্যাপক হয় সঙ্গে আসা পর্যন্ত।

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


1
"গণিতবিদদের পক্ষে উভয়ই কার্যকর, তবে হাস্কেল প্রোগ্রামিংয়ের অনুশীলনেও বিস্তৃত এমন ধারণাগুলি নিয়ে আসুন" - আপনি কি একটি উদাহরণ দিতে পারেন, বা এর জন্য কি খুব বেশি পূর্বের জ্ঞান প্রয়োজন?
রাফেল

7
@ রাফেল: মনডস। তীর। Algebras। Coalgebras।
ডেভ ক্লার্ক

6
Functors, দ্বৈত, Kleisli বিভাগ, Yoneda থিম ...
কোডি

4
কার্টেশন বন্ধ বিভাগ। সংবাহন।
ডেভ ক্লার্ক

2
"সফটওয়্যার ইঞ্জিনিয়ারদের জন্য বিভাগের তত্ত্বের একটি ভূমিকা", cs.toronto.edu/~sme/preferencesations/cat101.pdf
ভ্লাদিমির আলেক্সিভ

29

@ আজেদ পরামর্শ প্রতিধ্বনিত, আমি আপনার বিবৃতি ঘুরিয়ে দেওয়ার পরামর্শ দিচ্ছি

I want to learn category theory so I can become better at Haskell.

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

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

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


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

5
@ ক্যাম্যাকক্যান আমি সম্মত হই যে কিছু অভিজ্ঞ প্রোগ্রামগুলিতে যেমন জাভা বা সি # থেকে হাস্কেলের দিকে যেতে খুব বেশি সময় ব্যয় হয়েছে বলে মনে হয় তবে হাস্কেলের সম্পর্কে মৌলিকভাবে আলাদা কিছু আছে বলে আমি মনে করি না। আমি মনে করি এটি অংশে আছে কারণ এটি পৃথক বলে মনে হচ্ছে । হাসেলকে প্রশংসা করার জন্য আপনাকে বিভাগের তত্ত্বটি শিখতে হবে এমন ধারণা সম্ভবত বেশ কয়েকজন অভিজ্ঞ সফ্টওয়্যার বিকাশকারীকে হাস্কেল প্রভুত্ব অর্জন থেকে বিরত রেখেছে। (সিএফ। কেন এফ # এর মনাদ নেই)) অনেকগুলি হাস্কেল বৈশিষ্ট্য যা অন্য ভাষায় সাদৃশ্য রাখে না সে সম্পর্কে অবশ্যই ভাবতে আমার পক্ষে কঠিন।
মার্টিন বার্গার

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

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

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

13

একটি সংক্ষিপ্ত উত্তর: না [তবে এটি কেবল একটি মতামত]

হাস্কেলে ভাল হওয়ার জন্য বিভাগ তত্ত্ব বা অন্য কোনও তাত্ত্বিক ডোমেইনে যাবেন না। ফাংশনাল প্রোগ্রামিং কৌশলগুলি শিখুন, যেমন লেজ পুনরাবৃত্তি, মানচিত্র, হ্রাস এবং অন্যান্য। আপনি পারেন যতটা কোড পড়ুন। যতটা সম্ভব আইডিয়া বাস্তবায়ন করুন। আপনার যদি সমস্যা থাকে তবে পড়ুন এবং পড়ুন।

আপনি যদি হাস্কেল এবং অন্যান্য কার্যকরী প্রোগ্রামিং প্যারাডিমগুলি শিখতে একটি ভাল তাত্ত্বিক উল্লেখ চান তবে একবার দেখুন: লাম্বদা ক্যালকুলাসের মাধ্যমে কার্যকরী প্রোগ্রামিংয়ের পরিচিতি, গ্রেগ মাইকেলসন (অনলাইনে উপলব্ধ)। ... অনুরূপ অন্যান্য বই আছে।


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

@ ড্যানবার্টন .. আকর্ষণীয় পর্যবেক্ষণ। এর পরে বলা যাক, হাস্কেলের পরিবর্তে এরং বা স্কিমটি শিখুন :)। [আমি হাস্কেলের কোনও বিশেষজ্ঞ নই, আমি খুব ভাল
লাগছে


0

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

যাইহোক, আমি আপনার উদ্দেশ্য এখানে থাকার জন্য খুব ভাল একটি সূচনা পয়েন্ট প্রস্তাব ।


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