| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Общие вопросы > Python — не ООП? |
| Автор: PyAlexey 28.9.2006, 16:39 |
| Вот такие возникли у меня вопросы после прочтения http://www.ruby.linux.by/news-article-178.html рубиноидов http://mech.math.msu.su/conference/nikolsky-100/Articles/Vanikina.htm. А вы, уважаемые питоноводы, как считаете: ООП или не ООП, Python или Pyton? |
| Автор: albertn 28.9.2006, 17:40 |
| В данной статье скорее всего идет обзор языка + стандартных библиотек. Язык то сам по-себе вполне ООП, но в стандартных библиотеках в лидирующем большенстве случаев не встречаестя этот подход. Но если бы они взглянули на исходники Zope, тогда и оценили насколько он ООП. Там есть все - Полиморфизм, Инкапсуляция и Наследование, причем в болшом объеме. |
| Автор: J2A 28.9.2006, 17:56 |
| А на что это влияет? Что называется, хоть пирожком назови, лишь в печь не клади. |
| Автор: ser_gen 28.9.2006, 18:02 | ||
Мда, а C++ и Delphi(хоть и дрянь порядочная) они в расчет уже не берут? |
| Автор: PyAlexey 28.9.2006, 18:48 |
| Вообще, Питон — язык разносторонний и многоликий, просто так его не впихнуть таблицу классификации. Не знаю, откуда автор стащил эту таблицу, но как-то странно видеть C++ с Java и Ruby, не говоря уж об ошибке в слове Python. Раз пошла такая пьянка, то почему в ряду с «Perl, PHP, Pyton, ASP» нет упоминания о BAT-файлах DOS’а? |
| Автор: ser_gen 28.9.2006, 19:46 |
Или sh сценариев Unix? |
| Автор: Cr@$h 28.9.2006, 22:21 |
| Первой ошибкой авторов было то, что они возводят всё в абсолют. Это надо же: язык принадлежит одной парадигме. Более того, под сценарными языками они понимают языки, реализующме чуть ли не все предыдущие парадигмы. Это же не всегда так. В Common Lisp, Ada, Visual Prolog есть ООП. CL вообще всё практически содержит. Что его, сценарным обзывать? То же касается Fortran. Классификация на уровне середины прошлого века. Я бы лучше допускал, что язык может поддерживать несколько парадигм. Сценарность я бы вообще не относил к парадигме программирования, наеврное. для меня есть компилируемые, интерпретируемые и сценарные (последние могут быть обоими). Вот в этом смысле. Добавлено @ 22:27 Python считаю императивным языком, допускающим полоценное ООП и поддерживающим функциональный стиль программирования (на сколько я знаю, содержит много функцональных средств, но не имеет чистых процедур, оптимизации хвостовых функций и др.). Читайте и присоединяйтесь к обсуждению в отдельной теме http://forum.vingrad.ru/index.php?showtopic=109504. |
| Автор: umup 28.9.2006, 23:44 |
| А что обсуждать ? Рассуждения какой-то пупкиной, мягко говоря, далекие от реальности ? |
| Автор: albertn 29.9.2006, 11:47 | ||
Вот вот. Такой строгой классификации языки не подлежат. А статья максимум говорит о наиболее частом использовании языков. |
| Автор: PyAlexey 29.9.2006, 14:25 |
| 2All Как думаете, чего не хватает в питоновском ООП? |
| Автор: albertn 29.9.2006, 14:57 | ||
Для интерпретатора в нем есть практически все что нужно. Кстати а этот код относится к ООП?
|
| Автор: PyAlexey 29.9.2006, 15:22 |
Философский вопрос. Почти что, сколько нужно песчинок песка, чтобы получить кучу. Думаю, что нет, не ООП. Это просто код с использованием класса. |
| Автор: albertn 29.9.2006, 15:28 | ||
Блин, я не это имел ввиду. Поясню для тех, кто не понял: Не противоречит ли концепции ООП данного рода использование объявления переменных объекта определенного класса? Если вопрос снова непонятен, то я еще напишу |
| Автор: PyAlexey 29.9.2006, 15:40 |
| Вы о переменной b? Противоречит, противоречит даже самой идеи класса. Я вообще не знал, что так объявлять можно. |
| Автор: Cr@$h 29.9.2006, 16:10 |
| Про основы ООП в Python можно посмотреть и в нашем старом месте: http://www.citforum.ru/programming/python/python6.shtml. |
| Автор: FunnyFalcon 1.10.2006, 10:05 |
| В Питоне просто своя объектная модель: объект - это почти что HESH таблица, но ее элементы могут искаться и в "родительских" :-) Чем проигрывает Python тому же Ruby - нет возможности легко изменять класс: возможность работы в стиле макросов в Ruby (через class_eval/module_eval и included) сильно сокращает объём кода. Я пробовал переписать pyExcelerator на Ruby - вместо объявления сотен свойств (разных типов - с десяток не больше) - два десятка строчек с их перечислениями - ощутимая выгода. И не надо про скорость - написал C расширения для ускоренного перевода строки в число и обратно, отнаследовался от String - и скорость на уровне Python-овского варианта. Жаль не довел еще до ума (не по Ruby-евски выглядит, да и названия методов неудачно выбрал - одни и те же и для перевода строки в число, и обратно) - доведу, выложу. Если бы Van Rossum отступился чуть чуть и реализовал подобную возможность - Python бы только выиграл. И не надо про метаклассы. Да, SqlObject и Django их очень удачно использует. Но метаклассы работают только при создании класса и работают они с Dictionary - т.е. порядок объявлений теряется. |
| Автор: J2A 4.10.2006, 13:47 | ||||
На http://groups.google.com/group/comp.lang.python/browse_thread/thread/25e108582b4a6db2/ на инсинуацию "Ruby -- ОО, а Python -- нет" ответили примерно так:
|
| Автор: Cr@$h 5.10.2006, 01:19 |
| Кстати сама обсуждаемая статья, похоже, написана сторонникаим Python. |
| Автор: pythonwin 5.10.2006, 08:14 | ||
почему так думаешь? |
| Автор: Cr@$h 6.10.2006, 22:16 |
По-моему, они возхвалают "скриптовый подход" и считают, что это новое -- лучшее. Я не буду это оспаривать ли наоборот, просто статья показалась мне именно в этом ключе. |
| Автор: pythonwin 9.10.2006, 15:25 | ||
Нет я подумал, что знаешь авторов статьи. |