LINUX.ORG.RU

идея полностью глупа?


0

0

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

Поэтому я изучил си (на уровне новичка, аля «написал свой linked_list»). В общем для того, чтобы расширять руби. А точнее говоря писать на си совсем уж узкие места.

Написал свой первый ruby-c 'hello-world' и вдруг подумал о переменных. Я практически уверен, что любой начавший изучать си ради руби приходил к таким же мыслям.

Почему бы не написать свой простой враппер для переменных? (класс String тащит за собой тонну методов, которые далеко не всегда нужны, с Fixnum примерно таже история)

Что-то вроде этого: int1 = EasyData.new(int,100) int2 = int1.get() int1.destroy()

в си:

int* int_allocate(int* ptr, int* value) {ptr = malloc(sizeof(int)); *ptr = &value; return ptr;}

*int int_destroy

*int int_get

Это хоть как-то может ускорить работу?



Последнее исправление: ciss (всего исправлений: 1)

ИМХО, эта идея полетает немного и потом улетучится :З

Во-первых текущий «официальный» Ruby написан на Си и написан в определённом стиле - автор явно знал что делал. Посмотрите в исходники: как там на практически чистом Си создаются абстракции ФВП, объектов и методов - именно для этого всё затевалось, а не чтобы прийти потом и и сказать - «а давайте сюда такой костыль замонстрячим».

Впрочем, второе - возможно вам будет интересно FFI для Ruby - возможность писать узкие места на Си и вызывать этот код из руби.

Ну и в-третьих:

скорость этого языка во многих местах оставляет желать лучшего.

Как и для всякого подобного языка эта проблема решается бустрапом (компилятор Ruby на Ruby). Например PyPy для Python, для Ruby тоже есть проекты своих VM:

Учебный материал: Writing a compiler in Ruby, bottom up. И код.

Ссылку на более серьёзный проект я к сожалению потерял. Но вреде тоже на гитхабе было.

Так что удачи с руби :)

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

спасибо вам большое за хороший ответ =)

Этот костыль я не собирался распростронять, скорее для каких-то своих нужд :)

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