Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание новых языковых конструкций, средствами самого языка 
:(
    Опции темы
 
это
хорошо [ 18 ]  [64.29%]
плохо [ 10 ]  [35.71%]
Всего проголосовавших: 28
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
qweqwe
Дата 21.4.2010, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Некоторые языки программирования, с помощью различных механизмов(макросов, шаблонов, правил) позволяют существенно расширять язык программирования, к примеру, вводя новые языковые конструкции.
В качестве примера можно привести Nemerle, который позволяет определять макросы(в том числе и макросы, расширяющие синтаксис языка), которые обрабатываются в compile time и генерируют код. 
Я лично считаю, что это плохая практика, во первых, это не соответствует принципу наименьшего удивления(можно нагородить из макросов такое...), во вторых, если для решения конкретной задачи требуется расширить язык  программирования, то это плохой язык программирования, либо вы что-то делаете не так smile 

PM MAIL   Вверх
skyboy
Дата 21.4.2010, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



если макрос позволяет реализовать метапрограммирование, чего не позволяет язык сам по себе - почему бы и нет?
вот можно при помощи макросов в С написать подобие шаблонов С++?

Добавлено через 2 минуты и 46 секунд
или я неверно понял вопрос?
PM MAIL   Вверх
djamshud
Дата 21.4.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



Считаю, что хорошо. Но программист должен понимать силу, данную ему, и не злоупотреблять ею.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Void
Дата 21.4.2010, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(qweqwe @  21.4.2010,  10:04 Найти цитируемый пост)
Некоторые языки программирования, с помощью различных механизмов(макросов, шаблонов, правил) позволяют существенно расширять язык программирования, к примеру, вводя новые языковые конструкции.

Так макросы, шаблоны или что? И каким ещё образом можно расширять язык программирования?
Метапрограммирование в Nemerle — понятный пример, но первое предложение построено с претензией на что-то более общее.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
qweqwe
Дата 21.4.2010, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата(Void @  21.4.2010,  17:40 Найти цитируемый пост)
Так макросы, шаблоны или что? И каким ещё образом можно расширять язык программирования?
Метапрограммирование в Nemerle — понятный пример, но первое предложение построено с претензией на что-то более общее. 

я когда этот пост писал, именно о Nemerle и думал, ну может еще о perl 6 smile 
хорошим примером плохого метапрограммирования может послужить C++ с библиотеками boost, например boost spirit, в общем - любые средства метапрограммирования, способные изменить язык до неузнаваемости smile 
PM MAIL   Вверх
A5uKa
Дата 22.4.2010, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



NEMERLE  smile 

п.с. 
По поводу возможности...
Конечно это плохо ! Чем меньше возможностей - тем лучше !
Выкинуть и ложки и вилки и есть руками ! >_<

По поводу использования...
Цитата

можно нагородить из макросов такое...

Именно.
Цитата

если для решения конкретной задачи требуется расширить язык  программирования, то это плохой язык программирования

А если, что бы выйти на улицу требуется одевать ботинки, то ноги что-ли плохие ?
PM   Вверх
kemiisto
Дата 22.4.2010, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(qweqwe @  21.4.2010,  09:04 Найти цитируемый пост)
Некоторые языки программирования, с помощью различных механизмов(макросов, шаблонов, правил) позволяют существенно расширять язык программирования, к примеру, вводя новые языковые конструкции.

Ага. Вспомнился Forth:
Цитата
ЙОДЫ МАГИСТРА РЕЧИ ТАЙНА ОТКРЫТА:
НА ФОРТЕ ПРОГРАММЕР СТАРЫЙ ОН ПРОСТО ЕСТЬ.

 smile 

Цитата(qweqwe @  21.4.2010,  09:04 Найти цитируемый пост)
В качестве примера можно привести Nemerle, который позволяет определять макросы(в том числе и макросы, расширяющие синтаксис языка), которые обрабатываются в compile time и генерируют код.

Примерчик бы.

Цитата(qweqwe @  21.4.2010,  09:04 Найти цитируемый пост)
Я лично считаю, что это плохая практика

Я, пожалуй, согласен.

Цитата(A5uKa @  22.4.2010,  12:13 Найти цитируемый пост)
Выкинуть и ложки и вилки и есть руками ! >_<

Некорректное сравнение. "Вилки и ложки" есть во всех языках. А вот нужен ли гибрид вилки, ложки, варибаси и ещё_чего_что_придёт в голову - вот в чём вопрос. Хотя, нет тут никакого вопроса...

Цитата(A5uKa @  22.4.2010,  12:13 Найти цитируемый пост)
А если, что бы выйти на улицу требуется одевать ботинки, то ноги что-ли плохие ?

Ботинки - это библиотека в таком контексте. Ты же предлагаешь изменять сами ноги! smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
A5uKa
Дата 22.4.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Цитата(kemiisto @ 22.4.2010,  11:41)
Цитата(A5uKa @  22.4.2010,  12:13 Найти цитируемый пост)
Выкинуть и ложки и вилки и есть руками ! >_<

Некорректное сравнение. "Вилки и ложки" есть во всех языках. А вот нужен ли гибрид вилки, ложки, варибаси и ещё_чего_что_придёт в голову - вот в чём вопрос. Хотя, нет тут никакого вопроса...

Цитата(A5uKa @  22.4.2010,  12:13 Найти цитируемый пост)
А если, что бы выйти на улицу требуется одевать ботинки, то ноги что-ли плохие ?

Ботинки - это библиотека в таком контексте. Ты же предлагаешь изменять сами ноги! smile

1. Я не говорю, что ты должен есть гибридной вилкой обычную еду. те "Вилки и ложки", которые есть везде не исключаются для обычной еды. Но вот например у тебя нету ТОСТЕРА ! 
user posted image
И у тебя никогда не будет ТОСТЕРА  smile 
Нужен он тебе или нет - другой вопрос , а хлеб варить будешь в микроволновке.

2. Не совсем. Когда ты одеваешь ботинки на ноги ты можешь посмотреть на них в целом как на одну вещь.
Может это слишком абстрактный пример и нужно что-то другое ... ?

Плохому танцору ...
PM   Вверх
kemiisto
Дата 22.4.2010, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(A5uKa @  22.4.2010,  12:53 Найти цитируемый пост)
Когда ты одеваешь ботинки на ноги ты можешь посмотреть на них в целом как на одну вещь.

Вот то-то и оно, что могу. Могу рассматривать ноги + ботинки как ноги. Ноги мне менять не надо, надо надеть ботинки. Мне не надо расширять синтаксис языка. Я могу дописать библиотеку.

Цитата(A5uKa @  22.4.2010,  12:53 Найти цитируемый пост)
Плохому танцору ...

Может быть тогда хороший танцор соизволит показать, как он расширил синтаксис Nemerle хотя бы в одном из своих многочисленных рабочих проектов? Какие преимущества он получил? Чтоб плохим танцорам оценить. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
A5uKa
Дата 22.4.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Цитата(kemiisto @ 22.4.2010,  12:05)
Цитата(A5uKa @  22.4.2010,  12:53 Найти цитируемый пост)
Когда ты одеваешь ботинки на ноги ты можешь посмотреть на них в целом как на одну вещь.

Вот то-то и оно, что могу. Могу рассматривать ноги + ботинки как ноги. Ноги мне менять не надо, надо надеть ботинки. Мне не надо расширять синтаксис языка. Я могу дописать библиотеку.

Цитата(A5uKa @  22.4.2010,  12:53 Найти цитируемый пост)
Плохому танцору ...

Может быть тогда хороший танцор соизволит показать, как он расширил синтаксис Nemerle хотя бы в одном из своих многочисленных рабочих проектов? Какие преимущества он получил? Чтоб плохим танцорам оценить. smile

1. Ты сам понимаешь разницу и то, что Тостера от этого у тебя всё равно не будет. Метапрограммирование будет одевать твои ботинки за тебя, как тостер будет готовить ...
2. я не использую макросы - у меня не было надобности в подобных тостерах.
но вот : http://www.rsdn.ru/article/nemerle/NemerleStingFormating.xml пример.

Добавлено через 2 минуты и 6 секунд
А вообще спорить с тобой дело неблагородное 
Ты всё равно скажешь в конце "Иди пиши свой ###код"  smile 
PM   Вверх
kemiisto
Дата 22.4.2010, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(A5uKa @  22.4.2010,  13:21 Найти цитируемый пост)
я не использую макросы - у меня не было надобности в подобных тостерах

Понятно. Дальше особого смысла разговаривать ТЕБЕ в этом треде я не вижу.

Цитата(A5uKa @  22.4.2010,  13:21 Найти цитируемый пост)
но вот : http://www.rsdn.ru/article/nemerle/NemerleStingFormating.xml пример

Итак, ещё раз повторю для хороших танцоров в танке. Я хочу, чтобы хороший танцор соизволил показать, как ОН расширил синтаксис Nemerle хотя бы в одном из своих многочисленных РАБОЧИХ проектов? Какие ПРЕИМУЩЕСТВА ОН получил?
Статей от авторов языка мне не надо. Иероглифический самопиар меня мало интересует. 

Это сообщение отредактировал(а) kemiisto - 22.4.2010, 12:30


--------------------
PM MAIL WWW GTalk Jabber   Вверх
A5uKa
Дата 22.4.2010, 12:33 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Цитата(kemiisto @ 22.4.2010,  12:30)
Я хочу...

Хотеть не вредно.

Цитата

Иероглифический самопиар меня мало интересует.


Цитата

Понятно. Дальше особого смысла разговаривать ТЕБЕ в этом треде я не вижу.

PM   Вверх
k0rvin
Дата 22.4.2010, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(kemiisto @ 22.4.2010,  12:05)
Мне не надо расширять синтаксис языка. Я могу дописать библиотеку.

хотелось бы посмотреть как Вы реализуете cond таким образом.

Код

cond {
  bool-expr-1:
    operator-1-1;
  bool-expr-2: {
    operator-2-1;
    operator-2-2;
    ...
  }
  ...
  else: else-op;
}

что равносильно
Код

if bool-expr-1
  operator-1-1;
else if bool-expr-2 {
  operator-2-1;
  operator-2-2;
  ...
} else if ...
... else else-op;

только вышлядит проще и понятней

Это сообщение отредактировал(а) k0rvin - 22.4.2010, 12:48


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
kemiisto
Дата 22.4.2010, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



k0rvin, что это было? Какой это язык? Где пример использования cond?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
LSD
Дата 22.4.2010, 13:01 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


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.
PM MAIL WWW   Вверх
A5uKa
Дата 22.4.2010, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Цитата(kemiisto @ 22.4.2010,  12:50)
k0rvin, что это было? Какой это язык? Где пример использования cond?

Похоже на что-то вроде match ... Ну или switch.

Если не ошибаюсь Lisp

Добавлено через 1 минуту и 33 секунды
зы - это и был пример )
PM   Вверх
GoldFinch
Дата 22.4.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



в fasm'е все что можно реализовано через макросы. и ничего, люди юзают и радуются.
PM MAIL ICQ   Вверх
A5uKa
Дата 22.4.2010, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Цитата

А вот соблазн использовать микроскоп не по назначению, слишком велик. 

Да вот совсем не тянет  smile 
PM   Вверх
LSD
Дата 22.4.2010, 14:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(A5uKa @  22.4.2010,  14:26 Найти цитируемый пост)
Да вот совсем не тянет

Ты у нас вроде не единственный программист на свете smile 


--------------------
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.
PM MAIL WWW   Вверх
A5uKa
Дата 22.4.2010, 14:21 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Цитата(LSD @ 22.4.2010,  14:13)
Цитата(A5uKa @  22.4.2010,  14:26 Найти цитируемый пост)
Да вот совсем не тянет

Ты у нас вроде не единственный программист на свете smile

Не факт  smile 
PM   Вверх
k0rvin
Дата 22.4.2010, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
qweqwe
Дата 22.4.2010, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата(kemiisto @  22.4.2010,  11:41 Найти цитируемый пост)
Примерчик бы.


Цитата(kemiisto @  22.4.2010,  12:30 Найти цитируемый пост)
Итак, ещё раз повторю для хороших танцоров в танке. Я хочу, чтобы хороший танцор соизволил показать, как ОН расширил синтаксис Nemerle хотя бы в одном из своих многочисленных РАБОЧИХ проектов? Какие ПРЕИМУЩЕСТВА ОН получил?
Статей от авторов языка мне не надо. Иероглифический самопиар меня мало интересует. 

вот тебе статья на хабре - http://habrahabr.ru/blogs/nemerle/58801/
весьма спорное применение макросов Nemerle
помимо всего прочего, макрос у них, это плагин к компилятору, а это вообще - LOL

Цитата(k0rvin @  22.4.2010,  12:47 Найти цитируемый пост)
хотелось бы посмотреть как Вы реализуете cond таким образом.

а зачем это делать, если язык прекрасно умеет pattern matching или просто поддерживает конструкцию if .. elif .. else?

Добавлено через 49 секунд
Цитата(k0rvin @  22.4.2010,  17:05 Найти цитируемый пост)
но к match и switch оно никакого отношения не имеет, разве что чисто синтаксически похожа =)

я думаю здесь не много знатоков CL или Scheme, так что рассказывай, как это работает и чем полезно smile 
PM MAIL   Вверх
k0rvin
Дата 22.4.2010, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(qweqwe @ 22.4.2010,  17:26)
Цитата(k0rvin @  22.4.2010,  12:47 Найти цитируемый пост)
хотелось бы посмотреть как Вы реализуете cond таким образом.

а зачем это делать, если язык прекрасно умеет pattern matching или просто поддерживает конструкцию if .. elif .. else?

Добавлено @ 17:26
Цитата(k0rvin @  22.4.2010,  17:05 Найти цитируемый пост)
но к match и switch оно никакого отношения не имеет, разве что чисто синтаксически похожа =)

я думаю здесь не много знатоков CL или Scheme, так что рассказывай, как это работает и чем полезно smile

затем что паттерн-матчинг к этому никакого отношения не имеет. как Вы в паттерн засунете _произвольное_ выражение?

вот if ... elif ... else ...; -- это оно, только без лишних уродских elif =) я же приводил пример выше


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
qweqwe
Дата 22.4.2010, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата(k0rvin @  22.4.2010,  18:38 Найти цитируемый пост)
затем что паттерн-матчинг к этому никакого отношения не имеет. как Вы в паттерн засунете _произвольное_ выражение?

вот if ... elif ... else ...; -- это оно, только без лишних уродских elif =) я же приводил пример выше 


да вы батенька - эстет, множить сущности ради этого smile

кстати, сопоставление с образцом в большинстве языков позволяет делать подобное

Код

match value with
| _ when some_expression -> result
| _ when some_other_expression -> other_result


если уж на то пошло
PM MAIL   Вверх
k0rvin
Дата 22.4.2010, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(qweqwe @ 22.4.2010,  18:48)
Цитата(k0rvin @  22.4.2010,  18:38 Найти цитируемый пост)
затем что паттерн-матчинг к этому никакого отношения не имеет. как Вы в паттерн засунете _произвольное_ выражение?

вот if ... elif ... else ...; -- это оно, только без лишних уродских elif =) я же приводил пример выше 


да вы батенька - эстет, множить сущности ради этого smile

угу, одни эстеты функции плодят, другие -- классы, третьи -- шаблоны... кругом сплошь эстеты, знаете ли =)

Цитата(qweqwe @ 22.4.2010,  18:48)

кстати, сопоставление с образцом в большинстве языков позволяет делать подобное

Код

match value with
| _ when some_expression -> result
| _ when some_other_expression -> other_result


если уж на то пошло

а вот это уже костыль... и тоже уродство, как и elif =)
вместо сущностей-конструкций сущности ключевые слова, в итоге одна форма из "большинства" языков сложнее каждой из сущностей моего языка по-отдельности =)

Это сообщение отредактировал(а) k0rvin - 22.4.2010, 19:57


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
A5uKa
Дата 23.4.2010, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Цитата

эстеты

Код

            def _IamSuperVoidAndImSexyCuteAndFuckingAwesome = 
            (_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
            _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
            _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
            _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
            _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
            _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=());


Добавлено через 26 секунд
=_=

Добавлено через 43 секунды
Nemerle - кавайный язык XD
PM   Вверх
k0rvin
Дата 23.4.2010, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(A5uKa @ 23.4.2010,  12:58)
Цитата

эстеты

Код

            def _IamSuperVoidAndImSexyCuteAndFuckingAwesome = 
            (_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
            _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
            _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
            _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
            _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
            _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=());


Добавлено @ 12:58
=_=

Добавлено @ 12:58
Nemerle - кавайный язык XD

CamelCase ужасен =)

Код

(defvar |I am super void and I'm sexy cute and fucking awesome| 
  '(_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
    _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
    _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
    _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
    _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
    _=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
    ()))



--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Logo
Дата 24.4.2010, 16:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Цитата(qweqwe @ 21.4.2010,  19:24)
Цитата(Void @  21.4.2010,  17:40 Найти цитируемый пост)
Так макросы, шаблоны или что? И каким ещё образом можно расширять язык программирования?
Метапрограммирование в Nemerle — понятный пример, но первое предложение построено с претензией на что-то более общее. 

я когда этот пост писал, именно о Nemerle и думал, ну может еще о perl 6 smile 
хорошим примером плохого метапрограммирования может послужить C++ с библиотеками boost, например boost spirit, в общем - любые средства метапрограммирования, способные изменить язык до неузнаваемости smile

Perl 5 тоже позволяет, с помощью Devel:smile например. И в С/С++ вроде есть что-то.


Скорее хорошо. Конечно, этим можно злоупотреблять - но чем вообще нельзя злоупотреблять? Например можно злоупотреблять ООП, но это не значит, что если в языке нет ООП, это хорошо.

Хороший механизм расширения языковых конструкций может быть полезен при создании фреймворков/библиотек, использование этой возможности в обычном программировании - ошибка.

Цитата

- код становится трудно поддерживаемым, т.е. новый человек прежде чем начать разбираться непосредственно с системой, должен будет выучить наши надстройки над языком


Это неизбежно при использовании любого крупного фреймворка/библиотеки.
PM MAIL   Вверх
Shaggie
Дата 26.4.2010, 07:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Макросы всего лишь очередной исключительно мощный инструмент для 1) элегантного и эффективного решения задач, 2) жестокого простреливания ног себе и всем коллегам в радиусе 30 метров.

По личному опыту, макросы хороши для двух задач.
  • Создание максимально обобщённых конструкций, решающих общую языковую задачу. Всякий синтаксический сахар. Реализация новых парадигм программирования (последнее позволяет языку устаревать гораздо медленнее конкурентов).
  • Создание точно описывающего предметную область DSL. Решение максимально конкретных задач проекта с помощью специального языка предметной области.

Местячковые выводы: идеально в случаях, когда систему макросов пишет многоопытный архитект, а остальные участники проекта их используют, но руками внутрь не лазят. Правда пока что видел эту красоту лишь в мечтах, но, думаю, винградовцы смогут подсказать, было ли такое на самом деле? В крайнем случае, такое же разделение ответственности применяется при работе с макросами C и шаблонами C++ - и ничего, многие команды с этим живут.

Глобальные выводы: этой теме столько же лет, сколько макросам Лиспа )) не надоело переливать?


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
LSD
Дата 26.4.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Logo @  24.4.2010,  17:08 Найти цитируемый пост)
Это неизбежно при использовании любого крупного фреймворка/библиотеки.

Правильно фраза звучит так:
Цитата
Это неизбежно при использовании любого крупного самописного фреймворка/библиотеки.

smile


--------------------
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.
PM MAIL WWW   Вверх
JackYF
Дата 26.4.2010, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Cогласен с Shaggie.

Проголосовал "за".


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Logo
Дата 26.4.2010, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Цитата(LSD @ 26.4.2010,  17:31)
Цитата(Logo @  24.4.2010,  17:08 Найти цитируемый пост)
Это неизбежно при использовании любого крупного фреймворка/библиотеки.

Правильно фраза звучит так:
Цитата
Это неизбежно при использовании любого крупного самописного фреймворка/библиотеки.

smile

Не вижу разницы, кем написан фреймворк. Главное как написан smile 
PM MAIL   Вверх
LSD
Дата 27.4.2010, 18:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Logo @  26.4.2010,  22:59 Найти цитируемый пост)
Не вижу разницы, кем написан фреймворк.

И плохо, что не видишь.
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.
PM MAIL WWW   Вверх
Logo
Дата 28.4.2010, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Тогда правильнее сказать закрытый фреймфорк, или фреймворк для внутреннего пользования.

PM MAIL   Вверх
neutrino
Дата 28.4.2010, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Я как-то дебажил эти макросы. Не дай бох никому.

За небольшую практику в шесть лет программирования в шарпе не встречал необходимости в макросах. Было конечно пару раз хотелось как-то сахар послаще сделать. Но когда я думаю о дебаге макрософ мне становицца худо и начинают трястись колени.

Я думаю, что способность адаптировать язык не нужно. Что надо - способность легко написать новый язык для какого-то конкретного домэйна задач. Причем сделать потом этот язык общедоступным. Хорошо бы еще продумать взаимоинтеграцию всех этих языков. Например -  как в ВПФ: дезайнер рисует и не имеет понятия о программировании. Программер не имеет понятия в гуе. Каждый спец в своей области и пишет на своем языке. В итоге - шыдевр. smile 

Я более чем уверен, что за этим будущее почти любой разработки чего угодно и в т.ч. программирования. Будут языки для быстрого написания вебсайтов, для быстрого написания прог мультимедиа и т.д.

Добавлено через 9 минут и 51 секунду
BTW, Linq - еще один пример домэйн-ориентации языка. ИМХО тенденция верная.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
k0rvin
Дата 29.4.2010, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(neutrino @ 28.4.2010,  23:50)
Я как-то дебажил эти макросы. Не дай бох никому.

За небольшую практику в шесть лет программирования в шарпе не встречал необходимости в макросах. Было конечно пару раз хотелось как-то сахар послаще сделать. Но когда я думаю о дебаге макрософ мне становицца худо и начинают трястись колени.

o_O' Вы видимо про препроцессор Си?

потому что дебажить правильные макры CL, а не "всякое препроцессорное ###", никаких проблем не доставляет =)


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
qweqwe
Дата 29.4.2010, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата(k0rvin @  29.4.2010,  07:09 Найти цитируемый пост)
потому что дебажить правильные макры CL, а не "всякое препроцессорное ###", никаких проблем не доставляет =) 

ну вообще, макросы CL, это скорее фича языка, чем изменение самого языка
PM MAIL   Вверх
A5uKa
Дата 30.4.2010, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



и то и другое 
PM   Вверх
neutrino
Дата 30.4.2010, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Цитата(k0rvin @  29.4.2010,  06:09 Найти цитируемый пост)
правильные макры CL

А хто это такое?  smile 


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
k0rvin
Дата 30.4.2010, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(neutrino @ 30.4.2010,  08:55)
Цитата(k0rvin @  29.4.2010,  06:09 Найти цитируемый пост)
правильные макры CL

А хто это такое?  smile

http://ru.wikipedia.org/wiki/Common_Lisp


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
neutrino
Дата 30.4.2010, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



k0rvin, Очень похож на PL Scheme

Добавлено через 6 минут и 40 секунд
Ой. Оказывается это я на лиспе писал алгоритм Дийкстра smile

Интересная тема. Язык мне понравился. Но чтобы на нем писать, надо немного "чекнуться". Как только приходит озарение правописания на лиспе начинаешь писать и получать удовольствие.

Хотя я на нем не писал ничего большого. Интересно есть ли тут кто с таким опытом? 


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
k0rvin
Дата 30.4.2010, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(neutrino @ 30.4.2010,  14:10)
Хотя я на нем не писал ничего большого. Интересно есть ли тут кто с таким опытом?

вряд ли.

скорее на http://lisper.ru и [email protected]


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
neutrino
Дата 1.5.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



k0rvin, А аватарка у тебя тоже какая-то лисповая smile


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
k0rvin
Дата 1.5.2010, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(neutrino @ 1.5.2010,  22:28)
k0rvin, А аватарка у тебя тоже какая-то лисповая smile

нет

впрочем хаскелл я плохо знаю, просто изображение понравилось


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
gcc
Дата 2.5.2010, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



вот например сделали http://search.cpan.org/search?query=Moose+Meta&mode=all много всего

атрибуты понравились
Код

    package MyClass;

    use Moose;
    use MooseX::MethodAttributes;

    sub foo : Bar Baz('corge') { ... }

    my $attrs = MyClass->meta->get_method('foo')->attributes; # ["Bar", "Baz('corge')"]


можно увидеть какой метод с каким атрибутом в прогармме чтобы его вызвать, т.е. тут метод foo, атрибут Bar и Baz с corge

еще там есть Роли как в Smalltalk (или как интерфейсы Java)


PM WWW ICQ Skype GTalk Jabber   Вверх
k0rvin
Дата 2.5.2010, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(gcc @ 2.5.2010,  12:08)
вот например сделали http://search.cpan.org/search?query=Moose+Meta&mode=all много всего

атрибуты понравились
Код

    package MyClass;

    use Moose;
    use MooseX::MethodAttributes;

    sub foo : Bar Baz('corge') { ... }

    my $attrs = MyClass->meta->get_method('foo')->attributes; # ["Bar", "Baz('corge')"]


можно увидеть какой метод с каким атрибутом в прогармме чтобы его вызвать, т.е. тут метод foo, атрибут Bar и Baz с corge

зачем? покажите практическую пользу

вот, допустим, есть у меня метод
Код

sub foo : Bar Baz('corge') { ... }

узнал я его аттрибуты:
Код

my $attrs = MyClass->meta->get_method('foo')->attributes; # ["Bar", "Baz('corge')"]

дальше-то что? что мне с ними делать, с этими аттрибутами?


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Logo
Дата 2.5.2010, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



k0rvin
Атрибуты к функциям - это такая фитча, есть в perl, насчет остальных языков не знаю.
Бывает полезно, например веб-фреймворк cataslyst использует атрибуты для методов контроллера, чтобы определить, к какому урлу привязан метод. Напоминает конфиги веб сервера.
Код

  package MyApp::Controller::Foo;
  sub bar : Local   {} # site.ru/foo/bar/*
  sub baz : Global {} # site.ru/baz/*
  sub some : Path('one/two') {} # site.ru/foo/one/two/*
  sub some2 : LocalRegex('^widget(\d+)$') {} # site.ru/foo/widget123 
  sub bar2 : Local :Args(0)  {} #  site.ru/foo/bar2


Алсо, есть несколько встроенных атрибутов.
PM MAIL   Вверх
k0rvin
Дата 3.5.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



эта "фича" делается запросто в любом языке, предоставляющем возможность объявлять типы данных, содержащие функции. другое дело что удобный синтаксис искаропки =)


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.2071 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.