ব্রাউজারে পাইথন: ব্রাইথন, পাইপাই.জেএস, স্কাল্প্ট এবং ট্রান্সক্রিপ্টের মধ্যে কীভাবে নির্বাচন করবেন?


91

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

তবে তাদের মধ্যে কীভাবে নির্বাচন করবেন? আমি দেখতে পাচ্ছি একমাত্র স্পষ্ট পার্থক্য হ'ল স্কুল্টটি পাইথন 2 এর উপর ভিত্তি করে, যেখানে ব্রাইথন পাইথন 3 ভিত্তিক।

দয়া করে নোট করুন: এটি প্রস্তাবনা বা মতামতের জন্য অনুরোধ নয়। আমি উদ্দেশ্যমূলক তথ্য খুঁজছি যা শিক্ষিত পছন্দকে অবহিত করবে।


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

4
ট্রান্সক্রিপ্ট ( ট্রান্সক্রিপট.অর্গ ) পাইথন ৩.৫ ইনক এর একটি বৃহত উপসেট থেকে সংকলন করে। একাধিক উত্তরাধিকার, দ্রুত উত্পন্ন করে (কল মেমোজাইজিং), ছোট, পঠনযোগ্য কোড, বহুস্তরের উত্স মানচিত্র সমর্থন করে এবং অভিযোজন ছাড়াই কোনও জেএস লিব ব্যবহার করতে পারে। দাবি অস্বীকার: আমি এটা লিখেছি।
জ্যাকস ডি হুজে

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

4
আমি নতুনদের জন্য ট্রান্সক্রিপ্টের জন্য এক ধরণের টিউটোরিয়াল লিখেছি। আপনি এটি github.com/bunkahle/Transcrypt- উদাহরণগুলিতে
ব্লব /

4
: 27 upvotes সঙ্গে dstromberg মুছেছেন উত্তর একটা চমৎকার তুলনা লিঙ্কটি থাকে stromberg.dnsalias.org/~strombrg/pybrowser/python-browser.html
Cees Timmerman

উত্তর:


30

ব্রাউজারে পাইথন চালানো সত্যিই একটি ভাল এবং আপ-টু-ডেট (2019 সালের মতো) নিবন্ধ যা ব্রাইথন, স্কাল্প্ট, পাইপাই.জেএসস, ট্রান্সক্রিপট, পাইডাইড, বাটাভিয়ার সাথে তুলনা করে । আমি অত্যন্ত এটি পড়ার সুপারিশ।

একটি ভাল সংক্ষিপ্ত বিবরণ নীচের ছবিতে দেখা যাবে।

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


62

ব্রাইথন বনাম ট্রান্সক্রিপ্ট সম্পর্কে কিছু তথ্য এখানে (জুলাই ২০১ 2016, যেহেতু ট্রান্সক্রিপ্টকে ওপি কর্তৃক এই প্রশ্নের বিকল্প হিসাবে যুক্ত করা হয়েছিল), কয়েকমাস আগে ব্রাইথনের সাথে একটি প্রকল্প শুরু করে ট্রান্সক্রিপ্টে চলে গিয়েছিল (গত সপ্তাহে সরানো শেষ হয়েছিল)। আমি ব্রাইথন এবং ট্রান্সক্রিপ্ট পছন্দ করি এবং তাদের উভয়ের ব্যবহার দেখতে পাচ্ছি।

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

ব্রাইথন ( গিথুব)) ব্রাউজারে রূপান্তর করতে পারে। সুতরাং আপনি পাইথনে লিখুন এবং পৃষ্ঠাটি লোড হওয়ার পরে ব্রাইথন.জেএস ইঞ্জিন এটিকে ফ্লাইয়ের জাভাস্ক্রিপ্টে রূপান্তরিত করে। এটি সত্যিই সুবিধাজনক, এবং আপনি যা ভাবেন তার চেয়ে অনেক দ্রুত। তবে, আপনার পৃষ্ঠাগুলিতে আপনাকে যে ব্রাইথন.জেএস ইঞ্জিনটি অন্তর্ভুক্ত করতে হবে তা প্রায় 500Kb। এছাড়াও, স্ট্যান্ডার্ড লাইব্রেরিগুলি আমদানির বিষয়টি রয়েছে, যা ব্রাইথন এক্সএইচআর অনুরোধের সাথে পৃথক .js ফাইল আনার দ্বারা পরিচালনা করে। কিছু লিবস ইতিমধ্যে brython.js তে সংকলিত হয়েছে, তাই প্রতিটি আমদানি নতুন ফাইলগুলিতে টানবে না, তবে আপনি যদি অনেকগুলি আমদানি ব্যবহার করেন তবে জিনিসগুলি ধীর হতে পারে। তবে এর চারপাশে উপায় আছে। আমি যা করেছি তা ছিল পৃষ্ঠাটি লোড হওয়ার সময় কোন ফাইলগুলি টানানো হচ্ছে তা দেখার জন্য ব্রাউজার ডেভ সরঞ্জামগুলিতে নেটওয়ার্ক ট্যাবটি পরীক্ষা করা, তারপরে ব্রাইথন এসসিআর ফোল্ডারের একটি অনুলিপিতে আমার প্রকল্পটি যে ফাইলগুলি ব্যবহার করছে না সেগুলি মুছুন, এবং ব্রাইথনের সাথে অন্তর্ভুক্ত স্ক্রিপ্টটি চালান (আমার মনে হয় এটি ব্রাইথন / www / স্ক্রিপ্ট / মেক_ভিএফএস.পি) রয়েছে যা উপলব্ধ লিবগুলি সমস্তকে একটি ফাইলের মধ্যে py_VFS.js সংকলন করে যা আপনাকে আপনার এইচটিএমএল থেকেও লিঙ্ক করতে হবে। সাধারণত, এটি একটি বিশাল 2MB + ফাইল তৈরি করবে, তবে আপনি যে জিনিসগুলি ব্যবহার করছেন না তা মুছে ফেললে এটি বেশ ছোট হতে পারে। এইভাবে এটি করা, এর অর্থ আপনাকে কেবল brython.js, py_VFS.js এবং আপনার পাইথন কোডটি টানতে হবে এবং কোনও অতিরিক্ত এক্সএইচআর অনুরোধের প্রয়োজন হবে না।

ট্রান্সক্রিপ্ট ( গিটহাব ) অন্য দিকে, হিসেবে বিতরণ করা হয় পাইথন 3 প্যাকেজআগাম জাভাস্ক্রিপ্টে অজগরটি সংকলন করতে আপনি ম্যানুয়ালি বা আপনার সরঞ্জামচেনে হুক ব্যবহার করতে পারেন। ট্রান্সক্রিপ্টের সাহায্যে আপনি অজগরে লেখেন, অজগরটির বিরুদ্ধে ট্রান্সক্রিপ্ট চালান এবং এটি জাভাস্ক্রিপ্টকে ছাড়িয়ে যায় যা আপনি আপনার প্রকল্পে লিঙ্ক করতে পারেন। এটি আরও একটি traditionalতিহ্যবাহী সংকলকের মতো যা এতে আউটপুট উপর কিছু নিয়ন্ত্রণ সরবরাহ করে। উদাহরণস্বরূপ, আপনি ES6 বা ES5 তে সংকলন চয়ন করতে পারেন, বা আউটপুট সোর্স ম্যাপগুলিতে বলতে পারেন (যে ডিবাগিংয়ের সময় ব্রাউজারটি আপনাকে সরাসরি উত্সাহিত জাভাস্ক্রিপ্ট কোডের অজগর পাইথন কোডে নিয়ে যায়।) ট্রান্সক্রিপ্টের জাভাস্ক্রিপ্ট আউটপুটটি বেশ সংক্ষিপ্ত আকারের ( বা অন্য কোনও উপায়ে বলা যায়, এটি সুন্দর এবং প্রসারিত)। আমার ক্ষেত্রে অজগর 150kB 165kB অবিহীন ES5 জাভাস্ক্রিপ্ট রূপান্তরিত হয়। তুলনা করার মাধ্যমে, আমার প্রকল্পের ব্রাইথন সংস্করণ রূপান্তরের পরে প্রায় 800Kb ব্যবহার করেছে।

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

myList = []
if myList:    # False in CPython bcs it's empty, true in javascript bcs it exists
    # do some things.

এটি সম্বোধনের জন্য কমপক্ষে তিনটি উপায় রয়েছে:

  • অজগরটিকে জাভাস্ক্রিপ্টে রূপান্তর করার সময়-টি পতাকা ব্যবহার করুন যেমন: c ট্রান্সক্রিপট-টি পাইথন.পি (প্রস্তাবিত নয়, তবে সম্ভবত কোনও সমস্যা নয় যদি আপনি পারফরমেন্স সংবেদনশীল কোডের অভ্যন্তরীণ লুপগুলিতে বহুবার সত্যতা পরীক্ষা না করেন ..)
  • ব্যবহার করুন __pragma__(tconv)বা__pragma__(notconv)স্থানীয়ভাবে পাইথনের মতো সত্যের মানগুলিতে স্বয়ংক্রিয় রূপান্তর করতে ট্রান্সক্রিপ্ট সংকলকটি বলতে আপনার কোডের মধ্যে মধ্যে ।
  • সত্য মানটি পরীক্ষা করার পরিবর্তে, কেবল লেন (মাইলিস্ট)> 0 পরীক্ষা করে সমস্যাটি পুরোপুরি এড়িয়ে চলুন ... সম্ভবত এটি বেশিরভাগ পরিস্থিতিতেই ঠিক থাকবে, আমার হালকা ব্যবহারের জন্য কাজটি কি কাজ করে।

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

পাইথন 3.5 ইনস্টল করার পরে এটি সেট আপ করার মূল বিষয়টি হ'ল:

  1. পাইথন ৩.৫ প্রকল্প ফোল্ডার স্থাপনের জন্য ভেনু (এটি ভার্চুয়ালেনভের নতুন বিল্ট-ইন সংস্করণের মতো যা প্রতিটি প্রকল্পের জন্য কম জায়গা ব্যবহার করে) (কেবল টাইপ করুন: পাইথন ৩.৫-মি ভেনভ ফোল্ডারনাম - ৩.৫ এর জন্য প্যাকেজ সমস্যাযুক্ত উবুন্টুর জন্য কাজ করুন) )। এটি অন্যান্য জিনিসের মধ্যে একটি বিন সাবফোল্ডার দিয়ে 'ফোল্ডারনাম' তৈরি করে।
  2. পাইপের সাথে ট্রান্সক্রিপ্ট পাইথন প্যাকেজ ইনস্টল করুন ('ফোল্ডারনাম / বিন / পিপ ইনস্টল ট্রান্সক্রিপ্ট') যা এটি ফোল্ডারনেম / lib / পাইথন 3.5 / সাইট-প্যাকেজ / ট্রান্সক্রিপ্টে ইনস্টল করে।
  3. activateবর্তমান টার্মিনালটি যদি আপনি প্রতিবার ফোল্ডারনাম / বিন / পাইথন 3.5 এ পুরো পথটি টাইপ করতে না চান। টাইপ করে সক্রিয় করুন: 'উত্স ফোল্ডারনাম / বিন / অ্যাক্টিভেট'
  4. কোড লিখতে এবং পরীক্ষার জন্য জাভাস্ক্রিপ্টে সংকলন শুরু করুন। আপনি যে ফোল্ডারে নিজের কোডটি লিখেছেন তার মধ্যে থেকেই সংকলন করুন উদাহরণস্বরূপ, আমি ফোল্ডারনাম / www / প্রকল্প ব্যবহার করেছি। সুতরাং সেই ফোল্ডারে সিডি করুন এবং চালান: 'ট্রান্সক্রিপ্ট-বি আপনার_পিথন_স্ক্রিপ্ট.পি'। এটি একটি সাবফোল্ডার নামক আউটপুট রাখে __javascript__। তারপরে আপনি আপনার এইচটিএমএল থেকে আউটপুটযুক্ত জাভাস্ক্রিপ্ট লিঙ্ক করতে পারেন।

মূল সমস্যাগুলি জুড়ে চলেছে

