Программисты и системы счисления

Jun 08, 2020 12:26

За уже почти 30 лет программирования и примерно 25 лет работы программистом, что-то, хотя бы отдалённо напоминающее использование систем счисления, отличных от десятичной, я видел примерно два раза ( Read more... )

альтернативно одарённые, контрманипуляция сознанием, программирование

Leave a comment

Comments 142

Всё программирование сводится к программированию ПК? pavabor June 8 2020, 10:46:55 UTC
Открываешь какой-нибудь датащит к какому-нибудь контроллеру (а конкретно для 128 x 64 Dot Matrix
OLED/PLED Segment/Common Driver with Controller), а там:
D/C# Hex D7 D6 D5 D4 D3 D2 D1 D0 Command Description
0 81 1 0 0 0 0 0 0 1
0 A[7:0] A7 A6 A5 A4 A3 A2 A1 A0
Set Contrast Control Double byte command to select 1 out of 256
contrast steps. Contrast increases as the value
increases.
(RESET = 7Fh )
Тут тебе и битики расписаны, и диапазон десятичный и шеснадцатиричные значения.
Да, переводить из систему в систему не так часто нужно, но приходится, а уж ориентироваться в этом быстро - практически необходимо.
Да и памяти, на какой-нибудь avrtiny85 - 512 Kb - заводить тру/фалс для каждого чиха жирно будет, как и фунции лишние.

Reply

Re: Всё программирование сводится к программированию П lex_kravetski June 8 2020, 10:49:07 UTC
…причём взращенные школой образованные люди потом начинают прямо так всё это дело и программировать.

Reply

Re: Всё программирование сводится к программированию П pavabor June 8 2020, 11:06:47 UTC
Да ещё и на ассемблере небось, прикинь, какое непотребство.

Reply

Re: Всё программирование сводится к программированию П lex_kravetski June 8 2020, 11:25:44 UTC
Некоторые даже прямо сразу в машинных кодах. Это же очень удобно, когда вместо одного часа на задачу тратится полгода: во-первых, человек при деле, во-вторых, всегда есть, что написать в отчётах, в-третьих, не приходится искать этим людям новые задачи. Именно поэтому сии специалисты так сильно востребованы.

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

Reply


skulsky_k June 8 2020, 11:12:13 UTC
Программировал довольно современный контроллер открытия/закрытия дверей по отпечаткам. К примеру права доступа на открытие 4-х дверей шифровались в "двоичном" коде. Типа 1 (0001)- можно входить только в первую дверь - 3(0011) - только во вторую и первую. а 15(1111) - может во все. Т.к. не сразу догадался, пришлось побегать вручную подёргать ручки, чтоб понять.

Reply


sealcon June 8 2020, 11:49:33 UTC
Ну а я за последние лет десять программирования ровно наоборот: что-то, хотя бы отдаленно напоминающее использование десятичной системы, видел в исходниках считанные разы. Программирование оно такое, бывает очень разным.

Reply

lex_kravetski June 8 2020, 11:53:10 UTC
Одно другому не мешает. Я не говорил, что десятичные числа, отличные от 0 и 1, мне в программах встречались сильно чаще. Как правило, в программах чисел вообще крайне мало.

Reply


ilike83 June 8 2020, 12:07:56 UTC
Я работал в одной софтверной конторе, 70 шт. проггеров, причем не тупых кодеров, а "программистов" с компетенциями аналитиков, постановщиков и знанием предметной области. 69 не смогли ответить что за цикл фон Неймана такой...Только один, олдовый, ответил вопросом на вопрос: "А как знание цикла фон Неймана или машины Тьюринга поможет всем им в программировании веб-интерфейса или эскуэль-запроса на полстраницы а4?"

Reply

lex_kravetski June 8 2020, 12:24:35 UTC
Я бы ответил вот так.

https://lmgtfy.com/?q=%D1%86%D0%B8%D0%BA%D0%BB+%D1%84%D0%BE%D0%BD+%D0%BD%D0%B5%D0%B9%D0%BC%D0%B0%D0%BD%D0%B0

Но тот программист, конечно, тоже молодец, всё правильно сказал.

Reply

the_aaa13 June 8 2020, 14:10:20 UTC
Довольно показательно что там, в выдаче, нет цикла фон Неймана, а есть архитектура.

Reply

lex_kravetski June 8 2020, 14:15:30 UTC
В гугле прямо по первой же ссылке есть.

Reply


poxu June 8 2020, 12:13:49 UTC
Один момент упущен. С двоичной системой программист ещё сталкивается, когда узнаёт, то если взять переменную типа byte, потом записать туда 127, потом прибавить единицу, то получится внезапно минус 128. Похоже на то, что возникает с float и double, но немного другая штука.

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

И, кстати, битовые флаги вместо массива boolean исползуются не для того, чтобы сэкономить оперативную память, а для того, чтобы засунуть больше флагов в кеш

Reply

lex_kravetski June 8 2020, 12:27:32 UTC
> Один момент упущен. С двоичной системой программист ещё сталкивается, когда узнаёт, то если взять переменную типа byte, потом записать туда 127, потом прибавить единицу, то получится внезапно минус 128. Похоже на то, что возникает с float и double, но немного другая штука.

Это вообще пох. Ты читаешь про тип инт, и там сказано, что покрываемый им диапазон от min_int до max_int. Собственно, это всё, что нужно знать на практике.

> И, кстати, битовые флаги вместо массива boolean исползуются не для того, чтобы сэкономить оперативную память, а для того, чтобы засунуть больше флагов в кеш

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

Reply

poxu June 8 2020, 12:48:24 UTC
Ну тогда и про деление на практике нужно знать только, что его результат неточен, когда в делении участвует double или float. Какое отношение это имеет к двоичным числам знать нет никакого смысла.

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

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

Reply

lex_kravetski June 8 2020, 12:50:36 UTC
> Ну тогда и про деление на практике нужно знать только, что его результат неточен, когда в делении участвует double или float.

Именно так.

> Какое отношение это имеет к двоичным числам знать нет никакого смысла.

Вообще никакого - чисто из интереса для объяснения эффекта парой фраз.

> И так как для того, чтобы этот код переписать, понадобилось бы не меньше трёх дней, было принято волевое решение использовать флаги во всём проекте.

А можно-то было сделать объект или функцию для конвертации.

Reply


Leave a comment

Up