আমি কীভাবে একটি প্রোগ্রামিং ভাষার স্পেসিফিকেশন লিখতে যাই?


16

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

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


1
আপনি কি এখনও মার্টিন ফাউলারের দ্বারা ডোমেন নির্দিষ্ট ভাষাগুলি পড়েছেন? amazon.com/…
গ্যারি রোয়ে

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

একটি রেফারেন্স বাস্তবায়নের উপর একটি স্ট্যান্ডার্ডের সুবিধা হ'ল আপনি নির্ধারণ করতে পারেন যেখানে অন্যান্য বাস্তবায়ন আপনার প্রয়োগটি যা করে তা থেকে বিচ্যুত হতে পারে।
বার্ট ভ্যান ইনজেন শেহেনো

উত্তর:


3

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

আনুষ্ঠানিক কাজ করা আপনাকে ভাষার জটিলতা কম রাখতে এবং কোণার কেসগুলি দেখতে সহায়তা করতে পারে।

শিরোনাম মস্তিষ্কের ডাম্প: উত্স এনকোডিং, লেক্সিং, মৌলিক প্রকার, আক্ষরিক, অপারেটর, এক্সপ্রেশন, সাধারণ বিবৃতি, শর্তসাপ, লুপ, ফাংশন (সংজ্ঞা এবং কল), প্রকারের ঘোষণা, মডিউল, সংকলন ইউনিট, ভেরিয়েবল স্কোপিং, বিভিন্ন ধরণের নাম রেজোলিউশন (যেমন আমদানি, পদ্ধতি), মেমোরি মডেল, পার্শ্ব প্রতিক্রিয়া, টাইপিং, সমঝোতা ...


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

7

প্রচুর পড়ুন এবং এটিকে সহজ রাখুন

একটি নতুন ভাষা নকশা করা কঠিন। সত্যি ই কঠিন. তবে শেষ পর্যন্ত খুব সন্তোষজনক যদি এটি জনপ্রিয় হয়ে ওঠে এবং সত্যই এমন একটি সমস্যা সমাধান করে যা লোকেরা একটি মার্জিত উপায়ে অভিজ্ঞ হয়।

আমি মন্তব্যে যেমন উল্লেখ করেছি, আমি আপনাকে নিম্নলিখিত কারণে মার্টিন ফাউলারের দ্বারা ডোমেন নির্দিষ্ট ভাষাগুলি পড়ার পরামর্শ দিচ্ছি :

  1. আপনার ভাষা কেন ডিজাইন করা উচিত সে সম্পর্কে তিনি প্রচুর ব্যবহারিক গভীরতায় চলে যান
  2. এটি কীভাবে করবেন সে সম্পর্কে বিশদ রয়েছে (পার্সার্স, লেক্সিকাল বিশ্লেষক, ভাষার ওয়ার্কব্যাঞ্চগুলি ইত্যাদি)
  3. আপনার নির্বাচিত বাক্য গঠন কীভাবে ক্লোজার, এনোটেশন, আক্ষরিক তালিকাগুলি, গতিশীল অভ্যর্থনা ইত্যাদির মত ধারণাগুলি পরিচালনা করতে পারে সে সম্পর্কে বিশদ বাস্তবায়ন নির্দেশাবলী রয়েছে There

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

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

যদি এটি টাইটানের পরবর্তী মিশনে ব্যবহার করা হয়, তবে প্রতিটি উপাদানগুলির আচরণের সঠিক আনুষ্ঠানিক প্রমাণগুলি দেখানো অত্যন্ত বিশদ বিবরণগুলি সর্বনিম্ন প্রবেশের স্তর হবে।

সুতরাং, এটি কোনও সোজা জিনিস নয়। স্পেসিফিকেশনটির কাছে যেতে, আপনি সম্ভবত আপনার ভাষা তৈরির অভিজ্ঞতা অর্জন এবং তাদের সাথে কাজ করার চেয়ে আরও ভাল হবেন যাঁরা আসলে তাদের প্রতিদিনের ভিত্তিতে ব্যবহার করেন। যদি আপনার ইচ্ছুক শিকার ... এর ... বিকাশকারী, কর্মক্ষেত্রে থাকেন যারা আপনার ভাষা শিখতে কিছুটা সময় নিতে পারেন তবে তারা আপনাকে এটির ব্যবহারের জন্য কী প্রয়োজন তা সম্পর্কে প্রতিক্রিয়া জানাতে পারে।

সংক্ষেপে, এটি সহজ রাখুন এবং আরও বেশি লোক এটি ব্যবহার করবে।


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

@ জন পুরী আপনার কাছে অনলাইনে থাকা ভাষার কোনও উদাহরণ রয়েছে যা আপনি এই প্রশ্নে অন্তর্ভুক্ত করতে পারেন?
গ্যারি রোয়ে

আমার কাছে আমার বর্তমান প্রকল্পের উদাহরণ নেই। আমি যে ভাষাটি তৈরি করেছি তার একমাত্র সত্যই সর্বজনীন উদাহরণ (যা আমি আসলে ব্যবহার করি!) ভিশনএলংগ্রাউজ.সোর্সফোর্জন
জন Purdy

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

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

3

Wirth পরিকল্পিত এবং অনেক প্রোগ্রামিং ভাষার বাস্তবায়িত: এগুলোর মধ্যে জন্য বিশেষ উল্লেখ Oberon এবং Oberon2 ভাষায় সেখানে সম্পূর্ণতা, terseness এবং পাঠযোগ্যতা জন্য উল্লেখযোগ্য।


2

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


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

1

যে কোনও স্পেসিফিকেশনটি সংক্ষিপ্ত এবং সময়ের পরীক্ষায় দাঁড়াতে সক্ষম হওয়া উচিত

এই কারণেই আপনি দেখতে পান যে বিএনএফ এর মতো বিমূর্ততা অনেকগুলি ভাষা মানের জন্য ব্যবহৃত হয় ... এর সংশ্লেষ এবং এখনও আমাদের অনেকগুলি বর্তমান সরঞ্জাম পিছনে ফেলে যাওয়ার পরে বোঝা যাবে।

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

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