প্রোগ্রামিংয়ের জন্য বিভাগ তত্ত্ব (নয়)?


21

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

প্রোগ্রাম ডিজাইনের সাথে বিভাগের তত্ত্ব সম্পর্কিত অনেক ব্যর্থ প্রচেষ্টা ব্যয় করার পরে আমি এই সিদ্ধান্তে পৌঁছেছি যে:

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

সংক্ষেপে আমাদের স্তর স্তর নীচে আছে (ক্রম কম থেকে উচ্চ):

বিভাগ তত্ত্ব -> প্রোগ্রামিং ভাষা -> প্রোগ্রাম

একটি নির্দিষ্ট স্তরে আপনি অবিলম্বে অন্তর্নিহিত স্তরটির ধারণাগুলি ব্যবহার করেন ।

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

দ্রষ্টব্য: প্রোগ্রামগুলি ডিজাইন করার অর্থ আমি বিভিন্ন ধারণার উপর ভিত্তি করে প্রোগ্রামগুলি ডিজাইন করা, যেমন কনজ্যুরঞ্জি, সমান্তরালতা, প্রতিক্রিয়াশীল, বার্তা উত্তরণ ইত্যাদি mean


1
আপনি কি প্রোগ্রামিং ভাষা বা প্রোগ্রামগুলির অংশ হিসাবে মনাদগুলিকে বিবেচনা করেন? তীর?
ডেভ ক্লার্ক

2
এটি আমাকে ফিলোসফিকাল প্রশ্ন হিসাবে আঘাত করে, অন্তত অংশে। আমি নিশ্চিত নই যে এখানে একটি সঠিক উত্তর আছে। বিভাগের তত্ত্বের একটি পারদর্শী প্রোগ্রামিংয়ের সময় এটি থেকে অর্জিত অন্তর্দৃষ্টি প্রয়োগ করবে, অন্যটি চিন্তাভাবনার বিভিন্ন উপায়ে পছন্দ করবে।
রাফেল

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

1
@ ইউভালফিল্মাস: আমার প্রশ্নটি কার্যকরী প্রোগ্রামিং ভাষার দিকে লক্ষ্য করা হচ্ছে
অঙ্কুর

উত্তর:


13

ঠিক আছে, এটি অবশ্যই নির্ভর করে আপনি কোন ধরণের প্রোগ্রাম ডিজাইনের চেষ্টা করছেন।

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

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

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

বিভাগের তত্ত্বটি কীভাবে কার্যকর হয় তা দেখার সর্বোত্তম উপায় হ'ল প্রচুর বিভাগীয় তত্ত্ব (এবং সাধারণভাবে গণিত) জানেন এমন লোকদের দ্বারা লিখিত প্রোগ্রামগুলি দেখা। এর সুস্পষ্ট উদাহরণ হ'ল মার্টন এসকার্ডি এবং তাঁর অসম্ভব কার্যকারীতা, উদাহরণস্বরূপ:

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

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

সবশেষে, আমি কিছুটা স্ব-নির্ধারিত পাঠের ভিত্তিতে জিনিসগুলির প্রকৃতি সম্পর্কে দুর্দান্ত সিদ্ধান্তগুলি আনার বিরুদ্ধে পরামর্শ দেব would


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

1
এটি একটি হাস্যকর বক্তব্য। আমি মনে করি আপনি এরকম সুস্পষ্ট বিবৃতি দেওয়ার আগে আপনার আরও কিছু শেখা উচিত। সম্ভবত আপনি অস্তিত্বের
টাইপ.ওয়ার্ডপ্রেস.কম

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

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

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

6

লোকেরা ডেটা ধরণের বর্ণনা দিতে সিটি ব্যবহার করত।

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

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

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