Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Ruby to EXE, Опишите последовательность действий! 
:(
    Опции темы
Cinot
Дата 18.12.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



source777, что-то не помню вакансий вроде "Нужен кодер на С++" - обычно с языками программирования работает программист, а не какой-то там кодер. Ну да ладно: кому нравится учить несколько языков - пусть учат, меня волнует создание полноценного приложения именно на Ruby.
PM MAIL   Вверх
source777
Дата 18.12.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



Цитата(Cinot @  18.12.2008,  14:13 Найти цитируемый пост)
что-то не помню вакансий вроде "Нужен кодер на С++"
Естественно, HR-менеджеры в абсолютном большинстве верх безграмотности в данном вопросе, обычно требуется программист со знанием C++, а не "программист С++", что нонсенс само по себе.

Цитата(Cinot @  18.12.2008,  14:13 Найти цитируемый пост)
меня волнует создание полноценного приложения именно на Ruby. 
Что есть полноценное приложение? Думаешь exe-файл, а вот и нифига подобного, полноценное приложение - это приложение, которое справляется со своими задачами!



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Cinot
Дата 18.12.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



source777, оно уже справляется, только в формате .rb. Теперь нужно, чтобы оно запускалось и с других компов.
Хватит флудить, я жду помощи от тех, кто в теме.
PM MAIL   Вверх
source777
Дата 18.12.2008, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



Цитата(Cinot @  18.12.2008,  15:39 Найти цитируемый пост)
Хватит флудить, я жду помощи от тех, кто в теме. 

Да жди на здоровье, только все нормальные варианты тебе уже были предложены:
Цитата(source777 @  16.12.2008,  13:17 Найти цитируемый пост)
Jruby, IronRuby, xRuby, Rubinius, YARV


За сим откланиваюсь, устраивайся поудобнее, ибо ждать чего-то нового по данной теме тебе придётся __очень__ долго...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Cinot
  Дата 18.12.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



Дело в том, что тема уже на 2 страницах, а никто не может объяснить на простом языке, как сделать то, о чём я спрашивал - организовать запуск Ruby-приложения на любом win-компе. 
Jruby, xRuby - это compiles Ruby source code (.rb) to Java bytecode (.class)? И что мне делать с этим .class? Как получить исполняемый модуль-то? Или программы теперь запускаются не из EXE? =)
PM MAIL   Вверх
kemiisto
Дата 18.12.2008, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 1
Всего: 160



Цитата(Cinot @  18.12.2008,  07:33 Найти цитируемый пост)
Да и вообще, с JIT-компиляцией и VM я незнаком.

Итак, начнём с того, что исходный код твоей программы на языке высокого уровня нужно перевести в машинно-зависимый код для конкретной платформы. Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них, можно писать программы до нескольких тысяч строк длиной. Но, поскольку машина понимает только свой машинный язык, программа на алгоритмическом языке перед выполнением должна быть переведена на этот язык с помощью специально программы - транслятора (англ. translator - переводчик). Эти языки машинно независимы (однако для каждого языка и каждого типа ЭВМ необходимо разработать собственный транслятор).

Так вот, существует два способа трансляции:

Интерпретация (interpretation) — построчное (покомандное) исполнение программы. Каждая очередная инструкция исходной программы переводится в машинный код и сразу выполняется. Программа требует для исполнения наличия на машине интерпретатора и исходного кода.

Компиляция (compilation) — перевод всей программы в машинный код. Полученный исполняемый файл в дальнейшем может быть запущен самостоятельно.

Различия между двумя видами трансляции поясню на примере. Допустим, ты являешься обладателем кулинарного рецепта на иностранном языке. Если решишся приготовить по нему блюдо, у тебя есть два пути:
1) Можно сначала полностью перевести (и записать) текст рецепта на родной язык и лишь затем перейти к приготовлению блюда, основываясь уже на переведённом рецепте. Необходимости в исходный рецепт при этом Вы уже не испытываете (и никогда не испытаете). Примерно так поступает компилятор.
2) А можно, по мере перевода рецепта, сразу выполнять отдельные стадии, не записывая текст перевода. В таком случае Вы не получите текст рецепта на родном языке, но получите тоже самое блюдо! Если же возникнет необходимость приготовить блюдо ещё раз - придется переводить рецепт повторно. 

Ruby - язык принципиально интерпретируемый! Поэтому программа на Ruby требует наличия на машине интерпретатора Ruby. Потому что так задумано и точка. Не нравится - пиши на компилируемых языках. Благо их много.

Теперь пару слов о т.н. виртуальных машинах. Сейчас это очень популярная идея. Суть в том, что твоя программа компилируется не в машинно-зависимый код, а в некое промежуточное представление. Затем полученный код исполняется виртуальной машиной. Грубо говоря, этот промежуточный код интерпретируется. Точнее, нужный участок (например, промежуточный код вызываемой функции) компилируется в машинно-зависимый код, а затем вызывается. Такую компиляцию называют JIT (Just In Time), компиляция "на лету", "строго вовремя". Но иногда, конечно, выгоднее интерпретировать какой-то кусок кода, а фоном компилировать его (см. Java HotSpot).

Такой подход обеспечивает переносимость кода. Т.е. твой промежуточный код будет запускаться на любой платформе, для которой существует соответствующая виртуальная машина (VM). Так, например, работает Java, .NET, Smalltalk. Впервые, кстати, применено было Виртом. Для PASCAL существовало промежуточное представление (P-code), которое исполнялось виртуальной машиной. Это тоже поспособствовало широкому распространению языка.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Cinot
Дата 18.12.2008, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



kemiisto, спасибо за подробные разъяснения. Но я не понял, как скомпилировать программу в код для исполнения на виртуальной машине, чтобы было ЧТО-ТО, что могут запускать другие. Что это за файл в итоге?
Что касается интерпретатора, то при таком подходе нужно для своих программ делать инсталлятор с предварительной установкой Ruby на компы? Плохо получается, если так.
PM MAIL   Вверх
kemiisto
Дата 19.12.2008, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 1
Всего: 160



Цитата(Cinot @  18.12.2008,  18:48 Найти цитируемый пост)
Но я не понял, как скомпилировать программу в код для исполнения на виртуальной машине, чтобы было ЧТО-ТО, что могут запускать другие. Что это за файл в итоге?

От виртуальной машины зависит. Если будешь использовать IronRuby, видимо, получишь *.exe, который запустится по двойному клику при наличии соотвествующей версии .NET Framework. Если JRuby, то можно упоковать всё в *.jar, который запустится по двойному клику при наличии соотвествующей версии Java Runtime Enviroment. И в том и в другом случае необходимо наличие дополнительного ПО. Так пусть уж этим ПО будет Ruby! smile 

Цитата(Cinot @  18.12.2008,  18:48 Найти цитируемый пост)
Что касается интерпретатора, то при таком подходе нужно для своих программ делать инсталлятор с предварительной установкой Ruby на компы? Плохо получается, если так. 

Плохо - использовать инструмент не по назначению. Cinot, пойми, Ruby - скриптовый язык. Писать на нём GUI под Windows с линковкой в один исполняемый файл - это не дело. 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Cinot
Дата 19.12.2008, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



kemiisto, насколько мне известно, Ruby - это не скриптовый язык, а вполне себе полноценный язык, ничем не уступающий большинству других. Поэтому я его и начал учить. Просто, и со вкусом. Ну а что касается всплывающего косяка, то придётся либо лучше разобраться в rubyscript2exe, либо сделать exe в IronRuby в надежде на то, что установлен .NET Framework, но этот вариант мне уже не нравится. За советы спасибо.
PM MAIL   Вверх
kemiisto
  Дата 19.12.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 1
Всего: 160



Цитата(Cinot @  19.12.2008,  07:49 Найти цитируемый пост)
kemiisto, насколько мне известно, Ruby - это не скриптовый язык, а вполне себе полноценный язык, ничем не уступающий большинству других.

Скриптовый, скриптовый! Сам Matz говорит: 
Цитата
I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python.

Что хотел - то и получил. И ко всему прочему:
Цитата
The standard 1.8.6 (stable) implementation is written in C, as a single-pass interpreted language.


Т.е. Ruby - скриптовый интерпретируемый язык. Поэтому, твоя посылка:
Цитата
Наверняка, почти все здесь использовали эти (или другие?) программы для создания exe-шника для Windows.

неверна. Вот такие пироги. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
doomik
  Дата 19.12.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Одинокий волк
**


Профиль
Группа: Участник
Сообщений: 360
Регистрация: 25.10.2005
Где: #vingrad

Репутация: нет
Всего: 15



source777,
Цитата

Имхо, очень хорошие вопросы, без ответа на них ты не делишься с ними своей программой, а втюхиваешь ненужный им исполняемый файл на их же компы, некрасиво как-то по отношению к друзьям....


Под 
Цитата

тогда пойдут вопросы похожие на "а зачем эта программа ?", " а она нужна мне?"

я имел ввиду .NET, JRE.

kemiisto,
Цитата

doomik, ты и твои друзья - твердолобые консерваторы! smile Ты уж извини.

Я не нуждаюсь в exe т.к .NET + JRE установлены.

Цитата

Скриптовый, скриптовый!

Чем его делает другим от Java ? В Ruby тоже есть ООП, можно писать программы использующие GUI, и у обоих байт-код.


--------------------
"Единственный способ изучать новый язык программирования - писать на нем 
программы." 
- Brian Kernighan

Remember, st1ng3r 
/server irc.ircline.ru /j #vingrad
PM   Вверх
kemiisto
Дата 19.12.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 1
Всего: 160



Цитата(doomik @  19.12.2008,  10:44 Найти цитируемый пост)
и у обоих байт-код

doomik, я уже начинаю злится. Вы что, читать не умеете:
Цитата
The standard 1.8.6 (stable) implementation is written in C, as a single-pass interpreted language.

JRuby, IronRuby - это уже сторонние реализации Ruby. Стандартная реализация - интерпретатор. Никаких там байт-кодов и виртуальной машины. Чистый итерпретируемый язык.

Цитата(doomik @  19.12.2008,  10:44 Найти цитируемый пост)
Чем его делает другим от Java ?

Другим его делаю создатели. Я уже привёл цитату Matz'a. 
Цитата
Скриптовый язык (англ. scripting language, в русскоязычной литературе принято название язык сценариев) — язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере.

Вот именно для этих целей и был создан Ruby, именно для них его и надо использовать.

Цитата(doomik @  19.12.2008,  10:44 Найти цитируемый пост)
Под 
Цитата

тогда пойдут вопросы похожие на "а зачем эта программа ?", " а она нужна мне?"

я имел ввиду .NET, JRE.

А вот этого я вообще не понимаю: не нужна - иди лесом. Нужна - изволь поставить то, что я скажу. Не доверяешь - опять же - иде лесом.



--------------------
PM MAIL WWW GTalk Jabber   Вверх
SoulKeeper
Дата 19.12.2008, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: нет
Всего: 15



Если уж сильно сильно хочется в exe независимый от jvm/net, то можно пойти путем ruby -> jruby -> java -> gcj -> exe.

Но целесообразность таких действий - отдельный вопрос.
PM MAIL   Вверх
Cinot
  Дата 19.12.2008, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



Не понимаю, зачем тогда wx/qt/tk/fx, если GUI для Ruby (то есть наоборот) не используется?
PM MAIL   Вверх
kemiisto
Дата 19.12.2008, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 1
Всего: 160



Цитата(Cinot @  19.12.2008,  15:57 Найти цитируемый пост)
Не понимаю, зачем тогда wx/qt/tk/fx, если GUI для Ruby (то есть наоборот) не используется? 

Никто такого не говорил - GUI-скриптинг используется, но Ruby - язык интерпретируемый, посему и GUI-скрипты тоже запускают в интерпретирующем режиме. А ты хочешь откомпилировать и собрать в один файл. Вот и не надо этого делать.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Страницы: (3) Все 1 [2] 3 
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1244 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.