Re[2]: Синтаксический оверхед
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 10.06.05 07:14
Оценка:
Здравствуйте, ForestLabs, Вы писали:

FL>Гы. Был такой язык российского разлива — Ямб.

FL>Дык в нем циклы писались так:
FL>(что-то в цикле)3
FL>Т.е. в примере выполнить цикл 3 раза. Ну лаконичнее некуда.

Согласен.
Вопрос лишь, а что в нем было еще кроме циклов, ведь на все дела разных типов скобок не напасешься, не так ли?
Re[6]: Синтаксический оверхед: а смысл-то в чем?
От: Кодёнок  
Дата: 10.06.05 07:17
Оценка: +1 -1 :))) :))) :))
СГ>>Серьмяжный смысл моего сообщения был в том, что теперь я могу ссылаться
Автор: Сергей Губанов
Дата: 09.06.05
на это сообщение, а не голословно говорить, что Си-образный синтаксис использует больше лексем чем нужно.


D> Ссылаться на бредовое сообщение? Ой, тогда извини... Ты так и не понял, что не прав?


Ну так это же ПУБЛИКАЦИЯ. Можно ссылочку потом ставить на то сообщение [1], как в научке принято.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Губанов С. Синтаксический оверхед / Форум сайта RSDN.RU — http://www.rsdn.ru/Forum/Message.aspx?mid=1214478
Автор: Сергей Губанов
Дата: 09.06.05
— 09.06.2005 16:33 "Сергей Губанов"
Re[6]: Синтаксический оверхед: а смысл-то в чем?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 10.06.05 07:20
Оценка: :)
Здравствуйте, Demiurg, Вы писали:

D> Но ведь ты не прав

D> Ссылаться на бредовое сообщение? Ой, тогда извини... Ты так и не понял, что не прав?

Да, не понял.

Текст оформлен в согласии с общепринятым coding style. Служебные слова, скобочки, точки-запятые, посчитаны, надеюсь, без арифметических ошибок. Числа делил правда на калькуляторе, но наверное калькулятор всё-таки не ошибся. Так что всё вроде сделал правильно. Так что не так?
Re[7]: Синтаксический оверхед: а смысл-то в чем?
От: Firelight  
Дата: 10.06.05 07:23
Оценка: +2 -1
СГ>Текст оформлен в согласии с общепринятым coding style. Служебные слова, скобочки, точки-запятые, посчитаны, надеюсь, без арифметических ошибок. Числа делил правда на калькуляторе, но наверное калькулятор всё-таки не ошибся. Так что всё вроде сделал правильно. Так что не так?

В ДНК ошибка. (с)
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[7]: Синтаксический оверхед: а смысл-то в чем?
От: moudrick Россия http://community.moudrick.net/
Дата: 10.06.05 07:25
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Demiurg, Вы писали:


D>> Но ведь ты не прав

D>> Ссылаться на бредовое сообщение? Ой, тогда извини... Ты так и не понял, что не прав?

СГ>Да, не понял.


СГ>Текст оформлен в согласии с общепринятым coding style. Служебные слова, скобочки, точки-запятые, посчитаны, надеюсь, без арифметических ошибок. Числа делил правда на калькуляторе, но наверное калькулятор всё-таки не ошибся. Так что всё вроде сделал правильно. Так что не так?


Единственный разумный вывод из твоей "работы" — ты против использования coding-style в обероне, а так же недолюбливаешь с-подобный синтаксис.

А все остальное — увы... тебе привели достаточно разумных аргументов, свидетельствующих о неправомерности резюме насчет "сколько еще будет существовать..."
Re[6]: Синтаксический оверхед: а смысл-то в чем?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 10.06.05 07:27
Оценка:
Здравствуйте, Demiurg, Вы писали:

D> Но ведь ты не прав


Скажете что Си-образный синтаксис использует минимально возможное количество лексем? Тогда не правы будете Вы. Си-образный синтаксис использует вовсе не минимально возможное количество лексем, а гораздо больше — известны примеры трехкратного перерасхода. Не верите? А вот здесь
Автор: Сергей Губанов
Дата: 09.06.05
ссылочка. Гляньте, там куча примеров перерасхода от двух до трех раз каждый.
Re[5]: Синтаксический оверхед
От: Socrat Россия  
Дата: 10.06.05 07:33
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Пацак, Вы писали:


П>>
П>>while (x = a() ? b(k[i++]) : c(l[j--]) ) d(x);
П>>


СГ>А по ушам схлопотать за такой код, можно?


