কেন আমরা উত্স কোডের পরিবর্তে সিনট্যাক্স ট্রি সংরক্ষণ করি না?


111

আমাদের কাছে প্রচুর প্রোগ্রামিং ভাষা রয়েছে। কোডে অনুবাদ করার আগে প্রতিটি ভাষা পার্স করা হয় এবং বাক্য গঠন পরীক্ষা করা হয় যাতে একটি বিমূর্ত সিনট্যাক্স ট্রি (এএসটি) নির্মিত হয়।

আমাদের এই অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি আছে, কেন আমরা উত্স কোডের পরিবর্তে (বা উত্স কোডের পাশে) এই সিনট্যাক্স ট্রি সংরক্ষণ করব না?

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

এই পদ্ধতির পক্ষে কি কি?


37
লিস্প সাধারণত একটি বিমূর্ত সিনট্যাক্স ট্রি হিসাবে লেখা হয়। এটি এত বেশি আলগোলের মতো ভাষার মতো ধরা পড়েনি।
ডেভিড থর্নলি

2
আমি বিশ্বাস করতে পারি না যে এলআইএসপি প্রোগ্রামগুলি একটি বিমূর্ত সিনট্যাক্স ট্রি হিসাবে কেবলমাত্র ডেভিডই উল্লেখ করেছিলেন mention
WuHoUnited

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

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

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

উত্তর:


72

হোয়াইটস্পেস এবং মন্তব্য

সাধারণত একটি এএসটি হোয়াইটস্পেস, লাইন টার্মিনেটর এবং মন্তব্য অন্তর্ভুক্ত করে না।

অর্থপূর্ণ বিন্যাস

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

সংকলন করা যায় না এমন কোড

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

সম্ভবত ব্যবহারকারীরা অপসারণযোগ্য কোড কমিট করেন না, তবে তাদের অবশ্যই স্থানীয়ভাবে সংরক্ষণ করার দরকার আছে।

কোনও দুটি ভাষা নিখুঁত মিল নয়

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

ব্যক্তিগত অভিজ্ঞতা:

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


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

2
আসলে একটি সরঞ্জাম আছে যা জাভাস্ক্রিপ্টকে কফিস্ক্রিপ্টে রূপান্তর করে , তাই আমি মনে করি জাভাস্ক্রিপ্ট এবং কফস্ক্রিপ্ট জাভাস্ক্রিপ্ট লিটারেলগুলি ছাড়া পারস্পরিক অনুবাদযোগ্য।
পিটার ওলসন

আকর্ষণীয় সরঞ্জাম, পিটার, আমি এটি সম্পর্কে সচেতন ছিলাম না।
কেভিন ম্যাককর্মিক

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

43

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

আসলে, এটি একটি যুক্তিসঙ্গত ধারণা। মাইক্রোসফ্ট প্রায় একদম ঠিক কাজটি করতে 1990 এর দশকে একটি গবেষণা প্রকল্প করেছিল

বেশ কয়েকটি দৃশ্য মাথায় আসে।

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

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

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

সুতরাং, সংক্ষেপে, এটি একটি সুন্দর ধারণা তবে এটি তুলনামূলকভাবে স্বল্প সুবিধার জন্য প্রচুর পরিমাণে অতিরিক্ত কাজ। এজন্য কেউই খুব কমই করেন।


3
প্রকৃতপক্ষে, আপনি একটি ভাষা স্বাধীনভাবে গাছের পার্থক্য করতে পারেন। গাছগুলি তৈরি করতে আপনার ভাষার নির্দিষ্ট পার্সার প্রয়োজন। আমাদের স্মার্ট ডিফারেন্সার লাইনগুলি সরঞ্জামগুলি দেখুন, যা অনেক ভাষার জন্য এএসটি তুলনা করে। তারা সবাই একই অন্তর্নিহিত ডিফ ইঞ্জিন ব্যবহার করে। সিমান্টিক ডিজাইনস
প্রোডাক্টস /

1
আমি ভিজ্যুয়াল স্টুডিওতে কোনও দিন আমার-স্টাইল-প্রিটি-প্রিন্ট-অন-লোড টিম-স্টাইল-প্রিটি-প্রিন্ট-অন-সেভ দেখতে পেয়েছি ... কয়েক বছর ধরে প্রত্যাশা করছি ... এখনও ভাগ্য নেই ...
রোমান স্টারকভ

