LINUX.ORG.RU

Статья о том, как связывать код на C с кодом на Ruby.


0

0

"Существует по меньшей мере 4 способа "скрестить" код на Ruby и C В этой заметке будет освещено несколько способов интеграции кода, написанного на C, с кодом на Ruby в целях расширения функциональности Ruby и оптимизации вычислений. Также будет описан еще ряд вопросов, возникающих при решении подобных задач."

http://maxidoors.ru/articles/2006/10/...

anonymous

Проверено: anonymous_incognito ()

немного оффтоп, но все таки.... есть сервер, на которм у меня shared hosting account... на сервере есть ruby... вопрос... могу ли я поставить/использовать там Ruby on Rails не идя на поклон к админу сервака?

anonymous
()
Ответ на: комментарий от anonymous

Вроде можно закинуть куда-то рельсовые библиотеки и всё будет работать.. Вроде в /vendor это кладется...

anonymous
()

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

anonymous
()
Ответ на: комментарий от anonymous

> В виде плагина к стандартному типу String.

Т.е. я загружаю в начале кода плагин и больше ничего менять не нужно?

anonymous
()
Ответ на: комментарий от svu

мдяяя... а что-то типа JNIWrapper(Java) или FFI(Python) для рельсолюбителей классово чуждо и подлежит анафеме :))

Linfan ★★★★★
()
Ответ на: комментарий от anonymous

>немного оффтоп, но все таки.... есть сервер, на которм у меня shared hosting account... на сервере есть ruby... вопрос... могу ли я поставить/использовать там Ruby on Rails не идя на поклон к админу сервака?

Можешь. Но нужно, чтобы был открыт порт... например 3000

Selecter ★★★★
()
Ответ на: комментарий от Cris

> Почитай тут, это написал чувак, который реализовал эту саму поддержку для рельсов.

Круто. Я недавно гуглил на тему немного, но этого не видел. Жаль только, что там "... за исключением нового движка регулярных выражений ...". Но как я понял из написанного - процесс идёт. Это хорошо, но жаль, что надо ещё чего-то ждать.

anonymous
()
Ответ на: комментарий от anonymous

А в каких интерпретируемых языках поддержка unicode встроена во все составляющие языка?

php только в 6 версии это реализует
python как?

Selecter ★★★★
()
Ответ на: комментарий от Selecter

А, да, было дело... Плодотворно так побеседовали...

svu ★★★★★
()
Ответ на: комментарий от Selecter

> python как?

Юникод там встроен ещё с версии 1.6. =) На сегодняшний день вся стандартная библиотека его полностью поддерживает. Единственная беда в том, что добавив юникодные строки, обычные байтовые строки выкинуть забыли, и именно они используются по умолчанию. Как следствие, многие программы, особенно создаваемые англоязычными быдлокодерами, с юникодом нифига не дружат, и не так-то их подружить. Но к счастью, в версии 3 вообще все строки станут юникодными в обязательном порядке, и проблема решится сама собой (надеюсь).

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

>Но к счастью, в версии 3 вообще все строки станут юникодными в обязательном порядке, и проблема решится сама собой (надеюсь)

Я смотрю, что постепенно сам процесс программирования становится всё лучше, приятнее и понятнее программисту, а не машине.

asm->c->java->ruby/python В ruby и RoR это более ярко выражено :-)

Selecter ★★★★
()
Ответ на: комментарий от ero-sennin

Да, но всё поправимо :P Главное, что всё остальное разложено по полочкам.

Selecter ★★★★
()
Ответ на: комментарий от ero-sennin

/me читал флейм Лисп vs Python и наткнулся на это:

> Гвидо придерживается позиции создания специального синтаксиса для закрытия таких use-case-ов, например List comprehensions, with (ну всё фанаты Руби больше не будут приставать со своим chdir-ом :-)

Позабавило :-)). Жду следующей новости про Джанго или Питон, уже готова новая партия тухлых python eggs ;).

Кстати, Есенин, а чего ты по Питону прешься, если лисп знаешь? Или ты тоже считаешь что анонимные функции нафиг не нужны в нем? :)

Cris
()
Ответ на: комментарий от svu

