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

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

Темы, обсуждаемые в этом неофициальном документе:

  1. В двух словах
  2. Мотивация
  3. Фон
  4. Что такое немного?
  5. Бит как абстрактная информация против хранения битов
  6. Сегодня: языки программирования высокого уровня, типы данных и базы данных.
  7. Сегодня мы фокусируемся на данных, типах данных, информации и приложениях, а не на битах.
  8. Да, нам нужна какая-то модель того, что такое вычисления, что происходит, но она должна фокусироваться на данных, типах данных, информации и приложениях, а не на низкоуровневых битах.
  9. Абстракции высокого уровня устраняют необходимость знать о битах
  10. Абсолютно никаких доказательств того, что знание чего-либо о битах дает какую-либо пользу или ценность для разработчиков программного обеспечения или пользователей.
  11. Почему забота или не забота о битах должна иметь значение или иметь большое значение в любом случае?
  12. Ошибочное сосредоточение на битах — это ненужное и бесполезное отвлечение, которое не добавляет ценности и не дает никаких преимуществ.
  13. Различие между битами, двоичными данными, двоичными значениями и логическими значениями
  14. Битовые строки
  15. Богатые типы данных
  16. Элементы данных и переменные
  17. Структуры данных
  18. Структуры управления
  19. Операции с высокоуровневыми типами данных, значениями, переменными и управляющими структурами представляют основной интерес для разработчиков программного обеспечения и пользователей.
  20. Нет реальной необходимости в битах или ссылках на биты
  21. Низкоуровневое программирование
  22. Шестнадцатеричная запись (hex) также ограничена низкоуровневым программированием.
  23. Размер данных
  24. Единицы размера данных: байты и слова
  25. Байт - это единица данных
  26. Байты — это мера размера данных
  27. Совокупные единицы размера данных: килобайты, мегабайты, гигабайты, терабайты, петабайты и эксабайты.
  28. Память и объем памяти
  29. Полномочия 2
  30. Двоичные данные и большие двоичные объекты
  31. Последовательная передача данных
  32. Скорость передачи данных в байтах или битах в секунду
  33. К сожалению, разработчикам программного обеспечения и пользователям необходимо знать о байтах, но только как о единице и мере объема данных.
  34. Размеры целых чисел
  35. Размеры действительных чисел
  36. Знаковые биты
  37. Арифметическое переполнение и потеря значимости
  38. Битовые числа
  39. Порядок байтов (порядок байтов)
  40. Битовые векторы и битовые массивы
  41. Насколько велик персонаж?
  42. Какова длина строки символов?
  43. Насколько велика строка символов?
  44. Разве пиксели не просто биты? Не совсем
  45. Биты и байты мультимедийных данных обычно скрыты за высокоуровневыми интерфейсами прикладного программирования (API).
  46. Форматы обмена данными, такие как HTML, XML и JSON, еще больше устранили необходимость в знаниях о битах.
  47. В целом, языки высокого уровня, богатые типы данных, структуры данных, базы данных и API исключают необходимость для разработчиков программного обеспечения или пользователей знать о битах.
  48. Биты не имеют отношения к приложениям искусственного интеллекта
  49. Обращение к битам было скорее делом инерции, чем технической необходимостью.
  50. Информатика без битов? Да, конечно!
  51. Специалисты по информатике будут иметь такое же разделение между высокоуровневыми и низкоуровневыми, как и разработчики программного обеспечения.
  52. Разработчикам алгоритмов, как правило, никогда не нужно знать о низкоуровневых битах.
  53. Биты — это скорее культурный феномен
  54. Да, все вычисления в конечном счете сводятся к манипулированию битами 0 и 1, но это никому ничего не помогает понять.
  55. Обучение разработчиков программного обеспечения и пользователей битам контрпродуктивно и устарело.
  56. Итак, как нам начать преподавать компьютеры, если мы не начнем с нулей и единиц битов?
  57. Параллели с квантовыми вычислениями
  58. На данный момент биты по-прежнему актуальны для квантовых вычислений и гибридных квантово-классических вычислений.
  59. Но мы надеемся, что квантовые вычисления могут уйти от фокуса на необработанных кубитах и ​​битах.
  60. Альтернативные названия, которые я рассматривал
  61. Выводы

В двух словах

Основные моменты этого неофициального документа:

  1. Да, на заре вычислительной техники требовалось глубокое знание и понимание битов.
  2. Но теперь языки программирования высокого уровня, богатые типы данных, базы данных и приложения практически избавляют обычного разработчика программного обеспечения или пользователя от необходимости знать или заботиться о битах.
  3. Да, глубокие знания и понимание битов по-прежнему необходимы некоторым разработчикам программного обеспечения низкого уровня и инженерам по оборудованию.
  4. Да, разработчики программного обеспечения и пользователи должны знать о байтах, но только как о единице данных и как о мере массива данных, не заботясь о битах внутри байтов или размере байта. strong> Например, размер файла или структуры данных, или скорость передачи данных. А также для использования и емкости памяти и хранилища.
  5. Скорость передачи данных может измеряться в байтах или битах в секунду. Скорость передачи данных может быть той областью, где пользователи напрямую взаимодействуют с битами, например битами в секунду. Либо мегабиты в секунду (Mbps), либо гигабиты в секунду (Gbps). Но это можно легко исправить — байты в порядке и лучше всего, нет необходимости в битрейтах.
  6. Разработчикам программного обеспечения и пользователям баз данных может понадобиться работать с необработанными двоичными данными или так называемыми большими двоичными объектами, но только как с совокупной структурой, а не с отдельными битами.
  7. Доступность высокоуровневых абстракций избавляет большинство людей от необходимости вообще что-либо знать о битах.
  8. Абсолютно нет никаких доказательств того, что знание битов дает какую-либо пользу или ценность для разработчиков программного обеспечения или пользователей. Именно высокоуровневые абстракции представляют наибольшую ценность для разработчиков программного обеспечения и пользователей. Конечно, есть некоторые исключения для низкоуровневых разработчиков программного обеспечения, но это редкое исключение, а не общее правило.
  9. Почему забота или не забота о битах должна иметь значение или иметь большое значение в любом случае? Ошибочное сосредоточение на битах — это ненужное и бесполезное отвлечение. Он не добавляет никакой ценности и не дает никаких преимуществ. Лазерный фокус на высокоуровневых абстракциях — это то, что обеспечивает ценность и преимущества. Это важный акцент. Это фокус, который имеет значение.
  10. Ошибочное сосредоточение на битах — это ненужное и бесполезное отвлечение, которое не добавляет ценности и не дает никаких преимуществ. Оно отвлекает от реальной ценности и преимуществ, которые исходят от высокоуровневых абстракций, данных, типов данных, информации, алгоритмы и приложения.
  11. Будьте осторожны, чтобы не перепутать и не смешивать биты, двоичные данные, двоичные значения и логические значения. Логические значения true и false, а также двоичные значения — два значения по-прежнему полезны и не подразумевают использование или полагаться на необработанные биты.
  12. Сегодня мы фокусируемся на данных, типах данных, информации и приложениях, а не на битах.
  13. Форматы обмена данными, такие как HTML, XML и JSON, еще больше устранили необходимость в знаниях о битах.
  14. В целом, языки высокого уровня, расширенные типы данных, структуры данных, базы данных и API исключают необходимость для разработчиков программного обеспечения или пользователей знать о битах.
  15. Биты и байты мультимедийных данных обычно скрыты за высокоуровневыми интерфейсами прикладного программирования (API).
  16. Биты не имеют отношения к приложениям искусственного интеллекта. ИИ сейчас очень актуален. Интересно, что биты еще менее важны для ИИ, чем в прошлых разработках программного обеспечения.
  17. Ссылка на биты была скорее вопросом инерции, чем технической необходимостью. Прошло довольно много лет, даже десятилетий, с тех пор, как возникла реальная необходимость знать о битах или даже байтах.
  18. Информатика без битов? Да, абсолютно! На первый взгляд может показаться абсолютно нелепым подходить к компьютерным наукам без битов, но, поразмыслив глубже, я искренне верю, что это имеет смысл и является правильным решением. Начните со всех концепций более высокого уровня, включая данные, типы данных и информацию, и создайте отдельные образовательные модули для концепций более низкого уровня, где важны отдельные элементы, такие как генерация кода компилятора, аппаратные интерфейсы и компьютерная инженерия.
  19. Компьютерщики будут иметь такое же разделение между высокоуровневыми и низкоуровневыми, как и разработчики программного обеспечения. Да, глубокие знания и понимание битов все еще необходимы для некоторых низкоуровневых компьютерных ученых, но большинство компьютерных специалистов будут сосредоточиться на высокоуровневых концепциях данных, типах данных, структурах данных, управляющих структурах, базах данных, API внешних служб и алгоритмах без какой-либо необходимости сосредотачиваться или заботиться о низкоуровневых битах.
  20. Разработчикам алгоритмов, как правило, никогда не нужно знать о низкоуровневых битах. Разработчики алгоритмов, будь то разработчики программного обеспечения или специалисты по информатике, будут сосредоточены на высокоуровневых концепциях данных, типах данных, структурах данных, управлении структуры, базы данных, API внешних служб и алгоритмы без необходимости сосредотачиваться или заботиться о низкоуровневых битах. Могут быть некоторые редкие исключения.
  21. Биты — это скорее культурный феномен. Как вирус или паразит. И как только он укоренился, он остается и пронизывает культуру.
  22. Да, нам нужна какая-то модель того, что такое вычисления, что происходит, но она должна быть сосредоточена на данных, типах данных, информации и приложениях, а не на низкоуровневых битах.
  23. Да, все вычисления в конечном счете сводятся к манипулированию битами 0 и 1, но это никому ничего не помогает понять. Да, совершенно верно, что в нижней части стека, в в конце концов, все вычисления сводятся к манипулированию данными и информацией с точки зрения необработанных нулей и единиц битов, но… ну и что? Это знание никому не поможет — никак.
  24. Обучение разработчиков программного обеспечения и пользователей работе с битами контрпродуктивно и устарело.
  25. Модель более высокого уровня для обучения людей работе с компьютером. Без битов.
  26. На данный момент биты по-прежнему актуальны для квантовых вычислений и гибридных квантово-классических вычислений, но мы надеемся, что квантовые вычисления смогут уйти от фокуса на необработанных кубитах и ​​классических битах.

Мотивация

Моя мотивация в этой неофициальной статье двояка:

  1. Это проблема, которая беспокоила меня в течение некоторого времени. Это отвлекает людей от сосредоточения внимания на данных более высокого уровня и их обработке. Биты являются слишком низкоуровневой абстракцией, чтобы добавить какую-либо реальную и значительную ценность.
  2. Меня беспокоит подобная проблема с кубитами в квантовых вычислениях. Я хотел изложить свои мысли о классических вычислениях в качестве основы для того, чтобы сделать то же самое для квантовых вычислений. Квантовые вычисления должны извлекать уроки из классических вычислений.

Фон

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

Мне пришло в голову, что знание и обсуждение битов одновременно отвлекает и приводит к обратным результатам.

Итак, я решил обдумать этот вопрос дальше и постепенно решил, что он достоин внимания — и исправления.

И когда я начал заниматься квантовыми вычислениями, меня еще больше поразило, что фокус на битовом уровне — теперь уже с кубитами — действительно был и ненужным отвлечением, и таким же контрпродуктивным.

