В чем смысл "непривычных" записей?
- Войдите на сайт для отправки комментариев
Пт, 06/12/2019 - 15:02
Вернее, с какой целью они применяются?
Например: "x += y;
// эквивалент записи x = x + y;
" (то же самое про вычитания, умножение и деление.)
Правая половинка понятна любому, у кого в школе по алгебре было >2 :) К левой половинке необходимо привыкать, кстати, с точки зрения начинающего она вообще ни о чем. Полагаю, что финальный (машинный) код останется таким же как в одном случае, так и в другом. В чем подспудный смысл? В "особом статусе" крутого программиста, недоступном таким ламерам, как я?
PS: Это не крик души, не ирония, не возмущения, а просто для повышения образования (моего).
когда у вас имена типа x - то да. А когда имена переменных длиной полстраницы, а набираете вы это все в консольном редакторе типа vi - смысл сразу появляется
форма сокращенной записи:
а) - не плодить кучу переменных - сложить 2 числа и заменить одно из них результатом и т.п.
б) - меньше букавок
А когда имена переменных длиной полстраницы.
Хмм¸ смысл в этом есть. Только вот имя перемнной действительно на полстраницы мало себе представляю. Тем не менее, аргумент.
А когда имена переменных длиной полстраницы.
Хмм¸ смысл в этом есть. Только вот имя перемнной действительно на полстраницы мало себе представляю. Тем не менее, аргумент.
самый распространенный пример - unsigned long currentMillis, previousMillis = 0; и это просто 2 переменные ... встречались и полуметровые имена у некоторых
или byte CheckDevicePresent; - думаю ребята и более страшные примеры могут привести.
Вопрос не имеет смысла, т.к. ничего неизвестно о типах задействованных переменных.
- думаю ребята и более страшные примеры могут привести.
Легко! У меня в многих проектах такого было аки грязи. Это не самое еще забористое, так под рукой просто.
Вот это понятно новичку.
Выше приведенные примеры "длинных" имен переменных меня не убедили: не такие уж они и длинные, чтобы просто не копипастить их при написании строки. А таких, чтобы в ширину страницы не влезали - не встречалось даже у меня, когда я начинал писать на Бэйсике. По младости годов не умел грамотно пользоваться комментариями, поэтому называл переменные тупо так, что они собственно из себя и представляли. И все равно, длинее 10-12 (ну, 15!) символов они не были.
А что непонятно? Я же веду речь не о типах переменных, а о математических действиях с этими переменными. То есть не про Х или Y, а про +, -, +=, /= и т.д. между ними. Об чем сразу сказал в первом посте.
Ну m_IsRunningTimerIdleScreenAfterTransportCardProcessWoTicketPrinting - 67символов. Старое ограничение длинны строки 80.
Друзья, я понял, что главное преимущество - экономия символов. Лапидарность - наше всё. В общем, можно дискуссию закрывать.
Вот это понятно новичку.
Выше приведенные примеры "длинных" имен переменных меня не убедили: не такие уж они и длинные, чтобы просто не копипастить их при написании строки. А таких, чтобы в ширину страницы не влезали - не встречалось даже у меня, когда я начинал писать на Бэйсике. По младости годов не умел грамотно пользоваться комментариями, поэтому называл переменные тупо так, что они собственно из себя и представляли. И все равно, длинее 10-12 (ну, 15!) символов они не были.
просто профессиональная лень и все... зачем писать лишнее когда автору и так ясно, что он этим хочет сказать (я про сокращенную запись)
UPD главное что автор и компилятор друг-друга понимают
//А что непонятно? Я же веду речь не о типах переменных
Да в том что эти две формы можно перегрузить средствами ООП по разному и будут совсем разные. Но не бейте себе бошку об тяжелое.
просто профессиональная лень и все... зачем писать лишнее когда автору и так ясно, что он этим хочет сказать (я про сокращенную запись)
Меньше букв - меньше ошибок. Профессиональная поговорка.
UPD главное что автор и компилятор друг-друга понимают
Именно это и есть главный критерий.
А что непонятно? Я же веду речь не о типах переменных
Именно в этом Ваша беда. В программировании нельзя вести речь об операциях без привязки к типам - это бессмыслица - конь в вакууме. Поэтому, повторяю, вопрос полностью лишён смысла.
И дело тут вовсе не в том, что
и без всякой перегрузки эти операции могут удивить незадачливого программиста.
Впрочем, если типы Вам пофиг, то действительно, расслабьтесь и
Ремарка...
А что непонятно? Я же веду речь не о типах переменных
Именно в этом Ваша беда. В программировании нельзя вести речь об операциях без привязки к типам - это бессмыслица - конь в вакууме. Поэтому, повторяю, вопрос полностью лишён смысла.
Лично я писал про тот случай, кода есть выбор как записать - запиши так, как короче (если понимаешь, что пишешь)
типа: i++ (в for к примеру) уже никого в ступор не вводит и я давно не видел записи {y = i + 1; i=y;} :)))))))
я давно не видел записи {y = i + 1; i=y;} :)))))))
Грешен я, Гриш! Я тоже единичку плюсую и вычитаю ++ или -- :) Это первый шаг к программистскому шику? :)
Гриша, у Вас есть очень важная ремарка
для того, чтобы получить подтверждение своему предположению.
Да, это так. Тему можно закрывать.
Тема закрыта, но "show must go on "
я давно не видел записи {y = i + 1; i=y;} :)))))))
Грешен я, Гриш! Я тоже единичку плюсую и вычитаю ++ или -- :) Это первый шаг к программистскому шику? :)
Нет это из области 3x5=15 или 5+5+5=15 или 3+3+3+3+3=15 - вы ведь не задумываетесь, что Умножение рассматривается как нахождение суммы одинаковых слагаемых? (2 класс)
Надеюсь сейчас Вы посмотрите на некоторые вещи с такого угла зрения - это нужно знать, понимать, но ни в коем случае не заморачиваться... :)
словоблудие.... есть минутка :))))
все помнят равенство?! х=у+1 == х-1=у. Как в школе говорят: "переносим и меняем знак"
ИМХО это в корне не верный посыл к теме равенства и когда я учил сына (школьную тему проходили) я добивался, чтобы он понял - равенство это весы. Вес в левой и правой части можно умножить, разделить, вычесть или добавить ОДИНАКОВОЕ (константу или выражение и даже переменную). Для понимания в момент обучения я заставлял записывать равенство в виде:
х=у+1 == х-1= у+1-1 а потом выполнять арифметическое действие.
потом это облегчило усвоение дробных равенств...
Строго говоря, оператор = это оператор присваивания, а не знак равенства из алгебры. Поэтому x += y легко трактовать, как присваивание иксу себя самого с добавлением игрека, как по мне, так это проще, чем в алгебре. А х=+у нельзя записывать, поскольку это просто х = (положительный) у.
Примерно как ADD EAX, 0x01
вместо INC EAX
как раз проблема, если типов переменных не знать. Я пытаюсь объяснить это автору поста, но, похоже, вопрос был задан не для того, чтобы получить новые знания, а для того, чтобы получить подтверждение своему предположению. Получено - можно тему закрывать :)
Евгений, а можно не для ТС. а хотя бы для тех, кому интересно - намекнуть, как влияют типы переменных на результат этих операций?
(кроме случая перегрузки операторов)
Ну, я могу привести пример (один из 100500 возможных).
Дело в том, что в общем случае в левой части операции присваивания может стоять нечто вычисляемое (простейший пример - разыменование указателя, чуть более сложный - функтор или там лямбда). В этом случае при варианте "+=" это выражение будет вычисляться один раз, а при использовании "=" - два раза (один раз для правой части, а второй раз для левой) да ещё и непонятно в каком порядке. Вот простейший пруф. этих слов. Совсем простейший, чтобы показать только факт одинарного и двойного расчёта, смысла в программе нет никакого:
Случай "="
Случай "+="
Т.е., разницу Вы видите.
Вычисление может быть самого разного характера, может иметь побочные эффекты (как в данном случае) и понятно, что между однократным вычислением и двукратным разница есть. И далеко не всегда эта разница - только лишнее время. Если там побочный эффект, то программа вообще может развалиться. Особенно, если учесть тот факт, что в языке НЕ определено, кто вычисляется первым - левая часть или правая.
Более жизненные примеры будут посложнее, но принцип Вы поняли, жизненное можете и сами придумать. Ну, как пример: допустим эта getDuck возвращает пин(порт) на которые надо выводить что-то, чередуя пины(порты) по очереди - в результате двойного выполнения она будет пропускать каждый нечётный, так ведь?
С присваиванием ещё вот так прикольно
:-)
я давно не видел записи {y = i + 1; i=y;} :)))))))
Грешен я, Гриш! Я тоже единичку плюсую и вычитаю ++ или -- :) Это первый шаг к программистскому шику? :)
а как вы вычитаете и плюсуте --x, --y или x++,y++ ??? ;-)))
типа: i++ (в for к примеру) уже никого в ступор не вводит и я давно не видел записи {y = i + 1; i=y;} :)))))))
Вот, кстати, что любопытно. Если "++" и "--" я использую давно и автоматически, то "+=" и "-=" не прижились. Знаю, но не нравится. Но я замшелый, я до сих пор предпочту написать if(flag==true), нежели if(flag), мне так более читаемо.
Да непринципиально, как именно писать :) Лишь бы все остальные в команде писали в том же самом стиле и понимали его. С форматированием проще, используется обычно то, которое по умолчанию в основном редакторе кодерков компании, а вот с таким вот приходится иногда подпинывать, чтобы все соблюдали общий стиль, либо везде +=, либо везде х = х+у, это весьма помогает, когда строк кода много.
Да непринципиально, как именно писать :)
Я тоже так считаю, но если включить перфекциониста, то префиксные операции эффективнее. В простейших случаях оптимизатор всё разрулит, но в целом - эффективнее. Садман много про это читал и нам здесь рассказывал что там и как, поищите на форуме.
С присваиванием ещё вот так прикольно
:-)
ну это уже не смешно :) - если программист не заметил двойного инкремента - не префиксные операторы виноваты
я давно не видел записи {y = i + 1; i=y;} :)))))))
Грешен я, Гриш! Я тоже единичку плюсую и вычитаю ++ или -- :) Это первый шаг к программистскому шику? :)
а как вы вычитаете и плюсуте --x, --y или x++,y++ ??? ;-)))
...я до сих пор предпочту написать if(flag==true), нежели if(flag), мне так более читаемо.
Как насчет читаемости - не скажу, но это разные выражения. Подставьте, например, flag==2.
это разные выражения.
Полагаю, что коллега имел в виду, что flag имеет тип bool. Тогда всё не так плохо.
Вот собственно почему я стараюсь не обсуждать выражения, пока неизвестны типы данных, чем иногда здесь народ до нервных срывов довожу.
это разные выражения.
Полагаю, что коллега имел в виду, что flag имеет тип bool. Тогда всё не так плохо.
Вот собственно почему я стараюсь не обсуждать выражения, пока неизвестны типы данных, чем иногда здесь народ до нервных срывов довожу.
а есть ли смысл bool применять, память не экономим, разный код после компиляции???
а есть ли смысл bool применять, память не экономим, разный код после компиляции???
В него наверное наверное тяжелее какую нибудь хрень впихнуть.
а есть ли смысл bool применять???
Конечно, нет. Единственная полезная типизация - это когда переменные, имена которых начинаются с i,j,k,l,m,и n - целые, а все остальные - вещественные, а единственная полезная структура данных - массив (пруф).
Там ещё написано, что нужно использовать самомодифицирующийся код, что в условиях гарвардской архитектуры несколько затруднено :)
PS вчера нашёл вас в паблике )) бывал в Ярославле, очень красивый город.
а есть ли смысл bool применять???
Конечно, нет. Единственная полезная типизация - это когда переменные, имена которых начинаются с i,j,k,l,m,и n - целые, а все остальные - вещественные, а единственная полезная структура данных - массив (пруф).
нет, он уже не прав, настоящих программистов теперь вычисляют по потреблению
нет, он уже не прав
Мерзкие инсинуации! На уровне гнусной клеветы. что типа "фортран устарел"!
нет, он уже не прав
Мерзкие инсинуации! На уровне гнусной клеветы. что типа "фортран устарел"!
ну не знаю, я о нём только слышал, слово так сказать знакомое )))
а есть ли смысл bool применять, память не экономим, разный код после компиляции???
В него наверное наверное тяжелее какую нибудь хрень впихнуть.
Без проблем и впихивается и выпихивается. Применяется часто, чтоб себе и людям показать что там флажок но лень его делать в битовом поле. Сложные логические выражения с ним всеж попроще доходят.
Как насчет читаемости - не скажу, но это разные выражения. Подставьте, например, flag==2.
Спасибо, кэп. Я имел ввиду именно пример упрощенной записи с булевыми переменными.
а есть ли смысл bool применять, память не экономим, разный код после компиляции???
С точки зрения разборки в коде скажем через несколько лет, и когда код у нас выходит за 100k - безусловно есть. При условии, что нам достаточно двух возможных значений некой переменной.
Все это из-за ущербности синтаксических методов программирования, тоесть надо много тупо писать и жалко каждый пробел.
Вот в спектрумах вопрос решили сразу, нажал одну кнопк и сразу RANDOMIZE\PRINT\POKE\OUT\LOAD вставился.
Писать было одно удовольствие, а бейсик 128 поэтому и не пошел, там все надо было набирать по букве.
Синтаксические языки себя изжили на 100%.
Будущее за алгоритмо-структурно-графическими средами с элементами синтаксиса в самих блоках-заготовках в случае необходимости . (это уже реализовано для промконтроллеров давно и работает прекрасно, мне понравилось когда впервые 20 лет назад мне дали все это и сказали на, делай линию сварки:) и я просто нарисовал и зблоков,восторг был большой, а рядом сидели СИшники и годами что-то колдовали над какой-то советской системой управления складом деталей, которую давно можно было перевести на иностранные пром контроллеры с их средой разработки)
И бич 1000 и одного синтаксиса просто не существует и обеспечивает максималльно быстрый вход в разработку и быстрый резулльтат. Я недавно столкнулся с питоном... Плевался долго, это просто блевотина, поставил не там пробел, все, - строка не рабочая, такого дебилизма я в жизни не встречал, это не мог придумать человек с нормальной психикой.
Ловите КИПовца :)))
А структурные блоки, по-вашему, от Высшей силы появляются? Или всё же, их сначала создают для вас соседи-сишники или пайтонисты? ))
Ну так и бери песок, производи микросхемы, напечатай на принтере корпус(кстати его тоже надо будет сначало собрать из глины алок и медной проволоки), выплавь детальки... нафиг ты готовый комп вмагазине взял ? Эт оне правильно, надо все самому сделать, вникнуть в суть так сказать каждой конденсаторной пластинки и полупроводника, ведь надо же потом будет ремонтировать, дорабатывать, а как не зная сути все это сделать ?
Глядишь к пенсии соберешь, не успееш так внуки доделают.
quote=yuhenotix@2p-mail.com - это сайт, где большинству участников нравится именно программировать, а не собирать мышкой ромбики и квадратики для трехлетних детей. Если вам наравятся графические среды - вам тут делать нечего, для поклонников рисования есть другие форумы.