19

আপনি তর্ক করতে পারেন যে। নেট থেকে বাইট কোডটি ঠিক এটি। ইনফ্যাক্ট রেডগেটের প্রতিবিম্বকারী প্রোগ্রামটি বাইট কোডটি আবার নেট নেট প্রোগ্রামিং ভাষায় অনুবাদ করে।

তবে সমস্যা আছে। সিন্ট্যাক্স ভাষা নির্দিষ্ট করে তোলে যেমন কিছু জিনিস রয়েছে যা আপনি একটি ভাষায় উপস্থাপন করতে পারেন যা অন্য ভাষায় কোনও উপস্থাপনা নেই। এটি NET এর মধ্যে ঘটে যার সাথে সি ++ একমাত্র হয়। নেট ভাষা যা সমস্ত 7 অ্যাক্সেস স্তরে অ্যাক্সেস করে।

.NET পরিবেশের বাইরে এটি অনেক বেশি জটিল হয়। প্রতিটি ভাষা তার সাথে যুক্ত লাইব্রেরির নিজস্ব সেট থাকা শুরু করে। সি এবং জাভা উভয় ক্ষেত্রেই জেনেরিক সিনট্যাক্স প্রতিবিম্বিত করা সম্ভব হবে না যা নির্দেশের একই প্রয়োগের প্রতিফলন ঘটায় কারণ তারা সিমুলার সমস্যাগুলি একেবারেই বিভিন্ন উপায়ে সমাধান করে।


5
কখনও এফ # দ্বারা উত্পাদিত এমএসআইএলকে পচানোর চেষ্টা করেছেন?
এসকে-যুক্তি

12

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

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

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


5
আপনি মাইক্রোসফট এর "উন্নয়নের নিম্নলিখিত হয়েছে Roslyn " API গুলি যেমন VBc এবং C # কম্পাইলার খুলুন প্রকল্প? একটি প্রাকদর্শন প্রকাশ উপলব্ধ।
কারসন 63000

11

আমি মনে করি সর্বাধিক স্পষ্ট বিষয়গুলি হ'ল:

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

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

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


4
এর সম্ভাব্য সুবিধাটি হ'ল এটি "ট্যাব বনাম স্পেসস", "ইউনিক্স বনাম উইন্ডোজ ব্র্যাকিং / ইনডেন্টেশন", "সদস্যদের সামনে এম_সেটিক্সগুলি উপস্থাপন করুন বা না" এর মতো অন্তহীন বিতর্কের অবসান ঘটাতে পারে, কারণ এগুলি সাধারণ আইডিই বিকল্পগুলিতে রূপান্তরিত হতে পারে।
নিকি

1
@ নিকি ট্রু তবে আপনি ইতিমধ্যে পুনরায় ফর্ম্যাটিং সরঞ্জামগুলি - যেমন astyleবা আননিভার্সিয়াল ইনডেন্ট ব্যবহার করে এটি করতে পারেন । আরকেন বাইনারি ফর্ম্যাটগুলির প্রয়োজন নেই।
কনরাড রুডল্ফ

2
আসল উপকারটি হ'ল ডিফ / প্যাচ সরঞ্জামগুলি রাখার সম্ভাবনা যা আপনাকে সত্যিকার অর্থে কী পরিবর্তন হয়েছে সে সম্পর্কে আরও ভাল ধারণা দেয়। তবে এটি ভার্সন নিয়ন্ত্রণের জন্য সম্পূর্ণ নতুন সরঞ্জামচেনের প্রয়োজন বলে মনে হচ্ছে যা একটি মারাত্মক সীমাবদ্ধতা।
পিটার টেলর

1
যদি আপনি "কোনও লাভ নেই" বলে মনে করেন তবে আপনি ইচ্ছাকৃত সফ্টওয়্যারটির ডোমেন ওয়ার্কবেঞ্চটি দেখেন নি।
ক্রেগ স্টান্টজ

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

6

আমি মনে করি, আপনি যদি পাঠ্য এবং এটিএসটি উভয়ই সংরক্ষণ করেন তবে আপনি সত্যিই দরকারী কিছু যুক্ত করেননি, কারণ পাঠ্যটি ইতিমধ্যে একটি ভাষায় রয়েছে এবং এএসটি দ্রুত পাঠ্য থেকে পুনর্গঠন করা যেতে পারে।

অন্যদিকে, আপনি যদি কেবল এএসটি সঞ্চয় করেন তবে আপনি এমন মন্তব্যের মতো জিনিস হারাবেন যা পুনরুদ্ধার করা যায় না।


6
এবং যদি আপনি মন্তব্যগুলি সিনট্যাক্স গাছের অংশ করেন (এমন কোনও মন্তব্য নোড যা কোনও কিছুর সন্তান হতে পারে)?
ratchet freak

আমাদের সরঞ্জামগুলি ঠিক তা করে। এই থ্রেডে আমার অন্যান্য মন্তব্য দেখুন।
ইরা

4

আমি বিশ্বাস করি ধারণাটি তাত্ত্বিকভাবে আকর্ষণীয় তবে খুব ব্যবহারিক নয়, কারণ বিভিন্ন প্রোগ্রামিং ল্যাঙ্গুয়েজ বিভিন্ন কনস্ট্রাক্টকে সমর্থন করে যা অন্য ভাষায় সমান নয়।

উদাহরণস্বরূপ, এক্স ++ এর একটি 'সময় নির্বাচন করুন' বিবৃতি রয়েছে যা প্রচুর অতিরিক্ত কোড (অতিরিক্ত ক্লাস, অতিরিক্ত যুক্তি ইত্যাদি) ছাড়াই সি # তে লেখা যায় না। http://msdn.microsoft.com/en-us/library/aa558063.aspx

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

ভাষা এক্স-এর একটি মূলশব্দ K রয়েছে যা এএসটিতে 4 টি বিবৃতিতে অনুবাদ করা হয়েছে: এস 1, এস 2, এস 3 এবং এস 4। এএসটি এখন ওয়াই ভাষায় অনুবাদ করা হয়েছে এবং একটি প্রোগ্রামার এস 2 পরিবর্তন করে। এখন এক্স এর সাথে অনুবাদ দিয়ে কী হবে? কোডটি একটি একক কীওয়ার্ডের পরিবর্তে 4 টি স্টেটমেন্ট হিসাবে অনুবাদ করা হয়েছে ...

এএসটি পদ্ধতির বিরুদ্ধে সর্বশেষ যুক্তি হ'ল প্ল্যাটফর্মের ক্রিয়াকলাপ: প্ল্যাটফর্মটিতে কোনও ফাংশন এম্বেড করা হয় তখন কী ঘটে? নেট। এনভায়রনমেন্ট.গেট এনভায়রনমেন্টে পরিবর্তনশীল। আপনি কিভাবে এটি অনুবাদ করবেন?


4

এই ধারণাটিকে ঘিরে একটি সিস্টেম নির্মিত হয়েছে: জেটব্রেইনস এমপিএস । একটি সম্পাদক কিছুটা বিজোড় বা অন্যরকম, তবে সাধারণভাবে এটি এত বড় সমস্যা নয়। সবচেয়ে বড় সমস্যা হল, ভাল, যে তা না একটি টেক্সট কোনো আরো, তাই আপনি স্বাভাবিক পাঠ্য-ভিত্তিক সরঞ্জাম কোনো ব্যবহার করতে পারবেন না -, অন্যান্য সম্পাদকদের grep, sed, মার্জ এবং পরিবর্তন সরঞ্জাম, ইত্যাদি


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

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

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

@ ইরা বাক্সটার, অবশ্যই এটিএসটি দিয়ে সহজ। তবে বিদ্যমান অবকাঠামোতে একীভূত করা অনেক কঠিন ।
এসকে-যুক্তি

4

আসলে বেশ কয়েকটি পণ্য রয়েছে, সাধারণত "ভাষার ওয়ার্কব্যাঞ্চ" নামে পরিচিত যা এএসটি সংরক্ষণ করে এবং তাদের সম্পাদকদের মধ্যে এএসটির একটি "প্রক্ষেপণ" নির্দিষ্ট ভাষায় ফিরে আসে। যেমন @ স্ক-লজিক বলেছেন, জেটব্রেইনসের এমপিএস হ'ল এটির একটি সিস্টেম। আর একটি হ'ল ইনটেনশনাল সফ্টওয়্যার এর ইনটেনশনাল ওয়ার্কবেঞ্চ।

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

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


একটি "ভাষার ওয়ার্কবেঞ্চ" কাঁচা এএসটি সংরক্ষণের ভিত্তিতে হওয়া উচিত নয়। এগুলিও সরল পাঠ্য বাক্য বিন্যাস-ভিত্তিক হতে পারে, উদাহরণস্বরূপ মেটা-অল্টারনেটিভ.net / pfront.pdf দেখুন (এবং এটি প্রকৃতপক্ষে কোনও ইডিএসএল বাস্তবায়িত ভিজ্যুয়াল স্টুডিও এবং ইমাকস সম্পাদককে প্রসারিত করে))
এসকে-যুক্তি

এটি একটি আকর্ষণীয় কাগজ; এটি আমাকে সুগারজে নামক একটি সরঞ্জামের স্মরণ করিয়ে দেয় (উচ্চাকাঙ্ক্ষায়, একেবারে বাস্তবায়নে নয়) যা কয়েক সপ্তাহ আগে স্প্ল্যাশ / ওপসলা-তে উপস্থাপিত হয়েছিল: uni-marburg.de/fb12/ps/research/sugarj
ল্যারি ওব্রায়েন

আকর্ষণীয়, আমি এটিও চেষ্টা করব।
এসকে-যুক্তি

3

আপনি আমার মন পড়ছেন।

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

আপনার প্রস্তাবিত সমস্যা:

  1. গ্রাফিকাল পরিবেশে এটিএসটি রচনা করা শক্ত / ধীর। সর্বোপরি, আমাদের বেশিরভাগ আমরা মাউস স্থানান্তরিত করতে চেয়ে দ্রুত টাইপ করতে পারি। এবং তবুও, একটি উদীয়মান প্রশ্ন "আপনি কীভাবে একটি ট্যাবলেট দিয়ে প্রোগ্রাম কোড লিখবেন?" একটি ট্যাবলেটে টাইপ করা একটি হার্ডওয়্যার কীবোর্ডের সাথে কীবোর্ড / ল্যাপটপের তুলনায় ধীর / জটিল umbers যদি আপনি কোনও প্যালেট থেকে একটি বড় টুকরো টুকরো স্ক্রিন ডিভাইস প্রোগ্রামিং একটি ক্যানভাসে প্যালেট থেকে উপাদানগুলি টেনে এনে এবং এএসটি তৈরি করতে পারেন তবে এটি একটি বাস্তব জিনিস হয়ে উঠতে পারে।

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

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

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

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

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


1

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

আপনি যদি ইমাসের মতো সম্পাদক ব্যবহার করেন তবে এটি বেশ সহজ । একটি সম্পূর্ণ ফাইলের বিন্যাসের স্টাইল পরিবর্তন করা একটি তিনটি কমান্ড কাজ।

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


1
তারপরে আপনার এখনও একটি সিনথেটিক ডিফ এবং মার্জ (যেমন, আবার, এএসটি-স্তর) প্রয়োজন হবে।
এসকে-যুক্তি

না, উত্স সংরক্ষণের জন্য সম্পাদক টিম স্টাইলে পুনরায় ফর্ম্যাট করে - সুতরাং আপনি একই উত্সের সাথে একটি উত্সের ধরণের তুলনা করতে চান।
গুস্তাভ বার্টরাম

একটি ভাল বিষয়, একটি একক সাধারণ উপস্থাপনা সমস্ত সমস্যার সমাধান করে
এসকে-যুক্তি

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

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

1

সোর্স কোডের পরিবর্তে এটিএসটি পড়া এবং সংশোধন করা কঠিন।

তবে কিছু সংকলক সম্পর্কিত সরঞ্জাম এএসটি ব্যবহারের অনুমতি দেয়। জাভা বাইটকোড এবং .NET ইন্টারমিডিয়েট কোড কোনও এএসটির মতো কাজ করে।


1
পাঠ্যের সাহায্যে না করে যান্ত্রিক সরঞ্জামগুলির সাথে একটি এএসটি নির্ভরযোগ্যভাবে সংশোধন করা সহজ। আপনি প্যাটার্ন-নির্দেশিত পরিবর্তনের সাথে এটি করতে পারেন। সিমেন্টিক
ইরা

2
এখনই এটি LISPers বলুন ...
hugomg

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

@ আমলক্যাট, আপনি কি আমাকে এএসটিগুলির জন্য একটি ভিজ্যুয়াল সরঞ্জামে আপনার কাজ সম্পর্কে আরও বলতে পারেন?
ড্যানিয়েল আলবুচ্যাট

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

0

এটি একটি দুর্দান্ত ধারণা; তবে প্রতিটি ভাষার এএসটি অন্য একটি থেকে আলাদা।

আমার জানা একমাত্র ব্যতিক্রম VB.NET এবং C #, যেখানে মাইক্রোসফ্ট যুক্তি দেয় যে তারা "বিভিন্ন সিনট্যাক্সের সাথে হুবহু একই ভাষা"। এমনকি অন্যান্য। নেট ভাষা (আইরন পাইথন, এফ #, যাই হোক না কেন) এএসটি স্তরে পৃথক level

জেভিএম ভাষাগুলির সাথে একই জিনিস, তারা সকলেই একই বাইটকোডকে লক্ষ্য করে তবে ভাষার গঠনগুলি পৃথক, এটিকে ভিন্ন ভাষা এবং বিভিন্ন এএসটি করে।

এমনকি 'পাতলা স্তর' ভাষাও যেমন কফস্প্রিপ্ট এবং এক্সএন্ডেট অন্তর্নিহিত ভাষাগুলির তত্ত্বের অনেক ভাগ করে দেয় (যথাক্রমে জাভাস্ক্রিপ্ট এবং জাভা); তবে উচ্চ স্তরের ধারণাগুলি প্রবর্তন করুন যা এএসটি স্তরে ধরে রাখা (বা হওয়া উচিত)।

যদি জেন্ডাটিকে জাভা এএসটি থেকে পুনর্গঠন করা যেতে পারে, তবে আমি মনে করি এটি জাভা-টু-এক্সটেন্ড 'আনকমপাইলার' হিসাবে সংজ্ঞায়িত করা হবে যা বিদ্যমান জাভা কোড থেকে যাদুতে উচ্চ স্তরের বিমূর্ততা তৈরি করে, আপনি কি ভাবেন না?


1
যেহেতু সি # এবং ভিবি উভয় সংকলকের সাথে ঘনিষ্ঠভাবে পরিচিত কেউ আমি আপনাকে বলতে পারি যে তারা অবশ্যই সমান, তবে যথেষ্ট পরিমাণে গুরুত্বপূর্ণ বিশদ রয়েছে যা তাদেরকে "ভিন্ন বাক্য গঠনের সাথে একই ভাষা" হিসাবে বিবেচনা করা অযৌক্তিক। আমরা রোজলিন প্রকল্পের জন্য এটি করার বিষয়টি বিবেচনা করেছি; একটি একক সংকলক তৈরি করা যা উভয় ভাষাকে সমান সুবিধা দিয়ে সংকলন করতে পারে - এবং অনেক বিতর্কের পরে দু'টি ভাষার জন্য দুটি সংকলক নিয়ে যাওয়ার সিদ্ধান্ত নিয়েছে।
এরিক লিপার্ট

@ এরিকলিপার্ট: এটি লজ্জাজনক। এমন নয় যে আমি কখনও ভাষা শেখার পরিকল্পনা করেছি, তবে এটি একটি দুর্দান্ত ব্যতিক্রমের মতো শোনাচ্ছে। আমি মনে করি যে এইচটিটি লিস্প-জাতীয়-ডিলান এবং অ্যালগল-জাতীয়-ডিলানকে একমাত্র 'ভিন্ন বাক্য গঠনের একই ভাষা' উদাহরণ হিসাবে ছেড়ে দেয়।
জাভিয়ের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.