-
- > С ужасом осознал "грабли Си" во второй раз - первый был лет 5 назад. RxTx(522 знак., 14.11.2019 12:19, ссылка)
- Это проблема любых вычислений с ограниченной точностью. Такой пример: вам нужно занести в квартиру шкаф. Вы берете рулетку и замеряете его ширину. Получаете 90см. Той же рулеткой замеряете ширину дверного проема. Получаете те же 90см. Считаем: LightElf(35 знак., 14.11.2019 12:37)
- Дверь снять и пролезет. - maik-vs(15.11.2019 19:07)
- Перемерил все шкафы дома. Представил шкаф с минимальным размером 90 см. Охренел. - Крок(15.11.2019 00:35)
- Угловой шкаф у дочки в комнате - как раз 90x90. Но идея не в этом. Можете заменить на стиральную машину, дверь в ванную комнату и значение 58см. Это, так сказать, из практики. - LightElf(15.11.2019 00:38 - 00:40)
- Поубивал бы. У меня вход в квартиру замысловатый. Там не точность измерений нужна, там головоломки в стиле Гарднера. - Крок(15.11.2019 00:59)
- Мне, по итогу, пришлось стиралку разбирать (снять люк оказалось недостаточно), чтобы в ванную занести. При обмере получалось, что пролезть должна. По факту пары миллиметров не хватило. Вычитание близких чисел закономерно привело к полной потере LightElf(10 знак., 15.11.2019 13:18 - 13:21)
- Это мелочи. Настоящие мущщины сначала заносят в здание габаритный предмет, а потом строят вокруг него стены. - SciFi(15.11.2019 13:26, ссылка)
- знакомые музыканты, с большим концертным роялем дома, ставили его краном, когда еще не было перекрытия сверху. - Alex68(15.11.2019 16:19)
- Ну а чо... шурин рассказывал (строил он местами) лет 10 назад офигенную плазму метра на 2,5 ставили в подвал ДО заливки перекрытия - потому как кинотеатр в подвале был... - sav6622(15.11.2019 21:16)
- в одном департаменте одной московской корпорации наблюдал. Купили какой-то модный шкаф под серванты. Начали заносить, оказалось не пролазит в двери. Разобрали полностью насколько могли, осталась неразборная рама, она не пролазила пару сантиметров. blackprapor(332 знак., 15.11.2019 18:13)
- знакомые музыканты, с большим концертным роялем дома, ставили его краном, когда еще не было перекрытия сверху. - Alex68(15.11.2019 16:19)
- Это мелочи. Настоящие мущщины сначала заносят в здание габаритный предмет, а потом строят вокруг него стены. - SciFi(15.11.2019 13:26, ссылка)
- Мне, по итогу, пришлось стиралку разбирать (снять люк оказалось недостаточно), чтобы в ванную занести. При обмере получалось, что пролезть должна. По факту пары миллиметров не хватило. Вычитание близких чисел закономерно привело к полной потере LightElf(10 знак., 15.11.2019 13:18 - 13:21)
- Поубивал бы. У меня вход в квартиру замысловатый. Там не точность измерений нужна, там головоломки в стиле Гарднера. - Крок(15.11.2019 00:59)
- Угловой шкаф у дочки в комнате - как раз 90x90. Но идея не в этом. Можете заменить на стиральную машину, дверь в ванную комнату и значение 58см. Это, так сказать, из практики. - LightElf(15.11.2019 00:38 - 00:40)
- Вариант 1 - подождать засушливого лета. sav6622(38 знак., 14.11.2019 22:32)
- Внезапным ударом кувалды с тыла решаем эту инженерную проблему. ;) - RxTx(14.11.2019 20:41)
- если руки сильные, то пролезет! - Nikolay801_(14.11.2019 13:45)
- Это проблема любых вычислений с ограниченной точностью. Такой пример: вам нужно занести в квартиру шкаф. Вы берете рулетку и замеряете его ширину. Получаете 90см. Той же рулеткой замеряете ширину дверного проема. Получаете те же 90см. Считаем: LightElf(35 знак., 14.11.2019 12:37)
- Это что, я недавно записал Gamma = a/2 вместо Gamma = a/2. и потом долго искал что не так. (Gamma double, но a то было целым)... - Boвa(13.11.2019 18:56 - 20:05)
- Вот тут-то языки со строгой типизацией и не дают выстрелить себе в ногу. - Dingo(14.11.2019 04:49)
- Конкретно эти заботливо разложенные грабли есть и в С. Boвa(171 знак., 14.11.2019 11:25 - 11:29)
- Ну, логику понять можно. Операция в целых, быстрее, чем вплавь. И очерёдность, опять-же. - mse homjak(14.11.2019 11:35 - 11:39)
- Мануал придумал трус. Настоящий мущщина открывает свойства языка погромирования эмперически. Даташыты тоже для трусов. Только хардкор, только информация с форума адуринщиков! - SciFi(14.11.2019 11:36)
- Стал слепым потерял точку после 2. Мануалы тут ни при чем, просто шрифт нужно ставить крупнее. - Boвa(14.11.2019 12:35)
- Писать нужно 2.0 , и тогда никакие точки не потеряются, тоже мне, экономщики нулей в исходниках. Хуже вас только экономщики отступов. - =AlexD=(14.11.2019 12:41)
- Более того, 2.0f. Здесь вам не пентиум :-) - SciFi(14.11.2019 12:48)
- Писать нужно 2.0 , и тогда никакие точки не потеряются, тоже мне, экономщики нулей в исходниках. Хуже вас только экономщики отступов. - =AlexD=(14.11.2019 12:41)
- Стал слепым потерял точку после 2. Мануалы тут ни при чем, просто шрифт нужно ставить крупнее. - Boвa(14.11.2019 12:35)
- Да, я бы с удовольствием писал на Паскале под контроллеры. Но кроме mikroPascal вменяемых компиляторов мне не попадалось. - FDA(14.11.2019 11:10)
- Конкретно эти заботливо разложенные грабли есть и в С. Boвa(171 знак., 14.11.2019 11:25 - 11:29)
- Вот тут-то языки со строгой типизацией и не дают выстрелить себе в ногу. - Dingo(14.11.2019 04:49)
- А в каком языке будет предупреждение??? A = B / (C * D) и A = B / C * D одинаково правильные с точки зрения синтаксиса? Вообще в программах стоит ВСЕГДА скобки в сложных выражениях ставить. - FDA(13.11.2019 19:38)
- За примером долго ходить не надо: - SciFi(13.11.2019 19:42, ссылка)
- Поэтому и надо ВСЕГДА скобки ставить. Ну кроме выражений A = B / C :-) - FDA(13.11.2019 19:43)
- Попахивает икстримизьмом. Но отлично иллюстрирует мой (и не только мой) тезис: Цэ++ - зло. Нам и без плюсов развлечений хватает. - SciFi(13.11.2019 19:47 - 19:53)
- У нас в организации два основных языка: Си для микроконтроллеров и Дельфи для компа. Практика показала, что лишние скобки очень сильно экономят время на отладку. - FDA(13.11.2019 19:52)
- Экономят потому что у них разные приоритеты операций в некоторых довольно болезненных странностях. А еще у Дельфевого диалекта паскаля человекоинтуитивные правила приведения типа выражения. - Kabdim(14.11.2019 11:49)
- Еще больше время экономит писание на С в паскалевском стиле. Boвa(87 знак., 13.11.2019 20:00 - 20:02)
- А ещё больше - написание на Паскале в паскалевском стиле, без использования Ц :-)) - Крок(14.11.2019 15:49)
- Есть ли вменяемый Паскаль под Хмегу? Boвa(41 знак., 14.11.2019 16:26)
- Чому так у вас с пиками не сложилось, Вова? - RxTx(14.11.2019 20:43)
- AVRco RRR(42 знак., 14.11.2019 18:39, )
- Есть ли у вас для этой штуки таблетки от жадности? Boвa(26 знак., 15.11.2019 14:23)
- Мне встречался только от mikroE - FDA(14.11.2019 17:17, ссылка)
- Я даже хотел купить его! - Крок(14.11.2019 18:13)
- Хороший компилятор. Куча готовых библиотек. Очень простых и понятных. - FDA(15.11.2019 08:52)
- Мне показалось, что они схлопнулись. - Крок(16.11.2019 14:55)
- Хороший компилятор. Куча готовых библиотек. Очень простых и понятных. - FDA(15.11.2019 08:52)
- Я даже хотел купить его! - Крок(14.11.2019 18:13)
- Да что Вы понимаете в ПИКах? Крок(88 знак., 14.11.2019 16:46, ссылка)
- Есть ли вменяемый Паскаль под Хмегу? Boвa(41 знак., 14.11.2019 16:26)
- Сомнительное утверждение. Kabdim(480 знак., 14.11.2019 14:57)
- Стиль-то разрабатывается "под себя". В результате в пределах конторы все работают под общим правилам. Так проще и легче развивать и сопровождать проекты. - FDA(14.11.2019 15:20)
- Стиль конечно не панацея, иначе другие языки не возникали бы как грибы, но всё же наличие стиля лучше его отсутствия. Правда некоторые стили вызывают у меня зубовный скрежет. - =AlexD=(14.11.2019 15:09)
- а еще больше ПОЛИЗ - blackprapor(14.11.2019 11:46)
- Это само собой. Мы H-файлы используем фактически только как секцию interface из паскалевского модуля. То есть extern'ы кроме тех, что есть в соответствующем H-файле, в остальных модулях запрещены. - FDA(13.11.2019 20:17)
- А ещё больше - написание на Паскале в паскалевском стиле, без использования Ц :-)) - Крок(14.11.2019 15:49)
- У нас в организации два основных языка: Си для микроконтроллеров и Дельфи для компа. Практика показала, что лишние скобки очень сильно экономят время на отладку. - FDA(13.11.2019 19:52)
- Попахивает икстримизьмом. Но отлично иллюстрирует мой (и не только мой) тезис: Цэ++ - зло. Нам и без плюсов развлечений хватает. - SciFi(13.11.2019 19:47 - 19:53)
- Поэтому и надо ВСЕГДА скобки ставить. Ну кроме выражений A = B / C :-) - FDA(13.11.2019 19:43)
- За примером долго ходить не надо: - SciFi(13.11.2019 19:42, ссылка)
- плюс kalyan(372 знак., 12.11.2019 10:40, )
- Когда экран 320х200 поневоле будешь стремиться укомпактить донельзя. Я до сих пор не отошел от привычек того времени при написании программ. Но после алгола сишник казался бредом сумасшедшего. Меня он подкупил возможностью ходить к регистрам. - Codavr(12.11.2019 11:05 - 11:12)
- К счастью, современные экраны позволяют творческим личностям раскрепоститься в полной мере: - SciFi(12.11.2019 11:11, картинка)
- Знавал человека, который на LabView делал целые лабораторные комплексы для студентов. Генераторы, вольтметры, осциллографы. Все можно было соединять, крутить ручки и смотреть что получается. Там было похлеще :-) - il-2(12.11.2019 15:04)
- Как то разбирался со схемой отечественного имплантера. Расстелил синьки со схемой коммутации плат на полу. Заняли они у меня в длину 7 метров. Положил рядом маты которыми был упакован буржуйский и ползал туда-сюда. Притомился тут же вздиемнул. Codavr(13 знак., 12.11.2019 11:17)
- К счастью, современные экраны позволяют творческим личностям раскрепоститься в полной мере: - SciFi(12.11.2019 11:11, картинка)
- Когда экран 320х200 поневоле будешь стремиться укомпактить донельзя. Я до сих пор не отошел от привычек того времени при написании программ. Но после алгола сишник казался бредом сумасшедшего. Меня он подкупил возможностью ходить к регистрам. - Codavr(12.11.2019 11:05 - 11:12)
- макросы, кладезь грабелей! kalyan(118 знак., 12.11.2019 10:29, )
- Ну а просто mse homjak(149 знак., 12.11.2019 10:51 - 10:54)
- И ещо можно разочароваться в арифметических законах "от перемены мест..." ;О) Ессно, если eto!=to и нет скобок. - mse homjak(12.11.2019 13:24)
- Там есть ряд операций, про которые английским по белому написано "порядок действий не определён". Порядок вычисления аргументов функции, к примеру. Или вот этот "++" - про него легенды слагают. - SciFi(12.11.2019 13:27)
- Ну тут-то явный косяк с дефайном и использованием. - mse homjak(12.11.2019 13:33)
- Там есть ряд операций, про которые английским по белому написано "порядок действий не определён". Порядок вычисления аргументов функции, к примеру. Или вот этот "++" - про него легенды слагают. - SciFi(12.11.2019 13:27)
- Любительщина. Профи там --> - SciFi(12.11.2019 10:54, ссылка)
- раскрывая тему kalyan(3680 знак., 12.11.2019 13:39, )
- За негигиенические макросы нужно заставлять писать на Micro-C. - fk0(12.11.2019 11:44, ссылка)
- И ещо можно разочароваться в арифметических законах "от перемены мест..." ;О) Ессно, если eto!=to и нет скобок. - mse homjak(12.11.2019 13:24)
- Ну а просто mse homjak(149 знак., 12.11.2019 10:51 - 10:54)
- Приоритеты операций и ассоциативность делают порядок вычислений однозначным (если не учитывать оптимизацию). Dingo(128 знак., 12.11.2019 07:00)
- вот потому когда мне начинают нести пургу про то что си/асм это охуенно и бля буду лучше его нету на планете я всегда ржу как конь. - LordN(10.11.2019 19:19)
- Ну, на АСМе-то, как раз, с очерёдностью будет всё пучком. А как от некорректной записи поможет "не си/асм"? - mse homjak(10.11.2019 19:26)
- Сам дурак. Там синтаксис довольно простой. - SciFi(10.11.2019 16:29)
- Более того, именно порядок вычислений плавающих чисел задан жёстко и считается как указано программистом, без оптимизаций (из-за таких эффектов, вроде потери точности, считается программист должен думать головой когда пишет код). Порядок fk0(73 знак., 10.11.2019 17:39)
- ХЗ, в целочисленных, наоборот, можно огрести на неправильной очерёдности плывучка-то что, работает с максимальной точностью... Потому, тока скобки. И то, хз что наоптимизирует. - mse homjak(10.11.2019 19:14)
- Хм... А что мешает вместо хз самому всё узнать? - Bill(12.11.2019 09:27)
- А зачем "узнавать"? Сегодня он одно оптимизирует, завтра обновился и поехало по другому. Или не поехало, поедет в следующем обновлении. Ташта, по нашей жизни, ставить скобки, в потенциально опасных местах и отрубать оптимизацию в "0". Такая вот mse homjak(19 знак., 12.11.2019 10:15)
- я давно перестал считать себя умнее компилятора, и если на -O0 оно работает, на -O3 нет, то вот 100% есть говнокод. хорошо замаскированный, и хрен его знает когда он выплывет. так что стоит добиваться полной работоспособности программы при -O3. в Mahagam(45 знак., 14.11.2019 11:56)
- +1 к "...и если на -O0 оно работает, на -O3 нет, то вот 100% есть говнокод". На практике убеждался не раз. Или не учёл аппаратный нюанс периферии, или намудрил с указателями или забыл модификатор volatile - всего не перечислишь. - Nikolay_Po(14.11.2019 21:30)
- У меня программа на -О1(других нету) работала-работала, а при переходе на следующую версию компилера, отработала. Причом, дохнет на обращениях к внешней памяти, которые были написаны-отлажены самыми первыми. Можно было остаться на старой, но там mse homjak(62 знак., 14.11.2019 13:26)
- Недоотлажены были, стало быть. Продолжать отладку до победного конца. - SciFi(14.11.2019 13:38)
- +1000! - PlainUser(14.11.2019 11:29)
- Существуют международные стандарты и ГОСТы определяющие необходимость расстановки скобок... поэтому достаточно выучить приоритет операций. И да, расстановка скобок не защищает от оптимизации. Компилятор оптимизирует дерево операций в целом, на fk0(24 знак., 12.11.2019 11:42)
- Это и печально mse homjak(288 знак., 12.11.2019 15:06)
- Не надо грязи. Ничего такого оптимизатор делать не будет. Откуда эта паранойя? Читайте книжки, там всё есть. - SciFi(12.11.2019 15:10, ссылка)
- Не... Я лучше шапочку из фольги... ;О) - mse homjak(12.11.2019 15:13)
- Шапочки явно недостаточно. Как минимум нужен ещё и бубен. - SciFi(12.11.2019 15:23, картинка)
- Не... Я лучше шапочку из фольги... ;О) - mse homjak(12.11.2019 15:13)
- Не надо грязи. Ничего такого оптимизатор делать не будет. Откуда эта паранойя? Читайте книжки, там всё есть. - SciFi(12.11.2019 15:10, ссылка)
- Бери выше. LTO видит всю программу. И время от времени попадается такое, что отползаешь и офигеваешь --> - SciFi(12.11.2019 11:45, ссылка)
- Только вот написал парсер строки формата (printf) времени компиляции. Который позволяет написать fprintf(file, "%d %s %f...", a, b, c...) И оно всё разворачивается (или сообщает об ошибке, если аргументы не соответствуют формату) в линейный код, fk0(1133 знак., 12.11.2019 12:21)
- А ведь можно было просто использовать fmtlib, которая целиком войдёт в следующую редакцию плюсов. - =AlexD=(12.11.2019 14:43, ссылка)
- Не знаю войдёт ли, сыровато и нормально не сделать без других не вошедших вещей. Смотри по ссылке: по факту compile time checks сработают только если включить некий C-макрос. А иначе вместо них runtime exception, что немного другая история, fk0(663 знак., 13.11.2019 00:45, ссылка)
- Не знаю на сколько оправданы твои труды, потому как GCC умеет сам проверять аргументы printf на соответствие шаблону целой кучей опций семейства -Wformat - =AlexD=(13.11.2019 06:04)
- Так рассуждать, труды автора fmtlib тоже не оправданы. Мол есть printf, он всё делает. Но это не так, очень даже оправданы. Там много ньюансов. Основной -- вынос парсинга строки формата в compile time, потому, что printf работает не быстро. По fk0(2963 знак., 13.11.2019 08:58 - 09:09, ссылка, картинка)
- Не знаю на сколько оправданы твои труды, потому как GCC умеет сам проверять аргументы printf на соответствие шаблону целой кучей опций семейства -Wformat - =AlexD=(13.11.2019 06:04)
- Не знаю войдёт ли, сыровато и нормально не сделать без других не вошедших вещей. Смотри по ссылке: по факту compile time checks сработают только если включить некий C-макрос. А иначе вместо них runtime exception, что немного другая история, fk0(663 знак., 13.11.2019 00:45, ссылка)
- А ведь можно было просто использовать fmtlib, которая целиком войдёт в следующую редакцию плюсов. - =AlexD=(12.11.2019 14:43, ссылка)
- Только вот написал парсер строки формата (printf) времени компиляции. Который позволяет написать fprintf(file, "%d %s %f...", a, b, c...) И оно всё разворачивается (или сообщает об ошибке, если аргументы не соответствуют формату) в линейный код, fk0(1133 знак., 12.11.2019 12:21)
- Это и печально mse homjak(288 знак., 12.11.2019 15:06)
- Наверное, я неинтересно код пишу. Ни разу не возникало необходимости "отрубать оптимизацию". - Сидоргек(12.11.2019 11:05)
- Можно пример, где реальные проблемы возникли? Даже интересно стало. - SciFi(12.11.2019 10:19)
- Да у меня, лично, ничо не было, потому как предохраняюсь, как могу и такие подозрительные места проверяю ручками. - mse homjak(12.11.2019 10:25)
- я давно перестал считать себя умнее компилятора, и если на -O0 оно работает, на -O3 нет, то вот 100% есть говнокод. хорошо замаскированный, и хрен его знает когда он выплывет. так что стоит добиваться полной работоспособности программы при -O3. в Mahagam(45 знак., 14.11.2019 11:56)
- Кому-то нравится из дизассемблера нос не высовывать, но лично я немного брезгую. Опять же, при желании порядок вычислений можно прибить гвоздями при помощи
лома и какой-то материvolatile. - SciFi(12.11.2019 09:40)
- А зачем "узнавать"? Сегодня он одно оптимизирует, завтра обновился и поехало по другому. Или не поехало, поедет в следующем обновлении. Ташта, по нашей жизни, ставить скобки, в потенциально опасных местах и отрубать оптимизацию в "0". Такая вот mse homjak(19 знак., 12.11.2019 10:15)
- Хм... А что мешает вместо хз самому всё узнать? - Bill(12.11.2019 09:27)
- ХЗ, в целочисленных, наоборот, можно огрести на неправильной очерёдности плывучка-то что, работает с максимальной точностью... Потому, тока скобки. И то, хз что наоптимизирует. - mse homjak(10.11.2019 19:14)
- Более того, именно порядок вычислений плавающих чисел задан жёстко и считается как указано программистом, без оптимизаций (из-за таких эффектов, вроде потери точности, считается программист должен думать головой когда пишет код). Порядок fk0(73 знак., 10.11.2019 17:39)
- > С ужасом осознал "грабли Си" во второй раз - первый был лет 5 назад. RxTx(522 знак., 14.11.2019 12:19, ссылка)