|
|
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Иногда сталкиваюсь с кодом, в котором разработчики не используют скобки, а выстраивают выражения используя приаритетность выполнения операторов. я вот на память эту приоритетность не помню, мне удобнее все оформлять скобками. Насколько использование приоритетности выполнения операторов прибавляет крутизны. По мне так просто создается плохочитаемый код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 15:20 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
George-III, наоборот, лишние скобки создают нечитаемый код. поэтому лишние скобки нужно убирать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 15:42 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
"Некоторые разработчики думают, что мировой запас скобок жёстко ограничен, и их следует использовать только в самых необходимых случаях" (с) одна хорошая книга по программированию. 1. Не помните приоритетность - плохо. Равно можете не помнить правила дорожного движения, правила грамматики итд. 2. "Вам удобнее" и "Вам плохо читаемо" - это не аргумент. 3. Крутизна тут не при чём. 4. Нехватка скобок ухудшает читаемость кода. Избыток скобок ухудшает читаемость кода. Слишком длинные и сложные выражения, в том числе со скобками и в том числе без скобок, ухудшают читаемость кода. В любом случае важна адекватность и чувство меры. 5. Идеального кода в мире мало. Важным для программиста является умение разобраться в неидеальном коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 15:42 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
George-IIIя вот на память эту приоритетность не помню, мне удобнее все оформлять скобками. Если ты не знаешь язык программирования, на котором пишешь -- учи его. Приоритеты -- одна из составляющих языка программ. Во многих (в большинстве) ЯП приоритеты операций более-менее соответствуют приоритету аналогичных операций из математики и булевой алгебры. Учи математику и булеву алгебру, если ты ещё их не знаешь (хотя это совсем странно, 4 класс школы, если я не ошибаюсь, а булева -- нач. курс института, но на это я дам подсказку -- AND -- называют логическим умножением (& или && ), OR -- логическим сложением (| или ||), поэтому относительные приоритеты у этих операций такие же, как и у соотв. операций алгебры чисел -- у AND больше, у OR меньше. Запомнив эти другие названия этих операций ты всегда будешь помнить их приоритеты. Надо ещё запомнить, что логическое НЕ имеет самый большой приоритет (больше AND и OR), можно считать, что NOT -- это логический унарный минус (смена знака). А XOR используется достаточно редко, там можно и скобки поставить.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 15:55 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer"Некоторые разработчики думают, что мировой запас скобок жёстко ограничен, и их следует использовать только в самых необходимых случаях" (с) одна хорошая книга по программированию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:04 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
MasterZivВо многих (в большинстве) ЯП приоритеты операций более-менее соответствуют приоритету аналогичных операций из математики и булевой алгебры. Проблемы с приоритетом идут как правило на стыке арифметических и логических операций. Ещё бывают вопросы с приоритетом сравнения, ну и изредка экзотика типа порядка выполнения 1 >> 2 >> 3. Вот за что не люблю си-подобные языки, так это как раз за кучу "лишних" скобок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:19 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerНе помните приоритетность - плохо. Равно можете не помнить правила дорожного движения, правила грамматики итд.Приоритетность в разных языках и даже диалектах разная. В отличие от ПДД. Я бы посмотрел, как бы ты помнил ПДД, будь они свои для каждой улицы... George-IIIНасколько использование приоритетности выполнения операторов прибавляет крутизны. По мне так просто создается плохочитаемый код. Для начала подели приоритетность на абсолютную и языкозависимую. Использование первой естественно. Использование второй - более чем сомнительное занятие. Код не только плохочитаем, но и может оказаться непереносимым. Например, в MS SQL приоритет XOR выше, чем у NOT, а в MySQL наоборот... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:22 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
AkinasoftwarerНе помните приоритетность - плохо. Равно можете не помнить правила дорожного движения, правила грамматики итд.Приоритетность в разных языках и даже диалектах разная. В отличие от ПДД. Я бы посмотрел, как бы ты помнил ПДД, будь они свои для каждой улицы... Я бы посмотрел, как ты программируешь на наборе языков, сравнимом с количеством улиц. ПДД свои для каждой страны, но особых проблем у меня не возникло. Просто перед пересечением границы стоит прочитать список "что там не так и как именно". При этом пересекать границы приходится пожалуй что чаще, чем менять языки программирования. Ну а для того, что входит в текущий набор... понимать приоритеты для трёх-четырёх языков опять-таки никаких проблем не вызывает. AkinaДля начала подели приоритетность на абсолютную и языкозависимую. Использование первой естественно. Использование второй - более чем сомнительное занятие. Код не только плохочитаем, но и может оказаться непереносимым. Например, в MS SQL приоритет XOR выше, чем у NOT, а в MySQL наоборот... Блестящий совет. То есть завтра какой-нибудь придурок делает какую-нибудь явную хрень (типа приоритета XOR выше, чем у NOT), и сразу же тот код, который сегодня был естественным и хорошим, завтра же становится более чем сомнительным и плохим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:29 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
MasterZivнаоборот, лишние скобки создают нечитаемый код. поэтому лишние скобки нужно убирать.LISP не может согласиться с вами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:49 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerНапример, в MS SQL приоритет XOR выше, чем у NOT Хотя если секунду подумать, вообще интересно. Как тогда этот транслятор обходится с выражением NOT A XOR NOT B. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:51 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за ответы MasterZivУчи математику и булеву алгебру, если ты ещё их не знаешь (хотя это совсем странно, 4 класс школы, если я не ошибаюсь, а булева -- нач. курс института Нет, я знаю приоритеты и арифметических операторов (*,+,/,-). И операторов булевой алгебры, просто для сложных выражений, которые составлены из множества булевых операторов, гораздо проще ориентироваться в коде, если приоритеты выставляются круглыми скобками. MasterZiv но на это я дам подсказку -- AND -- называют логическим умножением (& или && ), OR -- логическим сложением (| или ||), поэтому относительные приоритеты у этих операций такие же, как и у соотв. операций алгебры чисел -- у AND больше, у OR меньше. Запомнив эти другие названия этих операций ты всегда будешь помнить их приоритеты. Надо ещё запомнить, что логическое НЕ имеет самый большой приоритет (больше AND и OR), можно считать, что NOT -- это логический унарный минус (смена знака). А XOR используется достаточно редко, там можно и скобки поставить.) Спасибо, тоже известно, но не помешает продублировать в памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 17:01 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerТо есть завтра какой-нибудь придурок делает какую-нибудь явную хрень (типа приоритета XOR выше, чем у NOT), и сразу же тот код, который сегодня был естественным и хорошим, завтра же становится более чем сомнительным и плохим. Нет, он и раньше был плохим, просто не каждый это понимал. Пример такого разночтения я привёл. И те, кто переносит свои выросшие проекты с MySQL на MS SQL, хлебают своего же дерьма полной ложкой, если заблаговременно не позаботились в т.ч. и об этой стороне переносимости кода. Что же до "придурок" - те системы, которые широко используются, настолько широко, что с их пониманием приоритетности приходится считаться, создают вовсе даже не придурки. И их понимание приоритетности никогда не строится на пустом месте и не высасывается из пальца. Прежде чем называть их придурками, надо получить на это право - как минимум созданием чего-либо аналогичного по масштабу значимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 17:24 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarersoftwarerНапример, в MS SQL приоритет XOR выше, чем у NOT Хотя если секунду подумать, вообще интересно. Как тогда этот транслятор обходится с выражением NOT A XOR NOT B. Вариантов два. NOT (A XOR NOT B) - так посчитает MS SQL (NOT A) XOR (NOT B) - так посчитает MySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 17:28 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Сегодняшняя неделя пройдет под флагом "синтаксических холиваров". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 17:39 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
AkinasoftwarerТо есть завтра какой-нибудь придурок делает какую-нибудь явную хрень (типа приоритета XOR выше, чем у NOT), и сразу же тот код, который сегодня был естественным и хорошим, завтра же становится более чем сомнительным и плохим. Нет, он и раньше был плохим, просто не каждый это понимал. В том числе Akina 16944631 , согласно которому он был "естественным" до тех пор, пока у всех было одинаково. AkinaИ те, кто переносит свои выросшие проекты с MySQL на MS SQL, хлебают своего же дерьма полной ложкой, если заблаговременно не позаботились в т.ч. и об этой стороне переносимости кода. Как бы деликатно сказать.... сама постановка вопроса настолько идиотская, что вовсе не приоритет операций будет в этом случае главной проблемой. AkinaЧто же до "придурок" - те системы, которые широко используются, настолько широко, что с их пониманием приоритетности приходится считаться, создают вовсе даже не придурки. И их понимание приоритетности никогда не строится на пустом месте и не высасывается из пальца. Вы плохо представляете себе жизненный цикл систем. Скажем, однажды, в конце семидесятых годов, некоторые люди, которые писали на ассемблере первую версию Oracle, выбрали для хранения строк "паскалевский" формат, ибо им так было удобнее по их инструментальным средствам. Чуть позже, в конце восьмидесятых годов, другие люди, которые писали альтернативные rdbms на сях, выбрали для хранения строк "сишный" формат, ибо им так было удобнее по их инструментальным средствам. Прямым следствием этих двух решений стали бущующий по сей день идиотизм "пустая строка должна отличаться от null" и флейм "в оракле строки не как везде". Подобные эпизоды, безусловно, появляются не на пустом месте, но если Вы думаете, что где-то там сидят высоколобые мудрые разработчики и тщательнейше планируют все варианты и их последствия на сорок лет вперёд, то Вы глубоко заблуждаетесь. Тем не менее, если о пустых строках в принципе можно спорить, то ряд подобных "не из пальца" решений иначе как идиотизмом не назовёшь. Скажем, в том же MSSQL очень долго unique constraint допускал один и только один null в таблице, а на попытку вставить второй говорил "нарушение уникальности". И описанная Вами оригинальная схема приоритетов - если это действительно так - ровно из той же серии. Хотя у того и другого, безусловно, есть какие-то внутренние причины, и при желании даже можно раскопать, какие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 17:40 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
AkinaВариантов два. NOT (A XOR NOT B) - так посчитает MS SQL По идее, он вообще должен выдать синтаксическую ошибку в этом случае и требовать записать NOT A XOR (NOT B). В противном случае грамматика вместо LR(x) или чего-нибудь другого приятного становится контекстно-свободной с соответствующими последствиями для удобства и эффективности транслятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 17:45 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Я тут на бумажке таблицу истинности набросал. Вобщем Код: plaintext 1. А вы говорите - слон... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 17:52 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonЯ тут на бумажке таблицу истинности набросал. Вобщем Дык. Именно преобразованием в обратную сторону я это и получил, прикидывая, для чего такие приоритеты вообще могут понадобиться :) Правда имхо такие вещи нужно делать в уме, равно как всякие not (a and b) etc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 17:57 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Если не путаю: Код: sql 1. т.е. вообще пофиг что приоритетнее XOR или NOT Приведите кто-нибудь реальный пример когда приоритет меняет результат. Я такой придумать не смог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:11 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Dima T, Вы правы, если говорить только о XOR и NOT. Проблему представляет другое, а именно то, что против всякой привычной логики, XOR оказывается по приоритету выше AND. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:19 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
George-III просто для сложных выражений , которые составлены из множества булевых операторов, гораздо проще ориентироваться в коде, если приоритеты выставляются круглыми скобками.Судя по начавшемуся холиварчику, следует не только ставить скобки, но и желательно весьма сложные выражения подсчитывать за несколько ходов, разделяя их на более простые и храня промежуточные результаты в переменных. Хотя, вам неплохо было бы привести пример сложного безскобочного выражения, так было бы яснее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:22 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Вот достаточно частый пример который я объясняю своим девелоперам. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:22 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
For AllLISP не может согласиться с вами В лиспе лишних скобок нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:39 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyFor AllLISP не может согласиться с вами В лиспе лишних скобок нет :) +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:48 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
S.G.желательно весьма сложные выражения подсчитывать за несколько ходов, разделяя их на более простые и храня промежуточные результаты в переменных.До завершения стадии отладки это может быть полезным. softwarerописанная Вами оригинальная схема приоритетов - если это действительно так - ровно из той же серии.Несомненно. Но она немного упрощает жизнь. PS. Мне лично скобок как бы не жалко. И лишних переменных тоже. Читабельность кода мне роднее и дороже - впрочем, я не пишу критичных секций, так что дополнительные миллисекунды и байты погоды не делают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:49 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Проблемы с приоритетом идут как правило на стыке арифметических и логических операций. тут достаточно помнить, что приоритеты арифметических операций и операций отношения больше, чем у логических. Вот за что не люблю си-подобные языки, так это как раз за кучу "лишних" скобок. их там как раз нет, за это люби свой любимый паскаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 19:19 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
For AllMasterZivнаоборот, лишние скобки создают нечитаемый код. поэтому лишние скобки нужно убирать.LISP не может согласиться с вами в лиспе вообще таких проблем нет, там нет приоритетов операций. скобок конечно дофига... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 19:22 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Как уменьшить скобки. Со ссылкой на http://bytes.com/topic/c/answers/219683-pros-cons-define-begin Код: plaintext 1. 2. 3. 4. 5. converts this: Код: plaintext 1. 2. 3. into this: Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 19:37 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
MasterZivих там как раз нет, за это люби свой любимый паскаль. Потише демонстрируй свою некомпетентность, смешно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 19:48 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer, Код: sql 1. 2. 3. Так где, говорите, больше скобочек? Я вообще молчу про то, кому в здравом уме могло прийти в голову что у сравнения меньший приоритет чем у логических операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 19:58 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Let the sruch begin :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 19:59 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
развели полемику на пустом месте ) давайте еще пробелы vs табы вспомним =)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:01 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyLet the sruch begin :) Habba-habba! I see everything! I see... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:03 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
mayton Код: plaintext 1. 2. А в чём проблема? Или просто: "второй вариант чётко демонстрирует понимание особенностей целочисленного деления"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:03 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyТак где, говорите, больше скобочек? В си-подобных языках. Примеры, думаю, Вы знаете не хуже меня. Anatoly Moskovskyпро то, кому в здравом уме могло прийти в голову что у сравнения меньший приоритет чем у логических операций. Да, для того, кто не думает про одноимённые битовые операции, это аргумент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:04 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что первый вариант не работает. Даёт константу на всём диапазоне прогресса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:04 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
JeStoneдавайте еще пробелы vs табы вспомним Кстати да, давайте. Я постоянно сталкиваюсь с конфликтами слияния веток из-за разных пробелов/табов у разных разработчиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:05 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerAnatoly MoskovskyТак где, говорите, больше скобочек? В си-подобных языках. Примеры, думаю, Вы знаете не хуже меня. Вы фигурные шоли имеете в виду? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:07 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВы фигурные шоли имеете в виду? :) Нет, круглые. Долго собираетесь юродствовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:07 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonПроблема в том, что первый вариант не работает. Даёт константу на всём диапазоне прогресса.Это что за компилятор меняет порядок вычисления равноприоритетных целочисленных операций??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:12 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer, Я вообще-то пример привел. А вы нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:12 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, я предполагал, что человек с таким количеством сообщений в форуме Си знает хотя бы синтаксис языка. Прошу прощения за ошибку. Пример.... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Думаю, достаточно. Считайте скобочки для сишного варианта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:22 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer, А, вы про скобочки в синтаксисе операторов. Если сравнить кол-во скобок в С с кол-вом do, : и ; в паскале, то еще не известно кто победит. А уж по кол-ву набранного текста на единицу полезного кода паскаль точно лидер :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 20:46 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЕсли сравнить кол-во скобок в С с кол-вом do, : и ; в паскале, то еще не известно кто победит. Тёплое с мягким? Anatoly MoskovskyА уж по кол-ву набранного текста на единицу полезного кода паскаль точно лидер :) Вы правы. Офигенная прелесть Паскаля (точнее, дельфы, как его современного представителя) в исключительной информативности кода, по характеристике "прочитал немного красивого кода и всё понял" ему нет равных. Если, конечно, код правильно написан, испортить можно всё, что угодно. Худший из известных мне языков в этом плане - пожалуй, Ява. Хотя в последних версиях надо отметить большой прогресс, на семёрке уже даже вполне приятно работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 21:06 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerВы правы. Офигенная прелесть Паскаля (точнее, дельфы, как его современного представителя) в исключительной информативности кода, по характеристике "прочитал немного красивого кода и всё понял" ему нет равных. Если, конечно, код правильно написан, испортить можно всё, что угодно. Худший из известных мне языков в этом плане - пожалуй, Ява. Хотя в последних версиях надо отметить большой прогресс, на семёрке уже даже вполне приятно работать. Это все субъективно. Для меня, например, все C-подобные языки с точки зрения синтаксиса гораздо больше подходят под фразу "прочитал немного красивого кода и всё понял", чем тот же Делфи, Python, Ruby и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 03:23 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonВот достаточно частый пример который я объясняю своим девелоперам. Код: plaintext 1. 2. 3. 4. 5. А если так: Код: plaintext 1. 2. Тогда оба твоих варианта дают 0 Так правильно работает Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 06:39 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerAnatoly Moskovsky, я предполагал, что человек с таким количеством сообщений в форуме Си знает хотя бы синтаксис языка. Прошу прощения за ошибку. Пример.... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Думаю, достаточно. Считайте скобочки для сишного варианта. Вы ошиблись(или опечатались) в значении числа Эйлера(если вы его имели ввиду). Расскажу как легко его запомнить. Первая цифра после запятой 7, а потом дважды будет год рождения Льва Николаевича Толстого 1828. Первая часть вашего примера, на языке Си, будет выглядеть следующим образом Код: plaintext 1. 2. Не вижу какой-то красоты в том что вы привели, код Си красивее. Большая часть скобок заменяется словами begin и end. Мне кажется, что символов будет больше, 8 вместо двух(). Приведите пожалуйста аналог следующего кода Си на Паскале Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 08:33 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer, вы конечно может быть дружите, и потому когда вы обзываете представителей нашего Сообщества С++, это нормально(шутите), но если вы не дружите, и это всерьёз, то вы полностью неправы, заканчивайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 09:05 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, как мне кажется приоритеты операторов сравнения в Паскале специально выбраны таким образом, чтобы скобки не требовались в простых случаях вроде Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 09:53 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Кстати, как вы думаете, что лучше, := для присваивания, и = для сравнения, либо = для присваивания, и == для сравнения ? У нас два фактора, частота появления оператора, и читабельность. 1. Инициализация встречается в среднем чаще(собственно потому в Си, токен присваивания занимает 1 символ) 2. В математике присваивание выполняется в один символ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:02 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
JeStonesoftwarerВы правы. Офигенная прелесть Паскаля (точнее, дельфы, как его современного представителя) в исключительной информативности кода, ... Это все субъективно. Для меня, например, ... Вы не совсем правы. Здесь есть три составляющих. Во-первых, согласен, субъективная - уровня "мне больше/меньше нравятся фигурные скобки чем begin/end". Во-вторых, привычка; наработанная практика восприятия кода на определённом языке, его типовых приёмов итп. И в-третьих таки объективная, порождённая (не)соответствием подходов и средств языка задаче. Чтобы увидеть, что объективная составляющая точно существует.. ну давайте возьмём, например, какой-нибудь сложный, но воспринимаемый SQL-запрос, и представим себе, как будет выглядеть делающий то же самое код на plain C. Так вот, я говорю именно об объективной составляющей. При этом, поскольку мне нравится и Си как таковой, и Паскаль как таковой, полагаю, что не вношу в оценку большой субъективности. В каждом из них есть то, что мне нравится, и то, что не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:09 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryПервая часть вашего примера, на языке Си, будет выглядеть следующим образом Саш, я привёл пример функции без параметров. Не надо переделывать постановку, это недостойно. SashaMercuryНе вижу какой-то красоты в том что вы привели, код Си красивее. Я привёл пример мест, в которых Си требует кучу мешающих восприятию круглых скобок. Судя по тому, что Вы начинаете менять постановку задачи и говорить о чём-то другом, свой тезис про скобки я обосновал достаточно убедительно. SashaMercuryМне кажется, что символов будет больше, Наверное. А мы экономим символы? Тогда лучше всего использовать однобуквенные идентификаторы, да и вообще перейти работать на APL. SashaMercuryПриведите пожалуйста аналог следующего кода Си на Паскале Без проблем. Код: pascal 1. Кстати, и здесь скобок меньше, чем в Вашем варианте (что неудивительно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:14 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryКстати, как вы думаете, что лучше, := для присваивания, и = для сравнения, либо = для присваивания, и == для сравнения ? Безразлично. Я спокойно работаю и с тем, и с другим, и вперемешку. SashaMercuryУ нас два фактора, частота появления оператора, и читабельность. Неверно. Основной фактор, куда более важный, чем оба названных - вероятность ошибиться, использовав одно вместо другого. С этой точки зрения :=, пожалуй, лучше. Лично я никогда так не ошибался и не очень понимаю, как ошибаются другие. Но судя по тому, что в компиляторы пихают варнинги на присваивания в условиях, проблема довольно актуальна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:18 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer Саш, я привёл пример функции без параметров. Не надо переделывать постановку, это недостойно. не понял задумки, тут вы правы softwarer Код: pascal 1. а вот тут уже вы переделываете постановку, оригинал был с присваиванием в условии :) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:28 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonВот достаточно частый пример который я объясняю своим девелоперам. Код: plaintext 1. 2. 3. 4. 5. А если так: Код: plaintext 1. 2. Тогда оба твоих варианта дают 0 Так правильно работает Код: plaintext 1. Верно. Этот пример требует пояснений. Я выношу его на собеседование. Задача рисования ProgressBar часто актуальна. При этом надо помнить о переполнениях разрядной сетки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:40 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Есть и обратный случай. Максимальное число заявок к примеру MAX_CNT может быть меньше 100 штук. В этом случае целочисленное деление даст сильно "грубый" результат. Опять константа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:50 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonЕсть и обратный случай. Максимальное число заявок к примеру MAX_CNT может быть меньше 100 штук. В этом случае целочисленное деление даст сильно "грубый" результат. Опять константа. Универсального решения нет. Надо проверять значение MAX_CNT и считать тем или иным способом. Хотя можно перевести в double и тогда все три способа подойдут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 11:29 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Так универсально: Код: sql 1. Кстати почему ты считаешь некорректно Код: plaintext 1. умножение и деление имеют одинаковый приоритет, т.е. будет выполнено так Код: plaintext 1. по крайней мере для MSVC это одно и тоже Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 11:41 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Dima TУниверсального решения нет. Надо проверять значение MAX_CNT и считать тем или иным способом Либо приводить к какому-нибудь заведомо достаточному типу. Либо нормировать (типа if (max_cnt > max_int/100) { max_cnt /= 100; progress /= 100;} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 12:12 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryа вот тут уже вы переделываете постановку, оригинал был с присваиванием в условии :) Вы ещё скажите, что постановка требует использовать функцию getc :) Сишные операции - присваивание, запятая, тернарная - безусловно, относятся к достоинствам языка. Но как видите, в Вашем примере она используется как ненужная заплата на недостаток дизайна стандартной библиотеки :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 12:15 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Dima T, хм... гдеж я этот приоритет-то взял. Из каких языков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 12:29 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonDima T, хм... гдеж я этот приоритет-то взял. Из каких языков. хз, везде вроде слева направо вычисляется могу только предположить что изначально было Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 12:37 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Думаю да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:18 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerSashaMercuryа вот тут уже вы переделываете постановку, оригинал был с присваиванием в условии :) Вы ещё скажите, что постановка требует использовать функцию getc :) Сишные операции - присваивание, запятая, тернарная - безусловно, относятся к достоинствам языка. Но как видите, в Вашем примере она используется как ненужная заплата на недостаток дизайна стандартной библиотеки :) softwarer Код: pascal 1. Функция Eof(stream) равносильна getc()+ungetc() верно ? Т.е. берём символ из потока, проверяем его, и кладём его обратно(в том смысле, что указатель в потоке перемещается обратно или как-то иначе, но по смыслу аналогично ). Возвращает результат проверки. Или ошибаюсь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:20 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Dima T, расcтроил Марка :D не стыдно ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:22 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryФункция Eof(stream) равносильна getc()+ungetc() верно ? Т.е. берём символ из потока, проверяем его, и кладём его обратно(в том смысле, что указатель в потоке перемещается обратно или как-то иначе, но по смыслу аналогично ). Возвращает результат проверки. Или ошибаюсь ? Это квантовый эффект бро! Чтобы "взглянуть" на EOF файла нужно "поток изменить". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:23 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
mayton, есть такой язык, в котором приоритет * и / различаются, но не помню какой..где-то читал, что-ли. Даже не знаю откуда у меня эта информация в голове, не помню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:24 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDima T, расcтроил Марка :D не стыдно ;) Да ничего не стыдно. Всё норм. Нельзя быть докой во всём. Голова лопнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:25 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryФункция Eof(stream) равносильна getc()+ungetc() верно ? По результату - да, по реализации - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:25 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonSashaMercuryФункция Eof(stream) равносильна getc()+ungetc() верно ? Т.е. берём символ из потока, проверяем его, и кладём его обратно(в том смысле, что указатель в потоке перемещается обратно или как-то иначе, но по смыслу аналогично ). Возвращает результат проверки. Или ошибаюсь ? Это квантовый эффект бро! Чтобы "взглянуть" на EOF файла нужно "поток изменить". кто-то перечитал Ткань космоса, или посмотрел Интерстеллар на днях Так я правильно рассуждал, или нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:26 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer, а как по реализации ? Расскажите пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:27 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonДа ничего не стыдно. Всё норм. Нельзя быть докой во всём. Голова лопнет. Нельзя, конечно. Но я в какой-то момент обзавёлся привычкой проверять то, что я выношу на люди, и в частности задачи для собеседований. Времени тратится немного, а вот пользы прилично. Особенно когда открываешь для себя что-то новое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:28 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonSashaMercuryDima T, расcтроил Марка :D не стыдно ;) Да ничего не стыдно. Всё норм. Нельзя быть докой во всём. Голова лопнет. "расстроил" в том плане, что теперь кому-то придется вспоминать язык, к которому пример выше будет актуален Раз уж привел пример, то нужно довести его до конца ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:29 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercurymaytonпропущено... Это квантовый эффект бро! Чтобы "взглянуть" на EOF файла нужно "поток изменить". кто-то перечитал Ткань космоса, или посмотрел Интерстеллар на днях Так я правильно рассуждал, или нет ? Ни то не другое не смотрел и не читал. По поводу функций читаючих "текстовые строки" или "символы". Ну... они скорее всего являются фасадом для fopen/fread/fclose/fseek, или open/read/close. В любом случае надо сначала что-то вычитать. Удариться об "ограничитель" и потом принять решение о выходе из цикла. А делать это через while(.) или do{..} while уже кому как удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:34 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryа как по реализации ? Расскажите пожалуйста Язык сам по себе этого не специфицирует. В борландовых реализациях операции опираются на buffered reader, то есть логику можно примерно описать так: if buffer_empty then read_next_buffer; result := buffer_empty or text_file and current_char^ = ^Z; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:35 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarermaytonsoftwarer, давай другую крайность представим. Тебе дали доступа на модуль. Ты тихонько закоммитил... ... и тут началось! А что началось-то? Ну максимум, кто-то потратит пять секунд времени, чтобы откатить мой коммит. Я думаю что чел запретил тебе коммитить нетестированный код потому что он - ответственный. А что такое 5 секунд? Тут-же дело не в 5 секундах а в масштабах разрушений которые вызовет твой коммит. Это просто моё ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 17:28 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
mayton...Это просто моё ИМХО. мое аналогично. Если кто-то будет, как минимум без уведомление, менять код в моем модуле, при последующих любых жалобах на систему, консультанты/техподдержка будут отправлены к этому человеку искать и исправлять баг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 17:42 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonЯ думаю что чел запретил тебе коммитить нетестированный код потому что он - ответственный. Он не мог запретить мне коммитить по той простой причине, что тогда ещё никто не использовал системы контроля версий. Вопрос "почему" совершенно не интересен, логика человека понятна и собственно полностью соответствует полученным им инструкциям. Вопрос в том, что эта система "наседки над кодом" больна на голову, и этот яркий пример показывает то, что регулярно случается везде, где она применяется. maytonА что такое 5 секунд? Тут-же дело не в 5 секундах а в масштабах разрушений которые вызовет твой коммит. Ну так расскажи мне эти масштабы разрушений. Что случится? Распиши сценарий апокалипсиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 17:52 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer, чел чего ты так ощетинился? Знаешь сколько раз я был в твоей ситуации. Ходил. Упрашивал. Уговаривал. Вобщем это даже не It-шный вопрос. Он - организационный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 17:55 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonsoftwarer, чел чего ты так ощетинился? Знаешь сколько раз я был в твоей ситуации. Ходил. Упрашивал. Уговаривал. Вобщем это даже не It-шный вопрос. Он - организационный. +1 Мне однажды пришлось 4 месяца уговаривать отдел сетевых технологий переадресовать URI с одного IP на другой. Это ведь не повод выдать мне и всем желающим права на управление записями в DNS? Ситуация аналогичная. Если кто-то вас тормозит в работе, то такие вопросы решаются через тим лидера или в крайнем случае через директора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 18:01 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonsoftwarer, чел чего ты так ощетинился? Знаешь сколько раз я был в твоей ситуации. Знаю. И не хочу заниматься подобной фигнёй. Однажды, уже давно, я дозрел до того, чтобы задать владельцу конторы вопрос: а не кажется ли ему идиотизмом, что я уговариваю его для него же заработать денег? Вот это - одна из составляющих. maytonВобщем это даже не It-шный вопрос. Он - организационный. Второе верно. Это вопрос организации it-проекта. Для того, чтобы в нём было хорошо и эффективно работать, он должен быть правильно организован. Концепция "единоличного владения кодом модуля" гробит проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 18:02 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
JeStoneМне однажды пришлось 4 месяца уговаривать отдел сетевых технологий переадресовать URI с одного IP на другой. Это ведь не повод выдать мне и всем желающим права на управление записями в DNS? Нет, это повод разогнать нафиг толпу бездельников и организовать работу так, чтобы мелкий рабочий вопрос решался в адекватные сроки. В частности, дать "права на управление записями в DNS" достаточному числу админов, чтобы болезнь или загруженность Васи не тормозили всю работу по этому направлению. А в идеале ещё выкатить начальнику отдела сетевых технологий штраф в размере зарплаты программиста за соответствующий период времени. По опыту, "переадресовать URI" тут же начнёт делаться максимум за полчаса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 18:11 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1341143]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
6ms |
get forum data: |
3ms |
get page messages: |
99ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 422ms |

| 0 / 0 |
