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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание новых языковых конструкций, средствами самого языка 
:(
    Опции темы
 
это
хорошо [ 18 ]  [64.29%]
плохо [ 10 ]  [35.71%]
Всего проголосовавших: 28
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
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   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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