Модераторы: 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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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