По ушам схлопотать можно и без повода... А такой код тоже недопустим?

while (*str1++ = *str2++);


Действие этого кода вполне осмысленное — копирование строки (только не надо говорить, что в Обероне строки копируются встроенным оператором — это просто пример).
Re[8]: Синтаксический оверхед: а смысл-то в чем?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 10.06.05 07:33
Оценка: :)
Здравствуйте, moudrick, Вы писали:

M>Единственный разумный вывод из твоей "работы" — ты против использования coding-style в обероне, а так же недолюбливаешь с-подобный синтаксис.


coding-style относится к количеству строчек кода, а основной смысл был про количество лексем. Не зависимо от того какой применять coding-style, количество используемых лексем всё равно больше чем реально необходимо. Смысл заметки в том, что: СИ-ОБРАЗНЫЙ СИНТАКСИС ИСПОЛЬЗУЕТ БОЛЬШЕ ЛЕКСЕМ ЧЕМ ЭТО РЕАЛЬНО НЕОБХОДИМО. Я специально для Вас заглавными буквами написал смысл. Запомните его. А то, понимаете-ли, прочитали сообщение, а смысла так и не поняли.
Re[6]: Синтаксический оверхед
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 10.06.05 07:35
Оценка:
Здравствуйте, Socrat, Вы писали:

S>По ушам схлопотать можно и без повода... А такой код тоже недопустим?

S>
S>while (*str1++ = *str2++);
S>


Оберон — есть "safe" язык со сборщиком мусора. Адресной арифметики там нет.
Re[6]: Синтаксический оверхед
От: moudrick Россия http://community.moudrick.net/
Дата: 10.06.05 07:36
Оценка:
S>>>
S>>>func (param1, param2, param3, param4, expr? param5: param6);
S>>>


M>>Не пишите такой код ни на каком объектном языке.

M>>Напрашивается паттерн "Граничный объект" (Introduce Parameter Object)
M>>здесь

S>>>

S>>>Есть группа параметров, естественным образом связанных друг с другом. Замените их объектом.

S>>>А если объекты не связаны? Например, надо взять взаймы у одного из двух человек, у кого денег больше:
S>>>
S>>>Взять_взаймы (человек1.деньги > человек2.деньги? человек1: человек2);
S>>>

S>Какой тут можно сделать объект?

Никакой. Здесь один параметр, который есть уже объект.

Здесь напрашивается другой паттерн рефакторинга — Выделение переменной (Introduce Explaining Variable)
здесь

Человек уКогоЗанять  = человек1.деньги > человек2.деньги? человек1: человек2;
Взять_взаймы (уКогоЗанять);


П>>А где здесь группа параметров? ИМХО один, но выбираемый в зависимости от условия.


S>Ну, можно еще добавить парочку... Например, сколько взять, когда отдать и т.д.


Вот они то как раз и связаны естественным образом.
Естественность образа хотя бы в том, что ты их передаешь параметром в один и тот же метод.
Или ты пишешь НЕЕСТЕСТВЕННЫЕ методы?

В нашем случае можно сделать так:
Взять_взаймы (Человек уКогоЗанять, деньги сколькоВзять, дата когдаОтдать)
{
   ...
}
...
Взять_взаймы (уКогоЗанять, сколькоВзять, когдаОтдать);


заменить на

class ЗаймИнфо
{
    Человек УКогоЗанять;
    деньги СколькоВзять;  
    дата КогдаОтдать;
}
...
Взять_Взаймы(ЗаймИнфо займИнфо)
{
   ...
}
...
ЗаймИнфо займ = new ЗаймИнфо();
займ.УКогоЗанять  = человек1.деньги > человек2.деньги? человек1: человек2
займ.СколькоВзять = сколькоВзять;
займ.КогдаОтдать = когдаОтдать;
Взять_взаймы (займ);

А можно и оставить как есть. 3 параметра у метода — не очень страшно.
4 — со скрипом терпимо. А вот 5 и более — это п-ц.
За такой код можно и, как принято выражаться в этом бредовот треде, "по ушам схлопотать"

Но... пошел офтоп, ибо это уже про рефакторинг, а не про бред.
Но в бреду любой офтоп не страшен, поверьте
Бред — он для этого и придуматый, для офтопов как раз.

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


И вообще хватит херней заниматься. В игнор тему. А то заболею и умру
от минимолексемной разновидности бредовой инфекции.
Re[9]: Синтаксический оверхед: а смысл-то в чем?
От: Socrat Россия  
Дата: 10.06.05 07:37
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, moudrick, Вы писали:


M>>Единственный разумный вывод из твоей "работы" — ты против использования coding-style в обероне, а так же недолюбливаешь с-подобный синтаксис.


СГ>coding-style относится к количеству строчек кода, а основной смысл был про количество лексем. Не зависимо от того какой применять coding-style, количество используемых лексем всё равно больше чем реально необходимо. Смысл заметки в том, что: СИ-ОБРАЗНЫЙ СИНТАКСИС ИСПОЛЬЗУЕТ БОЛЬШЕ ЛЕКСЕМ ЧЕМ ЭТО РЕАЛЬНО НЕОБХОДИМО. Я специально для Вас заглавными буквами написал смысл. Запомните его. А то, понимаете-ли, прочитали сообщение, а смысла так и не поняли.


Дело не в количестве лексем, а в удобстве чтения. Меня, например, напрягает, что begin, end и пр. на вид практически неотличимы от идентификаторов (разве что цветом в редакторе).
Re: Синтаксический оверхед
От: Аноним  
Дата: 10.06.05 07:40
Оценка:
Ты это... убери что-ли "кфмн" из профайла.
Даже неудобно как-то читать подобные сообщения от человека со степенью.

А вообще нет... Лучше пиши дальше.
Начинай продвигать свои мысли в научные журналы
и пробуй выступать на научных конференциях.
Пусть не только RSDN повеселится
Re[10]: Ошибка 3
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 10.06.05 07:43
Оценка: :)
Здравствуйте, Socrat, Вы писали:

S>Меня, например, напрягает, что begin, end и пр. на вид практически неотличимы от идентификаторов (разве что цветом в редакторе).


Спешу сообщить, что упомянутый Вами синтаксис c {begin, end} уже устарел, и сделал это более чем двадцать пять лет тому назад.

Ошибка:
http://www.rsdn.ru/Forum/Message.aspx?mid=1214592&amp;only=1
Автор: Сергей Губанов
Дата: 09.06.05


Ошибка 2:
http://www.rsdn.ru/Forum/Message.aspx?mid=1214676&amp;only=1
Автор: Сергей Губанов
Дата: 09.06.05
Re[9]: Синтаксический оверхед: а смысл-то в чем?
От: Alexey_ch Швейцария  
Дата: 10.06.05 07:43
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Смысл заметки в том, что: СИ-ОБРАЗНЫЙ СИНТАКСИС ИСПОЛЬЗУЕТ БОЛЬШЕ ЛЕКСЕМ ЧЕМ ЭТО РЕАЛЬНО НЕОБХОДИМО.


Выкинь все ненужное, напиши компилятор (или хотя бы парсер)
Re[9]: Синтаксический оверхед: а смысл-то в чем?
От: moudrick Россия http://community.moudrick.net/
Дата: 10.06.05 07:44
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, moudrick, Вы писали:


M>>Единственный разумный вывод из твоей "работы" — ты против использования coding-style в обероне, а так же недолюбливаешь с-подобный синтаксис.


СГ>coding-style относится к количеству строчек кода, а основной смысл был про количество лексем. Не зависимо от того какой применять coding-style, количество используемых лексем всё равно больше чем реально необходимо. Смысл заметки в том, что: СИ-ОБРАЗНЫЙ СИНТАКСИС ИСПОЛЬЗУЕТ БОЛЬШЕ ЛЕКСЕМ ЧЕМ ЭТО РЕАЛЬНО НЕОБХОДИМО. Я специально для Вас заглавными буквами написал смысл. Запомните его. А то, понимаете-ли, прочитали сообщение, а смысла так и не поняли.


Поняли, поняли. Но...

>Кроме того, иницыатор треда и тут наедет по перерасходу лексических средств языка...

>но он наверное никогда не писал реальных программ размера,
>достаточного для того, чтобы понять, что не "минимальным количкесвом лексем" единым живет
>реальное программирование.

Смотри ниже по треду здесь
Автор: moudrick
Дата: 10.06.05
Re[11]: Ошибка 3
От: Socrat Россия  
Дата: 10.06.05 07:45
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Socrat, Вы писали:


S>>Меня, например, напрягает, что begin, end и пр. на вид практически неотличимы от идентификаторов (разве что цветом в редакторе).


СГ>Спешу сообщить, что упомянутый Вами синтаксис c {begin, end} уже устарел, и сделал это более чем двадцать пять лет тому назад.


СГ>Ошибка:

СГ>http://www.rsdn.ru/Forum/Message.aspx?mid=1214592&amp;only=1
Автор: Сергей Губанов
Дата: 09.06.05


СГ>Ошибка 2:

СГ>http://www.rsdn.ru/Forum/Message.aspx?mid=1214676&amp;only=1
Автор: Сергей Губанов
Дата: 09.06.05


Ну ладно, beginа нет, но есть end, do, then и пр.
Re[7]: Синтаксический оверхед
От: Socrat Россия  
Дата: 10.06.05 07:45
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Socrat, Вы писали:


S>>По ушам схлопотать можно и без повода... А такой код тоже недопустим?

S>>
S>>while (*str1++ = *str2++);
S>>


СГ>Оберон — есть "safe" язык со сборщиком мусора. Адресной арифметики там нет.


Там мы дождемся перевода данного или похожего кода на Оберон?
Re[11]: Ошибка 3
От: moudrick Россия http://community.moudrick.net/
Дата: 10.06.05 07:46
Оценка: :)
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Socrat, Вы писали:


S>>Меня, например, напрягает, что begin, end и пр. на вид практически неотличимы от идентификаторов (разве что цветом в редакторе).


СГ>Спешу сообщить, что упомянутый Вами синтаксис c {begin, end} уже устарел, и сделал это более чем двадцать пять лет тому назад.


И что же используется в тех местах, где раньше был {begin, end}?
Пустая лексема?
Re[2]: Синтаксический оверхед
От: moudrick Россия http://community.moudrick.net/
Дата: 10.06.05 07:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ты это... убери что-ли "кфмн" из профайла.

А>Даже неудобно как-то читать подобные сообщения от человека со степенью.

А>А вообще нет... Лучше пиши дальше.

А>Начинай продвигать свои мысли в научные журналы
А>и пробуй выступать на научных конференциях.
А>Пусть не только RSDN повеселится

Особенно будет весело, когда аффтар напишет ссылку на месагу в этом фолруме.
А тот кто (маловероятное событие) дойдет до списка литературы и зайдет по ссылке,
вот когда он повеселится. Грустно повеселится.

Зря я это написал... теперь он сюда ссылку не поставит.
Модератор, сотри месагу, пока аффтар не увидел
Re[7]: Синтаксический оверхед
От: Socrat Россия  
Дата: 10.06.05 07:55
Оценка:
Здравствуйте, moudrick, Вы писали:

S>>>>А если объекты не связаны? Например, надо взять взаймы у одного из двух человек, у кого денег больше:

S>>>>
S>>>>Взять_взаймы (человек1.деньги > человек2.деньги? человек1: человек2);
S>>>>

S>>Какой тут можно сделать объект?

M>Никакой. Здесь один параметр, который есть уже объект.


M>Здесь напрашивается другой паттерн рефакторинга — Выделение переменной (Introduce Explaining Variable)

M>здесь

M>
M>Человек уКогоЗанять  = человек1.деньги > человек2.деньги? человек1: человек2;
M>Взять_взаймы (уКогоЗанять);
M>


А чем твой код отличается от моего? Только ввел дополнительную переменную и разделил на два оператора. В обероне будет еще хуже — там нет условных выражений.

П>>>А где здесь группа параметров? ИМХО один, но выбираемый в зависимости от условия.


S>>Ну, можно еще добавить парочку... Например, сколько взять, когда отдать и т.д.


M>Вот они то как раз и связаны естественным образом.

M>Естественность образа хотя бы в том, что ты их передаешь параметром в один и тот же метод.
M>Или ты пишешь НЕЕСТЕСТВЕННЫЕ методы?

M>заменить на


M>
M>class ЗаймИнфо
M>{
M>    Человек УКогоЗанять;
M>    деньги СколькоВзять;  
M>    дата КогдаОтдать;
M>}
M>


Для вызова одной-единственной функции создавать дополнительный объект? Как говорится, все хорошо в меру.


M>А можно и оставить как есть. 3 параметра у метода — не очень страшно.

M>4 — со скрипом терпимо. А вот 5 и более — это п-ц.
M>За такой код можно и, как принято выражаться в этом бредовот треде, "по ушам схлопотать"

Согласен. Но я приводил тексты в качестве примера. Всегда можно придумать условия тестирования, когда то, что похуже выиграет у того, что получше. Этим автор топика и занимается.

M>Кроме того, иницыатор треда и тут наедет по перерасходу лексических средств языка...

M>но он наверное никогда не писал реальных программ размера,
M>достаточного для того, чтобы понять, что не "минимальным количкесвом лексем" единым живет
M>реальное программирование.

Согласен. Все средства хороши на маленьких программах.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.