256 в программировании что это такое
День программиста в России: история праздника
День программиста в России был утвержден указом президента РФ 11 сентября 2009 года и отмечается ежегодно в 256‑й день года ‑ 13 сентября, а если год високосный ‑ 12 сентября.
Неофициально этот день уже давно празднуют во всем мире.
Дату ‑ 256‑ой день года ‑ выбрали сами программисты. 256 ‑ это количество целых чисел, которое можно выразить с помощью одного восьмиразрядного байта, а также это максимальная степень числа 2, которая меньше количества дней в году ‑ 365.
Программист ‑ это специалист, занимающийся разработкой программного обеспечения (ПО) для персональных, встраиваемых, промышленных и других разновидностей компьютеров, то есть программированием.
Инициатива учредить день программиста в России принадлежит сотруднику компании «Параллельные технологии» Валентину Балту.
В рамках подготовки проекта документа об учреждении в России профессионального праздника программистов специалисты Министерства связи и массовых коммуникаций РФ провели консультации с общероссийским объединением профессиональных союзов, а также с общероссийскими объединениями работодателей Ассоциации предприятий компьютерных и информационных технологий (АПКИТ) и «Руссофт» (объединение крупнейших и наиболее влиятельных компаний‑разработчиков программного обеспечения России).
24 июля 2009 года Министерством связи и массовых коммуникаций РФ был подготовлен и внесён в правительство РФ проект указа президента России «О Дне программиста».
В России программисты отмечают свой профессиональный праздник еще и 22 апреля, или 22.04. Возникновение этой даты связано с кодировкой специальности 220400 ‑ «Программное обеспечение вычислительной техники и автоматизированных систем».
Первым программистом принято считать математика Аду Августу Лавлейс, дочь английского поэта Джорджа Байрона. 19 июля 1843 года она написала программу для первого программируемого вычислительного устройства, аналитической машины, которую разработал английский математик Чарлз Бэббидж. Эта программа решала уравнение Бернулли, выражающее закон сохранения энергии движущейся жидкости.
В своей первой и единственной научной работе Ада Лавлейс рассмотрела большое число вопросов. Ряд высказанных ею общих положений (принцип экономии рабочих ячеек памяти) сохранили свое принципиальное значение и для современного программирования. В материалах Бэббиджа и комментариях Лавлейс намечены такие понятия, как подпрограмма и библиотека подпрограмм, модификация команд и индексный регистр, которые стали употребляться только в 1950‑х годах.
Материал подготовлен на основе информации РИА Новости и открытых источников
День программиста – 256-й в году
Я календарь переверну и снова – третье сентября? Нет, 13-е – и это День программиста! В 2021-м именно на понедельник 13.09 приходится 256 день года.
Для причастных к программированию привязка к 256 очевидна, ведь это максимально возможное число элементов любой системы с 8-битным кодированием. Причем 256 = 2 в степени 8, где два символизирует двоичную систему счисления, а восемь – количество битов в одном байте – самое высокое значение степени числа два, при котором получается число меньше, чем дней в году.
Идею праздновать День программиста именно в 256-й день года выдвинул в 1996-м Дмитрий Мендрелюк, создатель ИД «Компьютерра». Спустя 6 лет её развил веб-программист Валентин Балт, подготовивший обращение к властям и собравший за пять дней 10 тыс. подписей в поддержку инициативы.
Ещё 6 лет ушло на разработку Минкомсвязи проекта президентского указа об официальном статусе Дня программиста, внесённого на рассмотрение кабмина в июле 2009-го и подписанного 11.09.2009 Д. А. Медведевым за №1034. После этого государственный календарь и пополнился новым праздником.
Хотя неофициально праздник программистов и всех тех, кто имеет отношение к разработке, отмечался и раньше, правда, кому и когда вздумается.
Долгое время людей, связанных по роду деятельности с компьютерами, чествовали 22 апреля: цифровой способ написания даты – 22.04., а 2204 – код специальности «Программное обеспечение вычислительной техники» в Общероссийском классификаторе, впрочем, уже заменённый на 230105.65.
Часть разработчиков считала своим днём 19 июля: тогда английский математик Ада Августа Байрон Кинг написала первую программу для аналитической машины Чарльза Бэббиджа. Кто-то праздновал 10 декабря – в день рождения самой графини Ады Лавлейс (к слову, именно она ввела такие термины, как «рабочая ячейка», «цикл» и написала ряд фундаментальных трудов с описанием основных принципов программирования). Веб-разработчики отмечали 4 апреля, выбрав дату (4.04), аналогичную ошибке 404. Помимо этого, 4 апреля католики считают Днём святого Исидора Севильского, официального покровителя интернета. Кто-то предлагал праздновать День программиста 26 июля – в этот день в 1989 году 24-летнему американскому студенту Роберту Моррису было предъявлено первое в истории обвинение в создании и запуске компьютерного вируса.
А кто-то – комбо и бинго! – с успехом совмещал эти даты, отмечая проф. праздник несколько раз в году, что очень удобно и по-нашему, правда?
С праздником вас, дорогие коллеги!
«Привет, мир»: разбираем каждый шаг хэш-алгоритма SHA-256
Что такое хэш-функция?
Три основных цели хэш-функций:
SHA-256 «Привет, мир»
Шаг 1 — Предварительная работа
Преобразуем «Привет, мир» в двоичный код:
Дополните код нулями, пока данные не станут равны 512 бит, минус 64 бита (в результате 448 бит):
Добавьте 64 бита в конец в виде целого числа с порядком байтов от старшего к младшему (big-endian), представляющего длину входного сообщения в двоичном формате. В нашем случае это 88, или «1011000».
Теперь у нас есть ввод, который будет делиться на 512 без остатка.
Шаг 2 — Инициализируйте значения хэша (h)
Теперь мы создаем 8 хэш-значений. Это жестко запрограммированные константы, которые представляют собой первые 32 бита дробных частей квадратных корней из первых восьми простых чисел: 2, 3, 5, 7, 11, 13, 17, 19.
Шаг 3 — Инициализация округленных констант (k)
Как и в предыдущем шаге, мы создадим еще несколько констант. На этот раз их будет 64. Каждое значение (0—63) представляет собой первые 32 бита дробных частей кубических корней первых 64 простых чисел (2—311).
Шаг 4 — Цикл фрагментов
Следующие шаги будут выполняться для каждого 512-битного «фрагмента» из наших входных данных. Поскольку фаза «Привет, мир» короткая, у нас есть только один фрагмент. В каждой итерации цикла мы будем изменять хэш-значения h0-h7, что приведет нас к конечному результату.
Шаг 5 — Созданием расписание сообщений (w)
Скопируйте входные данные из шага 1 в новый массив, где каждая запись представляет собой 32-битное слово:
Добавьте еще 48 слов, инициализированных нулем, чтобы у нас получился массив w [0… 63]
Измените обнуленные индексы в конце массива, используя следующий алгоритм:
Для i из w[16…63]:
В расписании сообщений осталось 64 слова (w):
Шаг 6 — Сжатие
Инициализируйте переменные a, b, c, d, e, f, g, h и установите их равными текущим значениям хэш-функции соответственно h0, h1, h2, h3, h4, h5, h6, h7.
Запустите цикл сжатия, который изменит значения a… h. Выглядит он следующим образом:
Все вычисления выполняются еще 63 раза, меняя переменные a-h. К счастью, мы не делаем это вручную. В итоге мы получили:
Шаг 7 — Измените окончательные значения
После цикла сжатия, во время цикла фрагментов, мы изменяем хеш-значения, добавляя к ним соответствующие переменные a-h. Как и ранее, все сложение производится по модулю 2 ^ 32:
Шаг 8 — Финальный хэш
Наконец, соединяем все вместе.
Мы прошли каждый шаг (за исключением нескольких итераций) SHA-256 в подробностях. Если хотите увидеть весь путь, что мы совершили, в форме псевдокода, заходите на WikiPedia.
Почему День программиста отмечается в 256-й день года?
Сегодня почти невозможно найти школьника, который бы не знал, что профессия будущего — это программист. Раньше большинство выпускников, даже вопреки своему желанию, становились инженерами, позже юристами и экономистами, сегодня все реалисты переключились на программирование.
Зарплаты программисты получают в разы больше остальных, если не считать госслужащих и прочих чиновников. И перспективы специальность открывает широкие и далекие.
Когда сообщество программистов обсуждало дату проведения своего профессионального праздника, были выдвинуты разные идеи, в итоге раздали всем сестрам по серьгам.
Так дата 4.04, выбранная в честь наиболее частой ошибки, которая выдается при поиске — «данная страница не найдена», стала считаться днем веб-программистов. Кстати, в этот же день в 550 году родился святой Исидор Севильский, который с 1999 года считается покровителем Интернета. Фото: Depositphotos
19 июля — день создания первой программы, написанной Адой Лавлейс, об этой удивительной женщине будет рассказано ниже. А 10 декабря празднуется день рождения самой Ады.
14 февраля компьютерщики всех мастей и стран мира отмечают общий профессиональный праздник. Именно в этот день в 1946 году был запущен первый реально работающий электронный компьютер ENIAC — эта тридцатитонная вычислительная машина послужила прародителем для всех остальных видов компьютеров. Существовала в единственном экземпляре.
9 сентября стало праздником тестировщика. Именно в этот день учёные Гарвардского университета, тестировавшие вычислительную машину Mark II, нашли мотылька, застрявшего между контактами реле, из-за чего отлаженная программа начала давать сбой. Фото: Depositphotos
28 февраля — дата, приуроченная ко дню изобретения сетевого кабеля, стала Днем IT-специалистов.
28 июля отмечают День системного администратора, или просто сисадмина.
Есть даже особый день у компьютерной мыши — это 9 декабря. В этот день в 1968 году американский учёный Дуглас Энгелбарт продемонстрировал первую модель компьютерной мыши. Тогда она представляла собой деревянный куб на колесиках с кнопкой и со шнуром, напоминавшим хвост грызуна, за что это детище и получило свое имя, став «манипулятором типа мышь».
Но все же остановились на 256-м дне года, когда свой профессиональный праздник отмечают программисты. В високосном году День программистов — 12 сентября, в обычном — 13 сентября.
Почему было выбрано такое странное число?
Большинство программистов сегодня — мужчины. Некоторые издания даже говорят, что их 99% из всех «программёров», как они сами называют себя. Но первыми среди первых были все-таки представительницы прекрасного пола.
До 1985 года женщин-программистов было больше, чем мужчин. Журналист The New York Times Magazine Клайв Томпсон даже провел целое исследование о том, когда и почему изменился гендерный баланс в IT-индустрии.
Первые женщины-программисты
Ада Лавлейс
Как известно многим, первой программисткой была женщина-математик — Ада Лавлейс, в честь которой позже и был назван первый язык программирования. И произошло это почти 200 лет назад.
В 1833 году Ада, дочь знаменитого поэта Байрона, унаследовавшая, видимо, другие гены, в возрасте семнадцати лет познакомилась с профессором математики Чарльзом Бэббиджем. Она заинтересовалась изобретением Бэббиджа, работавшего над созданием «аналитической машины», как он сам называл свое детище. Это устройство было способно выполнять команды «если-то-иначе» и сохранять информацию в памяти. Ада Лавлейс
Фото: ru.wikipedia.org
Ада смогла оценить то, что машина Бэббиджа способна модифицировать собственные инструкции (так называли то, что потом назовут операторами) и изменять содержимое памяти — это было нечто гораздо более мощное, чем простой калькулятор.
Ада Лавлейс написала для аналитической машины алгоритм, который позволил бы устройству вычислить последовательность чисел Бернулли. Именно этот алгоритм принято считать первой компьютерной программой в истории. К сожалению, и Бэббиджу не удалось довести свою машину до рабочего состояния, и Аде, умершей от рака в 36 лет, так и не посчастливилось увидеть свой код в действии.
В середине прошлого века на работу программистом принимали всех способных пройти тест на логическое мышление. В то время считалось, что такой тип мышления присущ скорее женщинам с их скрупулёзностью, а мужчинам больше подходит генерация идей по созданию «железа», то есть компьютеров. Чарльз Бэббидж
Фото: ru.wikipedia.org
Когда на свет появились цифровые первенцы, именно женщины стали первыми в написании для них программного обеспечения, тогда это называли кодированием. А мужчины в этой индустрии смотрели на это как на не особенно интересную и нудную задачу. Термина «программное обеспечение», или того, что позже назовут «софтом», в то время еще не существовало.
Грейс Хоппер
Грейс Хоппер, впоследствии получившая за свои заслуги перед ВМС США звание коммодора (выше звания капитана 1-го ранга, но ниже контр-адмирала), в первую очередь была прекрасным математиком и одним из первых «кодировщиков», как называли программистов.
Будучи офицером ВМС США, как и все, кто получал допуск к вычислительным машинам, она работала в особом департаменте Гарварда, персонал которого занимался получением баллистических таблиц для задач артиллерии. На получение одной такой одной таблицы уходило приблизительно два дня — таким было быстродействие одной из первых ЭВМ, гиганта Марка I. Грейс Хоппер, программист и коммодор ВВС США
Фото: ru.wikipedia.org
Если бы не необходимость в этих повторяющихся монотонных вычислениях, требующих только изменения некоторых параметров, кто знает, когда бы мир пришел к вычислительным машинам. Так что Грейс Хоппер считается одним из первых программистов мира уже в компьютерную эру. Хоппер и ее коллеги (женщин-программистов, занимавшихся кодированием, было намного больше, чем мужчин) справились с алгоритмом, написанным для этого монстра, — они впервые применили подпрограммы.
Еще Грейс Хоппер называли «Бабушкой Кобол». COBOL — самый известный язык, созданный Грейс Хоппер, название которого является аббревиатурой от «COmmon Business Oriented Language» — долгое время был общим языком для бизнеса. Он оказался детально продуманным и сумел продержаться и развиваться в течение сорока лет: изменения привносились в язык вплоть до 2002 года. Очень впечатляющий срок для столь быстро меняющейся индустрии, какой стали компьютерные технологии.
Когда Грейс читала лекции студентам по вычислительной технике, она приносила с собой тридцатисантиметровый шнурок, демонстрируя, что такое расстояние проходит луч света за одну наносекунду, и именно поэтому сигнал со спутников идет так долго. Аналогичным образом она доказывала, что будущее за мини-компьютерами, а не за огромными шкафами, загромождающими целый вычислительный зал.
Мэри Аллен Уилкс
Мэри Аллен Уилкс из Мэриленда сначала мечтала об адвокатской карьере. Но в один прекрасный день 1950 года, будучи ученицей старшего класса средней школы, она услышала замечание учителя географии: «Мэри Аллен, когда ты вырастешь, тебе следует стать программисткой!»
В то время девушка понятия не имела, кто такие программисты, она даже весьма смутно представляла себе, что из себя представляет компьютер, впрочем, как и большинство в те времена. Мэри Аллен Уилкс. 1965 г.
Фото: ru.wikipedia.org
Но к моменту окончания колледжа в 1959 году Мэри Аллен стало ясно, что юридическую карьеру ей не сделать: ее, женщину, вряд ли бы взяли в судебную адвокатуру. Скорее всего, девушке пришлось бы стать очередным клерком и погрузиться в бумаги по имуществу или недвижимости.
В колледже поговаривали, что компьютеры станут ключом к будущему, и Уилкс вспомнила совет школьного учителя. Она знала, что эти самые компьютеры есть в MIT, Массачусетском технологическом институте. После выпуска Мэри Аллен прямиком отправилась в отдел кадров института и спросила, есть ли у них работа для программистов. Ее сразу приняли на работу.
Сегодня может показаться странным, что в институт взяли случайного кандидата без всякого опыта программирования и слабо представляющего себе компьютер. Но в те годы почти ни у кого не было соответствующего опыта. Поэтому учреждения, которым были нужны программисты, просто проводили тесты на способность к логическому мышлению, а у Уилкс, к счастью, была некоторая подготовка. Готовясь стать юристом, она изучала философию, а частью этой дисциплины была формальная логика. Это уже было нечто близкое к составлению алгоритмов. Мэри у себя дома
Фото: ru.wikipedia.org
Мэри быстро стала специалистом в новой области. Сначала она писала коды на мудреном языке ассемблере для IBM 704, компьютера, для которого сам ввод программы был трудоемким делом: не существовало ни клавиатур, ни дисплеев. Уилкс писала программу на бумаге, отдавала ее наборщику, который пробивал каждую команду дырками в перфокарте. Потом она относила ящики с перфокартами оператору, который загружал их в считывающее устройство. Компьютер выполнял программу и выдавал результаты на принтер.
Впрочем, все это знакомо тем, кто рос у нас в 70-е годы, но кажется каменным веком для сегодняшних студентов.
«Мои прекрасные леди», или «Компьютерные девушки»
К 1960 году в США более четверти программистов были женщинами. Когда компании приступили к использованию программ для расчета заработной платы и обработки данных, количество рабочих мест для программистов значительно выросло. Ни у мужчин, ни у женщин не было никаких специальных преимуществ. Наниматели просто искали претендентов с логическими навыками — аккуратных и имеющих математический склад мышления.
Здесь гендерные стереотипы работали в пользу женщин: управленцы считали, что, поскольку женщины держат первое место в таких трудоемких и монотонных видах деятельности, как вязание, вышивка или ткацкое ремесло, то они будут хороши и в качестве программистов.
В 1957 году IBM выпустило брошюру «Мои прекрасные леди», призывающую женщин подавать заявки на работу программистами. А книга «Ваша карьера в компьютерах», изданная на десять лет позже, утверждала, что из тех, которые любят готовить по поваренной книге, представляющей собой описание алгоритма действий при приготовлении блюд, получаются хорошие программисты.
Элси Шатт и Computations Inc
Элси Шатт научилась кодировать во время подработки на летних каникулах на Абердинском испытательном полигоне в Мэриленде. Взяв отпуск в магистратуре, она устроилась в компанию Raytheon, в которой мужчин и женщин, занимавшихся программированием, было примерно 50 на 50. Это ее страшно удивило — программирование в ее поколении считалось абсолютно женской работой. Элси Шатт и «Компьютерные девушки»
Фото: ru.wikipedia.org
В 1957 году у Элси родился ребенок, и ей пришлось уволиться с основной работы. Тогда она создала свою консультационную фирму Computations Inc., которая создавала программы для корпораций.
Как одна Элси справлялась с этим? Она нанимала домохозяек на неполный рабочий день и сама обучала их программированию. Днем женщины занимались своими детьми и семьями, а ночью писали программы, арендуя машинное время в местных вычислительных центрах.
Это превратилось в некую миссию, — рассказывала Шатт. — Я давала работу талантливым женщинам, которые хорошо делали свое дело, но не могли найти работу на неполный рабочий день.
Программистки фирмы Элси Шатт довольно часто уходили в декрет. В статье 1963 года журнал Business Week назвал команду Computations «беременными программистами», к тексту было приложено изображение коляски рядом с матерью, сидящей за составлением программы.
В 1967 году женщин-программистов в США было уже столько, что журнал Cosmopolitan опубликовал статью «Компьютерные девушки». И тем не менее гендерный порог был преодолен мужчинами, и сегодня они — главные в профессии.
Несколько забавных и интересных фактов о программировании в эру высоких технологий:
Программисты шутят
И, наконец, самое страшное для веб-мастера услышать: «Почини мой компьютер, ты же умеешь». Так что не повторяйте этой ошибки.
Когда отмечают день программиста
Программисты — тоже люди, и им, как всем нам, нужно есть, пить, спать и отмечать свой профессиональный праздник.
День программиста отмечают в 256-й день года. То есть 13 сентября в обычный год и 12-го — в високосный. Такое число было выбрано потому, что 256 — это 2 в 8-й степени, где 2 означает двоичную систему исчисления, а 8 — количество битов в байте. Также это максимально возможное число в системе с 8-битным кодированием и самая большая целая степень числа 2, не превышающая число дней в году.
История Дня программиста
Сейчас День программиста — это государственный праздник, но узаконили его всего 10 лет назад. Раньше IT-шники со всего мира отмечали разные даты, но 15 июля Дмитрий Мендрелюк (глава издательского дома «Компьютерра») предложил выбрать для торжества первую пятницу сентября.
В 2002 году Валентин Балт и Михаил Червяков из веб-студии «Параллельные технологии» начали собирать подписи к петиции о том, чтобы 256-й день в году стал официальным днем программиста.
Пишет о разработке сайтов, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Альтернативные даты дня программиста
Есть еще несколько вариантов, когда праздновать День программиста. Например, некоторые отмечали его 22 апреля (22.04), потому что 2204 — это код специальности «Программное обеспечение вычислительной техники» в Общероссийском классификаторе. Сейчас этот код устарел и был заменен на 230105.65, поэтому торжество перенеслось на 23 января (23.01).
Кто-то говорит, что нужно отмечать 10 декабря — в день рождения первой программистки Ады Августы Байрон Кинг, графини Лавлейс. Или же 19 июля, когда Ада закончила первую в мире программу для вычислительной машины.
Веб-программисты могут праздновать 4 апреля, потому что 4.04 выглядит как 404 — код ошибки клиента, который означает, что файл или страница не найдены. Это еще и день Святого Исидора Севильского — католического святого, которого Папа Римский Иоанн Павел II в 2003 году назначил покровителем интернета и пользователей компьютера.
Исидор Севильский был очень образованным для своего времени человеком и даже написал одну из первых энциклопедий — «Этимологию», которая состояла из 20 томов. Также в этот день в 1975 году была основана компания Microsoft.
Есть и те, кто говорит, что отсчет дней нужно начинать с 0, поэтому День программиста должен приходиться на 12 или 11 сентября. Однако это не совсем верно, потому что отсчет дней начинается с единицы даже в приложениях.
Например, если написать на C# код, который выводит, каким по счету в году является первое января, вы получите единицу: