Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej
Ruby - obiektowo-orientowany język programowania z dynamicznym typowaniem. Ma kilka wariantów implementacji, które są specjalnie dostosowane do różnych środowisk i potrzeb.
CRuby
Oficjalny interpreter - CRuby, znany również jako Matz's (pseudonim Yukihiro Matsumoto, autora Ruby) Ruby Interpreter (MRI), jest oficjalną i najpopularniejszą implementacją Ruby. Został napisany w C i jest standardem dla zgodności różnych bibliotek (gemów).
CRuby idealnie nadaje się do tworzenia aplikacji internetowych, szczególnie przy użyciu frameworka Ruby on Rails. Wspiera wiele bibliotek i ma dużą ekosystem oraz społeczność.
JRuby
JRuby - to implementacja Ruby, która działa na Java Virtual Machine (JVM). Ułatwia integrację z bibliotekami Java i pozwala na integrację z istniejącymi systemami Java.
Na przykład, JRuby można używać w dużych aplikacjach korporacyjnych, gdzie potrzebna jest integracja z istniejącymi (legacy) systemami Java.
Rubinius
Rubinius wykorzystuje LLVM (Low Level Virtual Machine) do kompilacji kodu i zapewnia wielowątkowość na poziomie wykonania kodu. Rubinius stara się być w pełni zgodny z CRuby, co czyni go dobrym wyborem w niektórych przypadkach jako implementacja interpretera. Rubinius może być używany w systemach, które wymagają przetwarzania równoległych zapytań (dużej liczby), takich jak zadania w tle w aplikacjach internetowych.
TruffleRuby
TruffleRuby - to część projektu Oracle Graal i ma wysoką wydajność dzięki optymalizacji na poziomie wirtualnej maszyny GraalVM. TruffleRuby nadaje się do przetwarzania dużych ilości danych (na przykład - badań naukowych), gdzie wymagana jest maksymalna szybkość wykonania i zmniejszenie kosztów zasobów obliczeniowych.
mruby
mruby - to lekka wersja Ruby, przeznaczona dla systemów wbudowanych. Ma mniejszy rozmiar i zużywa mniej zasobów, co czyni ją idealną dla ograniczonych środowisk. mruby może być używana w systemach wbudowanych, takich jak mikrokontrolery lub inne przenośne urządzenia, gdzie trzeba zminimalizować zużycie pamięci.
Czy można uruchomić Ruby w przeglądarce?
Ruby nie jest wykonywane bezpośrednio w przeglądarce, jak to ma miejsce w przypadku JavaScript. Istnieje kilka podejść i narzędzi, które pozwalają na uruchamianie Ruby w przeglądarce.
Opal - to kompilator, który przekształca kod Ruby na JavaScript, co pozwala na pisanie logiki frontendowej w Ruby, a następnie wykonywanie jej w przeglądarce jako JavaScript. Opal przetwarza kod Ruby i przekształca go na zoptymalizowany JavaScript, zapewniając dużą część funkcjonalności Ruby.
Na przykład, na stronie Opal można przetestować działanie i zobaczyć przykład działania kompilatora oraz to, jak kod Ruby jest przekształcany na JS i wykonywany w przeglądarce. Prosty przykład:
Конвертуємо Ruby в JS за допомогою Opal
Ruby:
def title(s)
puts "title is #{s}"
end
puts title('hehe')
JS na wyjściu:
Opal.queue(function(Opal) {/* Generated by Opal 1.8.2 */
var $def = Opal.def, self = Opal.top, nil = Opal.nil;
Opal.add_stubs('puts,title');
$def(self, '$title', function $$title(s) {
var self = this;
return self.$puts("title is " + (s))
});
return self.$puts(self.$title("hehe"));
});
I wynik:
title is hehe
WebAssembly (Wasm) - to narzędzie, które może skompilować kod implementacji języka programowania i uruchomić go w przeglądarce. To nie jest bezpośrednie uruchomienie Ruby w przeglądarce. Jest to dość skomplikowane, ale możliwe. Jedna z opcji może wyglądać tak: mruby jest konwertowane na C, a WebAssembly już konwertuje kod na JavaScript, który można już uruchomić w przeglądarce.
Istnieją również inne opcje kompilacji i uruchamiania kodu Ruby w przeglądarce. Ale można zrozumieć, że obecnie nie ma możliwości bezpośredniego uruchomienia kodu Ruby w przeglądarce.
Jak sprawdzić, którą implementację Ruby używam?
To proste - uruchamiamy w terminalu polecenie, aby zobaczyć wersję ruby, implementację i architekturę.
Pod ruby - rozumie się domyślną implementację (CRuby).
Dla JRuby wynik będzie mniej więcej taki:
jruby 9.2.11.1 (2.5.7) 2020-03-02 d8d4b94 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 +jit [linux-x86_64]