На заре вычислительной техники для разработчиков программного обеспечения и пользователей было важно знать каждый бит в компьютере. Это был просто вопрос выживания. Требования в те первые дни были:

  1. Биты были очень дефицитным ресурсом. Драгоценное сокровище. Не дешевый товар.
  2. Возможности работы с битами были очень ограничены.
  3. Программистам и пользователям необходимо знать каждую деталь действий на компьютере.
  4. Данные были введены в виде битов.
  5. Данные обрабатывались как биты. Ограниченные высокоуровневые операции.
  6. Данные выводятся в виде битов.

Но по мере развития технологии произошли четыре вещи:

  1. Биты получили широкое распространение и перестали быть очень редким и ценным сокровищем.
  2. Появились программирование более высокого уровня и абстракции данных, которые эффективно скрывали большую часть битового уровня данных и кода.
  3. Появились модели данных и базы данных. Дальнейшее дистанцирование разработчиков и пользователей от структур данных на уровне битов.
  4. API и сервисные интерфейсы стали символическими. Биты больше не нужны.

Что такое немного?

Большинство людей это знают, но для полноты...

Бит – это основная единица информации для компьютеров и вычислений, а также для цифровой связи. Значение бита равно 0 или 1. Что-то, что легко, дешево и надежно реализовать аппаратно. Термин бит является сокращением для двоичной цифры.

Более подробно о концепции бита:

Бит как абстрактная информация против хранения битов

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

Физическое оборудование действительно используется для хранения битов информации и управления ими, но логические значения битов отличаются от физической реализации.

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

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

Сегодня: языки программирования высокого уровня, типы данных и базы данных.

Сегодняшняя реальность такова, что разработчики программного обеспечения и пользователи имеют дело в основном с высокоуровневыми абстракциями, а не с данными на уровне битов.

Языки программирования высокого уровня предлагают богатые типы данных и структуры управления.

Системы баз данных предлагают высокоуровневое моделирование данных с таблицами, строками и столбцами, а также такое же дополнение высокоуровневых типов данных, как и в высокоуровневых языках программирования.

Сегодня мы фокусируемся на данных, типах данных, информации и приложениях, а не на битах.

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

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

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

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

Модель вычислений будет кратко описана в следующем разделе этой неофициальной статьи.

Абстракции высокого уровня устраняют необходимость знать о битах

Суммируя пункты предыдущего раздела немного более абстрактно и концептуально:

  • Доступность высокоуровневых абстракций избавляет большинство людей от необходимости вообще что-либо знать о битах.

Абсолютно никаких доказательств того, что знание чего-либо о битах дает какую-либо пользу или ценность для разработчиков программного обеспечения или пользователей.

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

Нет абсолютно никаких доказательств того, что знание чего-либо о битах дает какую-либо пользу или ценность для любого разработчика программного обеспечения или пользователя.

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

Почему забота или не забота о битах должна иметь значение или иметь большое значение в любом случае?

Ошибочное сосредоточение на битах — это ненужное и бесполезное отвлечение. Он не добавляет никакой ценности и не дает никаких преимуществ.

Лазерный фокус на абстракциях высокого уровня — это то, что обеспечивает ценность и преимущества. Это важный акцент. Это фокус, который имеет значение.

Ошибочное сосредоточение на битах — это ненужное и бесполезное отвлечение, которое не добавляет ценности и не дает никаких преимуществ.

Ошибочное сосредоточение на битах — это ненужное и бесполезное отвлечение, которое не добавляет ценности и не дает никаких преимуществ.

Это отвлекает от реальной ценности и преимуществ, которые исходят от высокоуровневых абстракций, данных, типов данных, информации, алгоритмов и приложений.

Различие между битами, двоичными данными, двоичными значениями и логическими значениями

Это пять различных понятий, которые часто путают или смешивают:

  1. Биты. Необработанные 0 и 1, как битовые значения, а не целые числа.
  2. Битовые строки. Строки необработанных битов произвольной длины.
  3. Двоичные данные. Произвольные необработанные данные. Может быть любой комбинацией типов данных, включая битовые строки, числа, текст и мультимедиа. Обычно используется для массового управления необработанными данными, а не для ссылки на отдельные элементы данных. Например, передача всего файла. Обычно измеряется в единицах байтов или больших кратных байтах, таких как килобайты и мегабайты, а не в битах, как в битовых строках. Битовая строка из 200 бит сопоставима с двоичными данными из 25 байт.
  4. Двоичные значения. Любые данные, которые могут принимать одно из двух возможных значений, будь то 0 и 1, включено или выключено, да и нет, неполное и полное и т. д. Не путать с бинарными. данные. Двоичное значение обычно представляет собой один элемент данных и, как правило, хранится как один байт или как целое число.
  5. Логические значения. Логические true и false. Независимо от того, как они могут храниться. Может храниться как двоичное значение, но тип данных — Boolean.

Этот неофициальный документ посвящен битам — и битовым строкам, а не двоичным данным, двоичным значениям или логическим значениям.

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

И двоичные значения распространены в данных и моделях данных.

Двоичные данные — это просто метод управления большими объемами данных без попытки интерпретировать отдельные элементы данных. И измеряется в байтах, а не в битах.

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

Битовые строки

Битовая строка — это просто последовательность битов.

Это относится к низкоуровневому программированию и оборудованию, но не к большинству разработчиков или пользователей программного обеспечения.

Если вам не нужно знать о битах, то вам не нужно знать и о битовых строках.

Богатые типы данных

