বিমূর্তনের পরবর্তী স্তরটি কী? [বন্ধ]


15

যেহেতু প্রোগ্রামিং ভাষাগুলি প্রাথমিকভাবে কেবল কোডের রেখাগুলি ধারাবাহিকভাবে কার্যকর করা হত এবং এটি এমন ফাংশনগুলি সহ বিবর্তিত হয়েছিল যা বিমূর্তির প্রথম স্তরগুলির মধ্যে একটি ছিল এবং তারপরে শ্রেণি এবং অবজেক্টগুলি আরও বিমূর্ত করার জন্য তৈরি করা হয়েছিল; বিমূর্তনের পরবর্তী স্তরটি কী?

ক্লাসের চেয়ে আরও বিমূর্ত কী বা এটি এখনও আছে?


17
আপনি মনে করেন যে এটি একটি লিনিয়ার অগ্রগতি, একটি অর্ডার সহ ("এক্স জাইয়ের চেয়ে এক্স অ্যাবস্ট্রাক্ট জেডের চেয়ে বেশি বিমূর্ত")। আমি আলাদা করতে অনুরোধ।

2
আপনি কেন পৃথক হতে অনুরোধ করছেন তা বলাই বেশ ভাল ধারণা হবে । ;) (পড়ুন: আমি আগ্রহী!)
সার্গের্গ

3
আমি চূড়ান্ত "বিমূর্ততা" প্রস্তাব করি: আমার যা মনে হয় তা করুন, আমি যা টাইপ করি তা নয়। ;)
ইজকাটা

1
@ ডেলানান: বিমূর্ততা মোট অর্ডার প্রবর্তন করে না, তবে "আরও বিমূর্ত", "কম বিমূর্ত" বলা সম্ভব। উদাহরণস্বরূপ, মার্জ সাজ্টের জেনেরিক প্রয়োগটি মার্জ সাজ্ট বাস্তবায়নের চেয়ে আরও বিমূর্ত যা কেবলমাত্র পূর্ণসংখ্যার জন্য কাজ করে।
জর্জিও

2
ব্রস, আপনি কিছু বিভাগের তত্ত্ব শিখুন। তারপরে আমরা আলোচনা করতে পারি সভ্য পুরুষদের মতো বিমূর্ততা আসলে কী বোঝায়।
davidk01

উত্তর:


32

আমি মনে করি কম্পিউটিংয়ের ইতিহাস সম্পর্কে আপনার কিছু ভুল ধারণা রয়েছে।

প্রথম বিমূর্তিটি (১৯৩36 সালে) আসলে, অ্যালোঞ্জো চার্চের ল্যাম্বদা ক্যালকুলাস ছিল, যা উচ্চ-আদেশ ক্রিয়াকলাপ এবং তারপরে সমস্ত কার্যকরী ভাষার ধারণার ভিত্তি। এটি সরাসরি লিস্পকে অনুপ্রাণিত করেছিল (১৯৫৯ সালে নির্মিত দ্বিতীয় প্রাচীনতম স্তরের প্রোগ্রামিং ল্যাঙ্গুয়েজ), যা এমএল থেকে হাস্কেল এবং ক্লোজারে সমস্ত কিছুকে অনুপ্রাণিত করেছিল।

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

তৃতীয় বিমূর্ততা সম্ভবত প্রকৃত ঘোষিত প্রোগ্রামিং ছিল, প্রথমে অ্যাবসিস (১৯6767) এর উদাহরণ এবং পরে প্রোলোগ (১৯ 197২)। এটি লজিক প্রোগ্রামিংয়ের ভিত্তি, যেখানে নির্দেশাবলী একটি সিরিজ সম্পাদন না করে একাধিক ঘোষণা বা নিয়মের সাথে মিল রেখে অভিব্যক্তিগুলি মূল্যায়ন করা হয়।

এরপরে চতুর্থ বিমূর্তিটি ছিল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং, যা's০ এর দশকে লিস্প প্রোগ্রামগুলিতে প্রথম উপস্থিত হয়েছিল, তবে পরে ১৯ 197২ সালে স্মলটালকের দ্বারা অনুকরণ করা হয়েছিল। (যদিও স্মলটকের বার্তা প্রেরণার স্টাইলটি নিয়ে কিছুটা বিতর্ক আছে বলে মনে হয়) seems ওয়ান ট্রু অবজেক্ট-ভিত্তিক বিমূর্ততা I'm আমি এটি স্পর্শ করব না))

