Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 ... 146 147 148 [149] 150 151 152 ... 176   Вниз
  Печать  
Автор Тема: Общаемся обо всём!  (Прочитано 1539067 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4440 : 23-08-2017 21:13 » 

Для возврата может использоваться любое число регистров. Главное, чтобы вызывающий и вызываемый использовали единый протокол.
На NASM могу передать и то и то, используя, например, пару EAX-EBX, но как это представить на "С" - возврат двух параметров от функции?

Мне видится только один вариант: сделать заблаговременно структуру, и передавать в функцию указатель на неё, а саму функцию делать void. В любом виде для этого потребуется оборот с памятью и ещё много чего.

Либо так, либо делать отдельный стек данных. Например, Perl так работает. Отдельный стек вызовов, отдельный стек данных. Позволяет передавать в функцию любое число аргументов, позволяет передавать функции свои же аргументы в следующий вызов без копирования (ну, если такое допустимо), позволяет вернуть любое число значений.
Возвращаясь к Си. У GCC есть тип unsigned long long (128 бит). На 64-битных платформах он даже возвращается в паре регистров. Извратившись через union туда можно напихать несколько меньших значений. Но лучше все таки передавать указатель на структуру.
« Последнее редактирование: 23-08-2017 21:15 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4441 : 23-08-2017 23:23 » 

Как я вижу работу МП: есть выделенный поток управления, главная задача которого - это доступ к железу, организации памяти, созданию потоков и их переключению. Сами потоки изолированы от железа, не должны порождать никакие прерывания, исключения, чтобы не нарушить расчётного времени собственного исполнения в диспетчере задач, и сделать систему более "прозрачной".

1. Что даст такая "прозрачность"? Я не смог придумать ей достойного применения.
2. Как определить значение "расчётного времени собственного исполнения" в программе, имеющей условные операторы (т.е. не зацикленной монотонно на одной последовательности инструкций).
3. Какая катастрофа случится, если это расчетное время нарушится, если программа изолирована от внешнего мира и не имеет никакого отношения к системам реального времени?

В свою очередь, приход и уход данных с сетевой карты или диска также не должен быть прерыванием. Просто, приняв данные, канал связи должен выставить флаг о приёме, чтобы ОС в свободное от выполнения потоков время сумела спокойно проанализировать эти данные и предпринять необходимое.

Это возврат в эпоху первых компьютеров. Считали очередную колоду перфокарт, запустили на выполнение. Остальные терпеливо ждут своей очереди. Опрос флага готовности устройства вполне приемлем для потехи вроде ардуины, у которой главное назначение - "лишь бы не курили за гаражами", но совершенно непригоден для чего-то большего.

То есть, с точки зрения системы, прерывания для МП не так важны, его задачи не должны гарантировать время

И сразу же ставите крест на обработке видео, аудио, всякие скайпы и тому подобное. Ну и на игры динамичнее тетриса заодно.

я сторонник, если нужно, вставить несколько МК, чем вставить один МП и заниматься отладкой его программных компонентов по времени.

Как я недавно выяснил на практике, именно этим заклинанием открывается портал в ад. Консультирую один проект (сейчас в нем перерыв на летние отпуска), в котором, к сожалению, даже нехилую многослойную плату успели под это дело развести. Успел заказать переразводку, а пока пытаюсь как-то выкрутиться с тем, что есть.

Межпроцессорные коммуникации посложнее межпроцессных.

Но суть разговора была вообще в другом - в декларации вызова, что возврат параметра идёт через аккумулятор и только. И что его мало, чтобы вернуть разом и статус функции и результат функции.

Мы ведь вроде пришли к тому, что нет никакого аккумулятора в общем случае. Есть на нескольких простейших 8-битных архитектурах, которые не задают тренда. И есть на процессорах Intel, которые затесались в эту плохую компанию. Для них гораздо типичнее использование в качестве ЦП ПК, а не управляющего МК (да, я знаю про платы для встраивания на x86, но по архитектуре это тот же ПК, да и тиражи не того порядка, что у МК). Ну а для типичных задач ПК язык C не слишком адекватен. Гораздо больший интерес он представляет для МК (хотя и тут C++ сильно наступает на пятки).

Поэтому слово "аккумулятор" лучше вообще изъять из обращения. С ним обсуждение теряет общность. Получается нечто вроде "вы можете заказать у нас любой автомобиль при условии, что это будет Форд-Т черного цвета".

про ловлю ошибок через механизмы языка throw-catch я уже писал ранее - без аппаратной поддержки это повлечёт перерасход чего-нибудь. Структуры служебные появятся.

Я как-то давненько набросал для клуба статью "Обработка исключений на языке C",  в которой описана простейшая, но полнофункциональная обработка исключений на C. Дополнительная аппаратная поддержка не требуется, "перерасход чего-нибудь" не обнаружен, накладные расходы ("служебные структуры") - одно слово на исключение. Задействован штатный механизм языка C - переходы longjmp.

Я о чём: за весь период я не знаю ни одной практической задачи, когда мне приходилось целенаправленно анализировать INF, например. Поэтому, я считаю, что сам стандарт перегружен, и проще было бы программисту просто сообщить об ошибке в результате, не вызывая ни исключения, ни прерывания - оставаясь в рамках основного потока.

Именно такое средство Вы и назвали "костылем" - функцию, которая не вызывает ни исключения, ни прерывания и просто говорит о том, что в процессе вычисления имела место ошибка. Чего же еще желать-то?

если в теле функции произошла ошибка, то следует установка такого флага, далее, в уровне из которого был совершён вызов функции она должна быть отработана. Если отработка не произошла, то программа завершается аппаратно.

А если я желаю обработать ошибку, скажем, на пятом уровне вложенности вызова, а не на первом? Такого флага мне даром не надо.

P.S. Почему-то по всей беседе красной линией проходит тема мифического перерасхода ресурсов, растраты народных тактов и прочей микрооптимизации. Не буду повторно давать ссылку на статью по этой теме, она проходила не так давно. Но уподобляться умной Эльзе, не убедившись в реальном наличии проблемы, неконструктивно (в статье множество примеров тому).
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Люсь
Модератор

ru
Offline Offline
Пол: Женский

« Ответ #4442 : 24-08-2017 18:26 » 

IMHO такого кризиса (как и возраста) реально не существует. Это лишь удобный эвфемизм, когда хорошее воспитание и обстановка не позволяют прямо сказать "@#$нутый на всю голову".

Жжешь Жжешь
Как я люблю твой стиль мышления ))
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4443 : 25-08-2017 05:36 » 

Люсь, привет )
Записан

Люсь
Модератор

ru
Offline Offline
Пол: Женский

« Ответ #4444 : 25-08-2017 17:36 » 

Алексей++, и тебе привет )
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4445 : 26-08-2017 16:10 » 

Жжешь Жжешь
Как я люблю твой стиль мышления ))

За годы жизни у многих постепенно вырабатывается этакий ненаписанный личный энциклопедический словарь: слева - завуалированное понятие, справа - что в действительности за этим стоит. "Кризис среднего возраста" - это страница из моей энциклопедии.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Люсь
Модератор

ru
Offline Offline
Пол: Женский

« Ответ #4446 : 27-08-2017 13:57 » 

Кризис среднего возраста - это стиль жизни, я б сказала.
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4447 : 27-08-2017 17:59 » 

Каждый раздел моей ненаписанной энциклопедии - это своего рода стиль жизни. Например, "принципиальный", "вспыльчивый", "практик" и многие другие.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4448 : 27-08-2017 19:13 » 

Кризис среднего возраста - это стиль жизни, я б сказала.
Я фильм смотрел: "Премия Дарвина" ("The Darwin Awards" выпуска 2006 года), там раскрыта тема кризиса среднего возраста и других кризисов. Посмотреть очень рекомендую, весьма поднимает настроение.

Например, "принципиальный", "вспыльчивый", "практик" и многие другие.
Насчёт "вспыльчивого" интересно послушать, сам иногда думаю: откуда вообще идёт наглость? От неосознанности последствий или от избытка защищённости, когда все выходки кто-то прикрывает.
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4449 : 27-08-2017 20:08 » new

Насчёт "вспыльчивого" интересно послушать

Вот моя субъективная интерпретация эпитета "вспыльчивый".

Каким он видит себя: бесстрашный мачо, способный смело высказать свою точку зрения и настоять на ней. Не тварь дрожащая, а право имеет. При этом все средства хороши: если нужно повысить голос или тряхнуть оппонента за грудки, ничего страшного, ради истины можно.

Каким он выглядит в глазах окружающих: самовлюбленный хам, наглая агрессивная мразь без тормозов, которая волей судьбы оказалась в окружении, не способном дать достойный отпор (или еще не исчерпавшем лимит терпения). В иной ситуации проще проигнорировать "вспыльчивого", чем мараться. Тем более что для поединка вы будете вынуждены опуститься до его уровня, ведь ему до вашего не подняться, а на разных параллельных плоскостях вам не сойтись. После такого вынужденного спуска даже победа не обрадует.

Когда в окружении появляется сильная личность, способная поставить хама на место, у "вспыльчивого" тут же рефлекторно срабатывает мускул, втягивающий язык в задний проход и надежно фиксирующий его там до поры. Внезапно выясняется, что он вполне способен себя контролировать, да и вообще славный малый. По крайней мере, до тех пор, пока новый лидер не отлучится надолго...

"Вспыльчивые" в интернете - это вообще особое явление. Просто бесценный подарок для троллей: заводится с пол-оборота, закатывает колоритнейшие истерики. Самый апофеоз - классическое: "Все, ты труп! Я тебя вычислил по IP!" (как вариант - TCP, UDP, HTTP или другое умное сочетание букв, смысла которого "вспыльчивый" не понимает, но точно помнит, что именно так принято пугать в интернете).
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4450 : 28-08-2017 07:24 » 

Когда в окружении появляется сильная личность, способная поставить хама на место, у "вспыльчивого" тут же рефлекторно срабатывает мускул, втягивающий язык в задний проход и надежно фиксирующий его там до поры.
Вот с этим есть нюанс: большая часть хамов понимают только силу, а попытки договориться принимаются за слабость. Однако, есть некоторый правовой интервал, когда поведение не рассматривается однозначно по закону. Вообще, в любом конфликте обычно участвуют не две, а четыре стороны: первая, вторая, государство и заинтересованные люди. Таким образом, победив силой, можно напороться на заявление в полицию о побоях со стороны пострадавшего. Получается, что с присутствием такой личности напряжение будет присутствовать однозначно и неопределённо долго, и если говорить о рабочем коллективе, то практика показывает: многое зависит от руководителя. В отдельных случаях он может покрывать бесчинства и дебоши, преследуя некую неизвестную сотрудникам цель. Так стоит ли упираться в желании отряхнуть сандалии и пойти искать другое место, когда командная игра идёт против Вас? Я сразу вспоминаю поговорку: "Если Вы работаете на козла, то это означает, что Вы баран."

А в быту несколько тяжелее, тут может встретиться странное поведение со стороны органов правопорядка в купе с диким правовым вакуумом, чаще образованным именно процессуальной частью. Большинство конфликтов возникают и растут именно из-за того, что правоотношения никто не регулирует.
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4451 : 28-08-2017 07:54 » 

Получается, что с присутствием такой личности напряжение будет присутствовать однозначно и неопределённо долго, и если говорить о рабочем коллективе, то практика показывает: многое зависит от руководителя.

На работе такие конфликты решаются обычно довольно просто, даже без вмешательства руководителя. Просто негромко, но четко говоришь "вспыльчивому" коллеге: "Любезный, приберегите свой тон для общения дома с женой и тещей; на работе будем общаться согласно корпоративной этике" (благо у нас даже кодекс этой самой этики имеется и изучается всеми сотрудниками со сдачей зачета). Обычно отрезвляет. Если нет, диалог завершается коротко: "В таком случае пошел вон". На этом непосредственное общение заканчивается, все дальнейшее общение со мной "вспыльчивый" будет вести через своего руководителя.

За 17 лет работы на нынешнем месте до второго сценария дошло лишь дважды.

А в быту несколько тяжелее

Когда тяжелее, а в некоторых аспектах все же легче. Простой хрестоматийный пример: дележка драгоценного места для стоянки автомобиля возле многоквартирного дома. Классическое поле битвы маститого быдла... ой, простите, "вспыльчивых" разных калибров, которые "всегда тут ставил, и будет ставить, а кто сунется - сожгу тачку нахер!", и вменяемых жильцов, которые де-юре имеют те же права, но вот де-факто...

Можно поучаствовать в этом балагане с захватом мест на газонах (и без того не слишком пышных) и тротуарах, обнесением самозахваченных мест всякими тросиками, цепями и блокираторами, ежеутренними разборками, кто кому перекрыл выезд. А я вместо этого предпочел приобрести подземный гараж в соседнем дворе и самоизолировался от этих страстей навеки. Согласен, малодушное решение, но до чего же комфортно на душе от невмешательства в эту борьбу в дерьме - не передать словами.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4452 : 28-08-2017 07:55 » 

Сейчас в России можно почти все. Главное бить аккуратно, чтобы не потянуло на тяжелые повреждения или хуже. Это теперь административка и штраф, если пострадавший самостоятельно докажет в суде. Все для народа: пей, гуляй, мочи друг друга. И грубые нарушения ПДД тоже пустяки: лети на красный, гоняй от ГИБДД, хоть круги на перекрестке с дымом из под шин рисуй - пусть сперва докажут, что это был ты, после - небольшой штраф. А вот с государственным флагом ходить нельзя, это нарушение каких-то неведомых законов. В общем, славное время для хамов.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4453 : 28-08-2017 11:59 » 

Согласен, малодушное решение, но до чего же комфортно на душе от невмешательства в эту борьбу в дерьме - не передать словами.
Да, нет, решение нормальное, поступаю также.

Сейчас в России можно почти все.
... можно почти всё, но не всем. Улыбаюсь

Силовой подход опасен тем, что может привести к ситуации "Прав тот у кого больше прав." Иными словами, как пример, у дядьки полицейского горит раскрываемость, и невинный синяк под глазом могут представить в виде покушения на убийство. В уме подозреваемого будет крутиться: "Как бы отмазаться от этого", а у дядьки: "Премия, внеочередной отпуск и досрочная обеспеченная пенсия." В этом, вероятно, состоит часть ключа, почему, например, бытовые преступления оформляются за день, а какого-нибудь маньяка, который грохнул не один десяток людей, ищут по тридцать лет! А действительно, зачем он полиции нужен, так ведь можно и своему здоровью ущерб причинить, куда проще караулить пока очередной водитель, например, превысит лимит скорости - вполне безопасно и прибыльно.
Записан
BlueWhite
Интересующийся

il
Offline Offline
Пол: Мужской

« Ответ #4454 : 04-09-2017 07:23 » 

Понравилось про "вспыльчивый" - напомнило СССР с его "отсутствием предпосылок к проституции" и "перевоспитание воров в заключении под стражу".
Т.е. знаний 0 - рассуждений масса.
Вспыльчивость - если мы говорим о ее реальности - это тип характера обусловленный химией мозга, гуглите причины злости андреналин и прочие химические элементы от которых зависит быстро вы злитесь, или можете спокойно смотреть в лицо матерящегося быдла.
Записан
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4455 : 04-09-2017 13:07 » 

Вспыльчивость - если мы говорим о ее реальности - это тип характера обусловленный химией мозга, гуглите причины злости андреналин и прочие химические элементы от которых зависит быстро вы злитесь, или можете спокойно смотреть в лицо матерящегося быдла.
Да, темперамент имеет место быть, но я согласен с Dale в том, что несмотря на всю биологическую предрасположенность к агрессии, степень этой агрессии можно серьёзно регулировать. В деморализованном разнузданном обществе вероятность дебошей заметно больше, чем в организованном. При явной неадекватности человека необходимо предпринять меры, и тут мы сталкиваемся с законодательными нюансами и пробелами в процессуальной части.
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4456 : 04-09-2017 13:54 » 

Да, темперамент имеет место быть

Это лишь один из вариантов попытаться объяснить причину, не лучше и не хуже других. Не это главное.

Мудак ведет себя как мудак, потому что он - мудак. Вот так просто, в духе Оккама.

Вот теперь можно поиграть в ученых и поискать ответ на вопрос, почему случилось так, что он - мудак. Возможно, предки-мудаки передали ему ущербные гены. Возможно, биоалхимия, гормоны и прочие глюконаты аденинтрифосфата стимулируют рост железы наглости. А может, просто рядом не оказалось никого, способного вовремя начистить рыло, когда мудачество только формировалось у личинки мудака. Все это вторичные детали. В основе - формула выше.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4457 : 04-09-2017 15:20 » 

Вот теперь можно поиграть в ученых и поискать ответ на вопрос, почему случилось так, что он - мудак.
Что такое вспыльчивый на производстве: работают два токаря примерно одного возраста. Один спокойный, а второй шило в известном месте, то подшутит над первым, то высмеет. Со временем, стимулированная пассивностью первого и безынициативностью руководства наглость привела к тому, что второй первому начал давать пендали. В один момент, когда точка кипения была всё таки превышена, вспыльчивый получил по голове разметочным штангенциркулем, вместе с ухом отвалился кусок черепа.
Результаты: дурак похоронен, руководство напечатало объяснительных на пачку листов А4, получило выговор, но осталось у руля. А вот по сути потерпевший был приговорён к сроку, в ходе которого он будет работать бесплатно. Мало того, после возвращения, это клеймо может тянуться весьма долго.

Выводы следующие: систему можно организовать так, что общество будет обогащаться разными недружелюбными элементами. Причём, пока первые воюют со вторыми на этом крепко наживаются третьи.
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4458 : 04-09-2017 20:52 » 

BlueWhite, вот скажите.. дата регистрации 2013, 5 сообщений.
Да тут люди с 1000 уже не приходят. Что вы здесь делаете?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4459 : 04-09-2017 22:43 » 

Выводы следующие: систему можно организовать так, что общество будет обогащаться разными недружелюбными элементами.

Вот еще история вспомнилась в тему. Прочитал в блоге одного известного инструктора по дрессировке собак, который берется за самые сложные случаи. Берет дороговато, на мой взгляд, но и результат того стоит, судя по множеству благодарных отзывов.

Как-то раз привели ему молодого кобеля немецкой овчарки. Тому достался от природы сильный характер. Он попробовал на прочность членов семьи, убедился в их податливости и в итоге назначил себя вожаком стаи. Творил что хотел, а на попытки хозяев призвать к порядку мог и серьезно покусать.

Вспыльчивого кобеля поместили в вольер. На контакт не шел, при попытке инструктора войти принялся рвать в клочья. В результате инструктор его немного придушил и навалял хороших звиздюлей. В меру, конечно, не покалечить, а донести мысль, что тот не прав со своей вспыльчивостью. Примерно так, как делает вожак стаи с зарвавшейся молодежью.

Через несколько уроков кобель понял, что, оказывается, он не самый крутой на свете, есть и покруче. Хозяевам вернули просто золотого пса, послушного и покладистого. Не забитого, не сломленного, а просто понявшего свое место в этом мире. Умел бы говорить, возможно, поблагодарил бы инструктора за науку.

Я полагаю, если бы этот инструктор перешел с собак на "вспыльчивых" людей, ему бы многие коллективы сказали большое спасибо. И медикаменты не слишком затратные, всего-то аркан да кнут, но как исцеляют! От былого адреналина и следа не останется.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4460 : 05-09-2017 08:11 » 

Как-то раз привели ему молодого кобеля немецкой овчарки. Тому достался от природы сильный характер.
Немецкая овчарка - служебная собака, она легко дрессируется и меняет хозяев. Мой прадед был хорошим знатоком лошадей, и он говорил, что какой конь родился по темпераменту, таким он и останется. Собственно отсюда и пошло исторически деление на: меланхоликов, холериков, флегматиков и сангвиников. Так вот, если лошадь холерик, то можно не дожидаться её эксплуатационного периода, а сразу отправить на колбасу. С людьми так нельзя, но вопрос в том, что и кто продвигает. Позиция, когда местное управление ждёт, не решая споры, пока люди начнут душить друг друга, чтобы их посадить и получить звёздочку на погоны, мне не близка.
Записан
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4461 : 05-09-2017 14:44 » 

А можно поговорить на такую тему: иногда встречаю в различных API весьма забавные вещи, например:
Цитата
HBITMAP CreateBitmap(
  _In_       int  nWidth,
  _In_       int  nHeight,
  _In_       UINT cPlanes,
  _In_       UINT cBitsPerPel,
  _In_ const VOID *lpvBits
);
Как можно видеть, ширина и высота требуемого изображения указывается в виде целого числа со знаком, но, исходя из здравого смысла, никакое изображение не может быть выражено отрицательными габаритами. Точно также при рисовании линий, они не могут иметь отрицательную ширину, и так далее.

А действительно ли программистам нужен целый тип со знаком? Обычно целые числа используются для организации индексов, указателей, и они работают в положительном сегменте. Большую часть математики всё равно приходится считать в представлении с плавающей запятой.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4462 : 05-09-2017 15:47 » 

Если вспомнить, как рисуется экран, и какая именно точка берется за нулевую. То в декартовой системе координат, это соответствует 4 плоскости. У которой координата Y отрицательна.  

Много раз встречал, возврат из функции отрицательного значения, обозначает что, данная фунция отработала не корректно.
« Последнее редактирование: 05-09-2017 15:50 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4463 : 05-09-2017 16:05 » 

Если вспомнить, как рисуется экран, и какая именно точка берется за нулевую. То в декартовой системе координат, это соответствует 4 плоскости. У которой координата Y отрицательна. 
У экрана ось Y просто инвертирована по направлению, точно также, например, принято рисовать эпюры моментов. Однако сами числа остаются при этом вполне положительными и соответствуют первой четверти.

Много раз встречал, возврат из функции отрицательного значения, обозначает что, данная фунция отработала не корректно.
Когда мы пишем что-то вроде "return -1", то фактически это означает "mov eax, 0xFFFFFFFF". Точно также можно использовать любое число, например, "return UINT32_MAX".
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4464 : 05-09-2017 18:46 » 

В свое время я изобретал велосипед. В моем сучае. Мне нужно было посчитать, входит ли точка в прямоугольник. Прямоугольник как правило представляется, как начальная точка и длины сторон.
1 способ. Пересчитать вторую точку. А потом if по всем координатам входит ли заданная точка в промежуток.
2 способ. От координат точки отнять координаты начальной точки прямоугольника. А потом уже сравнивать с длиннами. Если получилось отрицательное значение. То однозначно, не входит. Если больше длины стороны. Также не входит.

Добавлено через 3 минуты и 40 секунд:
"return UINT32_MAX".
Я бы не привязывался бы к маклимальному значению. При изменении разрядности вычислений, int должно менять свою разрядность. По стандарту. Насколько я помню.
« Последнее редактирование: 05-09-2017 18:50 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4465 : 05-09-2017 19:15 » 

1 способ. Пересчитать вторую точку. А потом if по всем координатам входит ли заданная точка в промежуток.
2 способ. От координат точки отнять координаты начальной точки прямоугольника. А потом уже сравнивать с длиннами. Если получилось отрицательное значение. То однозначно, не входит. Если больше длины стороны. Также не входит.
Первый и второй способ по сути одинаковые. Когда прорабатывается группа if, то тоже происходит вычитание с последующей оценкой флагов. А вот дальше разница.
Если изначально все координаты задавать в беззнаковом типе, то анализировать придётся флаг переполнения - cf.
Если задавать координаты в знаковом типе, то анализировать придётся флаг знака - sf. (А также флаг переполнения со знаковыми операциями - of).

Я бы не привязывался бы к маклимальному значению. При изменении разрядности вычислений, int должно менять свою разрядность. По стандарту. Насколько я помню.
Так-то да, это к примеру.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4466 : 05-09-2017 19:45 » 

Если ты пошел так глубоко в ассемблер. Операция сравнения, это тоже отнимание. Только результат не записывается в регистр. Остается только результат в флагах. Равно нулю, знак переполнения и  так далее.
Мне лично не мешает знаковое целое число. Все равно, даже 31 разрядный предел я никогда в своей практике не переходил при вычислениях.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4467 : 06-09-2017 05:12 » 

Aether, по поводу CreateBitmap - в WinAPI не следует искать стройности. Следует точно прочитать  описание, а также приложить предыдущий опыт использования Отлично https://msdn.microsoft.com/en-us/library/windows/desktop/dd183485(v=vs.85).aspx

в данном случае разработчики, вероятно, оставляли возможность задавать отрицательную величину, мало ли, могло пригодиться для какого-нибудь отзеркаливания. Сейчас, скорее всего, просто функция вернёт  NULL и GetLastError()!=0 при отрицательных значениях.  Недокументированные возможности, если они там есть, лучше не употреблять )
Записан

Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4468 : 06-09-2017 08:08 » 

Это понятно, просто заметил факт, что когда что-то пишу на ассемблере, то обычно не использую знаковые числа, а в "С" знаковые являются чуть ли не основным форматом. И часто лепят их без физического обоснования. Может попросту "int" короче "unsigned int"?

Интересно, есть ли статистика по использованию тех или иных групп команд?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4469 : 06-09-2017 08:27 » 

Именно, короче.
По этому я использую типы из stdint.h или определяю свои типы, которые семантически лучше, чем безликие int.
Код:
#include <stdint.h>

// так короче
#typedef pos_t unsigned int;

// а так можно управлять размерностью типа
#typedef pos_t uint16_t;
« Последнее редактирование: 06-09-2017 20:34 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: 1 ... 146 147 148 [149] 150 151 152 ... 176   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines