Шедевр кода

User avatar
Prosche
Уже с Приветом
Posts: 7956
Joined: 08 Nov 2004 12:24
Location: GA

Re: Шедевр кода

Post by Prosche »

Мальчик-Одуванчик wrote: 10 Jan 2018 22:47
Prosche wrote: 10 Jan 2018 22:16 Я живу в мире эмбеддед, у нас исключения применяются так, как я описал. Плюсы в менее требовательной среде могут использовать исключения более свободно, так что соглашусь с вами.
C трудом представляю как там вообще можно пользоваться шарпом, где одна среда исполнения весит немеряно.
Обычно при программировании встроенного железа исключения вообще отрубают нафиг на этапе компиляции.
Вообще я выше писал, что шарп не очень знаю, а на плюсах пишу, в ембедед.
Но все же если хотите расширите свои представления, погуглите "mono embedded"
User avatar
Prosche
Уже с Приветом
Posts: 7956
Joined: 08 Nov 2004 12:24
Location: GA

Re: Шедевр кода

Post by Prosche »

AndreyT wrote: 10 Jan 2018 23:27
Prosche wrote: 10 Jan 2018 21:17...фактически исключение в плюсах это аппликация валиться и перед смертью мы пытаемся чтото спасти или зафиксировать в журнале,...
Нет, ни в коем случае. В плюсах исключения - обработка нештатных ситуаций, т.е. ошибок, но совсем не обязательно связанных с "аппликация валиться и перед смертью". Вся философия исключений в С++ построена вокруг идеи того, что исключения являются recoverable. "Перед смертью" - это скорее подыерархия logical errors. Когда же речь идет о подыерархии runtime errors, никакого "перед смертью" не подразумевается.

А уж вопрос о том, является ли каждая конкретная нештатная ситуация поводом для выбрасывания исключения или нет - это неоднозначный вопрос дизайна, стоящий одинаково во всех языках программирования. Вплоть до реализации обеих возможностей, как это сделано в стандартных потоках ввода-вывода в С++.
Философия философией, а до недавних пор имплементация исключений была настолько кривой, что роняла и перфоманс и размер финального бинарника удваивала. -fno-exceptions не просто так придумали и весь геморрой с поддержкой двух версий "с" и "без" не на ровном месте появился.
nightmare2
Уже с Приветом
Posts: 7187
Joined: 31 Jan 2005 15:06
Location: GA

Re: Шедевр кода

Post by nightmare2 »

Мальчик-Одуванчик wrote: 10 Jan 2018 22:47 C трудом представляю как там вообще можно пользоваться шарпом, где одна среда исполнения весит немеряно.
...
Да сколько она там весит.
Мегабайт 100-200?
Копейки, по нынешним меркам.
Vaiyo A-O, A Home Va Ya Ray, Vaiyo A-Rah, Jerhume Brunnen G!
User avatar
Prosche
Уже с Приветом
Posts: 7956
Joined: 08 Nov 2004 12:24
Location: GA

Re: Шедевр кода

Post by Prosche »

nightmare2 wrote: 11 Jan 2018 03:09 Да сколько она там весит.
Мегабайт 100-200?
Копейки, по нынешним меркам.
На нашем устройстве еще недавно (2 года назад) было 32 мега рама и 32 флеша (это на продвинутом, а на бюджетном 16 рама, из них оська занимала 9) и крутись как хочешь. Резонно спросить нахуа весь этот цирк, если разница в 5$? но кода речь идет о продажах миллионными тиражами, увы, страдают софт. девелоперы. На новых устройствах уже страшно сказать 128Мб, а на топовых 512! :shock: :D
StrangerR
Уже с Приветом
Posts: 38046
Joined: 14 Dec 2006 20:13
Location: USA

Re: Шедевр кода

Post by StrangerR »

geek7 wrote: 10 Jan 2018 22:40
Prosche wrote: 10 Jan 2018 19:39 Идея была показать, что решение со словарем ничуть не длиннее, не сложнее, не... в общем лучше всяких ифов и свитчей:)
Т.е. поскольку место капитана уже занято
подались в лейтенанты :D
Где как. У меня например (1) шаблоны там и (2) важна последовательность их проверки.

Конечно можно массив изобразить но обычные if ничуть не хуже были. Хотя и некрасиво конечно.
User avatar
lxf
Уже с Приветом
Posts: 13593
Joined: 04 Jul 2001 09:01
Location: Boston, MA

Re: Шедевр кода

Post by lxf »

Помнится давно мне пришлось доделывать сайт, написанный на ColdFusion. Там тоже была дикая возня с календарём и кучей кейсов, а в конце была приписка -- Sorry guys I could not figure out how to make this shit shorter... По крайней мере автору была не чужда самокритика. :-)
Larsonsager
Уже с Приветом
Posts: 1860
Joined: 02 Sep 2016 20:26

Re: Шедевр кода

Post by Larsonsager »

Я видел код, где какое-то несложное выражение типа A*sin(x) + B*cos(x), верное для любого x, было расписано для пущей надежности в виде:
if (x < pi/2)
{
C = A*sin(x) + B*cos(x);
}
else if (x >= pi/2 && x < pi)
{
C = A*cos(x - pi/2) - B*sin(x - pi/2);
}

- и так 16 раз, потому что на самом деле там не только x, но и y менялся, и как x, так и y могли попадать в каждый из четырёх квадрантов.

Но вот что любопытно: этот чувак уже к 30 годам, написав к тому моменту около тридцати статей (каждую свою статью он публиковал дважды: по-английски с соавторами в журналах американских и королевских обществ и по-китайски с урезанным числом соавторов в Китае), стал ассосиейт-профессором в родном Китае, получил солидную по меркам американской профессуры зарплату, дом в бесплатное пользование и - благодаря своей позиции - хорошую позицию для жены. Потрясающая работоспособность и отсутствие привычных западному ученому моральных принципов легко перевесили пробелы в тригонометрии и программировании.
User avatar
M. Ridcully
Уже с Приветом
Posts: 12003
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Шедевр кода

Post by M. Ridcully »

Larsonsager wrote: 31 Jan 2018 01:02 Я видел код, где какое-то несложное выражение типа A*sin(x) + B*cos(x), верное для любого x, было расписано для пущей надежности в виде:
if (x < pi/2)
{
C = A*sin(x) + B*cos(x);
}
else if (x >= pi/2 && x < pi)
{
C = A*cos(x - pi/2) - B*sin(x - pi/2);
}

- и так 16 раз, потому что на самом деле там не только x, но и y менялся, и как x, так и y могли попадать в каждый из четырёх квадрантов.
Без 16 раз, наверное, можно бы было и обойтись, но может вы чуток приукрасили?

А сделать несколько вариантов, чтобы избежать экстремумов или потери точности - то что в этом плохого?
tau
Уже с Приветом
Posts: 510
Joined: 07 Dec 2001 10:01
Location: toronto

Re: Шедевр кода

Post by tau »

Функция sin(x) определена на всём пространстве вещественных чисел, по идее. К тому же, sin(x) === cos(x - pi/2) для любого х, как и было сказано.
Выглядит странно, конечно. Программист мог бы объяснить тем, что там были изначально разные формулы для разных квадрантов, а потом усохли. Понятно же, что эволюционные наслоения в коде иногда приводят и к более смешным наслоениям.
tau
Уже с Приветом
Posts: 510
Joined: 07 Dec 2001 10:01
Location: toronto

Re: Шедевр кода

Post by tau »

dup

Return to “Вопросы и новости IT”