Современные данные могут относиться к богатым типам данных, включая:

  1. Целые числа. Могут быть 8, 16, 32 или 64 бита, но обычно программисту или пользователю не нужно заботиться об этом уровне детализации на уровне битов. Существуют также так называемые программные пакеты для больших чисел, которые поддерживают очень большие целые числа, выходящие за пределы диапазона аппаратных целых чисел.
  2. Вещественные числа, также известные как числа с плавающей запятой. Существуют также так называемые программные пакеты для больших чисел, которые поддерживают очень большие десятичные числа, выходящие за пределы диапазона аппаратных чисел с плавающей запятой.
  3. Логические значения. Могут быть представлены в виде отдельных битов, байтов или целых чисел, но не обязательно, и логически они скорее true и false чем необработанные битовые значения 1 и 0.
  4. Символы. Один символ.
  5. Строки. Текст. Или последовательность символов.
  6. Даты и время. Но могут быть просто специальные форматы текста, строки.
  7. Отформатированный или структурированный текст. Текст, который соответствует четко определенным правилам, таким как фиксированная ширина, разделитель и знаки пунктуации, а не произвольный текст или строки символов. Например, JSON, XML и CSV, а также плоские файлы с разделителями табуляцией.
  8. Структуры данных. Составление различных типов данных.
  9. Ссылки на структуры данных. указатель или адрес на уровне битов.

Элементы данных и переменные

Элемент данных или переменная – это место хранения, содержащее данные определенного типа и обычно имеющее имя, позволяющее отличить его от других элементов данных и переменные.

Да, данные будут храниться в виде битов, но это неважная внутренняя деталь.

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

Структуры данных

Структура данных – это составная структура из двух или более элементов данных.

Формы структуры данных включают в себя:

  1. Массив. Последовательность элементов данных, называемых элементами, каждый из которых относится к одному типу данных.
  2. Таблица. Набор элементов данных, каждый из которых имеет один и тот же тип данных, и каждый имеет имя или значение ключа, чтобы отличить его от других элементов данных в таблице.
  3. Структура. Либо запись, либо строка. Последовательность элементов данных, каждый из которых имеет имя и собственный независимый тип данных.
  4. Список. Набор структур, каждая из которых содержит ссылку или указатель на следующую структуру в списке и, при необходимости, ссылку или указатель на предыдущую структуру в списке. Также известен как связанный список.
  5. Дерево. Иерархический набор элементов данных, обычно называемый узлами, со списком узлов, которые находятся на следующем уровне ниже этого узла в иерархии. Самый верхний узел называется корневым. Самые нижние узлы, не имеющие узлов под ними, называются конечными узлами или конечными узлами.
  6. График. Набор узлов, не обязательно в строгой иерархии. Граф может быть ориентированным графом, неориентированным графом или ориентированным ациклическим графом, представляющим отношения между узлами. Узел может подключаться к любому количеству других узлов. Соединения между узлами называются ребрами. Ребро может быть направленным или двунаправленным. Конечно, дерево действительно является графом, но не все графы являются деревьями.
  7. Многие другие специализированные формы структур данных. Но обычно они представляют собой некоторую комбинацию других типов структур данных, перечисленных выше.

Структуры управления

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

  1. Условный код. Не всегда выполняйте один и тот же код в одной точке логики.
  2. Цикл или итерация. Чтобы упорядочить произвольное количество данных.
  3. Вызовы функций. Для упаковки и вызова логики в именованных коллекциях, называемых функциями, подпрограммами или процедурами. Функции могут возвращать значение.
  4. Вычисление алгебраического выражения. Уравнение в математическом стиле с константами, переменными и операторами.
  5. Назначения. Чтобы вычислить алгебраическое выражение и сохранить его значение в переменной, элементе массива или именованном элементе данных.

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

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

Нет реальной необходимости в битах или ссылках на биты

Современные типы данных, структуры данных и структуры управления по существу устраняют все потребности в битах или ссылках на биты.

Как правило, на данные можно ссылаться по символическому имени с соответствующим типом данных — напрямую ссылаться на биты не нужно.

Низкоуровневое программирование

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

  1. Прямой доступ к функциям оборудования. Обычно в драйверах устройств и некоторых аспектах ядра операционных систем.
  2. Компиляторы. Генерация кода — создание операций машинного языка, где биты являются значимыми. Преобразование значений данных, литеральных констант, в битовые строки для непосредственного использования операциями машинного языка.
  3. Внутреннее устройство базы данных. Ограниченное ядро ​​программного обеспечения базы данных, которое должно знать, как элементы данных назначаются битам и байтам в хранилище.
  4. Инструменты низкого уровня. Включая отладчики, которые должны иметь прямой доступ к данным по битам и адресам, а не через именованные элементы данных.
  5. Некоторые интерфейсы сетевых служб. Некоторые низкоуровневые интерфейсы сетевых служб, протоколы или API могут быть реализованы на уровне битов. Но большинство современных сервисов, как правило, имеют высокоуровневые символические интерфейсы, в которых нет необходимости использовать биты или ссылаться на них.

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

Шестнадцатеричная запись (hex) также ограничена низкоуровневым программированием.

Некоторые языки программирования, особенно предназначенные для низкоуровневого программирования, поддерживают шестнадцатеричное представление (hex) для указания конкретных битовых шаблонов или прямого доступа к битовым значениям.

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

Размер данных

Бывают случаи, когда необходим размер элемента данных или структуры, например, при выделении памяти или при массовом копировании данных.

Даже в этом случае современные языки программирования предоставляют высокоуровневые функции небитового уровня для получения размера в байтах любого элемента данных или структуры.

Единицы размера данных: байты и слова

Даже если данные действительно в конечном счете представлены в битах, обычно размер данных представлен в байтах или в каком-то большем числе байтов.

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

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

Байт - это единица данных

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

Любой элемент данных будет представлен в виде некоторого количества байтов.

Байты — это мера размера данных

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

Совокупные единицы размера данных: килобайты, мегабайты, гигабайты, терабайты, петабайты и эксабайты.

Большие объемы данных будут представлены в виде групповых агрегатов, например:

  1. Килобайты (КБ). Тысячи байт. Или кратны 2¹⁰ или 1024 байта.
  2. Мегабайты (МБ). Миллионы байт. Или кратно 2²⁰ или 1024*1024 байт.
  3. Гигабайты (ГБ). Миллиарды байт. Или кратно 2³⁰ или 1024*1024*1024 байт.
  4. Терабайты (ТБ). Триллионы байт. Или кратно 2⁴⁰ или 1024*1024*1024*1024 байт.
  5. Петабайты (ПБ). Квадриллионы байтов. Или кратно 2⁵⁰ или 1024*1024*1024*1024*1024 байт.
  6. Экзабайты (ЭБ). Квинтиллионы байт. Или кратно 2⁶⁰ или 1024*1024*1024*1024*1024*1024 байт.

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

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

Память и объем памяти

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

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

Полномочия 2

Хотя это не совсем касается битов как таковых, степени двойки довольно распространены, по крайней мере, для нескольких случаев, как правило, для размера памяти или хранилища, емкости или скорости передачи данных. Общие случаи интереса:

  1. Килобайты (КБ). Число кратно 2¹⁰, но обычно достаточно тысяч байт.
  2. Мегабайты (МБ). Число кратно 2²⁰, но обычно достаточно миллионов байт.
  3. Гигабайты (ГБ), кратные 2³⁰, но обычно достаточно миллиардов байт.
  4. Терабайты (ТБ). Умножается на 2⁴⁰, но обычно достаточно триллионов байт.

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

Двоичные данные и большие двоичные объекты

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

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

Двоичные данные обычно хранятся в файле на некоторых носителях.

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

Разработчикам программного обеспечения низкого уровня действительно может потребоваться доступ к необработанным битам двоичных данных или больших двоичных объектов.

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

Последовательная передача данных

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

Биты действительно имеют большое значение на аппаратном уровне.

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

Скорость передачи данных в байтах или битах в секунду

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

Как правило, это будет аналогично совокупному размеру данных, как правило, в:

  1. Килобайт в секунду (КБ/с).
  2. Мегабайт в секунду (МБ/с).
  3. Гигабайт в секунду (ГБ/с).

Хотя передача данных обычно выполняется в необработанных битах, например:

  1. Килобит в секунду (Кбит/с).
  2. Мегабит в секунду (Мбит/с).
  3. Гигабит в секунду (Гбит/с).

Это обычно используется для обозначения скорости связи или сетевых соединений.

Байты нужно умножить на восемь, чтобы получить биты.

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

Тем не менее, это, как правило, такие большие, широкие и неспецифические числа, что большинство пользователей на самом деле не почувствуют никакой реальной разницы между, например, гигабайтом в секунду и гигабитом в секунду, поэтому это различие можно эффективно игнорировать в большинстве контекстов.

В аббревиатурах используется заглавная буква B для байтов и строчная буква b для битов. Например, GBps для гигабайт в секунду и Gbps для гигабит в секунду.

Хотя, как правило, точные степени числа 2 нужны редко. Как правило, круглые большие числа — тысячи, миллионы или миллиарды битов или байтов — столь же полезны, как и точные степени или двойки — килобиты/байты, мегабиты/байты или гигабиты/байты.

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

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

Было бы неплохо перевести скорость передачи данных с бит в секунду на байт в секунду. На самом деле нет никакой технической выгоды от использования первого. Это скорее маркетинговые усилия и инерция поддержания интереса к битам в секунду. В конце концов, мегабит в секунду звучит гораздо более впечатляюще, чем 125 килобайт в секунду (разделите на восемь, чтобы перевести биты в байты), как и гигабит в секунду по сравнению со 125 мегабайтами в секунду.

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

Да, есть контексты, в которых разработчикам программного обеспечения и даже пользователям необходимо знать о байтах, но только в том смысле, что это единица данных и как мера массовый объем данных, например размер файла данных или медиапотока или скорость передачи данных.

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

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

Размеры целых чисел

На заре вычислительной техники или даже позже, когда стали популярны миникомпьютеры, а затем и микрокомпьютеры, обычным делом было 16-битное (или 18-битное) и даже 8-битное (или 12-битное) представление целых чисел. -битные целые числа были излишеством, которого следует избегать. Из-за этого разработчикам и даже пользователям было важно знать точный размер целых чисел.

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

Как правило, 32 бита достаточно для большинства целых чисел, поэтому обычно людям не нужно беспокоиться о том, могут ли их целые числа храниться в 32 или 64 битах.

Но в тех редких случаях, когда целые числа не помещаются в 32 бита, например, население мира, государственный долг или требования к хранению данных более четырех гигабайт, разработчикам и пользователям необходимо знать о 32 битах против 64 битов.

Но… им по-прежнему не нужно знать о самих битах или о том, сколько битов содержится в байте.

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

Размеры действительных чисел

Вещественные числа обычно представляются как так называемые числа с плавающей запятой. Разработчикам и пользователям действительно может понадобиться беспокоиться о точности и величине экспоненты.

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

Обычная форма действительных чисел, так называемая с плавающей запятой одинарной точности, поддерживает 24-битную точность, что составляет примерно от семи до восьми десятичных цифр, и диапазоны экспоненты примерно от десяти до минус 38 до положительных 38. , Этого достаточно для большинства приложений. Здесь используется 32-битный (4-байтовый) формат, но даже разработчикам не нужно знать об этой детали.

Если приложению требуется точность более семи цифр или показатель степени больше 38, следующим выбором будет двойная точность с плавающей запятой, обеспечивающая точность от 15 до 17 десятичных цифр и величину показателя степени до 10³⁰⁸. Здесь используется 64-битный (8-байтовый) формат, но даже разработчикам не нужно знать об этой детали.

На некоторых машинах также существует формат long double, использующий 80-битный формат, а не 64-битный, но большинству разработчиков и пользователей не нужно доходить до такого уровня детализации.

И, наконец, для более требовательных приложений четырехкратная точность с плавающей запятой поддерживает до 113 бит точности и 15-битную экспоненту, предлагая точность от 33 до 36 десятичных цифр и экспоненту. до 10⁴⁹³². Здесь используется 128-битный (16-байтовый) формат, но даже разработчикам не нужно знать об этой детали.

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

