![]() |
|
![]() ![]() ![]() |
|
Rubynovich |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 7.6.2006 Репутация: 3 Всего: 3 |
Без раздумий предпочту O(N**2) в одну строчку. Раньше, для меня это было кощунством, но теперь стал понимать, что все равно 100 раз переделывать. Проще будет переписать одну строчку, чем двадцать. Оптимизировать можно после сдачи проекта и за отдельную плату. =) Это сообщение отредактировал(а) Rubynovich - 8.6.2006, 18:25 |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
||||
|
||||
Амортизатор2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 6.2.2006 Репутация: нет Всего: 2 |
лямду собираются убирать? кому оно мешало? еще один шаг в сторону от лиспа...
|
|||
|
||||
cherep |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 11.1.2006 Где: Москва Репутация: нет Всего: 4 |
Лямду не уберут! На гугловской презентации Python3000 Гвидо дал однозначно понять, что он оставит лямбду!
Теперь немного по теме сабжа. Я знакомился с языками по пути Pascal - C - Java - PHP - Perl - Python - Ruby - ... Вероятно, очевидно, что мой выбор - Python. Перл был очень гибкий, но при этом довольно "страшненький". После Java'ы в Perl'е не хватало нормального человеческого ООП. Работа с хэшами и массивами была отнюдь не так очевидна как в питоне. Вобщем попав на Python, выучил его на одном дыхании. В нем было все что нужно и главное все было понятно! Поизучав Руби, не нашел чего-то такого, той изюминки, способной пересадить на него. В питоне же таких изюминок целых несколько. 1) Его синтаксис, делающий его пожалуй самым читабельным языком 2) Очень четкие принципы, заложенные в язык (Zen of Python), и одновременно являющиеся рекомендациями к тому, как писать программы. Надо сказать, очень правильные рекомендации. Еще очень отрадно, что создатель языка (Гвидо ван Россум) принимает самое активное участие в развитии языка, более того, его слово является решающим, правда, не знаю про Matz'а. Конечно есть такое чувство, что Ruby в каком-то роде более целостный чем Python. Например в Python'е различие классов и типов (последние нельзя менять), немногострочная лямбда. Однако все это мелочи, ибо первое - практически никак не сказывается на практике, а второе не нужно ввиду вышеупомянутой идеологии языка. self - это вовсе не проблема, это лишь отражение того, что explicit is better than implicit. Кстати, в пайтоне возможно множественное наследование, чего в руби нет. В руби понравились блоки. Жаль только что методу можно передавать только 1 блок. Ведь в smalltalk'е можно было сколько угодно ![]() ![]() Решающими фактороми были, впрочем, распространенность языка и библиотек и более развитая инфраструктура. А вообще выбор языка - это дело совершенно личное. Если ваш язык вас устраивает, и вы на нем продуктивны - я только рад за вас. Думаю, перловщики с удовольствием перейдут на Ruby. Много языков - это не плохо. Ибо из конкуренции появляется качество ![]() |
|||
|
||||
Амортизатор2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 6.2.2006 Репутация: нет Всего: 2 |
Не скажи. В Smalltalke квалификатор private для методов чисто фиктивный, т е он не запрещает вызов private-метода. По крайней мере так было в VA лет 6 назад, когда я его смотрел. Также отсутствует квалификатор protected, это вообще ужас - на каждом шагу нужно делать закрытые от прямого вызова методы, которые будут наследоваться. Все это говорит о том, что в Smalltalk нарушена инкапсуляция - один из 3 основных критериев ООП. Это сообщение отредактировал(а) Амортизатор2 - 7.3.2007, 21:03 |
|||
|
||||
FunnyFalcon |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 27.3.2006 Репутация: 3 Всего: 7 |
Хммм.... Вопрос ведь не в языке - в любом языке можно извратиться и вызвать защищенный метод, хотя бы исправив *.h :-) А данные принципы (инкапсуляция, полиморфизм, наследование) были сформулированы позднее, чем появился Smalltalk К тому же, согласно одному из определений:
Таким образом, Smalltalk реализует инкапсуляцию в части объединения данных и кода, и делает это получше, чем С++ :-) |
||||
|
|||||
Амортизатор2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 6.2.2006 Репутация: нет Всего: 2 |
FunnyFalcon, все-таки отсутствие закрытых методов уменьшает инкапсуляцию.
Smalltalk более ООП по сравнению с другими языками, т к в нем все есть объекты - даже куски кода. Но на практики это сомнительное преимущество. |
|||
|
||||
max_lapshin |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 10.9.2006 Где: Москва Репутация: 2 Всего: 3 |
Сомнительное лично для вас? Тогда советую почитать хорошую литературу про использование ООП. Вся эта макулатура типа «профессиональное программирование на С++», конечно же яйца выеденного не стоит. Действительно книги про использование ООП - это, например, Рефакторинг кода Фаулера |
|||
|
||||
cherep |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 11.1.2006 Где: Москва Репутация: нет Всего: 4 |
Амортизатор2, про квалификаторы в Смолтоке вы верно подметили, мне после жавы их очень не хватает (курочу Squeak на досуге) и не только в смоллтолке но и в питоне...
Тут вот была интересная дискуссия на тему квалификаторов в контексте Смолтока, я там как раз отписался (ник xonix). |
|||
|
||||
JUmPER |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
есть mixin'ы --------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
FunnyFalcon |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 27.3.2006 Репутация: 3 Всего: 7 |
+1 Не берусь утверждать, но по-моему множественное наследование используется в основном в качестве mixin. Вопрос: кто когда вообще использовал множественное наследование не в качестве mixin? И, если использовал, нельзя ли было обойтись в этом случае mixin? Какие преимущества у того и другого подхода? |
|||
|
||||
JUmPER |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
считается, что у другого подхода есть только недостатки, а именно: - неясность структуры - возможные проблемы с именами членов - сложность реализации и т.д. --------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
|||
|
||||
setq |
|
|||
Unregistered |
Уточните)
|
|||
|
||||
JUmPER |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
из Вики:
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Ruby: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |