![]() |
|
![]() ![]() ![]() |
|
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
source777, что-то не помню вакансий вроде "Нужен кодер на С++" - обычно с языками программирования работает программист, а не какой-то там кодер. Ну да ладно: кому нравится учить несколько языков - пусть учат, меня волнует создание полноценного приложения именно на Ruby.
|
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Естественно, HR-менеджеры в абсолютном большинстве верх безграмотности в данном вопросе, обычно требуется программист со знанием C++, а не "программист С++", что нонсенс само по себе.
Что есть полноценное приложение? Думаешь exe-файл, а вот и нифига подобного, полноценное приложение - это приложение, которое справляется со своими задачами! -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
source777, оно уже справляется, только в формате .rb. Теперь нужно, чтобы оно запускалось и с других компов.
Хватит флудить, я жду помощи от тех, кто в теме. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Да жди на здоровье, только все нормальные варианты тебе уже были предложены: За сим откланиваюсь, устраивайся поудобнее, ибо ждать чего-то нового по данной теме тебе придётся __очень__ долго... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Дело в том, что тема уже на 2 страницах, а никто не может объяснить на простом языке, как сделать то, о чём я спрашивал - организовать запуск Ruby-приложения на любом win-компе.
Jruby, xRuby - это compiles Ruby source code (.rb) to Java bytecode (.class)? И что мне делать с этим .class? Как получить исполняемый модуль-то? Или программы теперь запускаются не из EXE? =) |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
Итак, начнём с того, что исходный код твоей программы на языке высокого уровня нужно перевести в машинно-зависимый код для конкретной платформы. Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них, можно писать программы до нескольких тысяч строк длиной. Но, поскольку машина понимает только свой машинный язык, программа на алгоритмическом языке перед выполнением должна быть переведена на этот язык с помощью специально программы - транслятора (англ. translator - переводчик). Эти языки машинно независимы (однако для каждого языка и каждого типа ЭВМ необходимо разработать собственный транслятор). Так вот, существует два способа трансляции: Интерпретация (interpretation) — построчное (покомандное) исполнение программы. Каждая очередная инструкция исходной программы переводится в машинный код и сразу выполняется. Программа требует для исполнения наличия на машине интерпретатора и исходного кода. Компиляция (compilation) — перевод всей программы в машинный код. Полученный исполняемый файл в дальнейшем может быть запущен самостоятельно. Различия между двумя видами трансляции поясню на примере. Допустим, ты являешься обладателем кулинарного рецепта на иностранном языке. Если решишся приготовить по нему блюдо, у тебя есть два пути: 1) Можно сначала полностью перевести (и записать) текст рецепта на родной язык и лишь затем перейти к приготовлению блюда, основываясь уже на переведённом рецепте. Необходимости в исходный рецепт при этом Вы уже не испытываете (и никогда не испытаете). Примерно так поступает компилятор. 2) А можно, по мере перевода рецепта, сразу выполнять отдельные стадии, не записывая текст перевода. В таком случае Вы не получите текст рецепта на родном языке, но получите тоже самое блюдо! Если же возникнет необходимость приготовить блюдо ещё раз - придется переводить рецепт повторно. Ruby - язык принципиально интерпретируемый! Поэтому программа на Ruby требует наличия на машине интерпретатора Ruby. Потому что так задумано и точка. Не нравится - пиши на компилируемых языках. Благо их много. Теперь пару слов о т.н. виртуальных машинах. Сейчас это очень популярная идея. Суть в том, что твоя программа компилируется не в машинно-зависимый код, а в некое промежуточное представление. Затем полученный код исполняется виртуальной машиной. Грубо говоря, этот промежуточный код интерпретируется. Точнее, нужный участок (например, промежуточный код вызываемой функции) компилируется в машинно-зависимый код, а затем вызывается. Такую компиляцию называют JIT (Just In Time), компиляция "на лету", "строго вовремя". Но иногда, конечно, выгоднее интерпретировать какой-то кусок кода, а фоном компилировать его (см. Java HotSpot). Такой подход обеспечивает переносимость кода. Т.е. твой промежуточный код будет запускаться на любой платформе, для которой существует соответствующая виртуальная машина (VM). Так, например, работает Java, .NET, Smalltalk. Впервые, кстати, применено было Виртом. Для PASCAL существовало промежуточное представление (P-code), которое исполнялось виртуальной машиной. Это тоже поспособствовало широкому распространению языка. -------------------- |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
kemiisto, спасибо за подробные разъяснения. Но я не понял, как скомпилировать программу в код для исполнения на виртуальной машине, чтобы было ЧТО-ТО, что могут запускать другие. Что это за файл в итоге?
Что касается интерпретатора, то при таком подходе нужно для своих программ делать инсталлятор с предварительной установкой Ruby на компы? Плохо получается, если так. |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
От виртуальной машины зависит. Если будешь использовать IronRuby, видимо, получишь *.exe, который запустится по двойному клику при наличии соотвествующей версии .NET Framework. Если JRuby, то можно упоковать всё в *.jar, который запустится по двойному клику при наличии соотвествующей версии Java Runtime Enviroment. И в том и в другом случае необходимо наличие дополнительного ПО. Так пусть уж этим ПО будет Ruby! ![]()
Плохо - использовать инструмент не по назначению. Cinot, пойми, Ruby - скриптовый язык. Писать на нём GUI под Windows с линковкой в один исполняемый файл - это не дело. -------------------- |
||||
|
|||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
kemiisto, насколько мне известно, Ruby - это не скриптовый язык, а вполне себе полноценный язык, ничем не уступающий большинству других. Поэтому я его и начал учить. Просто, и со вкусом. Ну а что касается всплывающего косяка, то придётся либо лучше разобраться в rubyscript2exe, либо сделать exe в IronRuby в надежде на то, что установлен .NET Framework, но этот вариант мне уже не нравится. За советы спасибо.
|
|||
|
||||
kemiisto |
|
||||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
Скриптовый, скриптовый! Сам Matz говорит:
Что хотел - то и получил. И ко всему прочему:
Т.е. Ruby - скриптовый интерпретируемый язык. Поэтому, твоя посылка:
неверна. Вот такие пироги. ![]() -------------------- |
||||||||
|
|||||||||
doomik |
|
||||||||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: нет Всего: 15 |
source777,
Под
я имел ввиду .NET, JRE. kemiisto,
Я не нуждаюсь в exe т.к .NET + JRE установлены.
Чем его делает другим от Java ? В Ruby тоже есть ООП, можно писать программы использующие GUI, и у обоих байт-код. -------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
||||||||
|
|||||||||
kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
doomik, я уже начинаю злится. Вы что, читать не умеете:
JRuby, IronRuby - это уже сторонние реализации Ruby. Стандартная реализация - интерпретатор. Никаких там байт-кодов и виртуальной машины. Чистый итерпретируемый язык. Другим его делаю создатели. Я уже привёл цитату Matz'a.
Вот именно для этих целей и был создан Ruby, именно для них его и надо использовать.
А вот этого я вообще не понимаю: не нужна - иди лесом. Нужна - изволь поставить то, что я скажу. Не доверяешь - опять же - иде лесом. -------------------- |
||||||
|
|||||||
SoulKeeper |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.1.2007 Где: Ukraine, Lviv. Репутация: нет Всего: 15 |
Если уж сильно сильно хочется в exe независимый от jvm/net, то можно пойти путем ruby -> jruby -> java -> gcj -> exe.
Но целесообразность таких действий - отдельный вопрос. |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Не понимаю, зачем тогда wx/qt/tk/fx, если GUI для Ruby (то есть наоборот) не используется?
|
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
Никто такого не говорил - GUI-скриптинг используется, но Ruby - язык интерпретируемый, посему и GUI-скрипты тоже запускают в интерпретирующем режиме. А ты хочешь откомпилировать и собрать в один файл. Вот и не надо этого делать. -------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Ruby: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |