Найти - Пользователи
Полная версия: Python vs Ruby
Начало » Флейм » Python vs Ruby
1 2
JoJo
Возможно кому-то из местных будет интересна следующая тема http://versusit.ru/viewtopic.php?pid=67325

Не скажу, что Python знаю хорошо, но после прочтения учебника по Ruby показалось, что он (Ruby) имеет более объектно-ориентированную структуру.

Смущает правда малое количество имеющихся библиотек для Ruby. Python в этом плане это реально корпоративный уровень, в то время как Ruby – нишевый.
o7412369815963
JoJo
Не скажу, что Python знаю хорошо, но после прочтения учебника по Ruby показалось, что он (Ruby) имеет более объектно-ориентированную структуру.
можно пример? зачем более?
JoJo
o7412369815963
можно пример? зачем более?
Пока адекватный пример привести не могу, но вот к примеру, как будет выглядеть аналогичная функция на питоне?

while line = gets
puts line.downcase
end
o7412369815963
примерно так:
while True:
line = raw_input()
if line: print line.lower()
else: break
ZAN
Скорее
while True:
line = raw_input()
print( line.lower() )
Т.к. рубиевский цикл завершается только по ctrl-C
o7412369815963
ZAN
Скорее
while True:
line = raw_input()
print( line.lower() )
Т.к. рубиевский цикл завершается только по ctrl-C
а я подумал, что в “while line = gets” идет проверка… значит тут смысл - написать в одну строку.

вообщем оба вопроса не раскрыты:
>(Ruby) имеет более объектно-ориентированную структуру.
1) чем он более объектно-ориентирован?
2) что оно дает (более объектно-ориентированность)?
regall
Ну блин, тогда уж:
>>> while True:
... print(raw_input().lower())
;)
ZAN
while line = gets - это присвоение. Проверка в руби, как и в питоне - на “==” (выполнил в irb :) ).
В питоне такая неочевидная (line = gets в роли оператора сравнения) конструкция запрещена синтаксически, чтобы исключить _случайное_ использование присвоения вместо сравнения.
Сразу вспомнилась цитата из книги “Как не надо программировать на С++”:
if(amout = 0) присваивает amount значение 0, а затем проверяет истинность результата (то есть отлично ли переменная от нуля). Но переменная равна нулю, поэтому выполняется секция else
Правильна команда выглядит так: if(amount == 0)
Дело было в то время, когда я преподавал программирование. Как-то через два месяца после окончания курсов я встретил одного из своих учеников. И он сказал мне:
- Знаешь, Стив, на курсах мне казалось, что ты перегибаешь палку, постоянно объясняя различия между = и ==. Но вчера я написал свою первую настоящую программу… и знаешь, какую ошибку я сделал?
regall
JoJo
имеет более объектно-ориентированную структуру.
А какой, стесняюсь спросить, критерий и шкала оценки “объектно-ориентированности структуры”?
Ну и, собственно, что вы подразумеваете под этим, а то у нас тут, походу, общее недопонимание.
o7412369815963
прочитал страницу по ссылке из первого поста, сделал вывод:
- руби “менее ОО”, например модули не являются объектами
- ситуация с .call и “()”
- не все можно подменить (тот же .call), есть всякие ограничения
и ещё, мне с паскаля не нравиться “end”, си-скобки лучше “ { }”
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB