ভাষা-ওরিয়েন্টেড প্রোগ্রামিং কি ব্যবহারিক?


12

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

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

নিবন্ধটি পড়ে, আমার মনে হয়েছিল যে লেখক দুটি জিনিসের একটির প্রচার করছেন:

  • সহজেই সৃজনযোগ্য স্ক্রিপ্টিং ভাষাগুলি
  • একটি একক, সহজেই এক্সটেনসিবল ভাষা যা প্রোগ্রামারের প্রয়োজনীয়তাগুলি পূরণ করতে নিজেকে আবার লিখতে পারে

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

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


এটি নিশ্চিতভাবেই একটি বিশাল মন উড়ানোর সম্ভাবনা রয়েছে।

2
এই দৃষ্টান্তটি কী সমস্যার সমাধান করে তা আমার কাছে পরিষ্কার নয়। যাইহোক, এলআইএসপি কোনও সফল ভাষার উদাহরণ নয়।
mouviciel

7
@ মউভিচিয়েল এটি "সফল" বলতে কী বোঝায় তা পুরোপুরি নির্ভর করে। এটি কি বেশিরভাগ প্রোগ্রামার দ্বারা ব্যবহৃত হয়? না, এটি দীর্ঘ সময় ধরে, ব্যবহারে, ব্যবহারে এসেছে? হ্যাঁ - 50 বছর এবং গণনা। বেশিরভাগ আধুনিক ভাষাগুলি এটি থেকে দরকারী বৈশিষ্ট্যগুলির পুরো গাদা চুরি করেছে? হ্যাঁ. (লিস্প ভাষা থেকে ভাষা আরও চুরি করতে পারে? হ্যাঁ!)
ফ্র্যাঙ্ক শায়ারার

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

1
আমি কোবোলকে মাস্টার করার চেয়ে লিস্পকে আয়ত্ত করা আরও বেশি দরকারী মনে করব।
গ্লেনাট্রন

উত্তর:


8

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

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

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

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

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

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

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


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

এবং যদি এটি বোঝার চেষ্টা করার প্রয়োজন না হয় তবে সম্ভাবনাগুলি এটির পক্ষে সত্য নয় :)
মাইকেল কে

4

এটা বেশ রুবি পদ্ধতির।

  • মূল ভাষাটিকে সরল রাখুন এবং রত্নগুলির মাধ্যমে প্রসারিত করুন
  • বানরের প্যাচিংয়ের মাধ্যমে নির্দিষ্ট ডোমেনগুলির জন্য রুবির উপভাষা তৈরি করুন। ig রুবেল রিলে

আমি জানি না এটি আরও ভাল কিনা, তবে আমার ধারণা খুব বাস্তববাদী।


7
আরআর রুবির একটি উপভাষা নয়।
back2dos

4
@ back2dos: আমি রূপান্তরকাজে ভাবছিলাম। অবশ্যই Ror হয় না একটি ভিন্ন প্রোগ্রামিং ভাষা। উপভাষার দ্বারা আমি যা বলতে চাইছি তা হ'ল এমনকি যদি রেলের নীচে সমস্ত কিছুই রুবি হয় তবে বিকাশকারী দৃষ্টিকোণ থেকে তিনি রুবিকে বিমূর্ততার উচ্চ স্তরে ব্যবহার করছেন। একটি ডোমেন। একটি উপভাষা। তিনি মতামত, মডেল, নিয়ন্ত্রক ব্যবহার করছেন এবং তিনি সেগুলি একটি সিন্ট্যাক্স ব্যবহার করে প্রোগ্রামিং করছেন যা কোনও আলাদা ভাষায়, কথা বলতে গেলে একটি উপভাষার সদৃশ। এটাই রুবির মতো শক্তিশালী স্ক্রিপ্টযুক্ত ভাষার সৌন্দর্য।
নেরিয়ান

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

1

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


আমার অজ্ঞতা ক্ষমা করুন - একটি ইডিএসএল এন্টের ভাষার জন্য প্রিপ্রোসেসর হতে পারে, তাই না?
মাইকেল কে

@ মিশেল, হ্যাঁ, এইভাবে ইডিএসএল বাস্তবায়ন করা সম্ভব, উদাহরণস্বরূপ ক্যামেলপি 4 দেখুন। তবে প্রায়শই ইডিএসএল ভাষার নিজস্ব বৈশিষ্ট্যগুলিতে নির্মিত হয় (যেমন, লিস্প ম্যাক্রোস, সি ++ টেম্পলেট ইত্যাদি)।
এসকে-যুক্তি

1

ভবিষ্যতে আমরা ডোমেন নির্দিষ্ট ভাষাগুলি সম্পর্কে আরও অনেক কিছু দেখতে পাচ্ছি, এখনকার লোকেরা তাদের সম্পর্কে বিচার করছে- আমি মার্টিন ফাউলারের সাথে লম্বা দ্য আলটিমেটের মাধ্যমে তাদের সম্পর্কে অনেক কিছু এবং মজাদার কিছু নিবন্ধ লক্ষ্য করেছি , অন্যদের মধ্যে.

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


আপনি এফওএফ-এ যুক্ত করতে পারেন ব্যারলফিশ মাল্টি-কার্নেলের জন্য ড্রাইভার বিকাশ করতে ব্যবহৃত হচ্ছে। এতে ডিএসএল বিকাশের একটি ভাষা :)
এম।

0

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

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