অন্যান্য সমস্ত বিমূর্ততা, বিশেষত theতিহ্যবাহী ভন নিউম্যান কম্পিউটার আর্কিটেকচারে, এই চারটি থিমের ভিন্নতা। আমি নিশ্চিত নই যে এই চারটির বাইরে আর একটি বিমূর্ততা রয়েছে যা কেবল তারতম্য বা তাদের সংমিশ্রণ নয়।

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

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


4
অ্যাসপেক্ট ওরিয়েন্টেড প্রোগ্রামিং কি বিমূর্ততার আরেকটি রূপ হিসাবে বিবেচনা করা যেতে পারে?
শিবান ড্রাগন

অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং 60 এর দশকে লিস্পের বাইরে এসেছিল? [উদ্ধৃতি প্রয়োজন], বড় সময়। আমি যা শুনেছি তা বলছে যে এটি 60 এর দশকে সিমুলার বাইরে এসেছিল, এটি ALGOL এর প্রত্যক্ষ বংশধর ছিল, একটি আবশ্যক ভাষা যার সাথে লিস্পের কোনও সম্পর্ক ছিল না। সিমটালক সিমুলার প্রবর্তিত ধারণাগুলি গ্রহণ করে এবং আরও "লিপি" বোধ করার জন্য এগুলি ঘুরিয়ে দিয়েছিল।
ম্যাসন হুইলার

3
@ মেসনওহিলার: এটি লিস্প ১ এবং ১.২ ম্যানুয়ালগুলিতে রয়েছে এবং লিস্পার্স অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামগুলি করার কথা বলতে শুনে বিশেষত বয়স্ক লোকেরা শুনতে পারা সাধারণ বিষয়। এআই ছেলেরা তখন লিস্পে অবজেক্ট সিস্টেম করার ক্ষেত্রে বড় ছিল।
গ্রেফ্যাড

2
@ শিভানড্রাগন: আমি বলব না। এটি অতিরিক্ত সুরক্ষার সাথে অন্যথায় পদ্ধতিগত প্রোগ্রামটি উপকরণের একমাত্র উপায়। এটি আসলে অ্যালগোরিদমগুলির মডেল করে না, বা এটি ডেটা স্ট্রাকচারের নকশাকে প্রভাবিত করে বলে মনে হয় না।
গ্রেফ্যাড

4
আসলে, এসকেআই কম্বিনেটর ক্যালকুলাস ল্যাম্বদা ক্যালকুলাস এবং ট্যুরিং মেশিন উভয়েরই পূর্বাভাস দেয়।
জার্গ ডব্লু মিট্টাগ

4

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

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

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

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


1
"হাঁসের টাইপিং" (কমপক্ষে আপনি যেমন বর্ণনা করেছেন) আসলে উপন্যাস নয় বা গতিবেগের সাথে টাইপ করা ভাষাগুলির মধ্যে সীমাবদ্ধ নয়; এটি স্ট্যাটিকালি টাইপ করা ভাষাগুলিতে "স্ট্রাকচারাল সাব-টাইপিং" হিসাবে দীর্ঘকাল ধরে রয়েছে , ওসিএএমএলে সেরা দেখা যায়।
টিখন জেলভিস

2

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

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

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

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


1

আমি যুক্তি দিয়ে বলব যে মেটা-কাঠামো, মডিউল, ফ্রেমওয়ার্ক, প্ল্যাটফর্ম এবং পরিষেবাগুলি ক্লাসের তুলনায় সমস্ত উচ্চ-স্তরের বৈশিষ্ট্যযুক্ত গ্রুপিং। প্রোগ্রামিং সিস্টেমের বিমূর্ততাগুলির আমার শ্রেণিবিন্যাস:

  • সেবা
  • প্ল্যাটফর্ম, সমাধান স্ট্যাক
  • অবকাঠামো
  • মডিউল, প্যাকেজ
  • মেটা স্ট্রাকচার: মেটাক্লাস, উচ্চতর অর্ডার ফাংশন, জেনেরিকস, টেমপ্লেটস, বৈশিষ্ট্য, দিক, সজ্জকার
  • অবজেক্টস, ক্লাস, ডেটা টাইপ
  • ফাংশন, পদ্ধতি, subroutines
  • নিয়ন্ত্রণ কাঠামো
  • কোড লাইন

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

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

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

সমাধান স্ট্যাকস বা প্ল্যাটফর্মগুলি একাধিক সমস্যা সমাধানের জন্য পরিবেশে একাধিক ফ্রেমওয়ার্ক, সাবসিস্টেম বা উপাদানগুলিকে একত্রিত করে।

সবশেষে, ওয়েব বা নেটওয়ার্ক পরিষেবাদি হিসাবে মোতায়েন করা পরিষেবা রয়েছে of এগুলি হ'ল আর্কিটেকচার, ফ্রেমওয়ার্ক, সমাধান স্ট্যাকগুলি বা সম্পূর্ণ বান্ডিল হিসাবে সরবরাহিত অ্যাপ্লিকেশন ক্ষমতা। তাদের অভ্যন্তরগুলি প্রায়শই অস্বচ্ছ থাকে, প্রাথমিকভাবে প্রশাসক, প্রোগ্রামিং এবং ব্যবহারকারী ইন্টারফেস প্রকাশ করে। PaaS এবং SaaS সাধারণ উদাহরণ।

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

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


1

ক্লাসের পরে পরবর্তী বিমূর্তি হ'ল মেটা ক্লাস । এটি এত সহজ;)

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


1
ধাতব চশমা হ'ল ভাষার উত্তরাধিকার শ্রেণিবিন্যাস (আইস) এর মূল অবজেক্ট। .NET এর অবজেক্ট। আপনি ইন্টারফেসগুলি মেটাক্লাস হিসাবে ভাবতে পারেন; তারা উত্তরাধিকারীর প্রকৃত "পিতামাতা" শ্রেণি থেকে স্বাধীনভাবে তাদের উত্তরাধিকারীদের ইন্টারফেসটি সংজ্ঞায়িত করে।
কিথস

1
ক্লিথ থেকে ইউএমএল থেকে সি # তে - @ কিথস এটি যে কোনও প্রসঙ্গে আমি এটি দেখেছি শব্দের অর্থ নয়। একটি মেটাক্লাস এমন একটি শ্রেণি যার উদাহরণগুলি ক্লাস - একটি দুর্বল বাস্তবায়ন সি # এর Typeযা প্রতিবিম্বিত ক্ষমতা দেয় তবে মিউটেশন নয় ( সিএলওএসে আপনি যেমন পারেন তেমন MyTypeকরে নতুন পদ্ধতি যোগ করতে পারবেন না typeof(MyType).Methods += new Method ( "Foo", (int x)=>x*x ))
পিট কির্খাম

1

আমি অবাক হয়েছি কেউ বিভাগের তত্ত্বের উল্লেখ করেনি।

প্রোগ্রামিংয়ের সবচেয়ে মৌলিক ইউনিট হ'ল ফাংশন যা টাইপগুলির উপর ভিত্তি করে। ফাংশনগুলি সাধারণত এফ: এ -> বি হিসাবে চিহ্নিত হয়, যেখানে এ এবং বি প্রকারের হয়। যদি আপনি এই জিনিসগুলি রাখেন, যা আমি প্রকারগুলি এবং ফাংশনগুলিতে কল করছি, একসাথে সঠিকভাবে আপনি কোনও শ্রেণি বলে get এই মুহুর্তে আপনাকে থামতে হবে না।

এই জিনিসগুলি, বিভাগগুলি নিন এবং নিজেকে জিজ্ঞাসা করুন এগুলি একে অপরের সাথে সম্পর্কিত করার সঠিক উপায় কী হবে। আপনি যদি এটি ঠিক করেন তবে আপনি একটি ফান্টার বলে কিছু পান যা দুটি বিভাগের মধ্যে যায় এবং সাধারণত এফ: সি -> বি হিসাবে চিহ্নিত হয় আবার আপনাকে থামতে হবে না।

আপনি সমস্ত ফান্টেক্টর নিতে পারেন এবং এগুলি সঠিক উপায়ে একসাথে রাখতে পারেন এবং আপনি যদি ঠিক জিনিসগুলি করেন তবে আপনি কীভাবে একে অপরের সাথে দুটি ফান্টারের সম্পর্ক স্থাপন করবেন তা ভাবতে শুরু করেন। এই মুহুর্তে আপনি একটি প্রাকৃতিক রূপান্তর হিসাবে ডাকা কিছু পাবেন, মি: ফ -> জি, যেখানে এফ এবং জি ফান্টেক্টর।

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


