ইমপ্লেরিটিভ প্রোগ্রামিংয়ে এসকিউএল এর চেয়ে কম প্রোগল কেন forতিহাসিক নজির? [বন্ধ]


12

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

প্রোলোগের চেয়ে এসকিউএলের এই আপাত পছন্দটির কোনও aতিহাসিক নজির আছে কি?

যদি ইম্পিটিভ ভাষাগুলি দ্বারা দেশীয় সহায়তার অভাব হয় , তবে ভাষা নির্মাতারা কেন Prologপ্রথম স্থানে স্থানীয়ভাবে সমর্থন করার পক্ষে উপযুক্ত মনে করেন নি তার উত্তর দেওয়া সম্ভব ?


কিছু নির্দিষ্ট উদাহরণ সরবরাহ করতে:

উদাহরণ 1 উদাহরণস্বরূপ
loanণ অ্যাপ্লিকেশন মূল্যায়ন করা কোডের কয়েকটি লাইন হতে পারে Prolog, যেমন SELECT/JOINকোয়েরিতে কোডের কয়েকটি লাইন SQL, তবে মনে হয় সুবিধাটি তেমন সুস্পষ্ট নয় SQL

উদাহরণ 2
এখানে আরেকটি উদাহরণ সমস্যা এবং প্রোলোগের সমাধান। নিম্নলিখিত সীমাবদ্ধ যুক্তি প্রোগ্রামটি একজন জনক হিসাবে জন এর ইতিহাসের সরলিকৃত ডেটাসেট উপস্থাপন করে :

teaches(john, hardware, T) :- 1990  T, T < 1999.
teaches(john, software, T) :- 1999  T, T < 2005.
teaches(john, logic, T) :- 2005  T, T  2012.
rank(john, instructor, T) :- 1990  T, T < 2010.
rank(john, professor, T) :- 2010  T, T < 2014.

জন দুজনে যখন যুক্তি শিখিয়েছিলেন এবং একজন অধ্যাপক ছিলেন তখন নিম্নলিখিত গোলের ক্লজটি ডেটাসেটটি অনুসন্ধান করে :

:- teaches(john, logic, T), rank(john, professor, T).

ফলাফল:

2010  T, T  2012.

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


8
আপনি রেন্ট দিকটি ডায়াল করতে চাইতে পারেন।

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

6
"উদাহরণস্বরূপ, কোনও loanণ অ্যাপ্লিকেশন মূল্যায়ন করতে প্রোলগের কোডের কয়েকটি লাইন হতে পারে" আমি এটিকে কিনব না, কারণ এটির জন্য লবণের মতো কোনও অ্যাপ্লিকেশন যেমন টন কাস্টম-তৈরি বা উত্পাদিত এসকিউএল কোয়েরি ব্যবহার করবে।
ইউফোরিক

7
হতে পারে আমি কিছু মিস করছি, তবে আমি মনে করি উত্তরটি এখানে লোকেরা এসকিউএল ব্যবহার করে কারণ এটিই ডেটাবেসগুলি সমর্থন করে
গ্র্যান্ডমাস্টারবি

3
তারা কি ব্যবহার Prolog ... ভাল ... আসলে ... তারা কি ব্যবহার বিধি ইঞ্জিন , যা হয় "একটি তদর্থক, অনাড়ম্বরভাবে-নির্দিষ্ট, বাগ চালালে, Prolog অর্ধেক ধীর বাস্তবায়ন"
জার্গ ডব্লু মিটাগ

উত্তর:


19

আমি বিশ্বাস করি এটি মূলত historicalতিহাসিক জিনিস।

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

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


2
"এটি সাধারণত কিছু সংস্থার এমন প্রযুক্তির বিজ্ঞাপন দেওয়ার প্রয়োজন হয় যা সাধারণ বিকাশকারীদের মধ্যে ছড়িয়ে দেওয়ার জন্য একাডেমিয়ায় জন্মগ্রহণ করেছিল" ": সত্য। প্রচুর ভাল ধারণাগুলি একাডেমিয়ায় বিকাশিত হয় এবং পরে সেই সংস্থাগুলি দ্বারা জনপ্রিয় করে তোলে যাদের কাছে বিপণনের ক্ষমতা রয়েছে। +1
জর্জিও

6

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

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

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

হালনাগাদ:

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


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

3
@amon এটি একটি উত্তরের সূচনা বলে মনে হচ্ছে :-)
১ick:০৯-এ সিকিক

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

4
@ জেমস্নেল দুঃখিত তবে -১। আপনি যা দাবি করছেন তা কোনও রেজেক্সের সাথে মেলে না । ^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
53777A

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

4

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

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

(কিছু ভাষা প্রয়োগে অধ্যবসায়ের ক্ষমতা থাকে, যেমন এসবিসিএল সহ save-lisp-and-die... তবে আমি জানি না যে কোনও প্রোলোগ এটি করছেন) doing

ব্যবহারিকভাবে বলতে গেলে, এসকিউএল হ'ল ডাটাবেসগুলির জন্য - ডিস্কগুলি- তবে প্রোলোগ একটি প্রোগ্রামিং ভাষা (পাঠ্য ফাইলগুলির উত্স কোডের জন্য)।


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

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

1
তাত্ত্বিকভাবে হ্যাঁ, তবে কার্যত এসকিউএল ডিস্কে
স্টোর

1
@ বেসাইলস্টারিঙ্কেভিচ বিধি ও তথ্যগুলি সোর্স কোডে লিখিত আছে যা ডিস্কে অব্যাহত থাকে। পরিবর্তে আপনি এগুলি ডাটাবেসে কেন সঞ্চয় করবেন? প্রোলোগ বলতে কী বোঝাতে চাইলে ডেটা রাখা যায় না? এটা করার কথা নয়। যে কারণে ডাটাবেস বিদ্যমান। আপনি আরও বিস্তারিত বলতে পারেন।
53777A

1
হুবহু, এসকিউএল হ'ল ডেটাবেসগুলির জন্য এবং প্রোলোগ একটি প্রোগ্রামিং ভাষা। এটাই আমার বক্তব্য।
বেসিল স্টারিনকিভিচ

1

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

আমি ৮০ এর দশকের শেষের দিকে এমন জায়গায় কাজ করেছি যার বেশ সফল ইসম ডাটাবেস ছিল যা বাজার চাপ / সংগ্রহের বিধি দ্বারা একটি এসকিউএল ইন্টারফেস যুক্ত করতে বাধ্য হয়েছিল।

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