প্রোগ্রাম প্রোগ্রামের ভাষা শব্দার্থকে প্রসারিত করার জন্য একটি প্রোগ্রামের ভাষা যথেষ্ট ম্যালেবল হতে পারে


15

রুবি (এবং জাভাস্ক্রিপ্ট) এর মতো ভাষার বৈশিষ্ট্যগুলির সাথে, যা কোনও প্রোগ্রামার তার সংজ্ঞা দেওয়ার পরে ক্লাসগুলি যে কোনও সময় বাড়িয়ে / ওভাররাইড করতে দেয় (স্ট্রিংয়ের মতো ক্লাস সহ), তাত্ত্বিকভাবে এমন কোনও ভাষা ডিজাইন করা সম্ভব যা প্রোগ্রামগুলি পরে প্রসারিত করার অনুমতি দিতে পারে? এর শব্দার্থবিজ্ঞান।

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

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


2
আপনি কি শব্দার্থক এক্সটেনশান স্কিমের হাইজেনিক ম্যাক্রোগুলি বা নিউজপ্যাকের প্রতিচ্ছবি হিসাবে গণনা করেন যা ব্যতিক্রমগুলি গ্রন্থাগার কোড হিসাবে প্রয়োগ করতে দেয়? পার্লিগাটা: রোমানার মতো সিনট্যাকটিক এক্সটেনশানগুলি সম্পর্কে কী ?

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

যদি আমি সঠিকভাবে মনে রাখি, এমনকি জাভা এমন বৈশিষ্ট্যগুলিও পেতে চলেছে যা প্রোগ্রামগুলিকে টাইপ সিস্টেম প্রসারিত করতে দেয়।
রাফায়েল

1
@ রাফেল, আপনি কি জেএসআর 305 এর কথা ভাবছেন ? জাভা টীকাগুলি (অংশে) ডিজাইন করেছিলেন গিলাদ ব্রাচা, যিনি নিউজপিয়াক ডিজাইন করেছিলেন যা আমি নীচে আমার উত্তরে লিঙ্ক করেছি এবং প্লাগেবল টাইপ সিস্টেমকেও চ্যাম্পিয়ন করেছি । জেএসআর 305 প্রকারের সিস্টেম এনোটেশনগুলি সরবরাহ করে @Nullableএবং @NonNullযা ফাইন্ডব্যাগের মতো বহিরাগত চেকাররা ব্যবহার করেন।
মাইক স্যামুয়েল

"এর শব্দার্থবিস্তৃতি বাড়ানো" বলতে কী বোঝায় তা পরিষ্কার নয়। যদি আমি তাকান Boost.Spirit , যে আমার পারাপারের হয় ব্যক্তিগত "ব্যাপ্ত শব্দার্থবিদ্যা" ইতিমধ্যেই চৌকাঠ: C- এর গাণিতিক অপারেটর ++, এর পরিবর্তে একটি ভাষা সিনট্যাক্স বর্ণনা করতে, যা কম্পাইলার তারপর তিনি বলেন ভাষার জন্য একটি পার্সার মধ্যে সক্রিয় ব্যবহার করা হয়। আমি জানি যে এটি ল্যাব ইঁদুর দ্বারা "ভাষা শব্দার্থ সম্প্রসারণ" বলতে বোঝানো হয়নি, তবে আমি মনে করি এটি বেশ চিত্তাকর্ষক।
দেবসোলার

উত্তর:


12

রূপান্তরটির বেশ কয়েকটি চিত্তাকর্ষক মেটা-প্রোগ্রামিং সুবিধা রয়েছে।

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

যা স্কিমের হাইজেনিক ম্যাক্রোগুলি থেকে একটি পদক্ষেপ যা সাধারণভাবে স্বচ্ছ ম্যাক্রো সংজ্ঞাগুলিকে অনুমতি দেয়।

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


সংবাদপত্রের প্রতিচ্ছবি ব্যতিক্রমগুলি গ্রন্থাগার কোড হিসাবে প্রয়োগ করার অনুমতি দেয়।

7.6 ব্যতিক্রম হ্যান্ডলিং

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


পেরলিগাটা: রোমানা দেখায় যে কীভাবে সম্পূর্ণ নতুন সিনট্যাক্সটি কোনও ভাষার উপর ছড়িয়ে দেওয়া যায়।

এই কাগজটিতে একটি পার্ল মডিউল - লিঙ্গুয়া :: রোমানা :: পার্লিগাটা - এর বর্ণনা দেওয়া হয়েছে যা লাতিন ভাষায় পার্ল প্রোগ্রামগুলি লিখতে সক্ষম করে।


তর্কসাপেক্ষ শব্দার্থগতভাবে উল্লেখযোগ্য নয়, PyPy ভাষায় যার শব্দার্থবিদ্যা Python- র একটি অত্যন্ত স্ট্যাটিক্যালি-analyzable উপসেট উল্লেখিত জন্য একজন দোভাষী জেনারেটর, এবং তারা যুক্ত করার মত পাইথন নতুন ভাষা নির্মান নিয়ে পরীক্ষা করার জন্য এটি ব্যবহার thunks ভাষা থেকে।


ওমেটাও আগ্রহের বিষয় হতে পারে ।

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

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

অ্যালেক্স ওয়ার্থের প্রবন্ধটি জাভাস্ক্রিপ্ট + ওমেটায় উল্লেখযোগ্যভাবে নতুন শব্দার্থবিজ্ঞান (ওয়ার্ল্ডের মাধ্যমে লেনদেনমূলক শব্দার্থবিজ্ঞান) সংজ্ঞায়িত করতে ওমেটা ব্যবহার করে প্রদর্শন করে।


8

"এটি কি তাত্ত্বিকভাবে সম্ভব?"

এলএস

এল

এসএল

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

বাস্তবে, প্রোগ্রামিং ভাষার জন্য এটি "ভার্চুয়ালাইজেশন" প্রযুক্তি।


6

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

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


4

উত্তর / মন্তব্যে এখনও উল্লেখ করা হয়নি:

জরিপ:

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

এবং

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


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