Здравствуйте, Сергей Губанов, Вы писали:
СГ>1) Известно, что Си-образный синтаксис использует больше лексем чем это реально необходимо. СГ>2) Известно, что стандарты оформления Си-образного кода требуют использования большего количества строчек чем это реально необходимо (чтобы читающему понятно стало где что написано).
СГ>Программа записанная в Си-образном синтаксисе содержит в разы, а не на проценты больше лексем и строчек кода чем это реально необходимо. Спрашивается, и как долго этот синтаксис еще будет существовать?
Собственно, непонятно только одно — чем все это плохо?
What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!
Здравствуйте, Socrat, Вы писали:
S>Здравствуйте, moudrick, Вы писали:
S>>>>>А если объекты не связаны? Например, надо взять взаймы у одного из двух человек, у кого денег больше: S>>>>>
S>>>Какой тут можно сделать объект?
M>>Никакой. Здесь один параметр, который есть уже объект.
M>>Здесь напрашивается другой паттерн рефакторинга — Выделение переменной (Introduce Explaining Variable) M>>здесь
M>>
S>А чем твой код отличается от моего? Только ввел дополнительную переменную и разделил на два оператора. В обероне будет еще хуже — там нет условных выражений.
Примененным вышеуказанным паттерном рефакторинга.
Мотивация (отвечает на вопрос зачем)
в данном случай — человек, мельком проглядывающий этот код в окружении огромного количества другого кода
(т.н. code review) сразу, не присматриваясь к знакам препинания, видит, что метод "Взять_Взаймы" вызывается с одним параметром.
Кроме того, это же значение может использоваться ниже по коду, выделение переменной избавляет от необходимости вычислять его снова.
П>>>>А где здесь группа параметров? ИМХО один, но выбираемый в зависимости от условия.
S>>>Ну, можно еще добавить парочку... Например, сколько взять, когда отдать и т.д.
M>>Вот они то как раз и связаны естественным образом. M>>Естественность образа хотя бы в том, что ты их передаешь параметром в один и тот же метод. M>>Или ты пишешь НЕЕСТЕСТВЕННЫЕ методы?
M>>заменить на
M>>
M>>class ЗаймИнфо
M>>{
M>> Человек УКогоЗанять;
M>> деньги СколькоВзять;
M>> дата КогдаОтдать;
M>>}
M>>
S>Для вызова одной-единственной функции создавать дополнительный объект? Как говорится, все хорошо в меру.
Все зависит от постановки и реализации задачи, а также человека, пишущего код.
Например,
внутри реализации Взять_Взаймы может быть удобнее использование объекта, для дальнейшей инкапсуляции поведения
метод вызывается в нескольких местах (не сильный аргумент, удобнее становится лишь иногда)
такой же набор параметров используется у другого метода (например, ВернутьЗайм)
надо где-то сохранять полную информацию о займе
да и вообще — сначала, тупо применяя паттерн, выделишь объект, а он, гдядишь, и впрямь оказывается безумно полезен во многих местах программы
M>>А можно и оставить как есть. 3 параметра у метода — не очень страшно. M>>4 — со скрипом терпимо. А вот 5 и более — это п-ц. M>>За такой код можно и, как принято выражаться в этом бредовот треде, "по ушам схлопотать"
S>Согласен. Но я приводил тексты в качестве примера. Всегда можно придумать условия тестирования, когда то, что похуже выиграет у того, что получше. Этим автор топика и занимается.
M>>Кроме того, иницыатор треда и тут наедет по перерасходу лексических средств языка... M>>но он наверное никогда не писал реальных программ размера, M>>достаточного для того, чтобы понять, что не "минимальным количкесвом лексем" единым живет M>>реальное программирование.
S>Согласен. Все средства хороши на маленьких программах.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Скажете что Си-образный синтаксис использует минимально возможное количество лексем? Тогда не правы будете Вы. Си-образный синтаксис использует вовсе не минимально возможное количество лексем, а гораздо больше — известны примеры трехкратного перерасхода. Не верите? А вот здесь
Здравствуйте, Сергей Губанов, Вы писали:
D>> Но ведь ты не прав D>> Ссылаться на бредовое сообщение? Ой, тогда извини... Ты так и не понял, что не прав?
СГ>Да, не понял.
СГ>Текст оформлен в согласии с общепринятым coding style. Служебные слова, скобочки, точки-запятые, посчитаны, надеюсь, без арифметических ошибок. Числа делил правда на калькуляторе, но наверное калькулятор всё-таки не ошибся. Так что всё вроде сделал правильно. Так что не так?
А>Ты это... убери что-ли "кфмн" из профайла. А>Даже неудобно как-то читать подобные сообщения от человека со степенью.
По-моему, среди кандидатов умных людей как раз меньшинство, а не большинство. Знаете же этот маразм, писать научные статьи, публиковаться, а главное читать чужие очень умные банальности, написанные научным языком. Откройте какой-нибудь специфический научный журнал — даже зная предмет читать это напрягает. Разве нормальный человек там останется? Отмазка от армии не в счёт
Всем этим может заниматься человек, не отличающий главное от второстепенного. Вот сколько в разработке ПО или языков/компиляторов проблем, но автор озаботился количеством лексем на оператор. Очень важная видать проблема с её решением разрабатывать софт сразу станет легче. Идеал — создать программу, ничего не сделав
Глядя на всех этих доцентов (каждый препод — кандидат), ИМХО делом в науке занимается меньшинство, остальные либо тихо и беспомощно существуют за зарплату преподавателя, либо создают шум из ничего, вроде автора. Причем опасный шум, т.к. маскируется он под "важную научную деательность". А другим потом это читать...
Ну серьёзно, неужели количество лексем — одна из важных проблем в разработке ПО? "Во время боя командир автоматически переходит на мат, и результативность возрастает втрое?" Какие выгоды автор надеется получить, уменьшив число лексем на оператор? На сколько % ускорить разработку? Или что?
Здравствуйте, Пацак, Вы писали:
П>Здравствуйте, Cyberax, Вы писали:
C>>Еще можно Перл и Питон вспомнить — с ними C>>по лаконичности рядом вообще ни один Паскаль не валялся.
П>Учитывая "любовь" автора к скобочкам — лучше лисп!
Вот только не надо лисп на поругание обероновцам отдавать
Re[3]: Синтаксический оверхед
От:
Аноним
Дата:
10.06.05 08:48
Оценка:
Здравствуйте, Кодёнок, Вы писали:
Кё>Ну серьёзно, неужели количество лексем — одна из важных проблем в разработке ПО? "Во время боя командир автоматически переходит на мат, и результативность возрастает втрое?" Какие выгоды автор надеется получить, уменьшив число лексем на оператор? На сколько % ускорить разработку? Или что?
Согласен со всем.
Автор похоже не совсем в курсе проблем программирования
Здравствуйте, Сергей Губанов, Вы писали:
M>>if (a) x(); else y(); M>>не устраивает?
СГ>Меня — вполне, а вот пацанов из соседней комнаты сопровождающих международный проект заставляют писать {} в любом случае и на новой строке, ссылаясь на общепринятый coding style.
А если какой-нибудь менеджер потребует, чтобы такой же стиль был у оберон-кода?
IF
condition_goes_here
THEN
x;
y;
z; (* с обязательной ";" в конце каждой инструкции - требование системы контроля версий *)ELSE
t;
u;
v;
END; (* и здесь тоже ";" по той же самой причине *)
То будешь на синтаксис Оберона наезжать, или всё-таки на менеджмент?
СГ>P. S. СГ>
СГ>if ( a ) x ( ) ; else y ( ) ;
СГ>* * a * x * * * * y * * *
СГ>
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, moudrick, Вы писали:
M>>Единственный разумный вывод из твоей "работы" — ты против использования coding-style в обероне, а так же недолюбливаешь с-подобный синтаксис.
СГ>coding-style относится к количеству строчек кода, а основной смысл был про количество лексем. Не зависимо от того какой применять coding-style, количество используемых лексем всё равно больше чем реально необходимо. Смысл заметки в том, что: СИ-ОБРАЗНЫЙ СИНТАКСИС ИСПОЛЬЗУЕТ БОЛЬШЕ ЛЕКСЕМ ЧЕМ ЭТО РЕАЛЬНО НЕОБХОДИМО. Я специально для Вас заглавными буквами написал смысл. Запомните его. А то, понимаете-ли, прочитали сообщение, а смысла так и не поняли.
Переходи на J. Или на APL — если разживёшься подходящей клавиатурой Вот где количество лексем стремится к Шенноновскому пределу.
S>>Какой тут можно сделать объект?
M>Никакой. Здесь один параметр, который есть уже объект.
M>Здесь напрашивается другой паттерн рефакторинга — Выделение переменной (Introduce Explaining Variable) M>здесь
M>
взять_взаймы(
максимум( -- у кого
[человек1, человек2], -- набор, из которого берётся максимальный элемент
compose_f_gx_gy( -- композитный предикат - комбинатор
меньше(), -- f - оператор сравнения
атрибут(деньги) -- g
)
)
)
Тем самым мы, во-первых, устраняем повторение имён (деньги) и ссылок (человек1, человек2), а во-вторых, делаем систему масштабируемой: можно обращаться к набору из более (да и менее) чем двух людей.
Здравствуй, Кодт.
К> Смысл заметки в том, что: СИ-ОБРАЗНЫЙ СИНТАКСИС ИСПОЛЬЗУЕТ К> БОЛЬШЕ ЛЕКСЕМ ЧЕМ ЭТО РЕАЛЬНО НЕОБХОДИМО. Я специально для Вас К> заглавными буквами написал смысл. Запомните его. А то, К> понимаете-ли, прочитали сообщение, а смысла так и не поняли.
Сергей! Не в даваясь в детали дискуссии (всё что можно и что нельзя сказали без меня ), вы никогда не задумывались — почему Джордано Бруно кончил карьеру не так, как Галилей?
AF>Сергей! Не в даваясь в детали дискуссии (всё что можно и что нельзя сказали без меня ), вы никогда не задумывались — почему Джордано Бруно кончил карьеру не так, как Галилей?
Оберон все таки вертится?