আমার বরং সাধারণ প্রয়োজন রয়েছে, তাই আপনার মাইলেজটি আলাদা হতে পারে।

  • আপনাকে ব্রাইথন বা পাইথন স্ট্যান্ডার্ড ল্যাবকে জাভাস্ক্রিপ্টের সাহায্যে প্রতিস্থাপন করতে হবে। সুতরাং উদাহরণস্বরূপ, 'আমদানি জসন' ব্রাইথন সরবরাহ করেছেন তবে ট্রান্সক্রিপ্টের অধীনে আপনি একটি জাভাস্ক্রিপ্ট লাইব ব্যবহার করতে পারেন বা সরাসরি আপনার পাইথন কোডে JSON.parse / JSON.stringify ব্যবহার করতে পারেন। আপনার অজগর কোডটিতে জাভাস্ক্রিপ্ট লাইব্রেরির একটি সংক্ষিপ্ত সংস্করণ সরাসরি অন্তর্ভুক্ত করতে এই ফর্ম্যাটটি ব্যবহার করুন (ট্রিপল কোটগুলি নোট করুন):

    __pragma__ ('js', '{}', '''
    // javascript code
    ''')
    
  • ব্রাইথনের এইচটিএমএল নির্দিষ্ট ফাংশন স্পষ্টভাবে ট্রান্সক্রিপ্টের সাথে কাজ করে না। কেবলমাত্র জাভাস্ক্রিপ্টের সাধারণ উপায়গুলি ব্যবহার করুন। উদাহরণস্বরূপ: 1) ব্রাইথনের অধীনে, আপনি 'ডকুমেন্ট [' আইডি ']' ব্যবহার করে কোনও নির্দিষ্ট এইচটিএমএল ট্যাগটি উল্লেখ করতে পারেন, তবে ট্রান্সক্রিপ্টের সাহায্যে আপনি 'ডকুমেন্ট.সেটমেন্টবাইআইডি (' আইডি ') ব্যবহার করবেন (যা আপনি একই পদ্ধতিতে করেন এটি জাভাস্ক্রিপ্ট থেকে)। 2) আপনি 'ডেল নোডনাম' (কোনও বিসিটি যা ব্রাইথন ফাংশন) সহ কোনও নোড মুছতে পারবেন না। 'নোড.প্যারেন্টনোড.রেমভচিল্ড (নোড)' এর মতো কিছু ব্যবহার করুন। 3) জাভাস্ক্রিপ্ট বিকল্পগুলির সাথে ব্রাইথনের সমস্ত ডম ফাংশন প্রতিস্থাপন করুন। যেমন শ্রেণি_নাম = শ্রেণীর নাম; পাঠ্য = পাঠ্য সামগ্রী; এইচটিএমএল = অভ্যন্তরীণ এইচটিএমএল; অভিভাবক = পিতা-মাতা; বাচ্চাদের = চাইল্ডনোড ইত্যাদি I আমি অনুমান করি যে আপনার যদি এমন কিছু প্রয়োজন হয় যা কিছু পুরানো ব্রাউজারগুলির দ্বারা প্রয়োজনীয় বিকল্পগুলি ধারণ করে তবে তার জন্য এখানে জাভাস্ক্রিপ্ট লাইব্রেরি রয়েছে। ৪) ব্রাইথনের সেট_টাইমআউটটি জাভাস্ক্রিপ্টস সেট টাইমআউটের সাথে প্রতিস্থাপিত হয় 5) বিআর () এর মতো ব্রাইথনের এইচটিএমএল ট্যাগগুলির পরিবর্তে আপনার ব্যবহৃত স্থানগুলিকে <= ডোম ম্যানিপুলেশন সিনট্যাক্স ব্যবহার করে পুনরায় করা দরকার। হয় অভ্যন্তরীণ এইচটিএমএল হিসাবে সরল পাঠ্য মার্কআপ ইনজেকশন করুন বা জাভাস্ক্রিপ্ট সিনট্যাক্স ব্যবহার করে উপাদানগুলি তৈরি করুন এবং তারপরে সাধারণ জাভাস্ক্রিপ্ট ডিওএম সিনট্যাক্স ব্যবহার করে এগুলি সংযুক্ত করুন। আমি আরও লক্ষ্য করেছি যে চেকবাক্সগুলির জন্য ব্রাইথন "যদি চেকবক্স = 'চেকড':" ব্যবহার করে তবে ট্রান্সক্রিপট "যদি চেকবক্স:" দিয়ে খুশি হয় .. হয় অভ্যন্তরীণ এইচটিএমএল হিসাবে সরল পাঠ্য মার্কআপ ইনজেকশন করুন বা জাভাস্ক্রিপ্ট সিনট্যাক্স ব্যবহার করে উপাদানগুলি তৈরি করুন এবং তারপরে সাধারণ জাভাস্ক্রিপ্ট ডিওএম সিনট্যাক্স ব্যবহার করে এগুলি সংযুক্ত করুন। আমি আরও লক্ষ্য করেছি যে চেকবাক্সগুলির জন্য ব্রাইথন "যদি চেকবক্স = 'চেকড':" ব্যবহার করে তবে ট্রান্সক্রিপট "যদি চেকবক্স:" দিয়ে খুশি হয় .. হয় অভ্যন্তরীণ এইচটিএমএল হিসাবে সরল পাঠ্য মার্কআপ ইনজেকশন করুন বা জাভাস্ক্রিপ্ট সিনট্যাক্স ব্যবহার করে উপাদানগুলি তৈরি করুন এবং তারপরে সাধারণ জাভাস্ক্রিপ্ট ডিওএম সিনট্যাক্স ব্যবহার করে এগুলি সংযুক্ত করুন। আমি আরও লক্ষ্য করেছি যে চেকবাক্সগুলির জন্য ব্রাইথন "যদি চেকবক্স = 'চেকড':" ব্যবহার করে তবে ট্রান্সক্রিপট "যদি চেকবক্স:" দিয়ে খুশি হয় ..

  • আমি গত সপ্তাহে একটি 2700 লাইনের প্রকল্পটি সরিয়ে নিয়েছি, এমন সময়ে ট্রান্সক্রিপ্টের কয়েকটি ছোটখাটো জিনিসের সমর্থন ছিল না (যদিও তারা ফিলারগুলির সাথে প্রতিস্থাপনের পক্ষে যথেষ্ট সহজ ছিল), এটি ছিল 1) স্ট্রাইয়ার ব্লুয়ার, স্ট্রিংস্প্লিট (স্ট্রিম)। বিভাজনটি উপস্থিত রয়েছে, তবে মনে হচ্ছে জাভাস্ক্রিপ্ট বিভক্ত, যা পাইথন সংস্করণটির সাথে আলাদাভাবে কাজ করে, আমি যে আচরণের উপর নির্ভর করছিলাম), ২) রাউন্ড (এটি এখন দেব সংস্করণে সমর্থিত বলে মনে হচ্ছে) এবং ৩) আইসনস্ট্যান্স করেনি আরআর, ইনট এবং ফ্লোটে কাজ করবেন না, কেবল ডিক, তালিকা এবং সেট-এ set ৪) ব্রাইথন থেকে আমি অন্য একটি পার্থক্য লক্ষ্য করেছি যে আমি যদি কোনও ডিকের জেএসওএন উপস্থাপনায় টান দিই, আমার 'মাইডিক্ট = ডিক (ডেটা)' ব্যবহার করে এটি করা দরকার, যখন ব্রাইথন 'মাইডিক্ট = ডেটা' দিয়ে খুশি হয়েছিল। তবে এটি ব্রাইথনের json.loads এর কোনও কিছুর সাথে সম্পর্কিত হতে পারে, যা আমি সরাসরি JSON.parse এর সাথে প্রতিস্থাপন করেছি।__pragma__('opov')স্থানীয়) এর জন্য, আপনি ওভারলোডেড ফর্ম্যাটটি ব্যবহার করে সেট অপারেশনগুলির মতো কাজ করতে পারবেন না, তবে সংশ্লিষ্ট ফাংশনগুলি ব্যবহার করতে হবে। যেমন

    a = set([1, 2, 3])
    b = set([3, 4, 5])
    a.difference(b)             # is used instead of a - b
    a.union(b)                  # used instead of a | b
    a.intersection(b)           # used instead of a & b
    a.symmetric_difference(b)   # used instead of a ^ b
    

)) এছাড়াও, আপনি 'আই ইন ইন ডিক:' ব্যবহার করে ডিফল্টরূপে ডিক্টগুলি পুনরাবৃত্তি করতে পারবেন না, এটি (সেন্টিমিড লাইন -i বা __pragma__('iconv')সক্রিয় না করে) তবে আপনি কীগুলি () সদস্য ব্যবহার করে এটি সক্ষম করা এড়াতে পারবেন যেমন:

for key, value in dict.items():
    # do things for each key and value..

সংক্ষেপ

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

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

আশা করি এটি কাউকে তাদের বিশেষ প্রকল্পের জন্য ভাল হতে পারে তা দেখতে সহায়তা করে।


4
আপনি কি ব্রাইথন একটি ট্রান্সপ্লারার হিসাবে নিশ্চিত? আমি নিশ্চিত এটি জাভাস্ক্রিপ্টে পাইথন দোভাষীকে প্রয়োগ করে। যদি এটি কোনও ট্রান্সপ্লেলার হয় তবে আপনার অ্যাপটি দিয়ে এটি বান্ডিল করার দরকার পড়েনি।
কার্ল স্মিথ

@ কার্ল স্মিথ আকর্ষণীয় বিষয়, এটি এরকম ভাবেননি। ব্রাইথন পাইথন কোডটিকে জাভাস্ক্রিপ্টে রূপান্তরিত করে, তবে যেহেতু জাভাস্ক্রিপ্টের কোনও মানক বাইটকোড নেই, তাই সম্ভবত উত্পন্ন জাভাস্ক্রিপ্টটি ব্রাইথন ইঞ্জিনের জন্য 'বাইটকোড' হিসাবে দেখতে পারে।
fzzylogic

4
তুমি আমাকে ভুল বুঝেছ. আমি মনে করি না ব্রাইটন পাইথনকে জাভাস্ক্রিপ্টে মোটেও স্থানান্তরিত করে। এটি কেবল সি এর পরিবর্তে জেএসে একটি পাইথন ইন্টারপ্রেটার প্রয়োগ করে তাদের গিটহাব রিডেম অনুসারে "ব্রাইথন (ব্রাউজার পাইথন) ব্রাউজারে পাইথন 3 চালিত হয়, এটি ডিওএম উপাদান এবং ইভেন্টগুলির ইন্টারফেস সহ"।
কার্ল স্মিথ

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

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

12

https://brythonista.wordpress.com/2015/03/28/compering-the-speed-of-cpython-brython-skulpt-and-pypy-js/

এই পৃষ্ঠাটি তিনজন প্রার্থীকে বেঞ্চমার্ক করে। ব্রাইথন একটি পরিষ্কার বিজয়ী হিসাবে আবির্ভূত।

'সহায়তা' ব্যাখ্যা করেও যে এসও এই ধরণের প্রশ্নের পক্ষে ভাল নয়, মনে হয় একটি সংক্ষিপ্ত উত্তরই এই ক্ষেত্রে সম্ভব।

মানুষ কি খুব তাড়াহুড়ো করছে?


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

পারফরম্যান্স বেঞ্চমার্ক একটি গুরুত্বপূর্ণ উপাদান যখন প্রায় 20 - 40% দ্রুত না হয় - তবে কিছু কার্যক্রমে প্রায় 1000% উন্নতি হয়। ব্রাইথন জাভাস্ক্রিপ্টের তুলনায় লাইটওয়েট স্তর, তাই এটি আলাদা। এছাড়াও, প্রকল্পটি আজকাল খুব পাইথন 3 এর সাথে সামঞ্জস্যপূর্ণ - এটি যা করে তা হল প্রজেক্টে কিছু সংখ্যক সুপরিচিত এবং পরিপক্ক জাভাস্ক্রিপ্ট লাইব্রেরি প্রয়োজনমতো অন্তর্ভুক্ত করা, উদাহরণস্বরূপ বড়-সংখ্যার হ্যান্ডলিংয়ের জন্য।
jsbueno

12

আমি স্কাইপ্ট পাশাপাশি পাইপিজ ব্যবহার করেছি এবং প্রতিশ্রুতিবদ্ধ করেছি। এবং এগুলি তিনটিই খুব আলাদা যে আপনি যদি আমাকে জিজ্ঞাসা করেন তবে কোনও তুলনা হ'ল।

এটি আপনি কী খুঁজছেন তার উপর নির্ভর করে যা সবচেয়ে বোধগম্য হবে।

পিপাইজেএস

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

এটি এমস্ক্রিপ্টেন দিয়ে নির্মিত এবং পাইপস্টোন বেঞ্চমার্ক চালাতে সিপিথনের পরে দ্রুত

আমি পাইপিজ সম্পর্কে একটি সংক্ষিপ্ত আলোচনা দিলাম এখানে স্লাইডগুলি।

স্কাল্প্ট

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

while (True):
    print "hi"

ব্রাউজারটি লক না করেই।

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

from time import sleep
sleep(1)

পাইপস্টনের সাথে তুলনা করার সময় স্কাল্প্ট সিপিথনের গতির প্রায় দশমাংশে চলে।

ব্রাইথন

আমি এই সম্পর্কে কমপক্ষে জানি হয়ত @ ওলেমিস-ল্যাং এটিকে প্রসারিত করতে পারে। তবে স্পষ্ট পার্থক্যের পরে যে ব্রাইথন পাইওয়াই 3 এবং অন্যরা পাই 2 2 ব্রাইথনও ট্রান্সপ্লেলার iler

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


পিপাইজেএস বিকাশকারীরা উন্নয়ন বন্ধ করে দিয়েছেন। এছাড়াও পাইথন 3 সমর্থন এখনও অসম্পূর্ণ বলে মনে হচ্ছে। github.com/pypyjs/pypyjs/issues/213 এবং github.com/pypyjs/pypyjs/issues/172
Roland Pihlakas

এটি রক্ষণাবেক্ষণ করা হয় নি, তবে এর অর্থ এটি কার্যকর হয় না :) ট্রিনকেট.আইও / পাইপিজ কিন্তু এই স্থানটি দেখুন আমি নিশ্চিত যে কিছুটা অবশেষে আবারো উত্থিত হবে। এছাড়াও আপনি ওপেন সোর্স বজায় রাখা আশা করতে পারবেন না, যদি না আপনি নিজেই করেন। :)
আলবার্টজান

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

4
ট্রিনকেটে গ্লোস্ক্রিপ্ট লাইব্রেরি (glowscript.org) ব্যবহার করা হয়েছে যা পাইথনটিকে জাভাস্ক্রিপ্টে ট্রাইপাইল করতে র‌্যাপিডস্ক্রিপ্ট-এনজি এবং 3 ডি অ্যানিমেশন তৈরি করতে ওয়েবজিএল ব্যবহার করে। ট্রান্সপ্লাইং এবং এক্সিকিউশন উভয়ই ব্রাউজারে সম্পন্ন হয়। এখানে গ্লোস্ক্রিপ্ট আর্কিটেকচারের একটি সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে: vpython.org/contents/VPythonArchitecture.pdf
ব্যবহারকারী 1114907

7

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

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

ব্রাইথন (এই সময়ে) এখনও কাজ চলছে। কিছু মডিউল আমদানি করা যায় না (যেমন xML.ElementTree )। তবুও এই পরিস্থিতিটি পরিবর্তন হতে শুরু করছে যেহেতু মানগুলির সাথে সম্পূর্ণ সামঞ্জস্যতা অর্জন করার পরেও আমরা কমপক্ষে সিপিথন টেস্ট স্যুট চালানোর দিকে কাজ করছি (অন্তত যখন তা বোধ হয়)।

ব্রাইথন মডিউল আমদানি দ্রুত করার জন্য .vfs.js সমর্থন করে।

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

টোডো: আমি আমার উত্তরটি নির্ভরযোগ্য বেঞ্চমার্ক দিয়ে পরিপূরক করার চেষ্টা করব।


8
মাথার খুলির প্রতিশ্রুতিবদ্ধ হিসাবে আমি আপনাকে বলতে পারি এটি জেনারেটর এক্সপ্রেশন সমর্থন করে। :)
আলবার্টজান

6

