![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
||
|
qweqwe |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.1.2007 Репутация: нет Всего: 0 |
Некоторые языки программирования, с помощью различных механизмов(макросов, шаблонов, правил) позволяют существенно расширять язык программирования, к примеру, вводя новые языковые конструкции.
В качестве примера можно привести Nemerle, который позволяет определять макросы(в том числе и макросы, расширяющие синтаксис языка), которые обрабатываются в compile time и генерируют код. Я лично считаю, что это плохая практика, во первых, это не соответствует принципу наименьшего удивления(можно нагородить из макросов такое...), во вторых, если для решения конкретной задачи требуется расширить язык программирования, то это плохой язык программирования, либо вы что-то делаете не так ![]() |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
если макрос позволяет реализовать метапрограммирование, чего не позволяет язык сам по себе - почему бы и нет?
вот можно при помощи макросов в С написать подобие шаблонов С++? Добавлено через 2 минуты и 46 секунд или я неверно понял вопрос? |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 1 Всего: 39 |
Считаю, что хорошо. Но программист должен понимать силу, данную ему, и не злоупотреблять ею.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Так макросы, шаблоны или что? И каким ещё образом можно расширять язык программирования? Метапрограммирование в Nemerle — понятный пример, но первое предложение построено с претензией на что-то более общее. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
qweqwe |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.1.2007 Репутация: нет Всего: 0 |
я когда этот пост писал, именно о Nemerle и думал, ну может еще о perl 6 ![]() хорошим примером плохого метапрограммирования может послужить C++ с библиотеками boost, например boost spirit, в общем - любые средства метапрограммирования, способные изменить язык до неузнаваемости ![]() |
|||
|
||||
A5uKa |
|
||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 1 Всего: 16 |
NEMERLE
![]() п.с. По поводу возможности... Конечно это плохо ! Чем меньше возможностей - тем лучше ! Выкинуть и ложки и вилки и есть руками ! >_< По поводу использования...
Именно.
А если, что бы выйти на улицу требуется одевать ботинки, то ноги что-ли плохие ? |
||||
|
|||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Ага. Вспомнился Forth:
![]() Примерчик бы. Я, пожалуй, согласен. Некорректное сравнение. "Вилки и ложки" есть во всех языках. А вот нужен ли гибрид вилки, ложки, варибаси и ещё_чего_что_придёт в голову - вот в чём вопрос. Хотя, нет тут никакого вопроса...
Ботинки - это библиотека в таком контексте. Ты же предлагаешь изменять сами ноги! ![]() -------------------- |
||||
|
|||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 1 Всего: 16 |
1. Я не говорю, что ты должен есть гибридной вилкой обычную еду. те "Вилки и ложки", которые есть везде не исключаются для обычной еды. Но вот например у тебя нету ТОСТЕРА ! ![]() И у тебя никогда не будет ТОСТЕРА ![]() Нужен он тебе или нет - другой вопрос , а хлеб варить будешь в микроволновке. 2. Не совсем. Когда ты одеваешь ботинки на ноги ты можешь посмотреть на них в целом как на одну вещь. Может это слишком абстрактный пример и нужно что-то другое ... ? Плохому танцору ... |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Вот то-то и оно, что могу. Могу рассматривать ноги + ботинки как ноги. Ноги мне менять не надо, надо надеть ботинки. Мне не надо расширять синтаксис языка. Я могу дописать библиотеку. Может быть тогда хороший танцор соизволит показать, как он расширил синтаксис Nemerle хотя бы в одном из своих многочисленных рабочих проектов? Какие преимущества он получил? Чтоб плохим танцорам оценить. ![]() -------------------- |
|||
|
||||
A5uKa |
|
||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 1 Всего: 16 |
1. Ты сам понимаешь разницу и то, что Тостера от этого у тебя всё равно не будет. Метапрограммирование будет одевать твои ботинки за тебя, как тостер будет готовить ... 2. я не использую макросы - у меня не было надобности в подобных тостерах. но вот : http://www.rsdn.ru/article/nemerle/NemerleStingFormating.xml пример. Добавлено через 2 минуты и 6 секунд А вообще спорить с тобой дело неблагородное Ты всё равно скажешь в конце "Иди пиши свой ###код" ![]() |
||||
|
|||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Понятно. Дальше особого смысла разговаривать ТЕБЕ в этом треде я не вижу.
Итак, ещё раз повторю для хороших танцоров в танке. Я хочу, чтобы хороший танцор соизволил показать, как ОН расширил синтаксис Nemerle хотя бы в одном из своих многочисленных РАБОЧИХ проектов? Какие ПРЕИМУЩЕСТВА ОН получил? Статей от авторов языка мне не надо. Иероглифический самопиар меня мало интересует. Это сообщение отредактировал(а) kemiisto - 22.4.2010, 12:30 -------------------- |
||||
|
|||||
A5uKa |
|
||||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 1 Всего: 16 |
Хотеть не вредно.
|
||||||
|
|||||||
k0rvin |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
хотелось бы посмотреть как Вы реализуете cond таким образом.
что равносильно
только вышлядит проще и понятней Это сообщение отредактировал(а) k0rvin - 22.4.2010, 12:48 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||
|
|||||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
k0rvin, что это было? Какой это язык? Где пример использования cond?
-------------------- |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Ноги обутые в ботинки это не единое целое, это ситема состоящая из 2-х слабосвязанных компонентов. Мы можем разделить ее на компоненты и они сохранят свои функциональные свойства. Мы можем скомбинировать эти ноги с другими ботинками, равно как и эти ботинки с другими ногами.
А то что предлагается в первом посте, это "аллея звезд". Когда делается отпечатки конкретных ног/рук и хорошо подходят только для этих самых рук/ног. По поводу сабжа: скорее зло чем добро. Если нам нужны небольшие изменения, то и не стоит огород городить с новыми языковыми конструкциями. А если мы хотим замутить большие изменения, то тут уже будет куча последствий: - код становится трудно поддерживаемым, т.е. новый человек прежде чем начать разбираться непосредственно с системой, должен будет выучить наши надстройки над языком - грамотно разработать язык (ну или хотя бы его часть), чтобы он был логичен, "красив" и непротиворечив, задача сама по себе нетривиальная Это не значит, что задач где это нужно нет. Они есть, но их очень немного. А вот соблазн использовать микроскоп не по назначению, слишком велик. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 1 Всего: 16 |
Похоже на что-то вроде match ... Ну или switch. Если не ошибаюсь Lisp Добавлено через 1 минуту и 33 секунды зы - это и был пример ) |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
в fasm'е все что можно реализовано через макросы. и ничего, люди юзают и радуются.
|
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 1 Всего: 16 |
Да вот совсем не тянет ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Ты у нас вроде не единственный программист на свете ![]() -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 1 Всего: 16 |
||||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
да, cond я взял из CL/Scheme, лишь более С-подобный синтаксис прикрутил =)
но к match и switch оно никакого отношения не имеет, разве что чисто синтаксически похожа =) Это сообщение отредактировал(а) k0rvin - 22.4.2010, 17:06 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
qweqwe |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.1.2007 Репутация: нет Всего: 0 |
вот тебе статья на хабре - http://habrahabr.ru/blogs/nemerle/58801/ весьма спорное применение макросов Nemerle помимо всего прочего, макрос у них, это плагин к компилятору, а это вообще - LOL а зачем это делать, если язык прекрасно умеет pattern matching или просто поддерживает конструкцию if .. elif .. else? Добавлено через 49 секунд
я думаю здесь не много знатоков CL или Scheme, так что рассказывай, как это работает и чем полезно ![]() |
||||
|
|||||
k0rvin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
затем что паттерн-матчинг к этому никакого отношения не имеет. как Вы в паттерн засунете _произвольное_ выражение? вот if ... elif ... else ...; -- это оно, только без лишних уродских elif =) я же приводил пример выше -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
qweqwe |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.1.2007 Репутация: нет Всего: 0 |
да вы батенька - эстет, множить сущности ради этого ![]() кстати, сопоставление с образцом в большинстве языков позволяет делать подобное
если уж на то пошло |
||||
|
|||||
k0rvin |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
угу, одни эстеты функции плодят, другие -- классы, третьи -- шаблоны... кругом сплошь эстеты, знаете ли =)
а вот это уже костыль... и тоже уродство, как и elif =) вместо сущностей-конструкций сущности ключевые слова, в итоге одна форма из "большинства" языков сложнее каждой из сущностей моего языка по-отдельности =) Это сообщение отредактировал(а) k0rvin - 22.4.2010, 19:57 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||||
|
|||||||||
A5uKa |
|
||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 1 Всего: 16 |
Добавлено через 26 секунд =_= Добавлено через 43 секунды Nemerle - кавайный язык XD |
||||
|
|||||
k0rvin |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
CamelCase ужасен =)
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||||
|
|||||||||
Logo |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Perl 5 тоже позволяет, с помощью Devel: ![]() Скорее хорошо. Конечно, этим можно злоупотреблять - но чем вообще нельзя злоупотреблять? Например можно злоупотреблять ООП, но это не значит, что если в языке нет ООП, это хорошо. Хороший механизм расширения языковых конструкций может быть полезен при создании фреймворков/библиотек, использование этой возможности в обычном программировании - ошибка.
Это неизбежно при использовании любого крупного фреймворка/библиотеки. |
||||||
|
|||||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Макросы всего лишь очередной исключительно мощный инструмент для 1) элегантного и эффективного решения задач, 2) жестокого простреливания ног себе и всем коллегам в радиусе 30 метров.
По личному опыту, макросы хороши для двух задач.
Местячковые выводы: идеально в случаях, когда систему макросов пишет многоопытный архитект, а остальные участники проекта их используют, но руками внутрь не лазят. Правда пока что видел эту красоту лишь в мечтах, но, думаю, винградовцы смогут подсказать, было ли такое на самом деле? В крайнем случае, такое же разделение ответственности применяется при работе с макросами C и шаблонами C++ - и ничего, многие команды с этим живут. Глобальные выводы: этой теме столько же лет, сколько макросам Лиспа )) не надоело переливать? |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
Правильно фраза звучит так:
![]() -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
Cогласен с Shaggie.
Проголосовал "за". |
|||
|
||||
Logo |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Не вижу разницы, кем написан фреймворк. Главное как написан ![]() |
||||||
|
|||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 9 Всего: 538 |
И плохо, что не видишь. 1. Самописный фреймворк не известен за пределами фирмы и за пределами фирмы нет людей которые бы с ним работали. А "публичный" фреймворк известен и найти человека который бы с ним работал, вполне возможно. 2. У общедоступных фреймворков больше документации, всяких гайдов, how-to, тьюториалов, книг и т.п. У них есть сообщество пользователей где можно задать вопрос. 3. Из-за большего числа пользователей общедоступные фреймворки лучше оттестированы. 4. Для популярных фреймворков есть коммерческая поддержка и всевозможные курсы. 5. Баги фиксить и добавлять новые фичи в самописный фреймворк надо самостоятельно. А общедоступный надо просто обновлять. Поэтому любой нормальный разработчик достаточно быстро сможет разобраться в системе которая использует Spring MVC. А вот если фирма использует свой MVC, то при отсутствии людей которые этот MVC написали, может статься что разобраться в нем не получится вообще (мне известны такие случаи). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Тогда правильнее сказать закрытый фреймфорк, или фреймворк для внутреннего пользования.
|
|||
|
||||
neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Я как-то дебажил эти макросы. Не дай бох никому.
За небольшую практику в шесть лет программирования в шарпе не встречал необходимости в макросах. Было конечно пару раз хотелось как-то сахар послаще сделать. Но когда я думаю о дебаге макрософ мне становицца худо и начинают трястись колени. Я думаю, что способность адаптировать язык не нужно. Что надо - способность легко написать новый язык для какого-то конкретного домэйна задач. Причем сделать потом этот язык общедоступным. Хорошо бы еще продумать взаимоинтеграцию всех этих языков. Например - как в ВПФ: дезайнер рисует и не имеет понятия о программировании. Программер не имеет понятия в гуе. Каждый спец в своей области и пишет на своем языке. В итоге - шыдевр. ![]() Я более чем уверен, что за этим будущее почти любой разработки чего угодно и в т.ч. программирования. Будут языки для быстрого написания вебсайтов, для быстрого написания прог мультимедиа и т.д. Добавлено через 9 минут и 51 секунду BTW, Linq - еще один пример домэйн-ориентации языка. ИМХО тенденция верная. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
o_O' Вы видимо про препроцессор Си? потому что дебажить правильные макры CL, а не "всякое препроцессорное ###", никаких проблем не доставляет =) -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
qweqwe |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 31.1.2007 Репутация: нет Всего: 0 |
||||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 1 Всего: 16 |
и то и другое
|
|||
|
||||
neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
k0rvin, Очень похож на PL Scheme
Добавлено через 6 минут и 40 секунд Ой. Оказывается это я на лиспе писал алгоритм Дийкстра ![]() Интересная тема. Язык мне понравился. Но чтобы на нем писать, надо немного "чекнуться". Как только приходит озарение правописания на лиспе начинаешь писать и получать удовольствие. Хотя я на нем не писал ничего большого. Интересно есть ли тут кто с таким опытом? -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
вряд ли. скорее на http://lisper.ru и [email protected] -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
k0rvin, А аватарка у тебя тоже какая-то лисповая
![]() -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
нет впрочем хаскелл я плохо знаю, просто изображение понравилось -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
вот например сделали http://search.cpan.org/search?query=Moose+Meta&mode=all много всего
атрибуты понравились
можно увидеть какой метод с каким атрибутом в прогармме чтобы его вызвать, т.е. тут метод foo, атрибут Bar и Baz с corge еще там есть Роли как в Smalltalk (или как интерфейсы Java) |
|||
|
||||
k0rvin |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
зачем? покажите практическую пользу вот, допустим, есть у меня метод
узнал я его аттрибуты:
дальше-то что? что мне с ними делать, с этими аттрибутами? -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||||
|
|||||||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
k0rvin
Атрибуты к функциям - это такая фитча, есть в perl, насчет остальных языков не знаю. Бывает полезно, например веб-фреймворк cataslyst использует атрибуты для методов контроллера, чтобы определить, к какому урлу привязан метод. Напоминает конфиги веб сервера.
Алсо, есть несколько встроенных атрибутов. |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
эта "фича" делается запросто в любом языке, предоставляющем возможность объявлять типы данных, содержащие функции. другое дело что удобный синтаксис искаропки =)
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |