4. В целом же, питон и Ruby очень похожи, но например фраза на питоне типа:
for r in contactRecords: print "t".join(r)
в Ruby выглядит отвратительно:
contactRecords.each {|r| print r.join("t"), "n" }
5.Сравните чтение записей из файла:
Python:
for line in fileinput.input():
___record = [field.replace('"', '') for field in line.split("t")]
___records.append(record)
Ruby:
while gets
record = $_.split('t').collect! {|field| field.gsub('"', '') }
records << record
end
Вывод - языки похожи, да только в руби синтаксис противный...
> Когда я последний раз смотрел на питон, там такого тоже не было.
...вероятно, это было очень давно
В современном питоне есть "строчки" (экземпляры класса str, хотя чаще их пишут просто как "something") и "юникодные строчки" (экземпляры класса unicode, константы могут создаваться как u"smth") и поддерживаемые объектами этих классов различные преобразования "друг в друга" (.encode/.decode) при помощи внешних кодеков (из модуля encodings). Для вывода в "байт-ориентированные" среды (н-р, в файл) "юникодные" строки могут на лету преобразовываться в "обычные", используя "кодировку по умолчанию" (sys.getdefaultencoding() / sys.setappdefaultencoding())
[#]
Ответ на:
Re:
от anonymous 30.12.2004 22:54:58
Re:
Не, ну, предложили идиотскую пузомерку, какова задача, таково и решение, не так-ли? :-).
Впрочем, Твистедовский веб-сервис имеет вполне реальное применение. Например, когда надо _быстро_ клепать http-based _приложения_ , не имеющие отношения к собственно "www". Например, сервера для каких-нибудь j2me-шных приблуд с весьма приличными характеристиками для тамошних специфичных условий существования: как правило, HTTP-1.0, во всяком случае мне не удалось добиться от местных мобильных операторов настройки гейтов соответствующим образом, хотя, говорят, это возможно; короткие запросы-ответы, причем, от одного отдельно взятого индивида не чаще чем раз в две-три секунды, да и то, при хорошей погоде; но зато сравнительно большое количество индивидов итп. Аналогичный сервер, скажем, на яве, создает бОльшую загрузку на машинку, по крайней мере, без приличного тюнинга JVM (пробовалось на 1.4).
Но это все, в общем, лирика и "прелести нашего болота".
Ну, как... "Многотредовые-то" они оба "многотредовые", но только в среднем, "если не заморачиваться", то сервер на яве получается заметно более "многотредовым". Отсюда, собственно, и более высокая нагрузка... Конечно, ничего, кроме лени, не мешает и на яве соответствующий фрэймворк написать, но это ж время, опять-таки деньги, отданные на девелопмент, а не пропитые самостоятельно итп...
Плюс, у твистеда готовые реакторы есть, скажем, под kqueue... "Вот тебе и еще одно преимущество, слоненок..."
короче twisted это такая фигня о которой надо знать что она
существует, и в общих чертах -- для чего ее следует применять,
но пока нет конкретного приложения глубже разбираться не имеет
смысла. примерно то же можно сказать о zope.
anonymous
()
[#]
Ответ на:
Re:
от anonymous 31.12.2004 10:23:23
Re:
может в целях пропаганды стоит форкнуть русскую версию zope под нормальным названием?
1. Это старые данные по v1.6. Ruby 1.8 существенно ускорился.
Мы делали миграцию с Python на Ruby навороченного парсера логов: отношение скорости Python/Ruby1.6 ~ 0.8; Python/Ruby1.8 ~ 1.2 .
2. Возможно, если можно судить по набору в 25 тестов, из которых для языка нет 10, а 3 не смогли быть исполнены. Я бы не стал делать в таких условиях выводы.
4. В Ruby можно и так написать:
for r in contactRecords do puts r.join("\t") end
И вообще, несмотря на строгость парадигмы, синтаксис Ruby очень гибок:
Хочешь - пишешь как на Perl или Python, хочешь - пишешь как на CLU или еще как.
5. То же, но немного веселее (хотя я и не понял смысла кода!):
> Вывод - языки похожи, да только в руби синтаксис противный...
Вопрос пристрастий, но Python жестко ограничивает стиль, а Ruby нет. Кроме того могу привести обратные примеры, когда через код Python без пива "не продраться".
И, наконец, у Ruby "есть вкусностей", которых нет у других скриптовых языков.
В конце концов, Вам выбирать на чем работать, и никто Вас заставить не сможет, если сами не захотите.
В Twisted'е ничего не мешает, если надо, сделать deferToThread (в thread pool), и, натурально, twisted.enterprise.adbapi этим активно пользуется, но, в общем случае, никто не принуждает, более того, весь фрэймворк построен с убеждением, что event-driven программирование можно делать без особого напряжения и в "малопоточной" модели.
> > Конечно, ничего, кроме лени, не мешает и на яве соответствующий фрэймворк написать
> смею предположить что можно найти и готовый
Вероятно. Более того, вероятно, стоит глядеть на обвязки NIO, почти все необходимое там есть... Но, в общем, лень :-)