> Это не "скоро". Это "вчера-сегодня-завтра". Если программист хоть сколько-нибудь стоящий.

не, пока еще можно отгребать 2000$ исклюсительно на джаве (плюс типичный инструментарии типа баша-перла)

anonymous
()
Ответ на: комментарий от Cris

> Кстати, Есенин, а чего ты по Питону прешься, если лисп знаешь?

От есенина слышу, блин. Потому что для 95% задач лисповская гибкость не требуется, а Питон позволяет писать более короткий, а главное, понятный код. А вот через лисповские исходники продираться бывает охх тяжко, особенно наутро, что бы там эти лиспобыдлокодеры не говорили. :D А задачи их оставшихся 5% мне пока не доставались. Ну достанутся - с удовольствием буду писать на Лиспе, а фигли?

ero-sennin ★★
()

Насколько мне известно, Руби используется в основном для Web. Насколько он хорош для десктопных приложений?

laser_linux
()
Ответ на: комментарий от Selecter

> А в каких интерпретируемых языках поддержка unicode встроена во все составляющие языка?

Ну, например: TCL, некоторые реализации Scheme (PLT, в Chicken в виде расширения, но в R5RS вроде это не оговорено).

anonymous
()
Ответ на: комментарий от laser_linux

Ruby не плох и не хорош.

> Насколько мне известно, Руби используется в основном для Web. Насколько он хорош для десктопных приложений?

Ruby хорош там где имеется сложная система хорошо представимая в виде объектной модели. Основная сложность, конечно, в разработке модели, которую потом можно реализовать на том же C++ или Java, просто Ruby не позволит отойти от объектно-ориентированного стиля проектирования (что само по себе достоинство), и код получится более человекопонимаемый. Если десктопное приложение подразумевает сложную модель, то Ruby подойдёт. А в Web Ruby обрёл популярность из-за чрезвычайно удачной программы Ruby on Rails.

Camel ★★★★★
()
Ответ на: комментарий от laser_linux

>Насколько мне известно, Руби используется в основном для Web. Насколько он хорош для десктопных приложений?

Нормально. - Биндинги для GUI-библиотек есть - Кодить очень удобно - OOP отлично реализован - Скорость приемлима

Selecter ★★★★
()
Ответ на: комментарий от anonymous

> Сам не программист но по причине увлечени линуксом сайт почитываю. Создается впечатление, что скоро обычный программист будет знать по меньшей мере 5 языков хорошо и с дюжину поверхностно чтобы уметь интегрировать между собой разные части системы, писанные на разных языках :)

Скорее, 10 языков - и все одинаково плохо. Собственно, это уже сейчас так. Получающиеся программы работают соответственно.

"Я могу печатать на машинке со скоростью 20000 знаков в минуту! Правда, херня какая-то получается..."

anonymous
()
Ответ на: Ruby не плох и не хорош. от Camel

>Ruby не плох и не хорош.

Если сказать о скорости выполнения, то плох. Но в перевес этому - философия Руби(http://en.wikipedia.org/wiki/Ruby_language#Philosophy) >просто Ruby не позволит отойти от объектно-ориентированного стиля проектирования

Это даже плюс. Кому надо отойти - пусть использует Python, который не такой уж объектный. Объектность в Ruby отлично реализована, соблюдая принципы Smalltalk :-) Например, мне очень не хватает attr_accessor в том же php5.

Selecter ★★★★
()
Ответ на: комментарий от svu

> Это не "скоро". Это "вчера-сегодня-завтра". Если программист хоть сколько-нибудь стоящий.

Хоть сколько-нибудь стоящий программист более 3..4 языков одновременно нормально не освоит. По простой причине: нужна постоянная практика, без неё всё выветривается. Если человек заявляет, что владеет 10 языками, то можешь быть уверен: ни на одном из них он нормально писать не умеет, так что от его услуг лучше отказаться.

anonymous
()
Ответ на: комментарий от Selecter

> Например, мне очень не хватает attr_accessor в том же php5.

Смеялся. А мне не хватает в Руби нормально сделанных свойств (properties), как в Питоне, взамен этого кастыля. =)

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

instance variables - костыль? Можешь по-подробнее? А в python можно обратиться к свойству внутри класса не используя префикс self. ?

Selecter ★★★★
()
Ответ на: комментарий от Selecter

Да нет, костыль - attr_accessor. :) Я ещё понимаю, пустой геттер и пустой сеттер создают в C++, там без этого, действительно, трудно, но в динамическом языке типа Руби это выглядит довольно глупо.

ero-sennin ★★
()
Ответ на: комментарий от anonymous

>Создается впечатление, что скоро обычный программист будет знать по меньшей мере 5 языков хорошо

Не скоро, а уже

Noord
()
Ответ на: комментарий от Selecter

Руби не подходит для десктопа. Слишком молод еще. Чтобы рубироиды не скандировали, Питон все-таки стандарт по дефолту. Большинство либ имеют привязку к змею. А с появлением FFI (ctypes) он теперь самое оно для десктопной кроссплатформенной интеграции. Рубистам еще пилить и пилить гири ;)

Linfan ★★★★★
()
Ответ на: комментарий от Linfan

> Руби не подходит для десктопа. Слишком молод еще. Чтобы рубироиды не скандировали, Питон все-таки стандарт по дефолту. Большинство либ имеют привязку к змею. А с появлением FFI (ctypes) он теперь самое оно для десктопной кроссплатформенной интеграции. Рубистам еще пилить и пилить гири ;)

Что-нибудь поконкретнее есть? Большинство либ под Питон написаны очень коряво. Так, что потом приходится вокруг них писать свою объектную обертку, что бы ими можно было пользоваться. Проблема, отчасти, в жутко неудобном внутреннем питоновском API, которое, как и сам питон очень непоследовательно и нелогично.

anonymous
()
Ответ на: комментарий от ero-sennin

>> Например, мне очень не хватает attr_accessor в том же php5.

> Смеялся. А мне не хватает в Руби нормально сделанных свойств (properties), как в Питоне, взамен этого кастыля. =)

А вот это не оно разве: http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html Смотреть "Objects and Attributes".

anonymous
()
Ответ на: комментарий от anonymous

Вдумайтесь в словосочетание Foreign Function Interface. 
Если вам это незнакомо (судя по-всему) то привожу пример:

from ctypes import *
 
 libc=cdll("libc.so")
 libc.printf("Hello, %S", u"World!")

Это весь код "обертки" для функции printf из libc.so. 
Ровно также можно вызвать любую С-шную функцию из любой либы. 
Без написания нативного кода ВООБЩЕ. Количество платформ,
на которых ctypes работает - просто виловое: от Alpha до мобильников.
Как вы уже догадались - интеграция с десктопными приложениями
благодаря такой фичи - просто "на ура". И вам не нужно враппить
весь АПИ - только те функции, которые вам нужны.

Аналог в жабке: http://jniwrapper.com

Linfan ★★★★★
()
Ответ на: комментарий от anonymous

10 - да, перебор. Но пяток поддерживать в форме - вполне реально ИМХО.

svu ★★★★★
()
Ответ на: комментарий от anonymous

Есть люди, которые нормально разговаривают на 3-4 иностранных языках (для выпускников профильных вузов 3 языка - это норма). Почему же тогда нельзя хорошо знать одновременно 3 языка программирования?
Я хоть и никакой программист, но как-то постоянно приходится вертеться между С-Tcl-R и я бы не сказал, что все их я знаю одинаково плохо ;)

geekkoo
()

Файл сверстан в две колонки исключительно для удобства онлайнового просмотра ;) Иных причин я просто не могу придумать.

geekkoo
()
Ответ на: комментарий от Linfan

printf - не показатель. Все просто здорово, пока не нужно возвращать значения в вызывающий язык. А вот тогда и начинается самое интересное...

geekkoo
()

>А в каких интерпретируемых языках поддержка unicode встроена во все составляющие языка?

>php только в 6 версии это реализует

Как хорошо что есть ветка PHP 4 которая отлично работает. TCL уже перевели на юникод. До сих пор глюки с русскими буквами.

anonymous
()
Ответ на: комментарий от anonymous

>>TCL уже перевели на юникод. До сих пор глюки с русскими буквами.

4.2

geekkoo
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.