<< В начало

irb для php?

PHP, Программирование

06.04.2007 1 год, 9 месяцев назад

=)))

http://www.phpsh.org/

Всё чаще опять за ruby сижу, причём сам язык нравится больше, чем rails.



11 комментариев»

ezdakimak 07.04.2007 00:47:10 1 год, 9 месяцев назад

А меня пугает эта “объектность”. Потом сидишь и путаешься, что использовать. Как в яваскрипте array.length, array.replace, но parseInt(string) и т.д. Вообще возможность писать приложения не только для веб сильно подкупает. Так что вот думаю с какого бока к питону подступиться. Надо найти какие-то мануалы, на русском желательно, что бы детали были разобраны, а не только синопсис. Ну и может сравнение ПХПвсПитон.

 
babarama 07.04.2007 13:16:11 1 год, 9 месяцев назад

ООО! Я тут как раз их оба пробую=)

У питона тоже всё хорошо, его и в Яндексе и в Гугле любят,
но мне как то ближе Руби - там на самом деле очень всё красиво.

Правда его синтаксис ругают Перлоподобным, но мне так не кажется.
Вот посмотри - помнишь в ru_php недавно задачка проходила от
некоего чувачка, который хотел получить ассоциативный массив из текста с разделителями - в виде ****** и \n

Вот как могло бы выглядеть решение на Руби, ну это примерно, там ещё первый пустой \n в получаемом массиве убрать, но
это уже дело 10-е

array = Hash[ *str.gsub("*","").gsub(/\n+/,"\n").split("\n") ];
где str = это строка с текстом этим.
Всё очень последовательно делается. И это ещё сложная конструкция, остальное гораздо проще и понятнее.

Hash = это из простого массива делает хеш, то есть ассоциативный массив. * - любые аргументы.

Знаки ! и ? у методов выглядят очень по человечески=)
А блоки, а итераторы! Циклы - это просто прошлый век - просто объекту говоришь - вроде obj.each итд.
Свобода переопределения всего, но конечно, влияет по тестам на скорость - питон быстрее перла,
а перл быстрее руби.

Попробуй - посмотри вот эту всего одну страничку - достаточно одной стр. http://ru.wikibooks.org/wiki/Ruby

А питон очень тоже хороший, только я в него не влюбился. И такие языки они оба - и многопоточность на раз плюнуть,
и веб сервер написать и даже если припрёт - win приложение=) Что угодно. Но переходить стоит - это однозначно.

Я вот подумал написать фреймворк простенький на Руби, без ОРМ, просто чтобы язык подточить, а не чтобы раилс переплюнуть. ЧПУ знаешь как выглядит?
url = Hash[ *params['path']] - сразу ассоциативный массив из /var1/value1/var2/value2/

И масштабируемость у обоих итп. Вот только огорчает, что как модуль к апачу оно совсем плох, хуже чем mod_python.
Но апач там и не нужен - есть mongrel - сам на руби. Просто меня там озадачивает, что для shared hosting - это неприятно.
Ну так и пофигу на shared hosting, кому он нужен.

А так - у себя - по mongrelу на проект, а спереди nginx или mod_proxy apache. Но это если 1-2-3-4-5 проекта на сервер
(в идеале 1, чтобы фигнёй не заниматься), а то память бо-бо будет=(

p.s. Я тут как раз пить бросил - время освободилось=)

 
 
ezdakimak 07.04.2007 14:05:45 1 год, 9 месяцев назад

array = Hash[ *str.gsub("*","").gsub(/\n+/,"\n").split("\n") ];
Вот это меня и пугает. Если язык позволяет такие конструкции, значит будут те, кто этим будет пользоваться. Поэтому и похож, говорят, на перл, что написать напишешь, а потом хрен разберешь. Я вставляю одно в другое в крайних случаях, когда знаю, что функция, например, вернет массив, но пустой в случае ошибки, а не false, что бы быть уверенным, что всё работает, иначе только на новых строках. Как пониманию, это главный плюс, который мне напрочь не нужен.

Свобода переопределения всего
Вот смотри, когда ты что-то переопределил (то есть поменял дефолтовое значение), тот, кто будет читать твой код, должен хорошо понимать последствия всех этих переопределений, что опять накладывается дополнительными умозатратами на понимание чужого кода, ибо нельзя быть уверенным, что всё работает так, как ты сам учил.

И ещё один плюс, как ты сказал, это скорость работы. Конечно, в наше время железо мощнее, но и технологии сложнее.

 
ezdakimak 07.04.2007 14:07:39 1 год, 9 месяцев назад

Угу. Видел. Мне одного перечисления мало. Нужно что-то более глубокое буквально по функционалу: в ПХП так, аналогично в Питоне запись будет выглядеть так. Так чуть проще разобраться, когда подобное смотришь. Но по мануалам само собой пройдусь.

 
babarama 07.04.2007 14:53:08 1 год, 9 месяцев назад

Я как раз привёл пример этот, что как раз он читается очень хорошо. Всё по порядку. Можно и построчно разбить, но смысл? Интерпретатор очень хорошо ругнётся.

А такое - неужели не нравится?

myhash.has_key?(1) - поиск по ключу

про переопределение - myobj.methods.grep(/\?$/).sort - вывести все методы с вопросом (это в Вики описано), да ещё и отсортировать. Получил все public методы - вот тебе и понимание всего.
Грамотный нейминг и всё ок. Я просто думаю, что это очень человеческий язык. А практика на нём даст возможность и читать и писать такой код с лёгкостью. Вот читаю исходники рельсов - вполне очевидно всё, ну или почти всё.

Но будет интересно, если ты займёшься плотнее python=) Django у них - те же рельсы.
Где-то ещё попадались недостатки python… Но я пока в нём не силён, нет прухи, кайфа…
Как раз будет, что пообсуждать.

http://www.ragbag.ru/2006/11/29/python_warts/

Что я ещё повесил на таг python, может пригодится
http://ru.wikipedia.org/wiki/Python
http://ru.diveintopython.org/toc.html
http://www.fortunecity.com/skyscraper/motorola/668/rus/python/review/review.html

 
ezdakimak 07.04.2007 15:02:29 1 год, 9 месяцев назад

Можно и построчно разбить, но смысл?
Обычно разнесение сопровождается переменной(-ыми) с говорящим именем определяющим результат операции. В данном случае поможет только хороший комментарий. Ты их пишешь? :-/

А такое - неужели не нравится?
myhash.has_key?(1) - поиск по ключу

Чем хуже? Тоже синтаксис говорящий, а последний даже короче ;) array_key_exists(1,$myhash) или ещё короче
isset($myhash[1])

За ссылки спасибо.

 
babarama 07.04.2007 15:52:09 1 год, 9 месяцев назад

Комменты пишу, только не хочу в каждой строчке этого делать=)

если интересно накидаю маленьких блоков
php даже рассматривать не хочется

# как раз фичи языка - итератор и блок
# пройтись по каждому второму элементу
[1..100].step(2) {|x| puts x}

сейчас ещё с питоном кину… там суммирование чётных от 0 до 100 по разному

 
babarama 07.04.2007 18:13:21 1 год, 9 месяцев назад

Сумма чётных до 100
В Питоне
sum(i for i in xrange(1, 100) if i % 2 == 0)

В Руби
Можно так, можно ещё с inject

sum=0
(1..100).each{ |i| sum+=i if (i%2).zero? }
puts sum

Или как совсем уж в php
sum=0;
(1..100).each do |i|
if (i%2==0)
sum+=i
end
end
puts sum

можно определить метод sum_odd для
системного класса Range

class Range # Системный класс
def sum
self.inject { |sum, term| sum + term }
end

# sum of array elements less than +limit+
def sum_odd()
self.inject(0) { |sum, i| (sum + (i%2.zero? ? i : 0)) }
end

end

Как-то так, видимо хотя в Питоне тоже красиво, сяду ка я попитоню немного, чтобы быть в теме, может понравится…

 
ezdakimak 07.04.2007 18:18:15 1 год, 9 месяцев назад

:)
У тебя получилось его в браузере запустить? У меня почему-то ошибку 404 выдает, хотя файл на сервере лежит. Файл пустой (абсолютно). Какой там минимум, что бы можно было запустить и посмотреть?

 
babarama 08.04.2007 03:17:55 1 год, 9 месяцев назад

локально запускаю, - просто поставил как Ruby для Windows, так и Python есть для Windows с официальных сайтов. Но походу Питон меня очень заинтересовал, сегодня Django смотрю - вообще супер, ещё очевиднее, чем Раилс. И для КПК питон есть, и на сервере как модуль быстрее, чем php будет работать, а уж чем Руби и подавно - скоро поставлю обязательно. В общем вроде Питон может даже очень рулит… Завтра ещё буду целый день колупать.

 


куку (введите антиспам код) сменить