|
|
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercurymaytonпропущено... Да ничего не стыдно. Всё норм. Нельзя быть докой во всём. Голова лопнет. "расстроил" в том плане, что теперь кому-то придется вспоминать язык, к которому пример выше будет актуален Раз уж привел пример, то нужно довести его до конца ;) Вопрос касался арифметики целых и вещественных чисел. Да это так... мелочи. Что там того прогресс-бара пустяк даже если он глюканёт. Вот наши партнёры до сих пор деньги из SOAP-сервиса передают как double. Я уж и ругался сначала явно в тикетах. А потом просто забил. Им так удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:37 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer, вот код на языке Си Код: plaintext 1. 2. Аналогичный код на языке Паскаль Код: pascal 1. Вы сравнили эти участки кода, и сделали следующий вывод softwarerСишные операции - присваивание, запятая, тернарная - безусловно, относятся к достоинствам языка. Но как видите, в Вашем примере она используется как ненужная заплата на недостаток дизайна стандартной библиотеки :) Я же сравниваю их, и делаю следующий: Код на Си оптимальней, так как на каждой итерации цикла, мы делаем одну операцию чтения из потока, в случае аналогичного кода на языке Паскаль, чтение символа происходит дважды, на каждой итерации. Потому присваивание в условии цикла, я не могу назвать недостатком языка, это его преимущество. Содержит ли мой вывод ошибки ? Код на Си, выполнится быстрее чем данный конкретный код на языке Паскаль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:44 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВы сравнили эти участки кода, и сделали следующий вывод Мм.. это вывод в общем безотносительно этих участков кода. Скорее он объясняет, почему я ответил Вам именно этим примером. SashaMercuryЯ же сравниваю их, и делаю следующий: Код на Си оптимальней, так как Саш, попробуйте на секунду остановиться и сформулировать: а что Вы вообще хотели доказать, вступая в дискуссию? Смотрите: изначально речь шла о круглых скобках. Потом - о красоте кода. Потом - об изобразительных возможностях. Теперь - об эффективности. Глядя на всё это, складывается ощущение, что Вы хотите доказать "лучше хоть чем-нибудь неважно чем". SashaMercuryна каждой итерации цикла, мы делаем одну операцию чтения из потока, в случае аналогичного кода на языке Паскаль, чтение символа происходит дважды, на каждой итерации. Вы здесь считаете абстрактных попугаев, что делает рассуждения бессмысленными. Просто представьте себе, что переменная C является полем объекта "поток", то есть паскалевский объект реализован примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Как видите, с одной стороны, все Ваши рассуждения про "два чтения" никуда не уходят, с другой стороны, выполняемые операции прямо-таки демонстративно одинаковы. SashaMercuryПотому присваивание в условии цикла, я не могу назвать недостатком языка, это его преимущество. Присваивание в условии никто и не называет недостатком языка. Недостатком дизайна библиотеки я назвал EOF как результат getc. Это влечёт за собой множество неудобств, начиная от int-результата и заканчивая тем, что fgetc таки может возвращать EOF как "очередной прочитанный символ из середины файла" и таки надо использовать feof(). А ещё, если мне не изменяет память, тот же EOF может возвращаться как индикатор ошибки, что делает ситуацию вообще бредовой. SashaMercuryКод на Си, выполнится быстрее чем данный конкретный код на языке Паскаль? Представления не имею. В своё время я наблюдал, как два очень крутых прога в течение нескольких лет соревновались "кто быстрее на той или иной задаче", как раз таки один писал на TP, другой на MC. В принципе, учитывая, что C дизайнился именно под максимальную эффективность, можно ожидать от него незначительно лучших результатов (незначительно - потому что основные траты всё равно пойдут на вызовы чтения в ОС). С другой стороны, я помню N случаев, когда Си неожиданно проседал из-за отсутствия какой-либо важной особенности. Скажем, довольно долго он не умел передавать параметры функций через регистры (а сейчас, кстати, умеет?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 14:15 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer...Скажем, довольно долго он не умел передавать параметры функций через регистры (а сейчас, кстати, умеет?) IMHO: 1) у него сейчас как минимум inline ф-ции есть 2) явно зависит от компилятора. У M$ как минимум уже давно есть __fastcall http://msdn.microsoft.com/ru-ru/library/6xa169sk.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 14:22 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryКод на Си, выполнится быстрее чем данный конкретный код на языке Паскаль? Протестую. Вопрос не имеет прямого отношения к теме приоритетности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 14:33 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev1) у него сейчас как минимум inline ф-ции есть Они у него есть очень давно, как и у Паскаля. Как и судя по всему уже достаточно давно есть fastcall, спасибо за подсказку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 14:34 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer, мой первоначальный вопрос, был в контексте скобок(хотел сравнить 2 участка кода по этому критерию), потому попросил привести аналогичный код, но как мне показалось, что код приведённый вами, всё-же не аналогичен, потому в дальнейшем я проводил рассуждения об участках кода по части идентичности. Нет, не пытаюсь ни в коем случае сказать что язык Си лучше хоть в чём-то, для меня очевидно, что он лучше во всём, так же как очевиден тот факт, что вы так не считаете, и что ни я, никто другой не сможет вас переубедить, как и очевидно, что это наши субъективные мнения и что писать программы, и получать от этого удовольствие, можно на любом языке программирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 14:50 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer Присваивание в условии никто и не называет недостатком языка. Недостатком дизайна библиотеки я назвал EOF как результат getc. Это влечёт за собой множество неудобств, начиная от int-результата и заканчивая тем, что fgetc таки может возвращать EOF как "очередной прочитанный символ из середины файла" и таки надо использовать feof(). А ещё, если мне не изменяет память, тот же EOF может возвращаться как индикатор ошибки, что делает ситуацию вообще бредовой. Очевидным решение проблемы определения конца файла будет возврат символа не принадлежащего пространству возможных элементов,так как char и int принадлежат пространству integer types, и int является расширением char, то очевидным символом для возврата будет символ из пространства I\C. И тут мы вспоминаем чудесный механизм integer promotion. Потому мне не кажется, что возврат int есть неудобство, это логичное поведение системы. PS Вот если бы имели дело с числами Фибоначчи, то очевидной последовательностью конца, были бы две единицы подряд. mayton не даст соврать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 15:30 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyJeStoneдавайте еще пробелы vs табы вспомним Кстати да, давайте. Я постоянно сталкиваюсь с конфликтами слияния веток из-за разных пробелов/табов у разных разработчиков. Постоянно? А как же корпоративные соглашения по оформлению кода, возможности различных IDE по замены табов на пробелы, следование контрактам(читать "разделения обязанностей"), при которых каждый разработчик (и только он) разрабатывает свою часть приложения, при этом взаимодействуя с неподконтрольными ему модулями через слабосвязные интерфейсы и прочие прелести командной разработки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 15:42 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
JeStoneпри которых каждый разработчик (и только он) разрабатывает свою часть приложения, Этот идиотизм надо было убить ещё лет сорок назад. Но, думаю, до окончательного его изживания я так и не доживу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 15:46 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
JeStoneAnatoly Moskovskyпропущено... Кстати да, давайте. Я постоянно сталкиваюсь с конфликтами слияния веток из-за разных пробелов/табов у разных разработчиков. Постоянно? А как же корпоративные соглашения по оформлению кода, возможности различных IDE по замены табов на пробелы, следование контрактам(читать "разделения обязанностей"), при которых каждый разработчик (и только он) разрабатывает свою часть приложения, при этом взаимодействуя с неподконтрольными ему модулями через слабосвязные интерфейсы и прочие прелести командной разработки? Ну ты уж не вали всё в одну корзинку. Контракты - это контракты. Это программные сущности. А табуляторы - это соглашение внутри команды. Собрались. Договорились. Настроили IDE одинаково и пишут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 15:51 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЯ же сравниваю их, и делаю следующий: Код на Си оптимальней, так как на каждой итерации цикла, мы делаем одну операцию чтения из потока, в случае аналогичного кода на языке Паскаль, чтение символа происходит дважды, на каждой итерацииНичего в Паскале дважды не читается. eof(файл) не читает символы. Вааще. Эта функция просто смотрит значение флага, который является деталью реализации типа file и изначально находится в состоянии false. Функция чтения и читает символ и, при необходимости, меняет состояние флага на true. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 15:51 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerJeStoneпри которых каждый разработчик (и только он) разрабатывает свою часть приложения, Этот идиотизм надо было убить ещё лет сорок назад. Но, думаю, до окончательного его изживания я так и не доживу. Это участь особо крупных проектов. Неизбежно вобщем-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 15:52 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerJeStoneпри которых каждый разработчик (и только он) разрабатывает свою часть приложения, Этот идиотизм надо было убить ещё лет сорок назад. Но, думаю, до окончательного его изживания я так и не доживу. Это почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 15:53 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonJeStoneпропущено... Постоянно? А как же корпоративные соглашения по оформлению кода, возможности различных IDE по замены табов на пробелы, следование контрактам(читать "разделения обязанностей"), при которых каждый разработчик (и только он) разрабатывает свою часть приложения, при этом взаимодействуя с неподконтрольными ему модулями через слабосвязные интерфейсы и прочие прелести командной разработки? Ну ты уж не вали всё в одну корзинку. Контракты - это контракты. Это программные сущности. А табуляторы - это соглашение внутри команды. Собрались. Договорились. Настроили IDE одинаково и пишут. В данном конкретном случае под контрактом понималась не программная сущность (аля interface), а английское contract (соглашение, договор). И таки, все эти 3 пункта я свалил в одну кучу, потому что все они от части помогают избавить если не от всех конфликтов, то от очень многих ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 15:55 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryдля меня очевидно, что он лучше во всём, Так не бывает. Можно нежно любить свой бугатти вейрон, но таки для некоторых задач лучше подходит камаз, а для некоторых - велосипед. При этом, нежно любя свой бугатти вейрон, стоит таки знать и понимать его недостатки. Скажем, если он сломается где-нибудь под Тюменью, будет достаточно проблематично найти запчасть. SashaMercuryОчевидным решение проблемы определения конца файла будет возврат символа не принадлежащего пространству возможных элементов Одно из важных качеств разработчика - умение выбирать лучшее решение, не останавливаясь на очевидном . Описанное Вами - давно известный путь в адъ. Почти все проходили это, засовывая всякие минус единицы в возраст и прочие "что никак не может встретиться". Потом приходят неанглоязычные пользователи, и вдруг оказывается, что виндовая буква "я" совершенно случайно равна EOF (char ведь у нас signed, мы помним, да?). Потом у нас приходит unicode, и вдруг оказывается, что в пространстве int16 перестаёт хватать места. Итдитп., и в итоге оказывается, что в библиотеку таки попадает feof(), потому что гениальной идеи "возврата символа не принадлежащего пространству" таки не хватает, чтобы прикрыть задницу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 15:56 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovSashaMercuryЯ же сравниваю их, и делаю следующий: Код на Си оптимальней, так как на каждой итерации цикла, мы делаем одну операцию чтения из потока, в случае аналогичного кода на языке Паскаль, чтение символа происходит дважды, на каждой итерацииНичего в Паскале дважды не читается. eof(файл) не читает символы. Вааще. Эта функция просто смотрит значение флага, который является деталью реализации типа file и изначально находится в состоянии false. Функция чтения и читает символ и, при необходимости, меняет состояние флага на true. Да ну. Как же в первый раз этот флаг установится ? Если пока ничего не было прочитано, и первый символ и есть конец файла. Пока, я вижу лишь лишние операции, не более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 16:00 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerSashaMercuryдля меня очевидно, что он лучше во всём, Так не бывает. Можно нежно любить свой бугатти вейрон, но таки для некоторых задач лучше подходит камаз, а для некоторых - велосипед. При этом, нежно любя свой бугатти вейрон, стоит таки знать и понимать его недостатки. Скажем, если он сломается где-нибудь под Тюменью, будет достаточно проблематично найти запчасть. собственно, по этой причине, я и написал про субъективность мнений softwarerSashaMercuryОчевидным решение проблемы определения конца файла будет возврат символа не принадлежащего пространству возможных элементов Одно из важных качеств разработчика - умение выбирать лучшее решение, не останавливаясь на очевидном . Описанное Вами - давно известный путь в адъ. Почти все проходили это, засовывая всякие минус единицы в возраст и прочие "что никак не может встретиться". Потом приходят неанглоязычные пользователи, и вдруг оказывается, что виндовая буква "я" совершенно случайно равна EOF (char ведь у нас signed, мы помним, да?). Потом у нас приходит unicode, и вдруг оказывается, что в пространстве int16 перестаёт хватать места. Итдитп., и в итоге оказывается, что в библиотеку таки попадает feof(), потому что гениальной идеи "возврата символа не принадлежащего пространству" таки не хватает, чтобы прикрыть задницу. не готов ответить. (хотя мог бы заняться демагогией и сказать что это проблемы кодировок, но не буду ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 16:06 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonЭто участь особо крупных проектов. Неизбежно вобщем-то. Это участь плохо управляемых проектов. Соглашусь с тем, что у "особо крупных" повышен риск оказаться "недостаточно хорошо управляемым", тем не менее, последствия вполне очевидны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 16:09 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryсобственно, по этой причине, я и написал про субъективность мнений А где Вы здесь видите субъективность? То, что на бугатти не стоит возить три тонны щебёнки - факт. То, что под Тюменью вряд ли есть для него запчасти - тоже факт. Субъективность в том, что "любить или не любить", но любовью не стоит закрывать факты. Собственно, любовь к бугатти проявится как раз в том, чтобы возить щебёнку на камазе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 16:11 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДа ну. Как же в первый раз этот флаг установится ?Натурально, процедурами open/reset. Если я правильно помню имена Только и они ничего читать не будут: если файл успешно открыт/создан - признак "конец файла" установлен в ложь.Если пока ничего не было прочитано, и первый символ и есть конец файлаПостарайтесь, всё-таки, абстрагироваться от сишного подхода. Паскалевский код сначала проверяет достижение конца файла и только потом пробует читать. Просто потому, что поведение функций чтения по достижении конца файла - не определено. Могут вернуть #0, могут последний прочитанный символ. Имеют право вернуть результат random(). Неопределённое поведение оно такое Пока, я вижу лишь лишние операции, не более.Уж не обижайтесь, но "есть много, друг Горацио ...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 16:12 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
JeStoneЭто почему? Потому что нетехнологично. Просто представьте себе, как товарищ Сталин говорит: хочу, чтобы в параде девятого мая принял участие наш новый бомбардировщик. А ему отвечают: не получится, потому что токарь дядя Вася ушёл в запой, а узел крепления элеронов у нас кроме него никто не вытачивает. "Каждый ковыряет свою песочницу" - это типичная идея неуправляемого проекта, без общей идеологии, без общего стиля и без команды. Исход такого проекта немного предсказуем. А бытиё.... помню один анекдотический случай. В конторе, в которой к моменту моего прихода был принят такой стиль. Прихожу к человеку, ведавшему неким модулем. Говорю: хочу вот такую доработку. Он говорит: о, отличная мысль. Я говорю: я посмотрел, для этого надо добавить одну вот такую строчку вот сюда. Он: круто. Я говорю: когда будет готово? Он: где-то через месяц. Я: Ты охренел? Там же одна строчка, и это сэкономит мне дня три работы в том, что мне нужно сдать через неделю. Он: я сейчас занят приоритетной задачей в другом модуле, приходи через месяц. В итоге пол-дня бегал, пока выбил таки разрешение вставить в чужой модуль эту одну строчку. И ещё хорошо, что выбил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 16:28 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer, давай другую крайность представим. Тебе дали доступа на модуль. Ты тихонько закоммитил... ... и тут началось! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 16:35 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerJeStoneЭто почему? Потому что нетехнологично. Просто представьте себе, как товарищ Сталин говорит: хочу, чтобы в параде девятого мая принял участие наш новый бомбардировщик. А ему отвечают: не получится, потому что токарь дядя Вася ушёл в запой, а узел крепления элеронов у нас кроме него никто не вытачивает. "Каждый ковыряет свою песочницу" - это типичная идея неуправляемого проекта, без общей идеологии, без общего стиля и без команды. Исход такого проекта немного предсказуем. А бытиё.... помню один анекдотический случай. В конторе, в которой к моменту моего прихода был принят такой стиль. Прихожу к человеку, ведавшему неким модулем. Говорю: хочу вот такую доработку. Он говорит: о, отличная мысль. Я говорю: я посмотрел, для этого надо добавить одну вот такую строчку вот сюда. Он: круто. Я говорю: когда будет готово? Он: где-то через месяц. Я: Ты охренел? Там же одна строчка, и это сэкономит мне дня три работы в том, что мне нужно сдать через неделю. Он: я сейчас занят приоритетной задачей в другом модуле, приходи через месяц. В итоге пол-дня бегал, пока выбил таки разрешение вставить в чужой модуль эту одну строчку. И ещё хорошо, что выбил. Дядю Васю за невозможность исполнения своих обязанностей и пьянство стоит уволить. А что касается второго случая, то что вам мешало отправить pull request своему коллеге? Это никак не конфликтует с концепцией разделения обязанностей по разработке различных модулей приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 16:43 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonsoftwarer, давай другую крайность представим. Тебе дали доступа на модуль. Ты тихонько закоммитил... ... и тут началось! А что началось-то? Ну максимум, кто-то потратит пять секунд времени, чтобы откатить мой коммит. JeStoneДядю Васю за невозможность исполнения своих обязанностей и пьянство стоит уволить. Верно. А работу стоит организовать так, чтобы пьянство одного дяди Васи не срывало появление бомбардировщика на параде. JeStoneА что касается второго случая, то что вам мешало отправить pull request своему коллеге? Если обратите внимание, я в точности это и сделал. Ну с той разницей, что лет на десять раньше, чем появилось такое понятие. JeStoneЭто никак не конфликтует с концепцией разделения обязанностей по разработке различных модулей приложения. Никак. Просто сама концепция конфликтует со здравым смыслом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 17:06 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38825024&tid=1341143]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
162ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 456ms |

| 0 / 0 |
