Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Shoes4 pre-alpha..
BeitragVerfasst: 20 Jun 2014, 14:52 
Offline
Schüler
Benutzeravatar

Registriert: 25 Mai 2014, 10:06
Beiträge: 37
Tag!
Da das alte Shoes nie anstendig funktioniert, extrem instabil ist, und bei jedem mist abstürzt,
hatte ich Shoes4 preAlpha installiert, wenigstens kann ich dort die Programme wieder über cmd öffnen..
Noch lieber würde ich green_shoes installieren, kann ich jedoch auch nicht da mein Rechner
ziemlich probleme mit native gems hat..
(Und 3 andere test Rechner das absolut gleiche problem)
Scheint also nicht an meinem Rechner zu liegen..

Naja, shoes4 tuts soweit.
Aber kann mir mal einer verraten wie ich jetzt ein .rb zur exe bekomme?!
Mit der "Shoes.exe" (von Shoes3) kann ich nur .shy datein erstellen? -_-'

MfG
Jietzo


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Shoes4 pre-alpha..
BeitragVerfasst: 20 Jun 2014, 23:10 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Du kannst Orca probieren, aber ich bezweifle, dass das im Fall von Shoes funktioniert.

Wenn du eine *.EXE (besser: Ausführbare binary) haben möchtest, dann musst du die Sprache wechseln. Ruby kennt nicht einmal ein binäres zwischenformat, sondern nur „plainscript“, bestenfalls obfuscated.

Mit Python, Java, Haxe und einer Handvoll anderen Sprachen könntest du in einen Bytecode kompilieren der Systemunabhängig funktioniert (solange eine entsprechende Runtime vorhanden ist)

Mit C, C++, Haskell, Pascal und etlichen anderen Sprachen könntest du tatsächlich in native ausführbare Dateien kompilieren, diese wären dann aber das jeweilige Betriebssystem abgestimmt und müssten für andere Betriebssysteme unter entsprechend neuen Bedingungen kompiliert werden. Aber auch hier müssen häufig Bibliotheken bereits vorinstalliert sein oder von dir mit ausgeliefert werden.

_________________
Ubuntu Gnome 14.04 LTS
rvm mit App-spezifischer Ruby-Version (meist 2.2.x) und -Gemset

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Shoes4 pre-alpha..
BeitragVerfasst: 21 Jun 2014, 09:22 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
NobbZ hat geschrieben:
Ruby kennt nicht einmal ein binäres zwischenformat, sondern nur „plainscript“, bestenfalls obfuscated.


Nicht ganz. Ruby 1.9 führte mit YARV eine Bytecode-VM ein, die aber meist transparent ist und daher nicht auffällt. Im Gegensatz zu Python ist es zudem (noch?) nicht möglich, erzeugten Ruby-Bytecode wieder von außen in die VM zu laden. Erzeugen kannst du ihn so:



1
2
3
4
5
irb(main):013:0> iseq = RubyVM::InstructionSequence.compile("puts 'Hello world'")
=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
irb(main):014:0> iseq.eval
Hello world
=> nil


Alles innerhalb des Namensbereiches RubyVM ist selbstverständlich privat für den MRI und gilt nicht für andere Ruby-Implementierungen.

Für den OP ist das aber nicht relevant, weil a) man den Bytecode nicht aus Ruby herausbekommt und b) weil es immer noch YARV-Bytecode ist, für dessen Ausführung eine Implementierung von YARV (da gibt’s wohl momentan nur eine, und das ist der MRI, sprich normales Ruby) vorhanden sein muss. Ruby ist in der Tat die falsche Sprache zum Erzeugen von nativen Executables. Die Sprache wird als Interpreter realisiert, nicht als Compiler, Werkzeuge wie Ocra sind nurmehr Krücken, um diese Natur zu umgehen. Die von Ocra erzeugten Executables sind sehr groß und starten langsam, da es sich in Wirklichkeit um selbstextrahierende Archive handelt, die einen kompletten Ruby-Interpreter enthalten und außerdem noch das Skript. Greife daher lieber zu einer der von NobbZ genannten Sprachen, wenn du nicht sicherstellen kannst/willst, dass auf deinen Zielsystemen ein Ruby-Interpreter vorhanden ist und den Nutzern die Installation eines solchen nicht zuzumuten ist*.

Vale,
Quintus

* Das ist ein typisches Windows-Problem. *nix-Nutzer haben keine Probleme damit, mal kurz ihren Paketmanager anzuwerfen.

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Shoes4 pre-alpha..
BeitragVerfasst: 21 Jun 2014, 15:56 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Quintus hat geschrieben:
NobbZ hat geschrieben:
Ruby kennt nicht einmal ein binäres zwischenformat, sondern nur „plainscript“, bestenfalls obfuscated.


Nicht ganz. Ruby 1.9 führte mit YARV eine Bytecode-VM ein, die aber meist transparent ist und daher nicht auffällt. Im Gegensatz zu Python ist es zudem (noch?) nicht möglich, erzeugten Ruby-Bytecode wieder von außen in die VM zu laden.


Das war genau das was ich meinte. Man kann diesen Bytecode nicht in Form eines Kompilates weitergeben, wie man es bei Python mit den *.pyc oder Java den *.jar Dateien machen kann.

_________________
Ubuntu Gnome 14.04 LTS
rvm mit App-spezifischer Ruby-Version (meist 2.2.x) und -Gemset

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Shoes4 pre-alpha..
BeitragVerfasst: 21 Jun 2014, 20:52 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
NobbZ hat geschrieben:
Quintus hat geschrieben:
NobbZ hat geschrieben:
Ruby kennt nicht einmal ein binäres zwischenformat, sondern nur „plainscript“, bestenfalls obfuscated.


Nicht ganz. Ruby 1.9 führte mit YARV eine Bytecode-VM ein, die aber meist transparent ist und daher nicht auffällt. Im Gegensatz zu Python ist es zudem (noch?) nicht möglich, erzeugten Ruby-Bytecode wieder von außen in die VM zu laden.


Das war genau das was ich meinte. Man kann diesen Bytecode nicht in Form eines Kompilates weitergeben, wie man es bei Python mit den *.pyc oder Java den *.jar Dateien machen kann.


Naja, du hast folgendes gesagt (Hervorhebung von mir):

NobbZ hat geschrieben:
Ruby kennt nicht einmal ein binäres zwischenformat


Das stimmte so eben nicht (der MRI kompiliert erst nach Bytecode für YARV runter und lässt dann den Bytecode ausführen). Mit der Interaktion nach außen hin hatte das erstmal nichts zu tun; außerdem gibt es AFAIK einen Kompilationsschalter für Ruby, um das Speichern und Laden von kompiliertem YARV-Bytecode zu erlauben.

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: