LINUX.ORG.RU

Ruby прекрасен

 , , ,


1

6

Раньше на скриптоте вообще не писал (питон всегда отпугивал своим видом, а эру расцвета перла я пропустил), а тут попалась книжка по руби и я прям влюбился. Ну это ж чудо, а не язык. Он точно не умрет в близком будущем (с загибанием рельсов), имеет смысл его не спеша постигать?

★★★
Ответ на: комментарий от erzent

в большинстве контор изначально сисадмин выбирает язык

Лол, что? Сисадмин это человек, которые настраивает наименее проблемное окружение, но ничего не решает.

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

Так называемый манки патчинг в руби это норма.

И это большой минус ruby. Может это и имхо, но с ruby очень сложно поддерживать долгое приложение.

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

а кто решает, секретарь? в большинстве контор подходят к сисадмину и говорят, найти где сделать сайт, или кто сделает, сказать цену и оборудование.

erzent ☆☆
()
Ответ на: комментарий от holuiitipun

И это большой минус ruby. Может это и имхо, но с ruby очень сложно поддерживать долгое приложение.

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

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

Простой в том смысле, что неофиты легко найдут тонну полезной информации и сотни книг по PHP для новичков. В то время как по Ruby/Python книг не так уж и много, и все они рассчитаны не на новичков.

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

Ruby/Python

Не путай. С пистоном быдлу разобраться проще, и пиара (в том числе и беллетристики) по нему предостаточно. Он менее распространен, в сравнении с похапе по 2-м причинам: кривой дизайн, и очень ограниченные выразительные возможности. То есть, несмотря на свою доступность, он тупо сливает похапэ по всем критериям. С руби ситуация принципиально другая. Чтобы писать на руби, надо быть программистом, поэтому, да, с этим проблемы, как и со всеми более или менее маргинальными языками — маленькое комьюнити, мало литературы и тд. Если бы не рельсы, руби вообще отсутствовал бы в энтерпрайзе, то что он все еще на плаву — это счастливая случайность.

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

Он менее распространен, в сравнении с похапе

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

С руби ситуация принципиально другая. Чтобы писать на руби, надо быть программистом

охлол. Наверное от этого вся хипстота, которая не отличает списка от вектора бросилась на руби.

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

Ленивость или энергичность - это такое же свойство языка, как статическая или динамическая типизация. Оно в языке или так, или сяк - чего тут сетовать?

ООП в общелиспе - на высшем уровне. В общелиспе вообще почти всё на высшем уровне, настоящий инженерный язык, на котором много коммерчески успешного кода написали.

У Io наверняка даже коммьюнити нет, и за спиной ни одной коммерческой конторы.

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

Software Engineer далеко не в каждой конторе есть.

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

На жабе и плюсах, внезапно, еще больше

Ну это да, но до AI Winter на лиспе в его почти сегодняшнем виде дофига всего понаписали, от CAD'ов до осей и систем мягкого реального времени. Это тест на зрелость, доказывающий, что язык уже не исследовательская игрушка, и на нём можно писать.

Почему всё это сейчас пишут на других языках - другой вопрос.

mv ★★★★★
()
Ответ на: Избежать от Camel

Почему игрушечный?

потому что такое ощущение вызывает. Библиотеки сырые, в т.ч. базовые, синтаксис избыточный. Нужные батарейки отсутствуют, ненужные - присутствуют.

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

А, хороший сисадмин переделает сайт после макаки да? php макака с 2 годами опыта работы написала шлак, а сисадмин его переделывай потом, так?

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

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

erzent ☆☆
()
Ответ на: комментарий от pylin

> from . import module_A

Вот не надо этих извратов с относительным путем импорта

а что — не нравится, когда можно переименовать модуль (полезно при рефакторинге) и при этом *ни_чегошечки* не менять внутри кода субмодулей? :-)

но это фигня.. (не так уж и важно).

вопрос-то был не в этом.. :)

а в том — как на Ruby сделать from . import module_B и при этом НЕ сделать from . import module_A?

то есть — код который хочет обращаться к коду модуля «B» — не должен иметь в своём пространстве доступа к коду модуля «A» (ради своей же безопасности, чтобы случайно оттуда ни чего не вызвать!!)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 2)

Он точно не умрет в близком будущем (с загибанием рельсов),

с учетом того, что рельсы - это 90% приложений руби...

Раньше на скриптоте вообще не писал

Ну это ж чудо, а не язык

попробуй, все же, разные варианты сперва

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

«итерирование» вместо цикла иногда ест память и ЦП как не в себя (когда «итерирование» по orm по обратным связям и т.п.)

боюсь, что это проблема orm или твоих кривых рук

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

Ну может быть.
Я сделал как легче было - по массиву циклом.

Shadow ★★★★★
()
Ответ на: комментарий от ovk48
def Integer.all
  Enumerator.new do |yielder, n: 0|
    loop { yielder.yield(n += 1) }
  end.lazy
end

def palindrome?(n)
  n = n.to_s
  n == n.reverse
end

p Integer
  .all
  .select { |i| (i % 3).zero? }
  .select { |i| palindrome?(i) }
  .first(10)

пфффф...

$ perl -lE'for(;;){last if $c==10;say,++$c if ++$_%3==0 && $_==reverse$_}'

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

(ради своей же безопасности, чтобы случайно оттуда ни чего не вызвать!!)

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

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

Этим примером ты показал какой же ты дурак) В первом случае ленивые вычисления, а в твоем примере просто цикл прерывается.

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

Тебе выше подсказали, почему ты твой пример неадекватен. Но он вдвойне неадекватен, потому что в оригинале ООП, а у тебя банальное говно.

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

Кроме рельс есть ещё Cheff и Puppet:) А в целом, да, Ruby прекрасен, но что-бы написать на нём что-то большее чем hello world нужно быть программистом. В этом плане он похож на Perl, но с нормальным синтаксисом:) Надеюсь, Ruby и далее будет здравствовать.

lucentcode ★★★★★
()
Последнее исправление: lucentcode (всего исправлений: 1)
Ответ на: комментарий от erzent

А как ты отделяешь сайты на рельсах от сайтов на php? Вот у меня есть каноничный пример супер быстрого рельсы твиттера до переписывания на jvm. В другом углу ринга facebook, в котором php до сих пор собирает страницы.

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

дреды из базовой поставки и почти всё остальное из небазовой. отсутствует искаропки уникод, зато присутствует linda. Марсианская логика :)

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

В первом случае ленивые вычисления, а в твоем примере просто цикл прерывается.

шо то эскобар, шо это.

Этим примером ты показал какой же ты дурак)

дурак дурака видит сдалека :)

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

Как правило, от сисадмина никак не зависит выбор технологий, на базе которых разрабатывается сайт. Это прерогатива исключительно разработчиков. А выбирают разрабов заказчики, которые как правило хотят что-бы сайт был похож на сайт их конкурентов, или друзей и партнёров. В результате вероятность того, что сайт будет создан на основе решения на базе PHP - почти 100%-я:)

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

примерно ясно! спасиб

внутри модуля «D» написать:

module D
  extend self
  import 'a.rb'
  import 'c.rb'

..это сработает норм? (ни чего страшного что мы два раза делаем импорт 'a.rb' ? в «B» и в «D»)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от anonymous

ООП не банально, стильно, молодёжно?

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

В таком случае, странности с областью видимости при подключении модулей в питоне это костыль а не фича.

разумеется это не костыль а фича :)

это же один из столпов Пайтона — всё должно быть явным.

(было бы не явным , если бы мы импортировали бы что-то одно , а автоматом получить и импорт другого)

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

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

erzent ☆☆
()
Ответ на: комментарий от TDrive

получится 2 модуля A, один D::A и второй D::B::A

Чо, и память они тоже 2 раза жрать будут? //видимо да, раз там евальчик в класс. Короче это никуда не годится

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)
Ответ на: комментарий от erzent

В твоих мокрых мечтах, клоун. Покинь тред.

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

Серверную часть переписали же вроде, которая отвечает за скорость выполнения запросов к API. А те же рецепты до сих пор пишут на ruby, поэтому сисадмины могут Erlang не знать, а основы синтаксиса ruby знать обязаны.

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

Я, вообще-то не рубист, но почему там должно быть 2 отжора памяти? По аналогии с JS


http1=require("http")
http2=require("http")

console.log(http1===http2)

//>>>> true
Думаю, в руби то же самое, они же не идиоты:)

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

extend self

вот это, как раз, по-идее, должно отжирать, это же миксин, похоже, по-сути.

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

Там получится 2 модуля A, один D::A и второй D::B::A

а да.. точно eval же..

но я понял — это что сильно упрощённый пример. в реальном случае можно было бы сделать (используя eval) манагер_импорта_модуля: который учитывал бы рекурсивный импорт и safethreading и не подгружал бы модули по два раза.

но всё же интересно узнать как подгружать модли *стандартными* срадетсвами так, чтобы это было как можно более явно (может быть не настолько явно как в python.. но хотя бы чуть-чуть чтобы напоминало бы :))..

..не думаю же что каждый ruby-программист разрабатывает свой собтвенный велосипед^WМанагерИмпорта :-)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 4)
Ответ на: комментарий от Bad_ptr

Чо, и память они тоже 2 раза жрать будут? //видимо да, раз там евальчик в класс. Короче это никуда не годится

В питоне он будет один? И вообще как я уже сказал это не руби вей.

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

С require проблем нету, им в руби нужен питоновский импорт.

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

В питоне он будет один?

в python — есть некоторый массив, в котором в конечном итоге оказываются ссылки на модули

его даже поглядеть можно:

sys.import['название.модуля']

то есть если модуль уже тут — то второй раз он не загрузится.

И вообще как я уже сказал это не руби вей.

всё правильно говришь! это не ruby-way .. но всё же — наверняка в ruby можно сделать импорт более явным? или нет?

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.