|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: 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 | след. страница | ||