এখানে উল্লেখ করা হয়নি হ'ল র‌্যাপিডস্ক্রিপ্ট বা র্যাপিডস্ক্রিপ্ট-এনজি। তারা খুব কার্যকরী জাভাস্ক্রিপ্ট কোড উত্পাদন করে, যা গ্লোস্ক্রিপ্ট ভিপিথন (glowscript.org) এ ব্যবহৃত হয়। আমি অ্যালেক্স তেসপকভের ( https://github.com/atsepkov/RapydScript ) আসল র‌্যাপিডস্ক্রিপ্টটি ব্যবহার করতাম তবে সম্প্রতি কোভিড গোয়াল ( https://github.com/kovidgoyal/rapidscript-ng ) র‌্যাপিডস্ক্রিপ্ট-এনজি স্যুইচ করেছি । আমি সম্প্রতি সিপথন, র‌্যাপিডস্ক্রিপ্ট এবং ব্রাইথনে পাইস্টোন বেঞ্চমার্ক চালিয়েছি এবং ফলাফলগুলি এখানে আপনি দেখতে পাচ্ছেন:

https://groups.google.com/forum/?fromgroups&hl=en#!topic/brython/20hAC9L3ayE


আপনি ফলাফল সংক্ষিপ্ত করতে পারেন?
জয়

4
১৮ ই জুন, পিয়েরে কুইন্টেল বলেছিলেন, "ঠিক আছে, এখানে পারফরম্যান্সের সমস্যা রয়েছে, তবে বিষয়গুলি আরও ভাল হচ্ছে; আমি বর্তমানে মুক্তিপ্রাপ্ত (৩.২..7) পাইপস্টোন পরীক্ষা ২.২.২ এর চেয়ে দ্রুত গতিতে চালিয়েছি। এটি এখনও ১৫ টি সিপিথনের চেয়ে গতি কম, তবে প্রথম দিনগুলিতে এটি কয়েকগুণ ধীর ছিল "
ব্যবহারকারী 1114907

4
আমি রাপিডস্ক্রিপ্ট-এনজি ট্রান্সপনার ব্যবহার করে পাইস্টোনস বেঞ্চমার্কটি চালিয়েছি এবং এটি আমার উইন্ডোজ 10 কম্পিউটারে 600000 পাইস্টোনস / সেকেন্ড বনাম 125000 পাইস্টোনস / সেকেন্ডে সিপাইথনের গতিবেগের পাঁচ গুণ বেশি বেঞ্চমার্ক করেছে। গ্যাপস্ক্রিপ্ট ভিপিথনে ব্যবহৃত অপারেটর ওভারলোডিং বন্ধ করে দিলে রেপিডসক্রিপ্ট-এনজি-র জন্য প্রায় 5 গুণ সিপিথনের গতির গুণক প্রায় 7 গুণ বেড়ে যায় সিপাইথন, উদাহরণস্বরূপ, একটি + বি একটি ["+"] তে রূপান্তরিত হয় (বি) ; এটি 3 ডি ভেক্টরগুলির সহজে কারসাজির অনুমতি দেওয়ার জন্য করা হয়।
ব্যবহারকারী 1114907

আমি বলতে ব্যর্থ হয়েছি যে কুইন্টেলের মন্তব্য ব্রাইথনকে উল্লেখ করেছে।
ব্যবহারকারী 1114907

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

4

যেহেতু কেউ এটি উল্লেখ করেনি, আমি ভাবলাম বাতাভিয়ার কথা উল্লেখ করা ভাল which

আমি এটি চেষ্টা করেছি এবং, যদিও এটি একটি আকর্ষণীয় ধারণা, যদিও খুব কম ডকুমেন্টেশন নেই এটি এখনও প্রাথমিক পর্যায়ে রয়েছে।

শেষ পর্যন্ত এটি আপনি যা করার চেষ্টা করছেন তার উপর নির্ভর করবে। আমি একবার দেখার পরে ট্রান্সক্রিপ্ট বেছে নিয়েছিলাম কারণ এটি আরও বাস্তববাদী এবং আরও ভাল অভিনয় ছিল, এছাড়াও সম্প্রতি প্রকাশিত / রক্ষণাবেক্ষণ করা হয়েছিল।


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

3

এটি একটি আপডেট কনফারেন্স যা এই মুহুর্তে বাজারে সমস্ত উপলভ্য বিকল্পগুলির সাথে তুলনা করে:

https://www.youtube.com/watch?v=2XSeNQyPlTY

স্পিকার হলেন রাসেল কিথ-ম্যাজি, তিনি এই অঞ্চলের একজন সুপরিচিত বিকাশকারী।

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