вівторок, 10 липня 2007 р.

Магія % Ruby

Відпочиваю...
От за що люблю Ruby так це за його дивовижний синтаксис О_о.
Ще зі школи пам'ятаю завдання з Pascal: написати програму яка б виводила табличку множення від 2 до 9. Випадково, бавлячись з блоками в irb, написав однорядковий аналог.

9.downto(1) {|i| puts; (1).upto(i*9) { |j| ( j.divmod(i)[1] == 0 ) ? ( print "%3d"%j ) : ( nil ) } }

Не читабельно, зате круто B)

неділю, 8 липня 2007 р.

Гуйня: Постановка задачі.

Накопилось декілька цікавих ідей щодо написання невеликих програмок(про них пізніше) з графічним інтерфейсом, які б без особливих викрутасів однакого працювали б як у Windows так і у Linux.
Для початку необхідно вибрати графічний тулкіт.
Кандидати:
Основні вимоги до них ставляться наступні:
  • кросплатформність + інтеграція з хостовою платформою;
  • простота використання і програмування;
  • достатня реалізації і відсутніть багів;
У настпуних записках мною буде проведений їх короткий огляд... і декілька слів про самі програмки.

Ruby! Ruby! Ruby...

Ruby, Ruby, Ruby, Ruby
Ahaa-ahaa-ahaa

© Kaiser Chiefs - Ruby

Чи більше часу маєш справи з тою чи іншою справою, тим більше розумієшся в ній, пізнаєш її тонкі моменти і недоліки. Це закономірно.
Цей запис присв'ячений тим недолікам, які особисто дратують мене у Ruby.
Почнемо.
  1. gem. Після команди $ gem install bla-bla-bla мій старенький пеньок (Pentium III 733, RAM 128 Mb) впадає в глибоку дипресію з подальшим самогубством :). Невже не можна було зробити щось подібне до deb? Нафіга ці трудноші...
  2. unicode. Це не недолік, це взагалі повна його відсутність. Існують вирішення . Але хочеться щоб робота з юнікодом була "з коробки", все ж таки Ruby інтерпритована мова і доставляти лишні костилі це не панацея.
  3. threads. Про потоки багато не скажу тому що працював з ними досить мало. Але і того вистачило, щоб зрозуміти, що в Ruby вони реалізовані якось НЕ_ТАК_ЯК_ТРЕБА.
  4. python. Так як я перейшов на Ruby з Python, можу зробити декілька порівнять рівня "дитячого садка". Ці дві мови практично одного рівня призначення. Перейшов саме через синтаксис, в Ruby він просто прекрасний. Табулятори Пайтона викликали багато незручностей з переносом коду з однієї частини скрипта в іншу. Тай ООП в Рубі на висоті (все - об'єкт). Швидкодія Рубі змушує бажати кращого. Маю надію у версії 2.0 це виправлять.
  5. RoR. Насамперед RoR != Ruby. Таке враження, що Ruby існує тільки завдяки RoR. Насправді все у точності до навпаки, RoR повинен завдячувати своїй простоті гнучкому синтаксису Ruby.
P.S. крім того багато матюків викликає робота з сторонніми бібліотеками. Часом це перетворюєтьтся в жах, і з'являються думки перейти назад/вперед на Python, як більш стабільнішу мову.