Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.fds-net.ru/showflat.php?Number=8340373&src=arc&showlite=l
Дата изменения: Unknown Дата индексирования: Tue Feb 26 22:11:58 2013 Кодировка: Windows-1251 |
Technical
>> Development (Archive)
Страницы: 0 | (10) | 20 | 40 | 60 | 80 | показать все | след. страница | ||
Leo : Re: [python] Ищу модуль-распаковщик.
[re:ayvango] 10.02.2009 10:43 | Reply | Edit | | 7 | |
Quote: Помимо ООП, питон является еще и более-менее полноценным функциональным языком. Значительная часть так называемых "шаблонов проектирования" - это борьба с тем, что C++/Java не являются полноценными функицональными языками. "Шаблоны проектировния" не являются свойством/следствием/важной методикой ООП в более высоком смысле (см. Smalltalk, CLOS). "Шаблоны проектировния" - это тяжелое наследие Java в большей степени. Не надо их тащить везде. Не надо их тащить в питон. Simple is better than complex. Beautiful is better than ugly. | ||
nelapsi
[re:FMX] 10.02.2009 10:46 | Reply | Edit | | -1 | |
а в баше есть буст? | ||
Yorik
[re:Leo] 10.02.2009 10:49 | Reply | Edit | | -2 | |
В ответ на: В ответ на: В ответ на:где-то нестыковочка | ||
Leo
[re:Yorik] 10.02.2009 10:56 | Reply | Edit | | 5 | |
Я говорю не об истории (да, Design patterns - концепция 1977 года, понимаю). Я говорю о практике, а именно - "Users of dynamic programming languages have discussed many design patterns as workarounds for the limitations of languages such as C++ and Java. ... Peter Norvig, in `Design Patterns in Dynamic Programming', discusses the triviality of implementing various patterns in dynamic languages. Norvig and others have described language features that encapsulate or replace various patterns that a C++ user must implement for themselves." | ||
ayvango
[re:FMX] 10.02.2009 11:22 | Reply | Edit | | -1 | |
ну так слово за слово. Полез в документацию, обнаружил что питон больше чем просто замена баша и мне стало любопытно. | ||
ayvango
[re:Leo] 10.02.2009 11:28 | Reply | Edit | | -4 | |
Quote: Не думал, что это настолько важно. Мне казалось что функциональные языки сродни брейнфаку. То бишь большой проект на функциональном языке не сделаешь - неудобно делать декомпозицию без инкапсуляции. Правильно ли я понимаю, что единственный признак, по которому питон - функциональный язык - это наличие лямбда функций? | ||
ayvango
[re:Leo] 10.02.2009 11:33 | Reply | Edit | | -5 | |
то бишь ты предлагаешь заменить одну концепцию проектирования на другую, более натуральную. Как выглядит концепции питона на UML? Можешь дать только ключевые слова для поиска. | ||
Leo
[re:ayvango] 10.02.2009 11:41 | Reply | Edit | | 5 | |
Неправильно. Примитивное определение какое-то такое: функциональный язык - это язык, в котором фукнции являются first-class objects, т.е. настолько же полнопрвными объектами, как и, скажем, числа, строки и т.п. Кстати, полноценных лямбда-функций в питоне как раз нет. Чтобы проникнуться питоном, рекомендуется для прочтения, на вскидку: http://python.net/~goodger/projects/pycon/2007/idiomatic/han... http://www.dabeaz.com/generators/ | ||
__ka
[re:ayvango] 10.02.2009 11:52 | Reply | Edit | | 6 | |
Я вот все пытаюсь разгадать этот паззл, --- что можно собрать из "модуля для автоматической распаковки архивов любой степени вложенности" и шаблонов "фабрика", "стратегии"и прочих, --- да не выходит Поведай уже общественности, какова разгадка | ||
DarkGray
[re:Leo] 10.02.2009 13:31 | Reply | Edit | | 0 | |
Quote: ты путаешь шаблоны проектирования с реализацией шаблонов проектирования. шаблоны проектирования - есть всегда и везде (хоть в java, хоть в python-е, хоть в bash-е), а вот реализация шаблонов проектирования уже от языка к языку плавает: где-то она более громоздкая как в java, где-то менее. | ||
DarkGray
[re:ayvango] 10.02.2009 13:35 | Reply | Edit | | 5 | |
Quote: шаблоны проектирования не связаны с ООП. но вот реализация шаблонов проектирования с ООП связана - т.к. с помощью ООП шаблоны проектирования проще реализуются в лоб. ps например, код, который отвечает в ОС за запуск нужной программы по типу файла - и есть типичная фабрика. причем, что в win, что в *nix - ООП при этом и не пахнет. | ||
DarkGray
[re:Leo] 10.02.2009 13:38 | Reply | Edit | | 1 | |
Quote: Какие именно? | ||
Mike
[re:DarkGray] 10.02.2009 13:52 | Reply | Edit | | 0 | |
Quote: Называть реализацию шаблона на уровне языка программирования шаблоном или нет? Вот в чем вопрос. Грубо говоря, если для реализации стратегии в C# вместо интерфейса использовать делегат, можно ли считать это стратегией или уже нет? А можно ли считать визитором поддержку multimethods на уровне языка программирования? | ||
DarkGray
[re:Leo] 10.02.2009 13:53 | Reply | Edit | | 2 | |
Quote: есть понятие "шаблон проектирование", а есть также "каноническая реализация шаблона проектирования в ООП-языке". ты путаешь первое со вторым. возьмем ту же самую фабрику: задача фабрики задекларировать какого вида(с поддержкой каких интерфейсов) объекты будут создаваться, но при этом скрыть что именно будет создаваться. канонический ООП вид этого паттерна довольно громоздкий: интерфейсы-декларации вида объекта, класс - абстрактная фабрика, классы - конкретные фабрики, конкретные классы - реализующие интерфейс. но также есть много и не канонических реализаций: например, первая строчка в следующем коде - это тоже фабрика: code: т.к. все принципы фабрики сохраняются: результат работы этой строчки декларация того, что именно будет уметь comparer(возвращает ключ, который поддерживает сравнение), при этом само создание компарера скрыто внутри строки. из-за того, что python более гибкий язык, чем Java - понятно, что в python-е скорее будут использоваться вот такие "локальные" реализации шаблонов проектирования, но при этом сами шаблоны проектирования - никуда не денутся. | ||
DarkGray
[re:Mike] 10.02.2009 13:57 | Reply | Edit | | 0 | |
Quote: конечно, можно. это и будет стратегия. Quote: тоже, да. ps если перечитывать классику по шаблонам проектирования - то можно заметить, что там именно в первую очередь приводится идея шаблона (нахрена мы так делаем), и на много реже приводится как именно это конкретно реализуется на том или ином языке. | ||
DarkGray
[re:Leo] 10.02.2009 14:04 | Reply | Edit | | 0 | |
Quote: в цитируемых тобой названиях - заложена другая мысль, чем ты высказываешь в этом треде. там написано, что в динамических языках реализация многих шаблонов проектирования становится тривиальной, а не то, что динамические языки отменяют шаблоны проектирования. | ||
Mike
[re:DarkGray] 10.02.2009 14:05 | Reply | Edit | | 0 | |
Quote: Тут я согласен. Quote: А тут не согласен. Одна из задач визитора как шаблона проектирования - определение конткретных типов. При наличии multimethods эта задача решается автоматически. Еще одна из задач визитора - упрощение добавления новых операций над набором операндов. При наличии multimethods эта задача решается, опять же, автоматически: мы просто пишем операцию. Таким образом визитор как шаблон проектирования полностью исчезает. Я согласен, что часть шаблонов все равно остается. Но ответ на вопрос, остаются ли они все, для меня до сих пор неочевиден. | ||
ayvango
[re:Leo] 10.02.2009 14:08 | Reply | Edit | | 0 | |
Quote: функторы в сях приплюснутых уже давно придумали. Он стал функциональным от этого? | ||
Mike
[re:ayvango] 10.02.2009 14:13 | Reply | Edit | | 0 | |
Quote:Да, Си++ можно считать статически типизированным функциональным языком. То есть, правильнее сказать, что там можно программировать в таком стиле. То, что там это выглядит некрасиво и ужасно, этого факта не отменяет. | ||
DarkGray
[re:ayvango] 10.02.2009 14:13 | Reply | Edit | | 1 | |
Quote: нет, потому что из-за отсутствия сборщика мусора - активное использование функционального стиля становится небезопасным. т.е. есть конфликт между требованиями C++ и требованиями функционального стиля: С++ требует, чтобы четко было понятно кто именно отвечает за уничтожение данных(освобождение памяти), ФЯ стиль, наоборот, декларирует другое - не парьтесь с тем, кто именно и как это будет использовать. просто верните/передайте тот кусочек кода/знаний, который у вас есть. | ||
Top | след. страница |