Знаковые биты

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

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

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

Арифметическое переполнение и потеря значимости

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

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

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

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

Битовые числа

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

Порядок байтов (порядок байтов)

В некоторых контекстах порядок байтов в целых числах и числах с плавающей запятой может различаться. Существуют такие понятия, как big-endian, little-endian и в совокупности endianness, но опять же, только некоторые низкоуровневые программы разработчики и разработчики аппаратного обеспечения должны знать и заботиться о порядке следования байтов, и они являются скорее редким исключением, чем нормой.

Битовые векторы и битовые массивы

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

Термины битовый вектор и битовый массив являются синонимами.

Что такое битовый вектор? По сути, битовый вектор — это просто массив логических значений или, по крайней мере, функционально эквивалентный массиву логических значений. Единственным отличием от массива логических значений будет то, что каждому биту выделяется один бит в байте, восемь битов в байте, а не полный байт (или больше).

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

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

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

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

Насколько велик персонаж?

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

На самом деле, в очень старые времена, например, когда я только начинал заниматься вычислительной техникой, мы использовали семь или даже шесть битов для символов. Мы назвали их символами ASCII или шестибитными для 6-битных символов, чтобы поместить пять или шесть символов соответственно в 36-битное слово. У нас даже был RADIX 50, чтобы втиснуть шесть шестибитных символов и четыре флаговых бита в одно 36-битное слово. Но это было в старые времена (1970-е). Давно. Буквально 50 лет назад.

В наши дни картина неоднозначная. Конечно, большинство текстовых символов представлены одним 8-битным байтом, но это не всегда так.

Текущим стандартом для текстовых символов является Юникод, который поддерживает более 256 различных символов. На самом деле для символа Unicode может потребоваться до 32 бит.

Общие символы, до 256 из них, обозначаются как ISO Latin-1.

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

Формат преобразования Unicode (UTF) определяет способ упаковки символов в строки символов. Таких форматов три:

  1. UTF-32. Для каждого символа требуется 32 бита.
  2. UTF-16. Для каждого символа требуется одно или два 16-битных значения.
  3. UTF-8. Для каждого символа требуется от одного до четырех однобайтовых 8-битных значений.

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

Даже для ISO Latin-1 для некоторых символов потребуется два байта, а не один 8-битный байт.

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

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

Какова длина строки символов?

Как правило, длина строки символов измеряется в символах, а не в байтах или битах.

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

Насколько велика строка символов?

В то время как длина строки символов — это количество символов в строке, размер строки символов — это количество занимаемых байтов. всеми символами, для некоторых из которых может потребоваться несколько байтов из-за форматов кодирования Unicode.

Разве пиксели не просто биты? Не совсем

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

Как правило, пользователи и разработчики программного обеспечения не имеют ни малейшего представления о том, сколько битов используется для представления цвета каждого пикселя.

На самом деле, я не только понятия не имею, сколько бит используется для представления цвета для каждого пикселя сенсорного дисплея 4K HDR на моем текущем ноутбуке прямо передо мной в данный момент, я даже не могу вспомнить, сколько лет прошло с тех пор, как я знал.

Я смутно припоминаю, что много лет назад мой дисплей использовал 16 бит для 65 536 цветов. В более дорогих дисплеях использовалось 24 бита, а в некоторых — 32 бита.

Итак, дисплей моего текущего ноутбука может использовать 24 бита для каждого пикселя, или 32 бита, или… может быть, какое-то другое количество бит на пиксель.

Дело в том, что я ничего не знаю и меня это не волнует, и, что касается этого неофициального документа, мне необходимо знать.

Биты и байты мультимедийных данных обычно скрыты за высокоуровневыми интерфейсами прикладного программирования (API).

Конечно, для представления мультимедийных данных требуется множество битов и байтов, например:

  1. Фотографии.
  2. Отсканированные изображения.
  3. Отсканированные документы.
  4. Сгенерированные графические изображения.
  5. Распечатанные документы.
  6. Аудио.
  7. Видео.

Включая метаданные, помимо фактического медиаконтента.

Но обычно биты, байты и внутренние форматы данных медиаданных скрыты за высокоуровневыми интерфейсами прикладного программирования (API).

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

Форматы обмена данными, такие как HTML, XML и JSON, еще больше устранили необходимость в знаниях о битах.

Современные форматы обмена данными, такие как HTML, XML и JSON, сосредоточены на символических данных, так что необработанные биты стали еще более неуместными.

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

Честно говоря, в наши дни разработчикам программного обеспечения или пользователям не нужно знать что-либо о битах со всеми языками высокого уровня, богатыми типами данных, структурами данных, базами данных и API-интерфейсами, которые доступны у нас под рукой.

Биты не имеют отношения к приложениям искусственного интеллекта

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

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

Другие области применения могут извлечь выгоду из уроков, извлеченных из ИИ.

Обращение к битам было скорее делом инерции, чем технической необходимостью.

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

Это было скорее делом инерции, чем технической необходимостью.

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

Информатика без битов? Да, конечно!

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

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

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

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

Отдельные образовательные модули могут вводить биты для всех этих исключений:

  1. Низкоуровневая разработка программного обеспечения, включая драйверы устройств.
  2. Генерация кода для компиляторов. Генерация инструкций на машинном языке.
  3. Компьютерная инженерия. Архитектура компьютера, машинный язык. Неясно, какая часть этого относится к информатике, а не к электротехнике. Я думаю, что это относится к обоим или, по крайней мере, к значительному подмножеству.
  4. Низкоуровневые инструменты, включая отладчики.
  5. Внутреннее устройство базы данных. Ограниченное ядро ​​программного обеспечения базы данных, которое должно знать, как элементы данных назначаются битам и байтам в хранилище.
  6. Возможно, некоторые другие.

Мне все кажется логичным.

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

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

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

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

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

Разработчикам алгоритмов, как правило, никогда не нужно знать о низкоуровневых битах.

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

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

Могут быть некоторые редкие исключения.

Биты — это скорее культурный феномен

Одержимость битами — скорее культурный феномен, чем техническое требование.

Некоторые люди гордятся тем, что знают о битах и ​​байтах.

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

Концепция битов подобна вирусу или паразиту. И как только он укоренился, он остается и пронизывает культуру.

Да, все вычисления в конечном счете сводятся к манипулированию битами 0 и 1, но это никому ничего не помогает понять.

Да, это правда, что в нижней части стека, в конце концов, все вычисления сводятся к манипулированию данными и информацией с точки зрения необработанных нулей и единиц битов, но… ну и что? Это знание никому не поможет — никак.

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

Обучение разработчиков программного обеспечения и пользователей битам контрпродуктивно и устарело.

Нет буквально никакой полезной цели в обучении разработчиков программного обеспечения и пользователей битам.

Инженеры-электрики и программисты, конечно, должны знать о битах.

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

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

Так же, как современных разработчиков программного обеспечения не учат начинать с машинного языка или ассемблера (или, по крайней мере, они не должны быть такими!), их не следует учить начинать с битов для данных.

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

Итак, как нам начать преподавать компьютеры, если мы не начнем с нулей и единиц битов?

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

В частности, людям нужно дать модель того, что такое вычислительная техника.

Вот упрощенная схема такой модели:

  1. Начните с понятия данных и информации, а также с того, как их организовать и управлять ими. Это все, что касается вычислений. Это модель вычислений. Биты, 0 и 1 — все это отвлекает.
  2. Начните с реалистичных данных — информации. Числа, текст и мультимедиа. Данные и информация, которые люди могут использовать в своей повседневной жизни.
  3. Организация данных — информация. Списки, таблицы, файлы, каталоги и папки, базы данных, ссылки на другие данные. Серверы. Нетворкинг.
  4. Базовая обработка. Арифметика. Сортировка. Идет поиск. Вставка. Замена. Редактирование. Удаление. Статистический анализ. Аналитика.
  5. Память. В настоящее время активно.
  6. Хранилище. Постоянное. Долгосрочный.
  7. Операционные системы.
  8. Основной ввод и вывод. Клавиатура. Указывающее устройство. Экран. Сенсорный ввод. Сканеры. Принтеры.
  9. Ввод и вывод мультимедиа. Сканирование изображений. Отображение изображений. Микрофоны. Динамики. Камеры — фото и видео. Телефонные звонки. Просмотр и прослушивание СМИ. Робототехника.
  10. Основная модель ввода, процесса и вывода.
  11. Организация и управление информацией на уровне пользователя. Файловые системы. Базы данных. Репозитории.
  12. Безопасность. Контроль доступа. Ведение журнала. Аудит.
  13. Сосредоточьтесь на приложениях.
  14. Приложения для повышения производительности.
  15. Социальные сети.
  16. Программирование и разработка ПО. Логика. Моделирование данных. Алгоритмы. Приложения. Услуги.
  17. Базы данных.
  18. Библиотеки общего кода.
  19. API внешних служб. Например, веб-службы.
  20. Разработка приложений.
  21. Инструменты разработки программного обеспечения.
  22. Электроника, электротехника и вычислительная техника.

Как уже отмечалось, очень немногие из этих областей требуют каких-либо знаний или даже знаний о битах.

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

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

Большая часть мотивации для этого неофициального документа заключалась в том, чтобы установить базовую линию и основу для следования той же линии мышления с квантовыми вычислениями, но с кубитами, а не с битами.

Параллели не будут точными, но хоть какие-то сходства есть.

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

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

Следите за новостями в неофициальном документе.

На данный момент биты по-прежнему актуальны для квантовых вычислений и гибридных квантово-классических вычислений.

Несмотря на упор на кубиты, классические биты по-прежнему очень актуальны в квантовых вычислениях.

Может быть, даже центральным фокусом, по крайней мере, пока.

базисные состояния кубитов равны 0 и 1, как и у классических битов. Обозначается как |0› и |1›.

Волновая функция изолированного кубита выражена в терминах амплитуд вероятностей этих двух базовых состояний — битовых значений 0 и 1.

Когда кубит измерен, его квантовое состояние схлопнется в классическое битовое состояние 0 или 1.

А волновая функция запутанного набора кубитов состоит из набора состояний произведения, каждое из которых представляет собой битовую строку — с ассоциированной амплитудой вероятности, один бит в битовой строке для каждого запутанного кубита, до 2^n битовых строк для n запутанных кубитов.

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

Но мы надеемся, что квантовые вычисления могут уйти от фокуса на необработанных кубитах и ​​битах.

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

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

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

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

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

Альтернативные названия, которые я рассматривал

Для моей собственной будущей ссылки, вот альтернативные названия, которые я рассматривал для этого неофициального документа:

  1. Ни разработчикам программного обеспечения, ни пользователям не нужно знать о битах
  2. Ни разработчикам программного обеспечения, ни пользователям не нужно ничего знать о битах
  3. У разработчиков программного обеспечения или пользователей нет веских причин знать о битах
  4. Практически никому не нужно знать о битах
  5. В наши дни практически никому не нужно знать о битах
  6. Никто не должен знать о битах в наши дни
  7. Биты считаются вредными

Выводы

  1. Да, на заре вычислительной техники требовалось глубокое знание и понимание битов.
  2. Но теперь языки программирования высокого уровня, богатые типы данных, базы данных и приложения практически избавляют обычного разработчика программного обеспечения или пользователя от необходимости знать или заботиться о битах.
  3. Да, глубокие знания и понимание битов по-прежнему необходимы некоторым разработчикам программного обеспечения низкого уровня и инженерам по оборудованию.
  4. Да, разработчики программного обеспечения и пользователи должны знать о байтах, но только как о единице данных и как о мере массива данных, не заботясь о битах внутри байтов или размере байта. strong> Например, размер файла или структуры данных, или скорость передачи данных. А также для использования и емкости памяти и хранилища.
  5. Скорость передачи данных может измеряться в байтах или битах в секунду. Скорость передачи данных может быть той областью, где пользователи напрямую взаимодействуют с битами, например битами в секунду. Либо мегабиты в секунду (Mbps), либо гигабиты в секунду (Gbps). Но это можно легко исправить — байты в порядке и лучше всего, нет необходимости в битрейтах.
  6. Разработчикам программного обеспечения и пользователям баз данных может понадобиться работать с необработанными двоичными данными или так называемыми большими двоичными объектами, но только как с совокупной структурой, а не с отдельными битами.
  7. Доступность высокоуровневых абстракций избавляет большинство людей от необходимости вообще что-либо знать о битах.
  8. Абсолютно нет никаких доказательств того, что знание битов дает какую-либо пользу или ценность для разработчиков программного обеспечения или пользователей. Именно высокоуровневые абстракции представляют наибольшую ценность для разработчиков программного обеспечения и пользователей. Конечно, есть некоторые исключения для низкоуровневых разработчиков программного обеспечения, но это редкое исключение, а не общее правило.
  9. Почему забота или не забота о битах должна иметь значение или иметь большое значение в любом случае? Ошибочное сосредоточение на битах — это ненужное и бесполезное отвлечение. Он не добавляет никакой ценности и не дает никаких преимуществ. Лазерный фокус на высокоуровневых абстракциях — это то, что обеспечивает ценность и преимущества. Это важный акцент. Это фокус, который имеет значение.
  10. Ошибочное сосредоточение на битах — это ненужное и бесполезное отвлечение, которое не добавляет ценности и не дает никаких преимуществ. Оно отвлекает от реальной ценности и преимуществ, которые исходят от высокоуровневых абстракций, данных, типов данных, информации, алгоритмы и приложения.
  11. Будьте осторожны, чтобы не перепутать и не смешивать биты, двоичные данные, двоичные значения и логические значения. Логические значения true и false, а также двоичные значения — два значения по-прежнему полезны и не подразумевают использование или полагаться на необработанные биты.
  12. Сегодня мы фокусируемся на данных, типах данных, информации и приложениях, а не на битах.
  13. Форматы обмена данными, такие как HTML, XML и JSON, еще больше устранили необходимость в знаниях о битах.
  14. В целом, языки высокого уровня, расширенные типы данных, структуры данных, базы данных и API исключают необходимость для разработчиков программного обеспечения или пользователей знать о битах.
  15. Биты и байты мультимедийных данных обычно скрыты за высокоуровневыми интерфейсами прикладного программирования (API).
  16. Биты не имеют отношения к приложениям искусственного интеллекта. ИИ сейчас очень актуален. Интересно, что биты еще менее важны для ИИ, чем в прошлых разработках программного обеспечения.
  17. Ссылка на биты была скорее вопросом инерции, чем технической необходимостью. Прошло довольно много лет, даже десятилетий, с тех пор, как возникла реальная необходимость знать о битах или даже байтах.
  18. Информатика без битов? Да, абсолютно! На первый взгляд может показаться абсолютно нелепым подходить к компьютерным наукам без битов, но, поразмыслив глубже, я искренне верю, что это имеет смысл и является правильным решением. Начните со всех концепций более высокого уровня, включая данные, типы данных и информацию, и создайте отдельные образовательные модули для концепций более низкого уровня, где важны отдельные элементы, такие как генерация кода компилятора, аппаратные интерфейсы и компьютерная инженерия.
  19. Компьютерщики будут иметь такое же разделение между высокоуровневыми и низкоуровневыми, как и разработчики программного обеспечения. Да, глубокие знания и понимание битов все еще необходимы для некоторых низкоуровневых компьютерных ученых, но большинство компьютерных специалистов будут сосредоточиться на высокоуровневых концепциях данных, типах данных, структурах данных, управляющих структурах, базах данных, API внешних служб и алгоритмах без какой-либо необходимости сосредотачиваться или заботиться о низкоуровневых битах.
  20. Разработчикам алгоритмов, как правило, никогда не нужно знать о низкоуровневых битах. Разработчики алгоритмов, будь то разработчики программного обеспечения или специалисты по информатике, будут сосредоточены на высокоуровневых концепциях данных, типах данных, структурах данных, управлении структуры, базы данных, API внешних служб и алгоритмы без необходимости сосредотачиваться или заботиться о низкоуровневых битах. Могут быть некоторые редкие исключения.
  21. Биты — это скорее культурный феномен. Как вирус или паразит. И как только он укоренился, он остается и пронизывает культуру.
  22. Да, нам нужна какая-то модель того, что такое вычисления, что происходит, но она должна быть сосредоточена на данных, типах данных, информации и приложениях, а не на низкоуровневых битах.
  23. Да, все вычисления в конечном счете сводятся к манипулированию битами 0 и 1, но это никому ничего не помогает понять. Да, совершенно верно, что в нижней части стека, в в конце концов, все вычисления сводятся к манипулированию данными и информацией с точки зрения необработанных нулей и единиц битов, но… ну и что? Это знание никому не поможет — никак.
  24. Обучение разработчиков программного обеспечения и пользователей работе с битами контрпродуктивно и устарело.
  25. Модель более высокого уровня для обучения людей работе с компьютером. Без битов.
  26. На данный момент биты по-прежнему актуальны для квантовых вычислений и гибридных квантово-классических вычислений, но мы надеемся, что квантовые вычисления смогут уйти от фокуса на необработанных кубитах и ​​классических битах.

Больше моих работ: Список моих работ по квантовым вычислениям.