আমি পার্সারের পরিবর্তে ast.parse (যা সম্পর্কে আগে জানতাম না) ব্যবহারের বিষয়ে আমি ইলিবেেন্ডারস্কির দৃষ্টিভঙ্গিকে দ্বিতীয় করব। আমি আপনাকে উষ্ণতার সাথে তার ব্লগটি পর্যালোচনা করার পরামর্শ দিচ্ছি। আমি পাইথন-> জাভাস্ক্রিপ্ট অনুবাদক (@ https://bitbucket.org/amirouche/pythonium ) করতে ast.parse ব্যবহার করেছি । আমি অন্যান্য বাস্তবায়ন কিছুটা পর্যালোচনা করে এবং নিজেই এগুলি ব্যবহার করে পাইথোনিয়াম ডিজাইন নিয়ে এসেছি । আমি https://github.com/PythonJS/PythonJS থেকে পাইথোনিয়ামকে কাঁটা দিয়েছিলাম যা আমিও শুরু করেছি, এটি আসলে একটি সম্পূর্ণ পুনর্লিখন। সামগ্রিক নকশা পাইপাই এবং http://www.hpl.hp.com/techreport/Compaq-DEC/WRL-89-1.pdf কাগজ থেকে অনুপ্রাণিত ।
পাইথোনিয়াম মার্কেটিংয়ের মতো দেখে মনে হলেও, শুরু থেকে সেরা সমাধান পর্যন্ত যা কিছু চেষ্টা করেছি, তা সত্যই নয় (কিছু যদি নেটিয়িকেটকে সঠিক মনে না হয় তবে আমাকে বলতে দ্বিধা করবেন না):
প্রোটোটাইপ উত্তরাধিকার ব্যবহার করে সমতল পুরাতন জাভাস্ক্রিপ্টে পাইথন অর্থশাস্ত্র প্রয়োগ করুন: জেএস প্রোটোটাইপ অবজেক্ট সিস্টেম ব্যবহার করে পাইথনের একাধিক উত্তরাধিকার প্রয়োগ করা অসম্ভব। আমি পরে অন্যান্য কৌশলগুলি ব্যবহার করার চেষ্টা করেছি (সিএফ। গেট্যাট্রিবিউট)। আমি যতদূর জানি জাভাস্ক্রিপ্টে পাইথন একাধিক উত্তরাধিকারের কোনও প্রয়োগ নেই, সবচেয়ে ভাল যেটি বিদ্যমান তা হ'ল একক উত্তরাধিকার + মিশ্রিনস এবং আমি নিশ্চিত নই যে তারা হীরা উত্তরাধিকার পরিচালনা করে। Skulpt এর মতো তবে গুগল ক্লোজার ছাড়াও similar
আমি গুগল ক্লোজারের সাথে চেষ্টা করেছি, স্কুল্ট (সংকলক) এর মতো স্কুল্ট কোডটি আসলেই পড়ার পরিবর্তে # ব্যর্থ। যাইহোক, জেএস প্রোটোটাইপ ভিত্তিক অবজেক্ট সিস্টেমের কারণে এখনও অসম্ভব। বাইন্ডিং তৈরি করা খুব কঠিন ছিল, আপনার জাভাস্ক্রিপ্ট এবং প্রচুর বয়লারপ্লিট কোড লিখতে হবে (সিএফ। Https://github.com/skulpt/skulpt/issues/50 যেখানে আমি ভূত)। তখন বিল্ড সিস্টেমে বাইন্ডিংকে সংহত করার কোনও সুস্পষ্ট উপায় ছিল না। আমি মনে করি যে স্কালপ্ট একটি গ্রন্থাগার এবং এটি কার্যকর করার জন্য আপনার .py ফাইলগুলিকে এইচটিএমএলতে অন্তর্ভুক্ত করতে হবে, বিকাশকারী দ্বারা কোনও সংকলন পর্ব করতে হবে না।
পাইজাকো (সংকলক) চেষ্টা করা হয়েছে তবে বাইন্ডিং তৈরি করা (পাইথন কোড থেকে জাভাস্ক্রিপ্ট কোড কল করা) খুব কঠিন ছিল, প্রতিবার তৈরি করার জন্য খুব বেশি বয়লারস্প্লেট কোড ছিল। পাইথোনিয়ামের কাছে এখন পাইজাকো হ'ল আমি মনে করি। পাইজাকো পাইথনে লেখা থাকে (অ্যাস্ট.পার্সও খুব) তবে জাভাস্ক্রিপ্টে অনেক কিছু লেখা আছে এবং এতে প্রোটোটাইপ উত্তরাধিকার ব্যবহার করা হয়েছে।
আমি কখনই পাজামা # ব্যর্থতা চালাতে সফল হইনি এবং কখনও # ব্যর্থ কোডটি পড়ার চেষ্টা করিনি। তবে আমার মনে পায়জামা এপিআই-> এপিআই ট্রান্সলেশন (বা ফ্রেমওয়ার্ক থেকে ফ্রেমওয়ার্ক) করছিল এবং জাভাস্ক্রিপ্ট অনুবাদ থেকে পাইথন নয়। জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কটি ডেটা গ্রাহক করে যা ইতিমধ্যে পৃষ্ঠায় রয়েছে বা সার্ভারের ডেটা। পাইথন কোডটি কেবল "নদীর গভীরতানির্ণয়"। এর পরে আমি আবিষ্কার করেছিলাম যে পায়জামা আসলে একজন বাস্তব পাইথন-> জেএস অনুবাদক।
তবুও আমি মনে করি এপিআই-> এপিআই (বা ফ্রেমওয়ার্ক-> ফ্রেমওয়ার্ক) অনুবাদ করা সম্ভব এবং এটি পাইথোনিয়ামে তবে আমি নিম্ন স্তরে মূলত যা করি। সম্ভবত পাইজামা পাইথোনিয়ামের মতো একই অ্যালগোরিদম ব্যবহার করে ...
তারপরে আমি স্কাইলেটের মতো জাভাস্ক্রিপ্টে সম্পূর্ণ লিখিত ব্রাইথন আবিষ্কার করেছি, সংকলন এবং প্রচুর ফ্লফের প্রয়োজন নেই ... তবে জাভাস্ক্রিপ্টে লিখিত আছে।
এই প্রকল্পের কোর্সে লেখা প্রাথমিক রেখাটি যেহেতু আমি পাইপাই, এমনকি পাইপাইয়ের জন্য জাভাস্ক্রিপ্ট ব্যাকএন্ড সম্পর্কে জানতাম। হ্যাঁ, আপনি যদি এটি খুঁজে পান তবে পাইপাই থেকে সরাসরি জাভাস্ক্রিপ্টে একটি পাইথন ইন্টারপ্রেটার তৈরি করতে পারেন। লোকেরা বলে, এটি একটি বিপর্যয় ছিল। আমি কোথায় পড়লাম না। তবে আমি মনে করি এর কারণ হ'ল দোভাষী, আরপিথন বাস্তবায়নের জন্য তারা যে মধ্যবর্তী ভাষা ব্যবহার করেন তা হ'ল সি (এবং সম্ভবত এটিএম) তে অনুবাদ করার জন্য তৈরি পাইথনের একটি উপসেট। ইরা বাক্স্টর বলেছেন যে আপনি যখন কিছু তৈরি করেন তখন আপনি সর্বদা অনুমানগুলি করেন এবং সম্ভবত আপনি পাইপাইয়ের ক্ষেত্রে এটি কী বোঝাতে চেয়েছেন তার সেরা হওয়া টিউনটি করেছেন: পাইথন-> সি অনুবাদ। এই অনুমানগুলি অন্য কোনও প্রসঙ্গে প্রাসঙ্গিক নাও হতে পারে তারা ওভারহেডকে আরও খারাপভাবে প্রভাবিত করতে পারে অন্যথায় বলা হয়েছে যে সরাসরি অনুবাদ সম্ভবত সর্বদা ভাল হয়।
পাইথনে দোভাষীর লেখাটি (খুব) ভাল ধারণার মতো শোনাচ্ছে। তবে পারফরম্যান্সের কারণে আমি একটি সংকলকটিতে আরও আগ্রহী ছিলাম এটি পাইথনটিকে জাভাস্ক্রিপ্টে ব্যাখ্যা করার চেয়ে কমপ্লেইন করা আরও সহজ।
আমি পাইথনের একটি সাবসেট একসাথে রাখার ধারণা দিয়ে পাইথনজেএস শুরু করেছি যা আমি সহজেই জাভাস্ক্রিপ্টে অনুবাদ করতে পারি। অতীতে অভিজ্ঞতার কারণে প্রথমে আমি ওও সিস্টেমটি প্রয়োগ করার জন্যও মাথা ঘামাইনি। আমি জাভাস্ক্রিপ্ট অনুবাদ করতে পাইথনের সাবসেটটি হ'ল:
- সংজ্ঞা এবং কলিং উভয় ক্ষেত্রেই সম্পূর্ণ পরামিতিগুলির সাথে ফাংশন mantic এই অংশটিই আমি সবচেয়ে বেশি গর্বিত।
- যখন / যদি / এলিফ / অন্য
- পাইথন প্রকারগুলি জাভাস্ক্রিপ্ট ধরণে রূপান্তরিত হয়েছিল (কোনও ধরণের পাইথন ধরণের কোনও प्रकार নেই)
- কেবল জাভাস্ক্রিপ্ট অ্যারেতে পুনরাবৃত্তি করতে পারে (অ্যারেতে একটি জন্য)
- জাভাস্ক্রিপ্টের স্বচ্ছ অ্যাক্সেস: আপনি পাইথন কোডে অ্যারে লিখলে এটি জাভাস্ক্রিপ্টে অ্যারেতে অনুবাদ করা হবে। এটি এর প্রতিযোগীদের উপর ব্যবহারের দিক দিয়ে সবচেয়ে বড় অর্জন।
- আপনি পাইথন উত্সে জাভাস্ক্রিপ্ট ফাংশনে সংজ্ঞায়িত ফাংশনটি পাস করতে পারেন can ডিফল্ট যুক্তি আমলে নেওয়া হবে।
- এটিতে নতুন নামে একটি বিশেষ ফাংশন রয়েছে যা জাভাস্ক্রিপ্টে অনুবাদ করা হয়েছে নতুন উদাহরণ: নতুন (পাইথন) (1, 2, স্প্যাম, "ডিম") "নতুন পাইথন (1, 2, স্প্যাম," ডিম ") তে অনুবাদ করা হয়েছে।
- "var" স্বয়ংক্রিয়ভাবে অনুবাদক দ্বারা পরিচালিত হয়। (ব্রেটের কাছ থেকে খুব সুন্দর সন্ধান (পাইথনজেএস অবদানকারী))।
- গ্লোবাল কীওয়ার্ড
- বন্ধ
- ল্যাম্বডাস
- তালিকা উপলব্ধি
- প্রয়োজনীয়তাগুলির মাধ্যমে আমদানিগুলি সমর্থিত
- Classyjs এর মাধ্যমে একক শ্রেণির উত্তরাধিকার + মিশ্রণ
এটি পাইথনের সম্পূর্ণ প্রস্ফুটিত শব্দার্থের তুলনায় অনেকটা হলেও বাস্তবে খুব সংকীর্ণ বলে মনে হয়। এটি পাইথন সিনট্যাক্স সহ সত্যিই জাভাস্ক্রিপ্ট।
উত্পন্ন জেএস নিখুঁত। ওভারহেড নেই, আরও সম্পাদনা করে পারফরম্যান্সের দিক দিয়ে এটি উন্নত করা যায় না। আপনি যদি উত্পন্ন কোডটি উন্নত করতে পারেন তবে আপনি পাইথন উত্স ফাইল থেকে এটিও করতে পারেন। এছাড়াও, সংকলক কোনও জেএস ট্রিকসের উপর নির্ভর করেনি যা আপনি http://superherojs.com দ্বারা রচিত .js এ খুঁজে পেতে পারেন , তাই এটি খুব পঠনযোগ্য।
পাইথনজেএস-এর এই অংশটির প্রত্যক্ষ বংশধর হলেন পাইথোনিয়াম ভেলোস মোড। সম্পূর্ণ বাস্তবায়নটি অন্যান্য অনুবাদকের সাথে শেয়ার্ড কোডের প্রায় ১০০ এসএলওসি @ https://bitbucket.org/amirouche/pythonium/src/33898da731ee2d768ced392f1c369afd746c25d7/pythonium/veloce/veloce.py?at=master 793 এসএলওসি + পাওয়া যাবে ।
পাইস্টোনস.পি-র একটি রূপান্তরিত সংস্করণ ভেলোস মোড সিএফ-এ অনুবাদ করা যেতে পারে py https://bitbucket.org/amirouche/pythonium/src/33898da731ee2d768ced392f1c369afd746c25d7/pystone/?at=master
বেসিক পাইথন-> জাভাস্ক্রিপ্ট অনুবাদ সেটআপ করার পরে আমি জাভাস্ক্রিপ্টে পূর্ণ পাইথন অনুবাদ করার জন্য অন্য একটি পথ বেছে নিয়েছি। লক্ষ্য ভাষা ব্যতীত গ্লিবের অবজেক্ট ওরিয়েন্টেড ক্লাস ভিত্তিক কোড করার উপায়টি জেএস তাই আপনার অ্যারে, মানচিত্রের মতো অবজেক্ট এবং অন্যান্য অনেক কৌশলতে অ্যাক্সেস থাকতে পারে এবং সে সমস্ত অংশ পাইথনে লেখা হয়েছিল was আইআইআরসি পাইথোনিয়াম অনুবাদক দ্বারা লিখিত কোনও জাভাস্ক্রিপ্ট কোড নেই। পাইথোনিয়ামকে পাইথনের সম্পূর্ণরূপে মেনে চলার জন্য এখানে একক উত্তরাধিকার পাওয়া কঠিন নয়:
spam.egg
পাইথনে সর্বদা অনুবাদ করা হয় getattribute(spam, "egg")
আমি বিশেষভাবে এটি প্রোফাইল করি নি তবে আমি মনে করি যেখানে এটি অনেকটা সময় looseিলে করে এবং আমি নিশ্চিত নই যে আমি এএসএম.জেএস বা অন্য কিছু দিয়ে এর উন্নতি করতে পারি।
- পদ্ধতির সমাধানের আদেশ: পাইথনে লিখিত অ্যালগরিদম দিয়েও এটি পাইথন ভেলোস সামঞ্জস্যপূর্ণ কোডে অনুবাদ করা একটি বড় প্রচেষ্টা ছিল was
- getattributre : আসল getattribute রেজোলিউশন অ্যালগরিদম এক ধরণের কৌশল এবং এটি এখনও ডেটা বর্ণনাকারীদের সমর্থন করে না
- মেটাক্লাস ক্লাস ভিত্তিক: আমি জানি যে কোডটি কোথায় প্লাগ করতে হবে, তবে এখনও ...
- সর্বশেষে বু least আফাইক অনুবাদক একেবারেই অনুমান ব্যবহার করে না, সুতরাং প্রতিবার আপনি যখন কল করবেন তখন আপনাকে যে ধরণের অবজেক্টটি কল করা উচিত তা তাদের কল করার জন্য এটি পরীক্ষা করা উচিত it's
এই অংশটি https://bitbucket.org/amirouche/pythonium/src/33898da731ee2d768ced392f1c369afd746c25d7/pythonium/compliant/runtime.py?at=master এ পাইথন ভেলোসের সাথে সামঞ্জস্যপূর্ণ লেখা হয়েছে।
প্রকৃত অনুগত অনুবাদক https://bitbucket.org/amirouche/pythonium/src/33898da731ee2d768ced392f1c369afd746c25d7/pythonium/compliant/compliant.py?at=master সরাসরি জাভাস্ক্রিপ্ট কোড জেনারেট করে না এবং সবচেয়ে গুরুত্বপূর্ণভাবে অ্যাস্ট- রূপান্তর করে না । আমি অ্যাস্ট-> অ্যাস্ট জিনিসটি চেষ্টা করেছি এবং অ্যাস্ট এমনকি সিএসটির চেয়েও ভাল যদি অ্যাস্টের সাথে কাজ করা ভাল না হয় তবে নোটট্রান্সফর্মার এবং আরও গুরুত্বপূর্ণ বিষয় হল আমাকে অ্যাস্ট-> অ্যাস্ট করার দরকার নেই।
আমার ক্ষেত্রে পাইথন অ্যাস্ট থেকে পাইথন অ্যাস্ট করা কমপক্ষে একটি পারফরম্যান্সের উন্নতি হতে পারে যেহেতু আমি এর সাথে সম্পর্কিত কোড উত্পন্ন করার আগে কোনও সময় কোনও ব্লকের সামগ্রীটি পরিদর্শন করি:
- var / গ্লোবাল: কিছু ভেরি করতে সক্ষম হবার জন্য আমার অবশ্যই জানতে হবে যে আমার কী প্রয়োজন এবং ভের নয়। প্রদত্ত ব্লকটিতে কোন ভেরিয়েবল তৈরি হয় এবং উত্পন্ন ফাংশন ব্লকের শীর্ষে সন্নিবেশ করানোর পরিবর্তে আমি সম্পর্কিত কোডটি উত্পন্ন করার জন্য চাইল্ড নোডে আসার আগে যখন আমি ব্লকটিতে প্রবেশ করি তখন কেবল প্রকাশিত পরিবর্তনশীল অ্যাসাইনমেন্টের সন্ধান করি।
- ফলন, জেনারেটরগুলির এখনও, জেএসে একটি বিশেষ সিনট্যাক্স রয়েছে, তাই আমি যখন "var my_generator = ফাংশন" লিখতে চাই তখন পাইথন ফাংশনটি জেনারেটর কিনা তা জানতে হবে
সুতরাং অনুবাদের প্রতিটি ধাপের জন্য আমি প্রতিটি নোড সত্যিই একবার দেখি না।
সামগ্রিক প্রক্রিয়া হিসাবে বর্ণনা করা যেতে পারে:
Python source code -> Python ast -> Python source code compatible with Veloce mode -> Python ast -> JavaScript source code
পাইথন বিল্টিনগুলি পাইথন কোড (!) তে লেখা থাকে, আইআইআরসি বুটস্ট্র্যাপিং প্রকারের সাথে সম্পর্কিত কয়েকটি বিধিনিষেধ রয়েছে, তবে পাইথোনিয়ামকে কমপ্লায়েন্ট মোডে অনুবাদ করতে পারে এমন সমস্ত কিছুতে আপনার অ্যাক্সেস রয়েছে। কটাক্ষপাত আছে https://bitbucket.org/amirouche/pythonium/src/33898da731ee2d768ced392f1c369afd746c25d7/pythonium/compliant/builtins/?at=master
পাইথোনিয়াম অনুগত থেকে উত্পন্ন জেএস কোড পড়া বোঝা যায় তবে উত্স মানচিত্র ব্যাপকভাবে সহায়তা করবে।
এই অভিজ্ঞতার আলোকে আমি যে মূল্যবান পরামর্শটি দিতে পারি তা হ'ল দয়াবান পুরানো খামারগুলি:
- সাহিত্যে এবং বিদ্যমান প্রকল্পগুলি বন্ধ উত্স বা বিনামূল্যে উভয় ক্ষেত্রেই বিষয়টিকে ব্যাপকভাবে পর্যালোচনা করুন। আমি যখন বিদ্যমান বিদ্যমান প্রকল্পগুলি পর্যালোচনা করি তখন আমার আরও বেশি সময় এবং অনুপ্রেরণা দেওয়া উচিত ছিল।
- প্রশ্ন কর! আমি যদি আগেই জানতাম যে পাইপাই ব্যাকএন্ড সি / জাভাস্ক্রিপ্টের সিনমেটিক অমিলের কারণে ওভারহেডের কারণে অকেজো। আমি সম্ভবত পাইথোনিয়াম ধারণাটি 6 মাস আগে সম্ভবত 3 বছর আগে পেয়েছি।
- আপনি কি করতে চান তা জানুন, একটি লক্ষ্য রাখুন। এই প্রকল্পের জন্য আমার বিভিন্ন উদ্দেশ্য ছিল: কিছুটা জাভাস্ক্রিপ্ট প্র্যাকটিস করুন, পাইথন সম্পর্কে আরও শিখুন এবং ব্রাউজারে চালিত পাইথন কোডটি লিখতে সক্ষম হবেন (আরও নীচে এবং)।
- ব্যর্থতা অভিজ্ঞতা
- একটি ছোট পদক্ষেপ একটি পদক্ষেপ
- ছোট শুরু
- বড় স্বপ্ন
- ডেমো কর
- পুনরাবৃত্তি
পাইথন ভেলোস মোডের সাথেই, আমি খুব খুশি! তবে যেভাবে আমি আবিষ্কার করেছি যে আমি যা খুঁজছিলাম তা হ'ল আমাকে এবং অন্যদের জাভাস্ক্রিপ্ট থেকে মুক্তি দেওয়া তবে আরও গুরুত্বপূর্ণভাবে আরামদায়ক উপায়ে তৈরি করতে সক্ষম হওয়া । এটি আমাকে স্কিম, ডিএসএল, মডেলস এবং শেষ পর্যন্ত ডোমেন নির্দিষ্ট মডেলগুলিতে নিয়ে যায় (সিএফ। Http://dsmforum.org/ )।
ইরা বাক্সটারের প্রতিক্রিয়া সম্পর্কে:
অনুমানগুলি মোটেই সহায়ক নয়। পাইথনজেএস এবং পাইথোনিয়াম উভয়ের জন্যই আমি কম-বেশি 6 মাসের ফ্রি সময় নিয়েছি। তাই আমি 6 মাসের ফুলটাইম থেকে আরও আশা করতে পারি। আমি মনে করি যে এন্টারপ্রাইজ প্রসঙ্গে 100 জন-বছর কী বোঝাতে পারে এবং এটিকে মোটেই বোঝাতে পারে না তা আমরা সবাই জানি ...
যখন কেউ বলে যে কোনও কিছু কঠিন বা প্রায়শই অসম্ভব, তখন আমি উত্তর দিই যে "অসম্ভব এমন সমস্যার সমাধান খুঁজে পেতে কেবল সময় লাগে" অন্যথায় কিছু বলা অসম্ভব নয় যদি এ ক্ষেত্রে গণিতের প্রমাণ না হয় তবে এটি অসম্ভব ...
যদি এটি অসম্ভব প্রমাণিত না হয় তবে এটি কল্পনার জায়গা ছেড়ে দেয়:
- এটি প্রমাণ করা অসম্ভব বলে প্রমাণ করে
এবং
- যদি এটি অসম্ভব হয় তবে একটি "নিকৃষ্ট" সমস্যা থাকতে পারে যার সমাধান হতে পারে।
বা
- যদি এটি অসম্ভব না হয় তবে সমাধান খুঁজে বের করুন
এটি কেবল আশাবাদী চিন্তাভাবনা নয়। আমি যখন পাইথন-> জাভাস্ক্রিপ্ট শুরু করলাম তখন সবাই বলছিল এটি অসম্ভব। পিপিপি অসম্ভব। মেটাক্লাস খুব শক্ত। ইত্যাদি ... আমি মনে করি যে একমাত্র বিপ্লব যে পাইপাই ওভার স্কিম-> সি পেপার নিয়ে আসে (যা 25 বছর পুরাতন) কিছু স্বয়ংক্রিয় জেআইটি প্রজন্ম (RPYthon দোভাষী আমার লিখিত ভিত্তিক ইঙ্গিত) is
বেশিরভাগ লোকেরা বলে যে কোনও জিনিস "শক্ত" বা "অসম্ভব" কারণগুলি সরবরাহ করে না। সি ++ পার্স করা শক্ত? আমি জানি, এখনও তারা (ফ্রি) সি ++ পার্সার। মন্দ কি বিস্তারিত আছে? আমি জানি। এটি একা অসম্ভব বলে দেওয়া সহায়ক নয়, এটি নিরুৎসাহজনক "সহায়ক নয়" এর চেয়েও খারাপ এবং কিছু লোকের অর্থ অন্যকে নিরুৎসাহিত করা। এই প্রশ্নটি সম্পর্কে আমি /programming/22621164/how-to-automatic-generate-a-parser-code-to-code-translator-from-a-corpus- এর মাধ্যমে শুনেছি ।
কি পরিপূর্ণতা হবে আপনার জন্য ? আপনি পরবর্তী লক্ষ্যটিকে এভাবে সংজ্ঞায়িত করেন এবং সম্ভবত সামগ্রিক লক্ষ্যে পৌঁছায়।
অনুবাদটি কীভাবে করা যায় তার চেয়ে কোডটি অনুবাদ করা সহজ করার জন্য (যেমন: IoC, SOA?) কোডটি কী কী ধরণের রূপগুলিতে প্রয়োগ করতে পারি তা জানতে আগ্রহী আমি।
আমি এমন কোনও নিদর্শন দেখতে পাচ্ছি না যা কমপক্ষে নিখুঁত উপায়ে কম সময়ে কোনও ভাষা থেকে অন্য ভাষায় অনুবাদ করা যায় না। যেহেতু ভাষা থেকে ভাষা অনুবাদ সম্ভব, আপনি প্রথমে এটির জন্য আরও ভাল লক্ষ্য রাখতে চাই। যেহেতু, আমি মনে করি http://en.wikedia.org/wiki/Graph_isomorphism_problem অনুসারে , দুটি কম্পিউটার ভাষার মধ্যে অনুবাদ হ'ল একটি গাছ বা ডিএজি আইসোমরফিজম। এমনকি যদি আমরা ইতিমধ্যে জানি যে তারা উভয়ই টুরিং সম্পূর্ণ, তাই ...
ফ্রেমওয়ার্ক-> ফ্রেমওয়ার্ক যা আমি এপিআই-> এপিআই অনুবাদ হিসাবে আরও ভালভাবে ভিজ্যুয়ালাইজ করি তা এখনও এমন কিছু হতে পারে যা আপনি উত্পন্ন কোডটি উন্নত করার উপায় হিসাবে মনে রাখতে পারেন। উদাহরণস্বরূপ: প্রোলগ খুব নির্দিষ্ট বাক্য গঠন হিসাবে তবে তবুও আপনি পাইথনের একই গ্রাফটি বর্ণনা করে গণনার মতো প্রোলোগ করতে পারেন ... আমি যদি পাইথনের অনুবাদককে প্রোলোগ প্রয়োগ করি তবে আমি পাইথনে নয় বরং সি লাইব্রেরিতে একীকরণ বাস্তবায়ন করতাম এবং আসতাম পাইথনিস্টের জন্য খুব পঠনযোগ্য "পাইথন সিনট্যাক্স" দিয়ে আপ করুন। শেষ অবধি, সিনট্যাক্সটি কেবলমাত্র "চিত্রকলা" যার জন্য আমরা একটি অর্থ দেব (এই কারণেই আমি পরিকল্পনা শুরু করেছি)। মন্দটি বিশদে রয়েছে এবং আমি বাক্য গঠন সম্পর্কে কথা বলছি না। ভাষাতে ব্যবহৃত ধারণাগুলি গেটট্রিবিউটহুক (আপনি এটি ছাড়া বাঁচতে পারেন) তবে প্রয়োজনীয় ভিএম বৈশিষ্ট্যগুলির মতো লেজ-পুনরাবৃত্তি অপ্টিমাইজেশান মোকাবেলা করা কঠিন হতে পারে। প্রাথমিক প্রোগ্রামটি লেজ পুনরাবৃত্তি না ব্যবহার করে এবং লক্ষ্য ভাষায় কোনও লেজ পুনরাবৃত্তি না থাকলেও আপনি গ্রিনলেটস / ইভেন্ট লুপ ব্যবহার করে এটিকে অনুকরণ করতে পারেন কিনা তা আপনার যত্ন নেই।
লক্ষ্য এবং উত্স ভাষার জন্য, দেখুন:
- বড় এবং নির্দিষ্ট ধারণা
- ক্ষুদ্র ও সাধারণ ভাগ করা ধারণা
এ থেকে উদ্ভূত হবে:
- যে জিনিসগুলি অনুবাদ করা সহজ
- যে জিনিসগুলি অনুবাদ করা কঠিন
দ্রুত এবং ধীর কোডে কী অনুবাদ করা হবে তা আপনি সম্ভবত জানতে সক্ষম হবেন।
Stdlib বা কোনও গ্রন্থাগারের প্রশ্নও রয়েছে তবে এর স্পষ্ট উত্তর নেই, এটি আপনার লক্ষ্যগুলির উপর নির্ভর করে।
আইডেম্যাটিক কোড বা পঠনযোগ্য উত্পন্ন কোডেরও সমাধান রয়েছে ...
পিএইচপি-র মতো প্ল্যাটফর্মকে টার্গেট করা ব্রাউজারগুলিকে টার্গেট করার চেয়ে অনেক বেশি সহজ যেহেতু আপনি ধীর এবং / বা গুরুতর পথের সি-বাস্তবায়ন সরবরাহ করতে পারেন।
আপনাকে দেওয়া প্রথম প্রকল্পটি পাইথনকে পিএইচপি-তে অনুবাদ করছে, কমপক্ষে আমার জানা পিএইচপি 3 সাবসেটের জন্য, ভেলোস.পি কাস্টমাইজ করা আপনার সেরা বাজি। আপনি যদি পিএইচপি-র জন্য ভেলোস.পি প্রয়োগ করতে পারেন তবে সম্ভবত আপনি কমপ্লায়েন্ট মোডটি চালাতে সক্ষম হবেন ... এছাড়াও যদি আপনি পিএইচপি-র উপসেটে পিএইচপি অনুবাদ করতে পারেন তবে আপনি পিএইচপি_ভেলোস.পি দিয়ে জেনারেট করতে পারবেন এর অর্থ এই যে আপনি পিএইচপি অনুবাদ করতে পারবেন পাইথনের সাবসেট যা ভেলোস.পি গ্রাহ্য করতে পারে যার অর্থ আপনি পিএইচপি জাভাস্ক্রিপ্টে অনুবাদ করতে পারবেন। এমনি বলছি...
আপনি এই লাইব্রেরিগুলিতে একবার দেখে নিতে পারেন:
এছাড়াও আপনি এই ব্লগ পোস্টটি (এবং মন্তব্য) দ্বারা আগ্রহী হতে পারেন: https://www.rfk.id.au/blog/entry/pypy-js-poc-jit/