1

আমি মনে করি অভিনেতার মডেল প্রার্থীদের তালিকা থেকে অনুপস্থিত।

অভিনেতাদের দ্বারা আমি যা বোঝাতে চাইছি তা এখানে:

  • স্বতন্ত্র সত্তা
  • যা বার্তাগুলি গ্রহণ করে এবং কোনও বার্তা গ্রহণ করার পরেও পারে
  • নতুন অভিনেতা তৈরি করুন,
  • পরবর্তী বার্তার জন্য কিছু অভ্যন্তরীণ অবস্থা আপডেট করুন,
  • এবং বার্তা প্রেরণ

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

সংক্ষিপ্ত আলোচনা / ভূমিকা: http://youtube.com/watch?v=7erJ1DV_Tlo


আপনার পোস্টটি পড়ার পরিবর্তে শক্ত (পাঠ্যের প্রাচীর)। তুমি কিছু মনে করবে সম্পাদন করা একটি ভাল আকৃতি সেটিকে ing?
gnat

0

যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি তবে আপনার "আরোহী বিমূর্ততা" যুক্তিযুক্ত ক্রমবর্ধমান বৃহত এনক্যাপুলেশন হিসাবে বিবেচনা করা যেতে পারে, বেশিরভাগ কোড পুনরায় ব্যবহারের সাথে সম্পর্কিত।

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

সুতরাং যদি আমাদের অগ্রগতি হয়, পরবর্তী কি আসে? ঠিক আছে, আমি মনে করি না আপনি পরবর্তী ধাপে একটি পরিষ্কার কাটা আছে। অন্যরা যেমন উত্তর দিয়েছে, আপনার অগ্রগতি কেবল আবশ্যক / প্রক্রিয়াজাত প্রোগ্রামিং শৈলীতেই প্রযোজ্য এবং অন্যান্য দৃষ্টান্তগুলি আপনার বিমূর্ততার ধারণাগুলি ভাগ করে না। তবে যদি আমার কাছে এমন কিছু থাকে যা যৌক্তিকভাবে আপনার রূপককে প্রসারিত করতে পারে তবে এটি পরিষেবা

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

আবার, একটি সূক্ষ্ম পার্থক্য আছে। বেশিরভাগ ক্ষেত্রে, আপনি কোনও অবজেক্ট ব্যবহার করবেন যা কোনও পরিষেবায় প্রক্সি হিসাবে কাজ করবে এবং দুটি খুব মিল হবে তবে আর্কিটেকচার হিসাবে, দুটি আলাদা two


0

বিমূর্তির নতুন ফর্মগুলি আপনার কাছ থেকে নিম্ন-স্তরের কাজকে আড়াল করে। নামযুক্ত পদ্ধতি এবং ফাংশনগুলি আপনার কাছ থেকে প্রোগ্রামের ঠিকানাগুলি লুকায়। অবজেক্টগুলি গতিশীল মেমরি পরিচালনা এবং কিছু টাইপ-নির্ভর "যদি বিবৃতিগুলি" লুকায়।

আমি যে ব্যবহারিক বিমূর্ত যে আপনার কাছ থেকে নিম্নস্তরের খাটুনি লুকাবো পরবর্তী স্তরের যারা করার সুপারিশ করছি কার্মিক প্রতিক্রিয়াশীল প্রোগ্রামিংHttp://elm-lang.org/ এর মতো এমন কিছুতে "সিগন্যালগুলি" দেখুন যা কলব্যাকগুলি আড়াল করে এবং জাভাস্ক্রিপ্টে আপনাকে পরিষ্কারভাবে পরিচালনা করতে হবে এমন নির্ভরতা আপডেট করে। এফআরপি আন্তঃক্রিয়া প্রক্রিয়া এবং আন্তঃ-মেশিন যোগাযোগের অনেক জটিলতা আড়াল করতে পারে যা বড় আকারের ইন্টারনেট অ্যাপ্লিকেশন এবং উচ্চ-পারফরম্যান্স সমান্তরালতার ক্ষেত্রেও প্রয়োজনীয়।

আমি পুরোপুরি নিশ্চিত যে আমরা সকলেই পরের 5 বছর বা তার মধ্যে উত্সাহিত হতে যাচ্ছি।


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

0

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

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