portaldacalheta.pt
  • Основен
  • Възходът На Дистанционното
  • Хора И Екипи
  • Инструменти И Уроци
  • Технология
Уеб Интерфейс

Многото преводачи и времетраенето на езика за програмиране Ruby



Въведение

Точно както има много нюанси на рубинения скъпоценен камък , има множество реализации на интерпретатора Ruby.

Най-често използваният интерпретатор на Ruby е референтната реализация, ЯМР Руби , разработен в C от създателя на Ruby (Yukihiro Matsumoto) и основния екип на Ruby.



Нашите Ръководство за наемане на Ruby on Rails споменава, че някои от недостатъците в Rails могат потенциално да бъдат решени или избегнати чрез използване на алтернативен интерпретатор на Ruby. Тази статия представя различните съществуващи реализации и изпълнения на интерпретатора на Ruby, налични днес, като обсъжда предимствата и недостатъците на всеки от тях.

Списък на интерпретатори и изпълнения на Ruby, включително mruby, JRuby, RubyMotion, Rubinius и Ruby MRI



какво е bootstrap тема

История на версиите на Ruby (и как тя влияе на алтернативни реализации)

За съжаление няма еквивалент на Справочник за езика на Python за Руби ( ISO / IEC 30170: 2012 описва Ruby 1.8 / Ruby 1.9, но не съществуват съответни спецификации за Ruby 2.x). При липса на такава езикова спецификация, внедряващите Ruby обикновено разчитат вместо това на общността RubySpec който определя очакваното поведение на езика Ruby чрез тестове, които могат да се изпълняват във всеки интерпретатор на Ruby. Следователно RubySpec се използва от Ruby внедряващите, за да провери поведенческото съответствие на техните реализации на Ruby с де факто стандарта.

Поради липсата на официална спецификация, новите версии на Ruby често просто съответстват на новите версии на Ruby MRI. Заслужава да се отбележи, че има отворен брой който обсъжда процес на проектиране за отделяне на Ruby (езика) от Ruby MRI.



Като се има предвид сегашната тясна връзка между езика Ruby и референтната реализация на MRI, разработчиците на алтернативни реализации на Ruby понякога се борят, за да се справят с езиковите промени, въведени във всяка нова MRI версия.

Никога това не беше по-трудно, отколкото при прехода между Ruby 1.8 и Ruby 1.9. През 2007 г., в опит да изчисти и консолидира синтаксиса на Ruby (тъй като езикът се е развил през десетилетието след пускането на Ruby 1.0), основният екип на Ruby пусна Ruby 1.9.0, версия, която представи много обратно несъвместимост с езика. В резултат на това не всички реализации на Ruby са вложили необходимите усилия, за да направят синтактичния скок от 1,8 на 1,9. Като такива има няколко внедрени Ruby базирани на 1.8, които вече не се използват от общността, но които все още можете да намерите онлайн или за които да говорите от старите ръце на Ruby.



Всяка Коледа излиза нова версия на Ruby MRI, следвайки семантичен принцип на версиите. Ruby 2.0 (издаден 2013 г.) и 2.1 (издаден 2014 г.) представиха допълнителни езикови функции, които Разработчици на Ruby може да се възползва, без да се лишава от обратна съвместимост с Ruby 1.9.

Защо да използваме алтернативно изпълнение на Ruby? Какво не е наред с ЯМР?

Съществуват различни алтернативни реализации на Ruby, поддържащи широк спектър от случаи на употреба и среди. Java Enterprise среди. Мобилни приложения. Приложения на JavaScript. Ниски CPU / RAM машини. В допълнение към поддържането на тези случаи на използване, алтернативните внедрения понякога могат да предложат допълнителен тласък в скоростта или по-ефективно използване на паметта, в зависимост от характеристиките на вашето приложение.



От много време много Рубин на релси разработчици, използвани Ruby Enterprise Edition (REE) вместо ЯМР, като се възползвате от по-добрите техники за управление на паметта в REE в сравнение с версията на ЯМР по това време. (Впоследствие REE беше прекратено през 2012 г.)

Въпреки че MRI е стандартното внедряване на Ruby, това не е непременно правилният избор за всички среди и сценарии. Например, паралелната поддръжка на MRI е по-ниска от тази на JRuby или Rubinius. Също така, въпреки че схемите на MRI за памет и събиране на боклука непрекъснато се подобряват, те все още имат някои проблеми.



Следващото проучване на внедренията на Ruby има за цел да ви помогне при избора на преводач, най-подходящ за оперативните цели и ограничения на вашия проект.

Matz’s Ruby Interpreter (MRI) / CRuby

Написано на C от основния екип на Ruby, ръководен от Yukihiro Matsumoto (“Matz”, създателят на Ruby), MRI е референтната реализация на Ruby, която служи като фактически стандарт. Ако доставчик на операционна система включва версия на Ruby като част от инсталирания на ОС софтуер, например, това обикновено е MRI версията. ЯМР се възползва от по-платени членове на основния екип, отколкото всяко друго внедряване на Ruby, както и предоставени ресурси от хора или компании, които искат да подобрят екосистемата на Ruby.



пенсионни общности с нестопанска цел

Всяка Коледа излиза нова версия на Ruby MRI - често прилагаща нови езикови функции, в допълнение към стандартните промени в библиотеката. Функциите се прилагат първо в Ruby MRI, обикновено въз основа на дискусии върху Пощенски списък за разработчици на Ruby core . Други внедрения на Ruby изостават, в някои случаи дори по години.

JRuby

JRuby е версия на Ruby, внедрена отгоре на Java виртуална машина (JVM) . Тъй като става популярно за езици отвъд само Java да работят върху JVM (гледам във вашата посока, Clojure и Стълба ), реализацията на Ruby, базирана на JVM, вероятно ще спечели популярност.

Ruby в JVM също означава, че Ruby може да работи навсякъде, където може да работи Java (като телефони с Android, използвайки Рубото например). Освен това, благодарение на оперативната съвместимост на JVM, кодът на JRuby може да използва платформата Java, включително стандартни библиотеки и библиотеки на трети страни.

JRuby е полезен и за въвеждане на базирано на Rails решение в среда за внедряване само на Java, опаковане на приложението Rails като .war файл за разполагане в Tomcat контейнер или като Java аплет, работещ като част от вашия уеб интерфейс, например.

За тези, които не са свикнали с JVM обаче, JRuby предлага стандартни проблеми, свързани с JVM, като бавно стартиране на интерпретатора Ruby, отстраняване на грешки в CLASSPATH, ако използвате Java библиотеки на трети страни, по-голямо използване на паметта и факта, че сега вашият код трябва да се напише, като се имат предвид съображения за безопасност на нишките.

Също така, някои функции на Ruby (C API и един от мощните инструменти за самоанализ на Ruby, ObjectSpace модул) не се изпълняват в JRuby.

Всичко това каза, че предимствата от използването на JVM могат да надвишат недостатъците за определени ситуации или проекти. JVM позволява много оптимизации на производителността, като включване на JIT компилатора или използване на собствени Java обекти и API.

Като пример за убедителен случай на използване на JRuby, бивш мой колега веднъж имаше проблем с CPU, който първоначално реши с нишки в Ruby 1.9.3. Когато премина към JRuby и използва Java's java.util.concurrent.Executors, той видя подобрение на производителността с множество порядъци (десетки хиляди пъти по-бързо) за тази операция. Вижте експеримента му тук .

Рубиний

Рубиний е реализация на Ruby, която внедрява общо изпълнение за динамични езици върху a Виртуална машина с ниско ниво (LLVM) . Използвайки тази инфраструктура и JIT компилаторна технология, Rubinius често може да изпълнява Ruby код с по-малко режийни разходи от MRI.

Rubinius също е създаден, използвайки възможно най-много Ruby, за да направи по-бързо и по-лесно развитието на интерпретатора / времето за изпълнение.

Забавен факт: RubySpec първоначално се появи в процеса на внедряване на Rubinius.

Подобно на JRuby, Rubinius включва JIT компилатор, по-добро управление на паметта и по-зряла виртуална машина от Ruby MRI. Въпреки това, за разлика от JRuby, Rubinius поддържа Ruby C библиотеки и основите на Rubinius са написани на C ++, а не на Java.

Rubinius може да е добър посредник, когато имате нужда от висока производителност на вашите Rails сървъри без кривата на обучение или други недостатъци на JRuby.

мруби

мруби е проектиран да бъде вградена версия на Ruby (поддържаща Ruby 1.9.3). С mruby можете да предложите Ruby като език за скриптове / автоматизация в родните приложения, да го използвате за скриптове на игри и дори за програмиране на платки за микроконтролер като Raspberry Pi .

Ако вашата платформа има сериозни ограничения на ресурсите, mruby може да е просто интерпретаторът на Ruby за вас. mruby също се използва за:

  • Създаване на приложения за iOS (като конкурент на RubyMotion, обсъден по-долу)
  • Вградете Ruby в iOS приложения за бърза разработка
  • Предложете на крайните потребители вграден скриптов език за целите на автоматизацията

С Интернет на нещата превръщайки се все повече в реалност, автоматизацията на дома се превръща в свои собствени и изключително преносимите (и относително мощни) компютри са все по-често срещани, пейзажът на целевите платформи за поддръжка става все по-разнообразен. mruby помага да се направи това със същия продуктивен език, който би се използвал на работния плот.

Опал

Опал е плейър за да превърнете Ruby в JavaScript.

как да C++

С възхода на Coffeescript , разработчиците научават, че не трябва да въвеждат JavaScript вземете JavaScript. Въпреки че Coffeescript несъмнено има своите предимства, използвайте го достатъчно дълго и непременно ще срещнете неща, които не харесвате в езика.

Въведете Opal: Напишете Ruby, вземете Javascript . Много готино.

Opal се стреми да бъде максимално последователен с други внедрения на Ruby и следователно е тестван и срещу подмножество на RubySpec. Съществуват обаче някои несъвместимости, произтичащи от естеството на JavaScript и времената на изпълнение на JavaScript. Например низовете и символите в Opal са равни и Opal не предоставя никакви механизми за изпълнение на резби или черупки.

Opal работи самостоятелно или може да се използва като част от Тръбопровод за активи на релси (напр. за автоматично транспилиране на вашия somefile.js.rb файл в JavaScript).

Може би имате проблемен домейн, подходящ за асинхронния модел на паралелна съвпадение на JavaScript (като малка услуга Node.js), но искате езика или някои скъпоценни камъни от пространството Ruby. Opal може да е добро решение за вас в такъв случай.

Или може би искате да напишете пълен стек уеб приложение Ruby. С Opal можете. Накарайте един интерпретатор на Ruby да изпълнява вашия Ruby код от страна на сървъра и след това да има Opal, генериращ JavaScript, за да се изпълнява от страна на клиента.

Opal осъзнава, че вероятно ще си взаимодействате с други API на JavaScript (DOM или Node.js например). Следователно улеснява преминаването в JavaScript и предоставя някои Ruby синтактична захар в сравнение с обикновени JavaScript библиотеки като jQuery .

Природата на Opal, ориентирана към JavaScript, е както неговата сила, така и неговата слабост. Недостатъкът на изпълнението на Opal е времето на изпълнение на JavaScript и Opal се информира от решенията за дизайн на JavaScript. Така че, ако търсите добра реализация на Ruby, за да напишете малък скрипт с черупки, или търсите по-добро време за изпълнение на Ruby за вашето приложение Rails, Opal вероятно не е най-добрият ви избор.

RubyMotion

RubyMotion е едновременно (а) реализация на Ruby (написана с помощта на Objective-C и Какао ) и (b) набор от езикови обвързвания, така че разработчиците да имат достъп до API за какао чрез Ruby.

RubyMotion е търговски продукт, който ви позволява да пишете собствени приложения за какао в Ruby. RubyMotion 2.0 ви позволява да пишете приложения за iOS и Mac OS X в Ruby, а RubyMotion 3 обещава да предостави същата тази поддръжка на Android.

RubyMotion изпълнява версия 1.9 на езика Ruby.

Неизпълнени изпълнения

През годините, откакто Ruby е въведена за първи път, някои от внедрените Ruby, които са се появили, са изоставени или прекратени, като:

  • Ruby Enterprise Edition (REE). REE беше разклонение на MRI 1.8 от хората в Phusion Пътник които внедриха много подобрения в паметта и събирането на боклука за уеб разработчиците. В продължение на няколко години това беше внедряването по подразбиране на Ruby, внедрено за производствени сайтове на Rails. Въпреки това никога не е бил актуализиран за Ruby 1.9 или Ruby 2.0 и в крайна сметка е прекратен през 2012 г.
  • IronRuby. IronRuby е Ruby, внедрен върху Microsoft .NET, написан на C #, и за известно време проектът е финансиран от Microsoft. Изоставен през 2011 г., IronRuby последно поддържа Ruby 1.8.6.

Обобщение

Има голямо разнообразие от изпълнения и преводачи, от които да избирате в пейзажа на Ruby. За повечето Руби проекти , референтната реализация на Ruby (Ruby MRI) остава избраният интерпретатор. Въпреки това алтернативните внедрения на Ruby могат много добре да бъдат правилният избор за вашия проект, в зависимост от вашите функционални и технически цели и ограничения.

В ролята си на референтна реализация на Ruby, MRI получава по-бързо нови езикови функции, има достатъчно добри съвпадение и истории за паметта (които само се подобряват) и има най-широката съвместимост със скъпоценни камъни (някои частично написани на C). Като цяло, ЯМР е солиден, надежден избор за Ruby код с общо предназначение.

как да се подготвим за Aws сертифициране

За по-големи корпоративни внедрявания или за ситуации, в които или трябва да взаимодействате с Java код (или други JVM езици), или се нуждаете от силно развити паралелни модели, JRuby е завладяваща опция.

И разбира се, ако имате уникални нужди (например писане на JavaScript, работа на текущото поколение вградени устройства и т.н.), другите алтернативи на Ruby може да са точно това, което търсите.

С голямо разнообразие от време за изпълнение и интерпретатори на Ruby, от които можете да избирате, Ruby се показва като гъвкав език, полезен за широк спектър от изчислителни среди, вариращи от корпоративен голям железен магазин за внедряване на Java, до софтуер, който контролира стоп-сигнала във вашия офис закачихте своя Raspberry Pi в миналия уикенд. Изборът на правилния инструмент за правилната цел е от съществено значение, да, но се надяваме, че тази статия ви е показала, че Ruby е много повече от стандартния интерпретатор на Ruby, който се доставя с вашата операционна система.

Светът на Ruby е значително подобрен от алтернативни екипи за внедряване на Ruby, работещи с основния екип на Ruby MRI, тъй като се предлагат промени в езика. Те добавят разнообразие към общността за внедряване на Ruby, добавяйки трудно спечеления опит за внедряване на Ruby и собствените си перспективи за функции, които влизат в езика. Любителите на Ruby колективно дължат на тези отбори голяма благодарност. Поздрави за усилията им!

Три принципа на развитие на хранилището на данни

Наука За Данни И Бази Данни

Три принципа на развитие на хранилището на данни
Принципите на дизайна и тяхното значение

Принципите на дизайна и тяхното значение

Дизайн На Марката

Популярни Публикации
Урок за ъглов 5: Ръководство стъпка по стъпка към първото ви приложение за ъглови 5
Урок за ъглов 5: Ръководство стъпка по стъпка към първото ви приложение за ъглови 5
Лов на Java изтичане на памет
Лов на Java изтичане на памет
SMB акаунт мениджър
SMB акаунт мениджър
Изградете ултрамодерни уеб приложения с ъглови материали
Изградете ултрамодерни уеб приложения с ъглови материали
Влияние върху влиятелните лица: Фирми-анализатори
Влияние върху влиятелните лица: Фирми-анализатори
 
Ръководство за стил на Sass: Урок за Sass за това как да напишем по-добър CSS код
Ръководство за стил на Sass: Урок за Sass за това как да напишем по-добър CSS код
Принцип на единната отговорност: Рецепта за велик кодекс
Принцип на единната отговорност: Рецепта за велик кодекс
Plant Power: Поглед върху отвъд месото и неговите конкуренти
Plant Power: Поглед върху отвъд месото и неговите конкуренти
Директор на скрининг на таланти
Директор на скрининг на таланти
Как да провеждаме тестове за използваемост в шест стъпки
Как да провеждаме тестове за използваемост в шест стъпки
Популярни Публикации
  • гещалт теорията се основава на идеята, че
  • какво прави един информационен архитект
  • научете как да програмирате на c++
  • ефектите на цвета върху емоциите
  • изтекли номера на кредитни карти с cvv
Категории
  • Възходът На Дистанционното
  • Хора И Екипи
  • Инструменти И Уроци
  • Технология
  • © 2022 | Всички Права Запазени

    portaldacalheta.pt