একটি স্ক্রিপ্টিং ভাষা তৈরি সম্পর্কে প্রশ্ন


12

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

আমি বলতে চাইছি, এমন কোনও মানক দলিল রয়েছে যা নতুন প্রোগ্রামিং / স্ক্রিপ্টিং ভাষার প্রশ্নে বর্ণিত আছে?


এটি প্রোগ্রামিং নয়, প্রোগ্রামার সম্পর্কিত, এটি সম্ভবত স্ট্যাকওভারফ্লোয়ের জন্য আরও ভাল ফিট।
Muad'Dib

14
আমি মুআদ'দিবের সাথে একমত নই। আমি মনে করি এটি এই প্রশ্নের ভাল জায়গা।
ক্রিস

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

1
ভাষাটি ডিএসএল হিসাবে চালিত হলে এটি করার সুবিধা রয়েছে। একটি সাধারণ ভাষার জন্য এত বেশি না। অবশ্যই কিছু সাধারণ ভাষা ডিএসএল যেমন লিস্প বা টিসিএল
জে কে

উত্তর:


16

আপনার যা লেখার দরকার তা ভাষা স্পেসিফিকেশন বলে

এটিতে ভাষার ব্যাকরণ (পছন্দসই বর্ধিত ব্যাকাস-নওর-ফর্মের ভাষায় ) এবং এর শব্দার্থবিজ্ঞানের একটি বিবরণ থাকতে হবে ।

পরবর্তী অংশের জন্য আপনি হয় নিজের কথায় একটি বিবরণ লিখতে পারেন (তবে সুনির্দিষ্ট হওয়ার দিকে খেয়াল রাখুন) বা একটি আনুষ্ঠানিক শব্দার্থবিজ্ঞান


1
বিএনএফ কেবল বিষয়বস্তু মুক্ত ব্যাকরণগুলির জন্য দরকারী, স্ক্রিপ্টিং ভাষা সবসময় প্রাসঙ্গিক মুক্ত উদাহরণ নয় টিসিএল (যদিও আমি মনে করি আপনি এখনও তর্ক করতে পারেন বেশিরভাগ ক্ষেত্রেই
প্রসঙ্গমুক্ত

@jk। আমি বলব না যে বিএনএফ সম্পূর্ণ প্রথাবিহীন মুক্ত ভাষার জন্য অকেজো less সিনট্যাক্সটি কী প্রসঙ্গবিহীন মুক্ত তার উপর নির্ভর করে এটি এখনও EBNF এ নির্দিষ্ট করে বোঝাতে এবং তারপরে শব্দগুলিতে অস্পষ্টতাগুলি সমাধান করতে পারে। উদাহরণস্বরূপ সি ++ স্ট্যান্ডার্ড এটি করে। বেশিরভাগ ক্ষেত্রে আমি কল্পনা করি যে এটি কথায় সমস্ত কিছু ব্যাখ্যা করা বা প্রসঙ্গে সংবেদনশীল বা সীমাহীন ব্যাকরণ ব্যবহার করে নির্দিষ্ট করার চেয়ে আরও স্পষ্ট।
sepp2k

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

@jk। অবশ্যই, তবে সেই ক্ষেত্রে বাক্য গঠন বর্ণনা করার অন্য কোনও উপায় আপনাকে সমানভাবে খুব কম বলবে, কেবল কারণ বলার মতো খুব কম রয়েছে। এর ঠিক অর্থ হ'ল স্পেসিফিকেশনের সিনট্যাক্স অংশটি খুব ছোট হবে।
sepp2k

13

আপনার নিম্নলিখিতগুলির প্রয়োজন হবে:

  • একটি নতুন ভাষা তৈরির কারণ
  • একটি দর্শন
  • একটি শব্দার্থক সংজ্ঞা
  • আপনার টোকেনগুলির একটি লেজিকাল বর্ণনা
  • একটি সিনট্যাক্স বিশ্লেষণ সংজ্ঞা

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

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

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

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

সংকলক: নীতিমালা, কৌশল এবং সরঞ্জাম (ড্রাগন বুক)
সি তে আধুনিক কম্পাইলার বাস্তবায়ন বা জাভাতে আধুনিক সংকলক বাস্তবায়ন


1
দর্শনের জন্য +1, ডিএসএল-এর জন্য আপনি স্পষ্টভাবে এখানে ডোমেনটি সনাক্ত করতে চান
জে কে।

8

নতুন ভাষা তৈরির সময়ের 99.9% সম্পূর্ণ অপ্রয়োজনীয়। বিনিয়োগের ক্ষেত্রে প্রত্যাবর্তনটি সম্ভবত খুব সামান্যই হবে এবং আপনি কেবল নিজের সময় নষ্ট করবেন।

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

একটি নতুন ভাষা তৈরি করা প্রায় সবসময়ই খারাপ।


9
এটি যখন খারাপ না তখন প্রচুর পরিমাণে বাদে। আপনার নিজস্ব সাধারণ ডিএসএল তৈরি করা খুব কার্যকর হতে পারে। এখন আপনার নিজস্ব সাধারণ উদ্দেশ্য ভাষা তৈরি করা আপনার উত্তর যা বলবে তার সাথে আরও ইনলাইন হবে।
কেওসপ্যান্ডিয়ন

@ চাওসপ্যান্ডিয়ন তবে অনেক ভাষা ইতিমধ্যে একটি ডিএসএল তৈরি করতে পারছে যা সেই ভাষা থেকে কোড ব্যবহার করে (যেমন রুবি এটি ভাল)
বিকল্প

2
আমি আপনার উত্তরের সাথে একমত, তবে আমি বিশ্বাস করি এটি এই প্রশ্নের সঠিক উত্তর নয়। আমি বিশ্বাস করি যে প্রশ্নকারী কোনও স্ক্রিপ্টিং ভাষা তৈরির সাধারণতার দিকে নজর রাখছেন, এটি কোনও তৈরির পক্ষে বা বিবেকের জন্য নয়।
টিম মারফি

একটি নতুন ভাষা তৈরি করা প্রায় সর্বদা সেরা সমাধান। en.wikedia.org/wiki/Language-oriented_programming
এসকে-যুক্তি

3

আপনি বিএনএফ এ আপনার ভাষার ব্যাকরণ বর্ণনা করতে পারেন ।

উদাহরণস্বরূপ, এটি পাইথনের ব্যাকরণ


6
ব্যাকরণ নিজে থেকে কোনও ভাষা বাস্তবায়নের জন্য পর্যাপ্ত তথ্য নয়। তাকে শব্দার্থবিজ্ঞানকে একটি উপায় বা অন্য কোনওভাবে নির্দিষ্ট করতে হবে।
sepp2k

0

আপনি যদি নেট ব্যবহার করছেন, এখানে কিছু সময় আগে আমি হোঁচট খেয়েছি। আমি কেবল এটি একটি কৌতূহল দৃষ্টিতে দেখেছি, তবে সম্ভবত এটি আপনার ব্যবহার হবে: বিড়ম্বনা

NET প্ল্যাটফর্মে লৌহঘটিত ভাষা প্রয়োগের জন্য একটি বিকাশ কিট।

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