powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Использование приоритетности операторов или скобки
25 сообщений из 107, страница 4 из 5
Использование приоритетности операторов или скобки
    #38824830
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercurymaytonпропущено...

Да ничего не стыдно. Всё норм. Нельзя быть докой во всём. Голова лопнет.

"расстроил" в том плане, что теперь кому-то придется вспоминать язык, к которому пример выше будет актуален Раз уж привел пример, то нужно довести его до конца ;)
Вопрос касался арифметики целых и вещественных чисел. Да это так... мелочи.
Что там того прогресс-бара пустяк даже если он глюканёт. Вот наши партнёры
до сих пор деньги из SOAP-сервиса передают как double. Я уж и ругался сначала
явно в тикетах. А потом просто забил. Им так удобнее.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824840
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer, вот код на языке Си

Код: plaintext
1.
2.
while ((int c = getc(in)) != EOF)
	putc(c, out);




Аналогичный код на языке Паскаль

Код: pascal
1.
while not Eof(Input) do Write(Output, ReadChar(Input));



Вы сравнили эти участки кода, и сделали следующий вывод
softwarerСишные операции - присваивание, запятая, тернарная - безусловно, относятся к достоинствам языка. Но как видите, в Вашем примере она используется как ненужная заплата на недостаток дизайна стандартной библиотеки :)

Я же сравниваю их, и делаю следующий:
Код на Си оптимальней, так как на каждой итерации цикла, мы делаем одну операцию чтения из потока, в случае аналогичного кода на языке Паскаль, чтение символа происходит дважды, на каждой итерации. Потому присваивание в условии цикла, я не могу назвать недостатком языка, это его преимущество.

Содержит ли мой вывод ошибки ?
Код на Си, выполнится быстрее чем данный конкретный код на языке Паскаль?
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824878
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryВы сравнили эти участки кода, и сделали следующий вывод
Мм.. это вывод в общем безотносительно этих участков кода. Скорее он объясняет, почему я ответил Вам именно этим примером.

SashaMercuryЯ же сравниваю их, и делаю следующий:
Код на Си оптимальней, так как
Саш, попробуйте на секунду остановиться и сформулировать: а что Вы вообще хотели доказать, вступая в дискуссию? Смотрите: изначально речь шла о круглых скобках. Потом - о красоте кода. Потом - об изобразительных возможностях. Теперь - об эффективности. Глядя на всё это, складывается ощущение, что Вы хотите доказать "лучше хоть чем-нибудь неважно чем".

SashaMercuryна каждой итерации цикла, мы делаем одну операцию чтения из потока, в случае аналогичного кода на языке Паскаль, чтение символа происходит дважды, на каждой итерации.
Вы здесь считаете абстрактных попугаев, что делает рассуждения бессмысленными. Просто представьте себе, что переменная C является полем объекта "поток", то есть паскалевский объект реализован примерно так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
private
  C: integer;

function Eof: boolean;
begin
  Result := C <> -1;
end;

function ReadChar: char;
begin
  Result := C; {теряем старший байт}
  C := getc();
end;



Как видите, с одной стороны, все Ваши рассуждения про "два чтения" никуда не уходят, с другой стороны, выполняемые операции прямо-таки демонстративно одинаковы.

SashaMercuryПотому присваивание в условии цикла, я не могу назвать недостатком языка, это его преимущество.
Присваивание в условии никто и не называет недостатком языка. Недостатком дизайна библиотеки я назвал EOF как результат getc. Это влечёт за собой множество неудобств, начиная от int-результата и заканчивая тем, что fgetc таки может возвращать EOF как "очередной прочитанный символ из середины файла" и таки надо использовать feof(). А ещё, если мне не изменяет память, тот же EOF может возвращаться как индикатор ошибки, что делает ситуацию вообще бредовой.

SashaMercuryКод на Си, выполнится быстрее чем данный конкретный код на языке Паскаль?
Представления не имею. В своё время я наблюдал, как два очень крутых прога в течение нескольких лет соревновались "кто быстрее на той или иной задаче", как раз таки один писал на TP, другой на MC. В принципе, учитывая, что C дизайнился именно под максимальную эффективность, можно ожидать от него незначительно лучших результатов (незначительно - потому что основные траты всё равно пойдут на вызовы чтения в ОС). С другой стороны, я помню N случаев, когда Си неожиданно проседал из-за отсутствия какой-либо важной особенности. Скажем, довольно долго он не умел передавать параметры функций через регистры (а сейчас, кстати, умеет?)
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824886
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer...Скажем, довольно долго он не умел передавать параметры функций через регистры (а сейчас, кстати, умеет?)
IMHO:
1) у него сейчас как минимум inline ф-ции есть
2) явно зависит от компилятора. У M$ как минимум уже давно есть __fastcall
http://msdn.microsoft.com/ru-ru/library/6xa169sk.aspx
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824912
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryКод на Си, выполнится быстрее чем данный конкретный код на языке Паскаль?
Протестую. Вопрос не имеет прямого отношения к теме приоритетности.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824914
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev1) у него сейчас как минимум inline ф-ции есть
Они у него есть очень давно, как и у Паскаля. Как и судя по всему уже достаточно давно есть fastcall, спасибо за подсказку.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824948
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,
мой первоначальный вопрос, был в контексте скобок(хотел сравнить 2 участка кода по этому критерию), потому попросил привести аналогичный код, но как мне показалось, что код приведённый вами, всё-же не аналогичен, потому в дальнейшем я проводил рассуждения об участках кода по части идентичности.
Нет, не пытаюсь ни в коем случае сказать что язык Си лучше хоть в чём-то, для меня очевидно, что он лучше во всём, так же как очевиден тот факт, что вы так не считаете, и что ни я, никто другой не сможет вас переубедить, как и очевидно, что это наши субъективные мнения и что писать программы, и получать от этого удовольствие, можно на любом языке программирования
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825024
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Присваивание в условии никто и не называет недостатком языка. Недостатком дизайна библиотеки я назвал EOF как результат getc. Это влечёт за собой множество неудобств, начиная от int-результата и заканчивая тем, что fgetc таки может возвращать EOF как "очередной прочитанный символ из середины файла" и таки надо использовать feof(). А ещё, если мне не изменяет память, тот же EOF может возвращаться как индикатор ошибки, что делает ситуацию вообще бредовой.

Очевидным решение проблемы определения конца файла будет возврат символа не принадлежащего пространству возможных элементов,так как char и int принадлежат пространству integer types, и int является расширением char, то очевидным символом для возврата будет символ из пространства I\C. И тут мы вспоминаем чудесный механизм integer promotion. Потому мне не кажется, что возврат int есть неудобство, это логичное поведение системы.

PS
Вот если бы имели дело с числами Фибоначчи, то очевидной последовательностью конца, были бы две единицы подряд. mayton не даст соврать
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825045
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyJeStoneдавайте еще пробелы vs табы вспомним
Кстати да, давайте. Я постоянно сталкиваюсь с конфликтами слияния веток из-за разных пробелов/табов у разных разработчиков.
Постоянно?
А как же корпоративные соглашения по оформлению кода, возможности различных IDE по замены табов на пробелы, следование контрактам(читать "разделения обязанностей"), при которых каждый разработчик (и только он) разрабатывает свою часть приложения, при этом взаимодействуя с неподконтрольными ему модулями через слабосвязные интерфейсы и прочие прелести командной разработки?
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825054
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeStoneпри которых каждый разработчик (и только он) разрабатывает свою часть приложения,
Этот идиотизм надо было убить ещё лет сорок назад. Но, думаю, до окончательного его изживания я так и не доживу.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825062
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeStoneAnatoly Moskovskyпропущено...

Кстати да, давайте. Я постоянно сталкиваюсь с конфликтами слияния веток из-за разных пробелов/табов у разных разработчиков.
Постоянно?
А как же корпоративные соглашения по оформлению кода, возможности различных IDE по замены табов на пробелы, следование контрактам(читать "разделения обязанностей"), при которых каждый разработчик (и только он) разрабатывает свою часть приложения, при этом взаимодействуя с неподконтрольными ему модулями через слабосвязные интерфейсы и прочие прелести командной разработки?
Ну ты уж не вали всё в одну корзинку. Контракты - это контракты. Это программные сущности.
А табуляторы - это соглашение внутри команды. Собрались. Договорились. Настроили IDE одинаково и пишут.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825063
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryЯ же сравниваю их, и делаю следующий:
Код на Си оптимальней, так как на каждой итерации цикла, мы делаем одну операцию чтения из потока, в случае аналогичного кода на языке Паскаль, чтение символа происходит дважды, на каждой итерацииНичего в Паскале дважды не читается.
eof(файл) не читает символы. Вааще. Эта функция просто смотрит значение флага, который является деталью реализации типа file и изначально находится в состоянии false.
Функция чтения и читает символ и, при необходимости, меняет состояние флага на true.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825066
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerJeStoneпри которых каждый разработчик (и только он) разрабатывает свою часть приложения,
Этот идиотизм надо было убить ещё лет сорок назад. Но, думаю, до окончательного его изживания я так и не доживу.
Это участь особо крупных проектов. Неизбежно вобщем-то.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825067
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerJeStoneпри которых каждый разработчик (и только он) разрабатывает свою часть приложения,
Этот идиотизм надо было убить ещё лет сорок назад. Но, думаю, до окончательного его изживания я так и не доживу.
Это почему?
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825071
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonJeStoneпропущено...

Постоянно?
А как же корпоративные соглашения по оформлению кода, возможности различных IDE по замены табов на пробелы, следование контрактам(читать "разделения обязанностей"), при которых каждый разработчик (и только он) разрабатывает свою часть приложения, при этом взаимодействуя с неподконтрольными ему модулями через слабосвязные интерфейсы и прочие прелести командной разработки?
Ну ты уж не вали всё в одну корзинку. Контракты - это контракты. Это программные сущности.
А табуляторы - это соглашение внутри команды. Собрались. Договорились. Настроили IDE одинаково и пишут.
В данном конкретном случае под контрактом понималась не программная сущность (аля interface), а английское contract (соглашение, договор). И таки, все эти 3 пункта я свалил в одну кучу, потому что все они от части помогают избавить если не от всех конфликтов, то от очень многих
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825072
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryдля меня очевидно, что он лучше во всём,
Так не бывает. Можно нежно любить свой бугатти вейрон, но таки для некоторых задач лучше подходит камаз, а для некоторых - велосипед.

При этом, нежно любя свой бугатти вейрон, стоит таки знать и понимать его недостатки. Скажем, если он сломается где-нибудь под Тюменью, будет достаточно проблематично найти запчасть.

SashaMercuryОчевидным решение проблемы определения конца файла будет возврат символа не принадлежащего пространству возможных элементов
Одно из важных качеств разработчика - умение выбирать лучшее решение, не останавливаясь на очевидном . Описанное Вами - давно известный путь в адъ. Почти все проходили это, засовывая всякие минус единицы в возраст и прочие "что никак не может встретиться". Потом приходят неанглоязычные пользователи, и вдруг оказывается, что виндовая буква "я" совершенно случайно равна EOF (char ведь у нас signed, мы помним, да?). Потом у нас приходит unicode, и вдруг оказывается, что в пространстве int16 перестаёт хватать места. Итдитп., и в итоге оказывается, что в библиотеку таки попадает feof(), потому что гениальной идеи "возврата символа не принадлежащего пространству" таки не хватает, чтобы прикрыть задницу.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825080
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovSashaMercuryЯ же сравниваю их, и делаю следующий:
Код на Си оптимальней, так как на каждой итерации цикла, мы делаем одну операцию чтения из потока, в случае аналогичного кода на языке Паскаль, чтение символа происходит дважды, на каждой итерацииНичего в Паскале дважды не читается.
eof(файл) не читает символы. Вааще. Эта функция просто смотрит значение флага, который является деталью реализации типа file и изначально находится в состоянии false.
Функция чтения и читает символ и, при необходимости, меняет состояние флага на true.

Да ну. Как же в первый раз этот флаг установится ? Если пока ничего не было прочитано, и первый символ и есть конец файла. Пока, я вижу лишь лишние операции, не более.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825089
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerSashaMercuryдля меня очевидно, что он лучше во всём,
Так не бывает. Можно нежно любить свой бугатти вейрон, но таки для некоторых задач лучше подходит камаз, а для некоторых - велосипед.

При этом, нежно любя свой бугатти вейрон, стоит таки знать и понимать его недостатки. Скажем, если он сломается где-нибудь под Тюменью, будет достаточно проблематично найти запчасть.

собственно, по этой причине, я и написал про субъективность мнений

softwarerSashaMercuryОчевидным решение проблемы определения конца файла будет возврат символа не принадлежащего пространству возможных элементов
Одно из важных качеств разработчика - умение выбирать лучшее решение, не останавливаясь на очевидном . Описанное Вами - давно известный путь в адъ. Почти все проходили это, засовывая всякие минус единицы в возраст и прочие "что никак не может встретиться". Потом приходят неанглоязычные пользователи, и вдруг оказывается, что виндовая буква "я" совершенно случайно равна EOF (char ведь у нас signed, мы помним, да?). Потом у нас приходит unicode, и вдруг оказывается, что в пространстве int16 перестаёт хватать места. Итдитп., и в итоге оказывается, что в библиотеку таки попадает feof(), потому что гениальной идеи "возврата символа не принадлежащего пространству" таки не хватает, чтобы прикрыть задницу.
не готов ответить. (хотя мог бы заняться демагогией и сказать что это проблемы кодировок, но не буду )
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825096
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭто участь особо крупных проектов. Неизбежно вобщем-то.
Это участь плохо управляемых проектов. Соглашусь с тем, что у "особо крупных" повышен риск оказаться "недостаточно хорошо управляемым", тем не менее, последствия вполне очевидны.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825103
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryсобственно, по этой причине, я и написал про субъективность мнений
А где Вы здесь видите субъективность? То, что на бугатти не стоит возить три тонны щебёнки - факт. То, что под Тюменью вряд ли есть для него запчасти - тоже факт. Субъективность в том, что "любить или не любить", но любовью не стоит закрывать факты. Собственно, любовь к бугатти проявится как раз в том, чтобы возить щебёнку на камазе :)
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825105
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryДа ну. Как же в первый раз этот флаг установится ?Натурально, процедурами open/reset. Если я правильно помню имена
Только и они ничего читать не будут: если файл успешно открыт/создан - признак "конец файла" установлен в ложь.Если пока ничего не было прочитано, и первый символ и есть конец файлаПостарайтесь, всё-таки, абстрагироваться от сишного подхода.
Паскалевский код сначала проверяет достижение конца файла и только потом пробует читать. Просто потому, что поведение функций чтения по достижении конца файла - не определено. Могут вернуть #0, могут последний прочитанный символ. Имеют право вернуть результат random(). Неопределённое поведение оно такое Пока, я вижу лишь лишние операции, не более.Уж не обижайтесь, но "есть много, друг Горацио ...".
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825133
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeStoneЭто почему?
Потому что нетехнологично. Просто представьте себе, как товарищ Сталин говорит: хочу, чтобы в параде девятого мая принял участие наш новый бомбардировщик. А ему отвечают: не получится, потому что токарь дядя Вася ушёл в запой, а узел крепления элеронов у нас кроме него никто не вытачивает.

"Каждый ковыряет свою песочницу" - это типичная идея неуправляемого проекта, без общей идеологии, без общего стиля и без команды. Исход такого проекта немного предсказуем. А бытиё.... помню один анекдотический случай. В конторе, в которой к моменту моего прихода был принят такой стиль. Прихожу к человеку, ведавшему неким модулем. Говорю: хочу вот такую доработку. Он говорит: о, отличная мысль. Я говорю: я посмотрел, для этого надо добавить одну вот такую строчку вот сюда. Он: круто. Я говорю: когда будет готово? Он: где-то через месяц. Я: Ты охренел? Там же одна строчка, и это сэкономит мне дня три работы в том, что мне нужно сдать через неделю. Он: я сейчас занят приоритетной задачей в другом модуле, приходи через месяц. В итоге пол-дня бегал, пока выбил таки разрешение вставить в чужой модуль эту одну строчку. И ещё хорошо, что выбил.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825145
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer, давай другую крайность представим. Тебе дали доступа на модуль. Ты тихонько закоммитил...
... и тут началось!
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825154
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerJeStoneЭто почему?
Потому что нетехнологично. Просто представьте себе, как товарищ Сталин говорит: хочу, чтобы в параде девятого мая принял участие наш новый бомбардировщик. А ему отвечают: не получится, потому что токарь дядя Вася ушёл в запой, а узел крепления элеронов у нас кроме него никто не вытачивает.

"Каждый ковыряет свою песочницу" - это типичная идея неуправляемого проекта, без общей идеологии, без общего стиля и без команды. Исход такого проекта немного предсказуем. А бытиё.... помню один анекдотический случай. В конторе, в которой к моменту моего прихода был принят такой стиль. Прихожу к человеку, ведавшему неким модулем. Говорю: хочу вот такую доработку. Он говорит: о, отличная мысль. Я говорю: я посмотрел, для этого надо добавить одну вот такую строчку вот сюда. Он: круто. Я говорю: когда будет готово? Он: где-то через месяц. Я: Ты охренел? Там же одна строчка, и это сэкономит мне дня три работы в том, что мне нужно сдать через неделю. Он: я сейчас занят приоритетной задачей в другом модуле, приходи через месяц. В итоге пол-дня бегал, пока выбил таки разрешение вставить в чужой модуль эту одну строчку. И ещё хорошо, что выбил.
Дядю Васю за невозможность исполнения своих обязанностей и пьянство стоит уволить. А что касается второго случая, то что вам мешало отправить pull request своему коллеге? Это никак не конфликтует с концепцией разделения обязанностей по разработке различных модулей приложения.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38825190
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonsoftwarer, давай другую крайность представим. Тебе дали доступа на модуль. Ты тихонько закоммитил...
... и тут началось!
А что началось-то? Ну максимум, кто-то потратит пять секунд времени, чтобы откатить мой коммит.

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

JeStoneА что касается второго случая, то что вам мешало отправить pull request своему коллеге?
Если обратите внимание, я в точности это и сделал. Ну с той разницей, что лет на десять раньше, чем появилось такое понятие.

JeStoneЭто никак не конфликтует с концепцией разделения обязанностей по разработке различных модулей приложения.
Никак. Просто сама концепция конфликтует со здравым смыслом.
...
Рейтинг: 0 / 0
25 сообщений из 107, страница 4 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Использование приоритетности операторов или скобки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]