Главная страница
Навигация по странице:

  • Петцольд Код

  • Культовая книга талантливого преподавателя стала для многих первым уверенным шагом в программировании.

  • Чарльз Петцольд

  • кр гаряев. Чарльз Петцольд - Код_ тайный язык информатики-Манн, Иванов и Фе. Книга принадлежит Контакты владельца Культовая книга талантливого преподавателя стала для многих первым уверенным шагом в программировании


    Скачать 6.11 Mb.
    НазваниеКнига принадлежит Контакты владельца Культовая книга талантливого преподавателя стала для многих первым уверенным шагом в программировании
    Анкоркр гаряев
    Дата19.10.2022
    Размер6.11 Mb.
    Формат файлаpdf
    Имя файлаЧарльз Петцольд - Код_ тайный язык информатики-Манн, Иванов и Фе.pdf
    ТипКнига
    #743064
    страница28 из 28
    1   ...   20   21   22   23   24   25   26   27   28
    Биты
    Цвет
    000
    Черный
    001
    Синий
    010
    Зеленый
    011
    Голубой
    100
    Красный
    101
    Малиновый
    110
    Желтый
    111
    Белый
    Однако такой набор подходит только для очень простых «мультяшных» изображений. Большинство цветов, встречающихся в реальном мире, — это комбинации различных уровней красного, зеленого и синего. Если вы выделите два байта на пиксел, то на каждый основной цвет будет приходиться пять бит
    (один бит останется незадействованным). Это даст 32 уровня красного, зеле- ного и синего, что в общей сложности составит 32 768 разных цветов. Такая схема кодирования часто называется палитрой High color («высококачествен- ное цветовоспроизведение»), или Thousands of colors («тысяча цветов»).
    Следующий шаг — использование трех байтов на пиксел, или одного бай- та для каждого из основных цветов. Такая схема кодирования предусматри- вает 256 уровней красного, зеленого и синего, что в общей сложности дает
    16 777 216 различных цветов. Часто эта палитра называется True Color («истин- ный/настоящий цвет»), или Millions of colors («миллионы цветов»). При разре- шении дисплея 640 × 480 объем требуемой памяти составляет 921 600 байт — почти целый мегабайт.
    Количество битов на пиксел иногда называется глубиной цвета или цве-
    товым разрешением. Количество различных цветов связано с количеством би- тов на пиксел следующим соотношением:
    Количество цветов = 2
    количество битов на пиксел
    Плата видеоадаптера имеет определенный объем памяти, что ограничивает количество возможных комбинаций разрешения и глубины цвета. Например, плата видеоадаптера с памятью один мегабайт может обеспечить разрешение 640 × 480 при глубине цвета, равной трем байтам на пиксел. Однако если вы хотите исполь- зовать разрешение 800 × 600, для такой глубины цвета имеющейся памяти окажет- ся недостаточно, поэтому придется довольствоваться двумя байтами на пиксел.
    Несмотря на то что растровые дисплеи кажутся нам вполне естествен- ным выбором, поначалу они редко использовались, поскольку предъявляли

    Глава 25. Графическая революция
    427
    огромные требования к памяти. В системе SAGE употреблялись векторные
    дисплеи, больше напоминающие осциллограф, чем телевизор. Управляемая электрическим сигналом электронная пушка рисовала на экране прямые и кри- вые линии, которые в течение некоторого времени сохранялись на экране, что и создавало из них примитивные изображения.
    Компьютеры SAGE также поддерживали использование световых каран-
    дашей, которые позволяли операторам изменять кадры на дисплее. Световой карандаш — это стилус с прикрепленным к одному концу проводом. С помо- щью специального программного обеспечения компьютер определяет точку экрана, на который указывает световой карандаш, и изменяет изображение в соответствии с его движением.
    Принцип работы светового карандаша иногда ставит в тупик даже тех- нически подкованных людей. Суть в том, что световой карандаш не излучает, а улавливает свет. Электронная схема, управляющая электронной пушкой в ЭЛТ
    (вне зависимости от типа используемого дисплея), также фиксирует момент, когда свет от электронной пушки попадает на световой карандаш, определяя при этом точку экрана, на которую он указывает.
    Одним из тех, кто первым предвосхитил начало эры интерактивных вы- числений, был Айвен Сазерленд (род. 1938), который в 1963 году продемон- стрировал революционную графическую программу Sketchpad, разработанную им для компьютеров SAGE. Эта программа могла хранить описания изображе- ний в памяти и выводить их на экран. Кроме того, она предусматривала воз- можность использования светового карандаша для рисования и изменения изображений на экране, причем все это отслеживалось компьютером.
    Еще одним провидцем эры интерактивных вычислений был Дуглас Эн- гельбарт, который прочитал статью Вэнивара Буша «Как мы можем мыслить» в 1945 году, сразу после ее публикации, а пять лет спустя начал развивать но- вые идеи в области компьютерных интерфейсов. В середине 1960-х годов, ра- ботая в Стэнфордском исследовательском институте, Энгельбарт полностью переосмыслил концепцию устройств ввода и придумал пятиклавишную кла- виатуру для ввода команд (которая так и не прижилась), а также небольшое устройство с колесиками и кнопкой, которое он назвал мышью. Теперь мышь практически повсеместно применяется для перемещения указателя и выбора объектов на экране.
    К счастью, многие из первых энтузиастов интерактивных графических вычислений собрались в компании Xerox в то время, когда использование растровых дисплеев стало экономически целесообразным. В 1970 году Xerox в Пало-Альто учредила исследовательский центр PARC для разработки про- дуктов, с которыми эта компания могла бы выйти на рынок. Вероятно, самым

    428
    Код известным прогнозистом в центре PARC был Алан Кэй (род. 1940), который в возрасте 14 лет узнал о библиотеке микрофильмов Вана Буша из расска- за Роберта Хайнлайна, а затем придумал портативный компьютер Dynabook.
    Первый крупный проект PARC — компьютер Alto, сконструированный в 1972–1973 годах. По меркам тех лет это устройство впечатляло: массивный системный блок, обработка 16-разрядных чисел, два диска емкостью по три мегабайта, 128 килобайт оперативной памяти (расширяемой до 512 килобайт) и мышь с тремя кнопками. Поскольку во времена создания Alto однокристаль- ных 16-разрядных микропроцессоров еще не существовало, его процессор при- шлось собирать из 200 отдельных интегральных микросхем.
    Видеодисплей Alto был одним из нескольких элементов, выделявших этот компьютер на фоне других. Экран напоминал лист бумаги шириной 20,3 и высотой 25,4 сантиметра. Он работал в режиме растровой графики с раз- решением 606 пикселов по горизонтали и 808 пикселов по вертикали (всего
    489 648 пикселов). Для каждого пиксела выделялся один бит памяти, то есть он мог быть либо черным, либо белым. Всего для видеоизображения предо- ставлялось 64 килобайта памяти в общем адресном пространстве процессора.
    Записывая данные в эту видеопамять, программа могла выводить на экран изображения или отображать текст различных шрифтов и размеров. Переме- щая по столу мышь, пользователь мог позиционировать указатель и взаимо- действовать с объектами на экране. В отличие от телетайпного аппарата, реаги- рующего на действия пользователя с задержкой, дисплей Alto — чрезвычайно емкий двумерный массив информации — позволял пользователю взаимодей- ствовать с компьютером более непосредственно.
    В конце 1970-х годов у программ, написанных для компьютера Alto, по- явились интересные особенности. На экране могли одновременно отображать- ся несколько программ, каждая в своем окне. Графические возможности ком- пьютера позволяли выйти за рамки текста и по-настоящему воплощать мысли пользователя. В интерфейсе появились такие графические объекты, как кнопки, меню, а также небольшие изображения, называемые иконками. Мышь исполь- зовалась для выбора окон и активации программных функций посредством взаимодействия с графическими объектами.
    Такое программное обеспечение упростило непосредственный контакт меж ду человеком и машиной. Работа с компьютерами не ограничивалась прос- тым перемалыванием чисел. Как выразился Дуглас Энгельбарт в своей леген- дарной статье, написанной в 1963 году, такие программы были разработаны
    «для усиления человеческого интеллекта».
    Разработки центра PARC легли в основу так называемого графическо-
    го пользовательского интерфейса (Graphic User Interface, GUI). Однако Xerox

    Глава 25. Графическая революция
    429
    не стала продавать компьютер Alto (который в этом случае стоил бы более
    30 тысяч долларов). Прошло более десяти лет, прежде чем идеи, воплощенные в этом компьютере, нашли применение в коммерческих продуктах.
    В 1979 году PARC посетили Стив Джобс и другие сотрудники компании
    Apple Computer, которых впечатлило увиденное. А в январе 1983 года они пред- ставили печально известный компьютер с графическим интерфейсом Lisa, за ко- торым год спустя последовал гораздо более успешный Macintosh.
    Первый компьютер Macintosh был оснащен микропроцессором Motorola
    68000, ПЗУ емкостью 64 килобайта, 128 килобайтами оперативной памяти,
    3,5-дюймовым дисководом (позволяющим сохранять на дискете до 400 кило- байт), клавиатурой, мышью, а также монитором с разрешением 512 × 342 (всего
    175 104 пикселов) и диагональю девять дюймов. Каждому пикселу соответство- вал один бит памяти, он мог быть либо черным, либо белым, поэтому объем достигал лишь 22 килобайт.
    Аппаратное обеспечение первого компьютера Macintosh было элегантным, но отнюдь не революционным. От других машин, присутствовавших на рынке в 1984 году, его отличала операционная система, которая в то время именова- лась системным программным обеспечением, а позже получила название Mac OS.
    Такие текстовые однопользовательские операционные системы, как CP/M или MS-DOS, отличаются небольшим размером и не предусматривают обшир- ного интерфейса прикладного программирования (API). В главе 22 я уже объ- яснил, что от этих текстовых операционных систем в основном требовалось предоставление приложениям доступа к файловой системе. В отличие от них такая графическая операционная система, как Mac OS, занимает намного боль- ше памяти и предоставляет сотни функций API, каждая из которых имеет опи- сательное название.
    В то время как текстовая операционная система, вроде MS-DOS, позволя- ла производить лишь несколько простых функций API, например отображать на экране текст в стиле телетайпных аппаратов, графическая операционная сис- тема Mac OS должна была выводить на экран графическое изображение. Теоре- тически этого можно достичь за счет реализации одной функции API, которая разрешает приложению задавать цвет пиксела с определенными горизонтальной и вертикальной координатами. Однако такой способ оказывается неэффектив- ным, поскольку при его применении изображение формируется очень медленно.
    Разумнее сделать так, чтобы операционная система предоставляла исчер- пывающую систему графического программирования, состоящую из функций
    API для отрисовки линий, прямоугольников, эллипсов (включая окружности) и текста. Эта система должна позволять создавать сплошные или пунктирные линии, заполнять прямоугольники и эллипсы различными узорами, а для текста

    430
    Код задавать разные шрифты, размеры и стили начертания. Система графическо- го программирования также должна отвечать за визуализацию этих объектов в виде набора точек на экране.
    Программы, работающие под управлением графической ОС, используют одни и те же функции API для вывода изображений на экран компьютера и для их печати на принтере. Именно поэтому документ текстового редактора ото- бражается на экране почти так же, как и на распечатке. Этот принцип называ- ется WYSIWYG (What You See Is What You Get — «что видишь, то и получишь»).
    Привлекательность графического пользовательского интерфейса отчасти в том, что различные приложения основаны на одних и тех же принципах, бла- годаря чему опыт, накопленный пользователем при работе с одной програм- мой, применим и с другими. Это означает, что операционная система также должна предусматривать функции API, позволяющие приложениям реализовы- вать различные компоненты пользовательского интерфейса, например кнопки и меню. Вопреки распространенному убеждению, графический интерфейс об- легчает работу не только пользователям, но и программистам, поскольку до- пускает написание программы с современным интерфейсом. Получается, нет необходимости изобретать велосипед.
    Еще до появления Macintosh несколько компаний пытались разработать графическую операционную систему для IBM PC и совместимых с ним ком- пьютеров. В некотором смысле разработчикам компании Apple было легче, поскольку они работали над аппаратным и программным обеспечением одно- временно. Системное программное обеспечение компьютера Macintosh должно было поддерживать только один тип флоппи-дисковода, один дисплей и два принтера. Однако реализация графической ОС для IBM PC предполагала под- держку множества дополнительных аппаратных средств.
    Несмотря на то что компьютер IBM PC был представлен всего несколь- кими годами ранее (в 1981-м), многие уже привыкли к приложениям MS-DOS и не были готовы от них отказываться. И поэтому было важно, чтобы графичес- кая ОС для IBM PC предусматривала использование приложений MS-DOS наряду с приложениями, специально написанными для новой операционной системы. (Программное обеспечение для компьютера Apple II на Macintosh не работало, поскольку в нем был другой микропроцессор.)
    В 1985 году компания Digital Research, создавшая CP/M, представила сис- тему GEM (Graphical Environment Manager, «менеджер графической среды»), компания VisiCorp, занимавшаяся распространением приложения VisiCalc, выпустила среду VisiOn, а Microsoft — версию Windows 1.0, которая быстро стала первым претендентом на победу в «войне окон». Однако только в мае
    1990 года, после выпуска версии Windows 3.0, эта система обратила на себя

    Глава 25. Графическая революция
    431
    внимание пользователей. С тех пор ее популярность значительно возросла, и се- годня Windows используется примерно в 90%. Несмотря на сходства операци- онных систем Windows и Mac OS, в них совершенно разные API-интерфейсы.
    Теоретически графическая ОС по сравнению с текстовой требует примене- ния только одного дополнительного аппаратного средства — графического дис- плея. При этом не нужен даже жесткий диск: у первого компьютера Macintosh его не было, а система Windows 1.0 в нем не нуждалась. Версии Windows 1.0 не требовалась мышь, хотя все были согласны с тем, что это устройство зна- чительно упрощает процесс пользования. Неудивительно, что графические пользовательские интерфейсы распространялись по мере роста производи- тельности микропроцессоров и увеличения емкости оперативной памяти и за- поминающих устройств. С функциональным обогащением графические ОС становились более ресурсозатратными: им требовалось пара сотен мегабайт на жестком диске и более 32 мегабайт оперативной памяти.
    Приложения для графических ОС почти никогда не пишутся на языке ассемблера. Поначалу программы для Macintosh в основном разрабатывались на Паскале, а приложения Windows — на C. Однако программисты из цент- ра PARC и здесь продемонстрировали совершенно иной подход. Начиная с 1972 года они занимались созданием языка Smalltalk, воплощающего кон- цепцию объектно-ориентированного программирования.
    Традиционно высокоуровневые языки программирования различают код
    (операторы, которые обычно начинаются с ключевого слова вроде set, for или if) и данные (значения переменных). Это различие, несомненно, коренится в архитектуре фон Неймана, где все делится на машинный код и обрабаты- ваемые им данные.
    В объектно-ориентированном программировании код и данные комбини- руются в объект. Как именно данные хранятся в объекте, можно понять толь- ко по связанному с ним коду. Объекты взаимодействуют, отправляя и полу- чая сообщения, которые содержат инструкции, запрашивающие информацию.
    Объектно-ориентированные языки часто бывают удобными при написа- нии приложений для графических операционных систем, поскольку позволя- ют работать с объектами на экране (например, с окнами и кнопками) с уче- том того, как их воспринимает пользователь. Возьмем, к примеру, кнопку. Она имеет определенный размер и положение на экране, включает некоторый текст или маленькое изображение. Все это — относящиеся к объекту данные. Код, связанный с объектом, фиксирует факт «нажатия» этой кнопки пользователем с помощью клавиатуры или мыши и отправляет сообщение об этом событии.
    Наиболее популярные объектно-ориентированные языки для персональ- ных компьютеров — это расширенные версии таких традиционных языков

    432
    Код типа АЛГОЛ, как C и Паскаль. Самое известное объектно-ориентированное расширение языка C — C++. (Как вы помните, в языке C два плюса соответ- ствуют оператору инкремента.) Язык C++, разработанный в основном Бьёрном
    Страуструпом (род. 1950) из Bell Telephone Laboratories, сначала был реализо- ван как транслятор, который преобразовывал программу, написанную на C++, в программу на C (хотя получавшийся в результате код на языке С был прак- тически нечитаемым). После этого преобразования программу на C можно было скомпилировать обычным способом.
    Разумеется, возможности объектно-ориентированных языков не выходят за рамки возможностей традиционных языков. Однако программирование — это деятельность, связанная с решением задач, а объектно-ориентированные языки позволяют учесть различные, часто более совершенные решения. На объ- ектно-ориентированном языке также можно (хоть это и непросто) написать программу, компилируемую как под Mac OS, так и под Windows. Такая про- грамма не обращается напрямую к функциям API, а вместо этого использует объекты, которые вызывают эти функции. Для компиляции программы под
    Mac OS или Windows нужны разные определения объектов.
    Программистам, работающим на небольших компьютерах, больше не тре- буется запускать компилятор из командной строки. Вместо этого они исполь- зуют интегрированную среду разработки (IDE), включающую все необходимые инструменты в одной удобной программе, которая работает подобно другим графическим приложениям. Кроме того, они широко применяют метод визу-
    ального программирования, в рамках которого окна программ разрабатывают- ся в интерактивном режиме с помощью мыши для организации кнопок и дру- гих компонентов.
    В главе 22 я рассказывал о текстовых файлах, которые содержат только
    ASCII-коды символов и получаются человекочитаемыми. Во времена тексто- вых операционных систем текстовые файлы были идеальным средством для обмена информацией между приложениями. Одно из важных преимуществ текстовых файлов — в них можно производить поиск, то есть программа мо- жет проверить множество файлов на наличие определенной текстовой строки.
    Однако когда в операционной системе появляется средство для отображения текста с использованием различных шрифтов, размеров и начертаний, возмож- ности текстового файла внезапно оказываются неадекватными. Большинство текстовых редакторов сохраняют документы в собственном двоичном форма- те, а для хранения графической информации такие файлы вообще не подходят.
    Например, информацию о параметрах шрифта и расположении абзацев можно закодировать вместе с текстом и получить при этом пригодный для чте- ния текстовый файл. Для этого нужно выбрать управляющий символ, после

    Глава 25. Графическая революция
    433
    которого будет следовать эта информация. В формате RTF (Rich Text Format), разработанном компанией Microsoft для обмена форматированным текстом между приложениями, для выделения информации о форматировании текста используются фигурные скобки {} и обратная косая черта \.
    Эта концепция доведена до предела в формате текстового файла PostScript, разработанном соучредителем компании Adobe Systems Джоном Уорноком
    (род. 1940). PostScript — универсальный язык графического программирова- ния, который используется в основном для печати текста и графики на высо- котехнологичных принтерах.
    Возможность отображения графики на экранах персональных компью- теров непосредственно проистекает из усовершенствования и удешевле- ния аппаратных средств. Рост быстродействия микропроцессоров, умень- шение стоимости памяти, а также увеличение разрешения и цветопередачи дисплеев и принтеров способствовали быстрому развитию компьютерной графики.
    Компьютерные графические изображения, как и видеодисплеи, бывают двух типов: векторные и растровые.
    Векторные изображения создаются алгоритмически с помощью прямых и кривых линий, а также заполняемых цветом фигур. Векторная графика применяется в системах автоматизированного проектирования (computer- aided drawing, CAD) для создания инженерных или архитектурных чертежей.
    Графическое изображение такого типа может быть сохранено в формате так называемого метафайла *. Метафайл — обычный набор команд для рисова- ния векторных графических объектов, обычно закодированных в двоичной форме.
    С помощью заполненных цветом фигур, прямых и кривых линий можно изобразить проект моста, однако если вам нужен рисунок готового моста, воз- можностей векторной графики будет недостаточно. Потребуется реалистичная картинка, которую невозможно создать из векторных объектов.
    Для этой цели лучше использовать растровые, или точечные, изображения.
    При применении растровой графики изображение кодируется как прямоуголь- ный массив битов, соответствующих пикселам устройства вывода. Как и ви- деодисплей, растровое изображение имеет такие параметры, как разрешение
    (ширина и высота в пикселах) и глубина цвета (количество битов на пиксел).
    Каждому пикселу соответствует одинаковое количество битов.
    * Строго говоря, между векторной и метафайловой графикой имеется различие: описание изображения в векторной графике состоит из элементов изображения (точек, линий, полигонов), в то время как изображение в метафайловой графике — это набор команд, с помощью которых изображение сформировано. Прим. науч. ред.

    434
    Код
    Несмотря на то что растровое изображение двумерно, сам битовый мас- сив — это единый поток байтов, в котором последовательно закодированы все строки пикселов.
    Одни растровые изображения создаются «вручную» в специальном гра- фическом редакторе, другие — алгоритмически с помощью компьютерного кода. Однако в наши дни растровая графика чаще всего необходима при работе со снимками реальных объектов (например, с фотографиями). Для перенесения таких изображений из реального мира в компьютер существуют специальные аппаратные средства. Как правило, они используют полупроводниковый при-
    бор с зарядовой связью (ПЗС), который вырабатывает электрический ток при облучении светом. Для создания одного пиксела требуется одна ячейка ПЗС.
    Старейшее из подобных устройств — сканер. Принцип его работы анало- гичен принципу работы копировального аппарата и заключается в перемеще- нии линейного массива элементов ПЗС вдоль поверхности сканируемого изоб- ражения, например фотографии. Элементы ПЗС генерируют электрические заряды в зависимости от интенсивности света, отраженного от поверхности изображения. Сопровождающее сканер программное обеспечение преобразует полученные сигналы в битовый массив и сохраняет его в файле.
    В видеокамерах для захвата изображений используется двумерный мас- сив ячеек ПЗС. Как правило, они записываются на видеопленку *. Однако вы- ходной видеосигнал может подаваться непосредственно в устройство для за-
    хвата кадра — на плату, преобразующую аналоговый видеосигнал в массив битов. Эти устройства можно использовать с любым обычным источником видеосигнала, например с видеомагнитофоном, проигрывателем лазерных дис- ков или даже с телевизором.
    Цифровые камеры похожи на обычные, только вместо пленки в них ис- пользуется массив элементов ПЗС для захвата изображения, которое сохра- няется непосредственно в памяти камеры, а затем передается в компьютер.
    Графическая операционная система часто предусматривает специальный формат для хранения растровых изображений. В Mac OS используется формат
    Paint — от программы MacPaint, в которой он был применен впервые. (Однако предпочтителен формат Macintosh PICT, допускающий хранение и растровых, и векторных изображений.) В Windows для хранения растровых изображений используется формат BMP.
    Растровые изображения могут занимать довольно много места, в связи с чем возникает необходимость в разработке способа уменьшения их объема. Этой задаче посвящена целая область информатики под названием сжатие данных.
    * Так было на момент написания книги. Прим. науч. ред.

    Глава 25. Графическая революция
    435
    Вернемся к примеру с изображением, где на пиксел приходится по три бита. Это фотография неба и дома с газоном с большими областями синего и зеленого цветов. Возможно, верхняя строка растрового изображения содер- жит 72 синих пиксела, идущих подряд. Чтобы уменьшить объем растрового изображения, нужно закодировать в файле данные о том, что синий пиксел повторяется 72 раза. Такой способ сжатия называется кодированием серий по-
    следовательностей (Run-Length Encoding, RLE).
    Алгоритм RLE используется в обычном офисном факсимильном аппара- те для уменьшения размера изображения перед его отправкой по телефонной линии. Поскольку факс распознаёт только черный и белый цвета без оттенков серого, факсимильное изображение часто содержит длинные последователь- ности белых пикселов.
    Уже довольно давно популярен формат растровых изображений GIF
    (Graphics Interchange Format, «формат для обмена изображениями»), разра- ботанный компанией CompuServe в 1987 году. Этот формат использует ал- горитм сжатия данных LZW, названный так по именам создателей (Lempel,
    Ziv, Welch, алгоритм Лемпеля — Зива — Велча). Алгоритм LZW является более мощным, чем RLE, поскольку помимо последовательностей одинако- вых пикселов он способен распознавать закономерности, состоящие из раз- личных пикселов.
    Алгоритмы RLE и LZW называются методами сжатия данных без потерь, поскольку исходный файл может быть полностью восстановлен. Другими сло- вами, сжатие обратимо. Однако метод обратимого сжатия данных подходит не для всех типов файлов. В некоторых случаях объем сжатого файла превы- шает объем исходного!
    В последние годы широкое распространение получили методы сжатия дан- ных с потерями. Алгоритм сжатия с потерями не является обратимым, посколь- ку при его использовании некоторые исходные данные безвозвратно теряются.
    Вы вряд ли примените этот алгоритм к электронным таблицам или текстовым документам, так как в них каждое число и слово имеют значение. Однако вы, вероятно, не станете возражать против его применения к изображениям при условии, что потеря данных не окажет существенного влияния на результат.
    Именно поэтому методы сжатия данных с потерями основаны на психологи- ческих исследованиях, задача которых выявить, что важно для человеческого визуального восприятия, а что нет. Самые распространенные методы сжатия данных с потерями, применяемые для растровых изображений, известны под общим названием JPEG (Joint Photography Experts Group, «объединенная группа экспертов по фотографии»). Формат JPEG фактически объединяет несколько алгоритмов сжатия как с потерями, так и без.

    436
    Код
    Преобразовать метафайл в растровое изображение довольно просто.
    Поскольку видеопамять и битовый массив концептуально идентичны, про- грамма, способная записать метафайл в видеопамять, также может сохранить его в битовый массив.
    Преобразовать растровое изображение в метафайл не так просто, а в слу- чае сложного изображения вообще невозможно. Один из способов решения этой задачи — оптическое распознавание символов (Optical Character Recognition,
    OCR). Оно используется, когда нужно преобразовать в ASCII-коды растровое изображение некоторого текста (например, полученную по факсу или отска- нированную печатную страницу). Программное обеспечение OCR анализи- рует точечные последовательности и определяет, каким символам они соот- ветствуют. Из-за алгоритмической сложности этой задачи OCR-программы обычно не дают абсолютно точного результата. Еще менее точным является программное обеспечение, предназначенное для преобразования в ASCII-коды рукописного текста.
    Растровые изображения и метафайлы используются для цифрового пред- ставления визуальной информации. Звуковую информацию тоже можно пре- образовать в биты и байты.
    Цифровой звук произвел настоящий фурор в 1983 году благодаря по- явлению компакт-диска (compact-disk, CD), который стал самым успешным продуктом в истории потребительской электроники. Компакт-диск был раз- работан компаниями Philips и Sony и позволял хранить на одной стороне дис- ка диамет ром 12 сантиметров цифровые аудиофайлы общей длительностью
    74 минуты. Такая длительность была выбрана для того, чтобы на компакт- диске могла уместиться Девятая симфония Бетховена.
    Для кодирования звука подходит метод кодово-импульсной модуляции.
    Несмотря на сложное название, концептуально этот метод довольно прост.
    Звук — это вибрация. Вибрация наших голосовых связок, музыкальных инструментов, падающего в лесу дерева приводит в движение молекулы возду- ха, при этом он начинает периодически (с частотой несколько сотен или тысяч раз в секунду) сжиматься и расширяться. Вибрирующий воздух, в свою очередь, воздействует на наши барабанные перепонки, и мы слышим звук.
    В 1877 году Томас Эдисон изобрел фонограф, в котором для записи и вос- произведения звука на поверхности цилиндра, покрытого фольгой, создава- лись углубления, повторяющие форму звуковых волн. До появления компакт- диска эта техника записи звука практически не менялась, хотя цилиндры были заменены дисками, а оловянная фольга — сначала воском, а затем пластиком.
    Первые фонографы были полностью механическими, однако со временем для усиления звука в них стали использоваться электрические компоненты.

    Глава 25. Графическая революция
    437
    Переменный резистор в микрофоне преобразует звук в электрический сигнал, а электромагнит в динамике превращает этот сигнал обратно в звук.
    Электрический ток, с помощью которого кодируется звук, не похож на циф- ровые сигналы, о которых мы говорили. Звуковое давление непрерывно из- меняется, в связи с чем меняется и напряжение. Электрический ток — аналог звуковой волны. Для преобразования аналогового сигнала в цифровой потре- буется специальный аналого-цифровой преобразователь (АЦП), обычно реа- лизуемый в виде микросхемы. Выходные цифровые сигналы АЦП, количество которых равно 8, 12 или 16, обозначают относительный уровень напряжения.
    Например, 12-битный АЦП преобразует входящий сигнал в число от 000h до FFFh, различая при этом 4096 уровней напряжения.
    При использовании метода кодово-импульсной модуляции напряжение, соответствующее звуковой волне, преобразуется в цифровые значения с по- стоянной скоростью. Эти значения сохраняются на компакт-диске в виде ма- леньких углублений, вырезанных на поверхности, и считываются лазерным лучом, отраженным от его поверхности. Во время воспроизведения эти значе- ния снова конвертируются в электрический сигнал с помощью цифро-анало-
    гового преобразователя (ЦАП). (ЦАП также используется в цветных графиче- ских адаптерах для преобразования значений пикселов в аналоговые сигналы, подающиеся на монитор.)
    Аналоговый звуковой сигнал переводится в цифровой с постоянной ско- ростью, называемой частотой дискретизации. В 1928 году Гарри Найквист из Bell Telephone Laboratories показал, что частота дискретизации должна как минимум в два раза превышать максимальную частоту звука, который необ- ходимо записать и воспроизвести. Считается, что человек воспринимает звуки в диапазоне частот от 20 до 20 000 герц. Частота дискретизации, используемая при записи компакт-дисков, более чем вдвое превышает максимальный пока- затель и составляет 44 100 герц.
    Разрядность (количество бит на выборку) определяет динамический диа- пазон компакт-диска — разницу между самым громким и самым тихим звуком, который можно записать и воспроизвести. Это требует пояснения: будучи ана- логом звуковой волны, электрический сигнал отклоняется от нулевого значения; максимальное отклонение — амплитуда волны. Интенсивность звука пропор- циональна удвоенной амплитуде. Десятикратному увеличению интенсивности звука соответствует один бел (единица измерения относительной силы звука, на- званная в честь Александра Белла); один децибел — 0,1 бела, примерно минималь- ное увеличение интенсивности звука, которое человек в состоянии воспринять.
    Динамический диапазон для 16-разрядного звука — 96 децибел, что при- мерно соответствует разнице между порогом слышимости (за которым мы

    438
    Код ничего не слышим) и болевым. Именно такая разрядность используется при записи компакт-дисков.
    Таким образом, каждой секунде звуковой записи на компакт-диске соответ- ствует 44 100 выборок по два байта. Если вы предпочитаете стереозвук, необ- ходимо удвоить это число, чтобы в итоге получить 176 400 байт на секунду. Это
    10 584 000 байт на минуту звукозаписи. (Теперь вы понимаете, почему цифро- вая звукозапись распространилась только в 1980-е годы.) Для записи на ком- пакт-диске стереозвука длительностью 74 минуты требуется 783 216 000 байтов.
    Цифровой звук по сравнению с аналоговым обладает многими хорошо из- вестными преимуществами. В частности, при копировании аналогового звука
    (например, при записи на фонограф звука, воспроизводимого с магнитной лен- ты) его качество ухудшается. Оцифрованный звук закодирован числами, кото- рые всегда можно скопировать без потери точности. В аналоговых телефонных сетях качество звука было тем хуже, чем длиннее расстояние, преодолеваемое телефонным сигналом. Сейчас этой проблемы не существует. Посколь ку бóльшая часть телефонной системы перешла на цифровой звук, звонки с другого конца страны по качеству не уступают звонкам с соседней улицы.
    На компакт-дисках можно хранить не только звук, но и другие данные.
    Диск, используемый исключительно для хранения данных, называется CD-ROM
    (CD Read-Only Memory, «память только для чтения»). Как правило, емкость та- ких дисков — около 660 мегабайт. В настоящее время большинство компьюте- ров оснащено специальными дисководами, а диски — распространенные но- сители для коммерческого программного обеспечения и игр.
    Средства для работы со звуком и видео, добавленные в персональный ком- пьютер, получили название «мультимедиа». Теперь они настолько популярны, что не нуждаются в специальном названии. Большинство современных до- машних компьютеров оснащены звуковой платой, которая включает устрой- ство АЦП для записи звука через микрофон и устройство ЦАП для воспро- изведения записанного звука через динамики. Звуки могут храниться на диске в формате WAV (waveform — «в форме волны»).
    Поскольку при записи и воспроизведении звука на домашних компью- терах CD-качество требуется не всегда, программы для Macintosh и Windows предусматривают более низкие значения частоты дискретизации (22 050, 11 025 и 8000 герц) разрядности (восемь бит), а также возможность создания моно- фонической записи. Таким образом, на одну секунду звучания может прихо- диться 8000 байт, или 480 тысяч байт на одну минуту.
    Все, кто смотрел научно-фантастические фильмы, знают, что компьютеры будущего общаются с пользователями на человеческом языке. Если компью- тер оснащен аппаратными средствами для записи и воспроизведения звука,

    Глава 25. Графическая революция
    439
    то решение всех остальных задач сводится к написанию программного обес- печения.
    Существует несколько способов научить компьютер употреблять узнавае- мые слова и предложения при общении с пользователем. Один из них состоит в записи произнесенных человеком фрагментов предложений, фраз, слов и чи- сел, которые затем можно сохранить в файлах и комбинировать. Этот подход часто применяется в информационных системах, доступ к которым осуще- ствляется по телефону, и он отлично работает при ограниченном количестве комбинаций воспроизводимых слов и чисел.
    Более общий способ синтеза человеческой речи предполагает преобра- зование произвольного текста в кодировке ASCII в звуковой файл. Посколь- ку написание слов иногда отличается от их произношения, программа может использовать словарь или сложные алгоритмы для определения правильного произношения. Из простых звуков (называемых фонемами) можно составлять целые слова. Часто программе требуются и другие корректировки. Например, если в конце предложения стоит знак вопроса, то последнее слово нужно про- изнести более высоким голосом.
    Распознавание голоса, или преобразование звука в ASCII-коды, — более сложная задача. Многим трудно воспринимать даже диалекты родного языка.
    Несмотря на то что программы для распознавания речи существуют, им необ- ходима некоторая тренировка, прежде чем они смогут качественно расшиф- ровывать речь конкретного пользователя. Преобразование речи в ASCII-коды — довольно простая задача по сравнению с тем, чтобы научить компьютер по-на- стоящему «понимать» сказанное. Эта проблема относится к области искус-
    ственного интеллекта.
    Звуковые карты современных компьютеров также снабжены небольшими электронными синтезаторами, которые могут имитировать звучание 128 мело- дических и 47 ударных инструментов. Они называются MIDI-синтезаторами *
    (Musical Instrument Digital Interface — «цифровой интерфейс для музыкальных инструментов»). Спецификация MIDI была разработана в начале 1980-х го- дов консорциумом производителей электронных музыкальных синтезаторов для подключения этих электронных устройств к компьютерам и друг к другу.
    В различных типах MIDI-синтезаторов используются разные способы синте- за звука музыкальных инструментов, некоторые реалистичнее, чем другие. Общее качество звука, создаваемого конкретным MIDI-синтезатором, не имеет отноше- ния к спецификации MIDI. Все, что требуется от синтезатора, — воспроизведение
    * На сегодняшний день MIDI-синтезированная музыка практически не используется. Прим.
    науч. ред.

    440
    Код звуков в ответ на короткие сообщения длиной один, два или три байта. Как правило, эти сообщения указывают, какой инструмент необходим, какую ноту нужно сыграть, звучание какой из нот следует прекратить.
    MIDI-файл — это набор MIDI-сообщений с информацией о том, когда сле- дует выполнять то или иное действие. Как правило, MIDI-файл содержит всю музыкальную композицию, которую воспроизводит MIDI-синтезатор. MIDI- файл обычно компактнее, чем файл в формате WAV, содержащий ту же музы- ку. Если говорить об относительном размере, то файл в формате WAV можно сопоставить с растровым изображением, а MIDI-файл — с векторным. Недо- статком MIDI-технологии является то, что закодированная таким образом му- зыка может отлично звучать на одном MIDI-синтезаторе и ужасно — на другом.
    Еще одно направление мультимедиа — цифровое видео. Иллюзия движе- ния видео- и телевизионных изображений достигается путем быстрой смены отдельных неподвижных изображений, которые называются кадрами. Филь- мы воспроизводятся со скоростью 24 кадра в секунду. Для телевидения США стандарт — скорость 30 кадров в секунду, а для большинства других — 25 кад- ров в секунду.
    Воспроизводимый на компьютере видеофайл является просто последова- тельностью растровых изображений, сопровождаемых звуком. Без примене- ния алгоритма сжатия данных размер такого файла будет огромным. Напри- мер, при разрешении 640 × 480 пикселов и 24-битной глубине цвета каждый кадр фильма занимает 921 600 байт. При скорости воспроизведения 30 кадров в секунду нам требуется 27 648 000 байт для записи одной секунды видео. При таких параметрах одна минута будет занимать 1 658 880 000 байт, а весь двух- часовой фильм — 199 065 600 000 байт — около 200 гигабайт. Так что большин- ство воспроизводимых на персональном компьютере фильмов имеют неболь- шое разрешение и невысокое качество, и они короткие *.
    Алгоритм сжатия данных JPEG уменьшает размер неподвижных изобра- жений, а алгоритм MPEG (Motion Pictures Expert Group — «экспертная группа по движущимся изображениям») — фильмов. Технология сжатия движущихся изображений основана на факте, что смежные кадры обычно содержат много одинаковой информации.
    Существуют несколько стандартов MPEG. MPEG-2 предназначен для те- левидения высокой четкости (HDTV) и цифровых видеодисков (DVD, Digital
    Video Disks) или цифровых многоцелевых дисков (Digital Versatile Disc). DVD-диск имеет такой же размер, что и компакт-диск, однако данные можно записывать
    * С ростом пропускной способности сетей связи и быстродействия компьютеров, с появлением стандартов HD и BlueRay ситуация стала совершенно иной. Прим. науч. ред.

    Глава 25. Графическая революция
    441
    на обеих его сторонах по два слоя. Видео, записанное на DVD-диске, сжимается примерно в 50 раз, поэтому для двухчасового фильма требуется всего четыре гигабайта, и оно может уместиться на одном слое одной стороны. Использо- вание обоих слоев и обеих сторон увеличивает емкость DVD-дисков пример- но до 16 гигабайт, что примерно в 25 раз превышает емкость компакт-диска.
    Являются ли диски CD-ROM и DVD-ROM современной реализацией устройства Memex, описанного Вэниваром Бушем? Изначально в Memex пла- нировалось использовать микрофильмы, однако диски CD-ROM и DVD-ROM гораздо больше подходят на роль носителей информации для этого устрой- ства. По сравнению с физическими преимущество электронных носителей следующее: в них легче найти нужные данные. К сожалению, мало кто может получить доступ сразу к нескольким CD- или DVD-дискам. Максимально приближенная к концепции Буша реализация предполагает не хранение всей нужной информации в одном месте, а соединение компьютеров друг с другом для обмена информацией и более эффективного использования запоминаю- щих устройств.
    Первым человеком, которому удалось осуществить удаленное управление компьютером, был Джордж Стибиц, сотрудник Bell Labs, который в 1930-х го- дах разработал релейный компьютер. Удаленное управление этим компьюте- ром имело место в 1940 году на демонстрации в Дартмуте.
    Телефонная система устроена так, чтобы передавать по проводам звук, а не биты. Передача битов по телефонным проводам требует их преобразова- ния в звук. Непрерывная звуковая волна постоянной частоты и амплитуды, называемая несущей, вообще не передает существенной информации. Стоит изменить какой-то из параметров этой звуковой волны, другими словами, произвести модуляцию, чтобы один из ее параметров колебался между двумя разными состояниями, и вы сможете представить с ее помощью значения 0 и 1. Преобразование битов в звук происходит с помощью устройства, назы- ваемого модемом (modem; модулятор/демодулятор). Модем — последователь- ный интерфейс, поскольку отдельные биты байта передаются друг за другом, а не одновременно. (Принтеры часто подключаются к компьютерам через па- раллельный интерфейс, позволяющий одновременно передавать целый байт благодаря наличию восьми проводов.)
    В ранних модемах использовался метод частотной манипуляции. Модем, передающий данные со скоростью, например, 300 бит в секунду, может пре- образовывать 0 бит в частоту 1070 герц, а один бит — в частоту 1270 герц.
    Каждый байт предваряется старт-битом и заканчивается стоп-битом, поэто- му для передачи одного байта требуется десять бит. Первые модемы передава- ли данные со скоростью 300 бит (30 байт) в секунду. В современных модемах

    442
    Код используются более сложные технологии, позволяющие увеличить скорость передачи данных более чем в 100 раз.
    На заре эры компьютерных коммуникаций энтузиасты объединяли пер- сональный компьютер и модем в электронные доски объявлений, к которым через телефонную линию могли подключаться пользователи других компью- теров и скачивать файлы, то есть копировать файлы с удаленного компьютера на свой. Эта концепция широко применялась и такими крупными информа- ционными сервисами, как CompuServe. В большинстве случаев обмен данны- ми осуществлялся в форме ASCII-кодов.
    Качественное отличие интернета от этих ранних систем заключается в де- централизованности. Работа интернета основана на наборе протоколов, с по- мощью которых компьютеры взаимодействуют друг с другом. Самый важ- ный — семейство протоколов TCP/IP (Transmission Control Protocol / Internet
    Protocol). Вместо передачи ASCII-кодов по проводам передатчики, работающие на основе TCP/IP, разделяют крупные блоки данных на небольшие пакеты, ко- торые отправляются по линии передачи (например, по телефонной) и заново собираются в приемнике.
    Популярная составляющая интернета — сервис World Wide Web (WWW,
    Всемирная паутина), использующий протокол HTTP (Hypertext Transfer Protocol —
    «протокол передачи гипертекста»). Содержимое веб-страниц оформляется в текс- товом формате HTML (Hypertext Markup Language — «язык разметки гипертекс- та»). Слово «гипертекст» используется для описания совокупности связанных фрагментов (как в устройстве Memex Вэнивара Буша). HTML-файл может содер- жать ссылки на другие веб-страницы, на которые с него можно легко перейти.
    Формат HTML напоминает описанный ранее RTF, поскольку содержит
    ASCII-текст вместе с информацией о его форматировании. HTML также позво- ляет ссылаться на изображения в форматах GIF, PNG (Portable Network Graphics) и JFIF (JPEG File Interchange Format). Большинство веб-браузеров разрешают просматривать HTML-файлы именно благодаря их текстовому формату. Еще одно преимущество текстового представления HTML-файла — легкость, с ко- торой в нем можно осуществлять поиск. Несмотря на свое название, HTML не относится к языкам программирования, о которых мы говорили в главах 19 и 24. Веб-браузер считывает данные из HTML-файла и соответствующим об- разом форматирует текст и графику.
    Иногда при просмотре определенных веб-страниц необходимо запустить специальный программный код. Такой код может работать либо на сервере, где хранятся исходные веб-страницы, либо на клиенте, то есть на вашем компью- тере. На сервере вся необходимая работа (например, интерпретация содержи- мого полей онлайн-формы), как правило, выполняется с помощью сценариев

    Глава 25. Графическая революция
    CGI (Common Gateway Interface — «общий интерфейс шлюза»). Запускаемый на стороне клиента код обычно содержится в HTML-файле в виде сценария, написанного на простом языке программирования JavaScript. Веб-браузер ин- терпретирует операторы JavaScript так же, как текст HTML.
    Почему веб-сайт не может просто предоставить исполняемую программу для запуска на компьютере? Во-первых, многое зависит от типа машины. Ком- пьютеру Macintosh требуется исполняемый файл, содержащий машинный код для процессора PowerPC и обращения к функциям API Mac OS, PC-совмести- мому — исполняемый файл, содержащий код для процессора Intel Pentium и об- ращения к функциям API ОС Windows. Однако существуют другие компьютеры и графические операционные системы. Более того, вам вряд ли захочется загру- жать все исполняемые файлы без разбора, поскольку можно загрузить из нена- дежного источника файл, который способен причинить вред.
    Для решения этой проблемы компания Sun Microsystems разработала язык
    Java (не путайте с JavaScript). Java — это полноценный объектно-ориентирован- ный язык программирования, похожий на C++. В предыдущей главе я объяснил, в чем разница между компилируемыми и интерпретируемыми языками. Язык
    Java — что-то среднее. Программу, написанную на Java, необходимо скомпили- ровать, но результатом компиляции обычно является не машинный код, а байт-
    коды Java. По структуре они похожи на машинный код, но предназначены для воображаемого компьютера, называемого виртуальной машиной Java (JVM, Java virtual machine). Компьютер, на котором выполняется скомпилированная Java- программа, эмулирует работу JVM, интерпретируя байт-коды. Java-программа использует установленную графическую операционную систему, что позволяет заниматься платформонезависимым программированием.
    Несмотря на то что бóльшая часть этой книги была посвящена исполь- зованию электричества для передачи сигналов и информации по проводам, более эффективна передача данных в виде световых импульсов по оптоволо- конному кабелю — тонкой стеклянной или полимерной трубке, позволяющей свету огибать углы. При использовании такой технологии скорость передачи данных достигает миллиардов бит в секунду.
    Таким образом, в будущем именно фотоны, а не электроны будут достав- лять бóльшую часть информации в наши дома и офисы. Это будет напоминать многократно ускоренную передачу кода Морзе и обмен вспышками света, ко- торые мы когда-то использовали для того, чтобы поделиться полуночной муд- ростью с лучшим другом, жившим в доме напротив.

    Благодарности
    Идея написать эту книгу возникла у меня в 1987 году. Я обдумывал ее на протя- жении десяти лет и писал наброски в файле Microsoft Word с января 1996 года по июль 1999-го. Я выражаю огромную благодарность:
    ȣ читателям первых черновиков книги Шерил Кантер, Йену Истлунду,
    Питеру Голдеману, Линн Магалска и Дейрдре Синнотт за комментарии, замечания и предложения;
    ȣ моему агенту Клодетт Мур из литературного агентства Moore Literary
    Agency и всем сотрудникам Microsoft Press, которые помогли этой кни- ге увидеть свет;
    ȣ моей матери, которая всегда поддерживала меня в начинаниях;
    ȣ маленькой кошечке, жившей у меня с 1982 по май 1999 года, благодаря которой в книге появились многие примеры;
    ȣ таким веб-сайтам, как Bibliofind (bibliofind.com) и Advanced Book Exchange
    (abebooks.com), предоставляющим удобный доступ к подержанным кни- гам, а также сотрудникам отдела науки, техники и бизнеса Нью-Йоркской публичной библиотеки (nypl.org);
    ȣ моим друзьям, без поддержки которых мой замысел не был бы реализован;
    ȣ и еще раз Дейрдре, моему идеальному читателю и не только.
    Чарльз Петцольд
    15 июля 1999 года

    Об авторе
    Чарльз Петцольд живет в Нью-Йорке и занимает- ся программированием и написанием книг о персо- нальных компьютерах. Его классическая книга «Про- граммирование для Windows» выдержала множество изданий и оказала значительное влияние на целое поколение программистов. Книга «Код» позволяет читателю с любым уровнем технической подготовки узнать, как работают компьютеры, и познакомиться с одаренным преподавателем.
    Библиография
    Аннотированную библиографию для этой книги можно найти на сайте
    charlespetzold.com/code.

    Где купить наши книги
    Специальное предложение для компаний
    Если вы хотите купить сразу более 20 книг, например для своих сотрудников или в подарок парт- нерам, мы готовы обсудить с вами специальные условия работы. Для этого обращайтесь к наше- му менеджеру по корпоративным продажам: +7 (495) 792-43-72, b2b@mann-ivanov-ferber.ru
    Книготорговым организациям
    Если вы оптовый покупатель, обратитесь, пожалуйста, к нашему парт неру — торговому дому «Эксмо», который осуществляет поставки во все книготорговые организации.
    142701, Московская обл., г. Видное, Белокаменное ш., д. 1;
    +7 (495) 411-50-74; reception@eksmo-sale.ru
    Адрес издательства «Эксмо» 125252, Москва, ул. Зорге, д. 1; +7 (495) 411-68-86; info@eksmo.ru /
    www.eksmo.ru
    Санкт-Петербург
    СЗКО Санкт-Петербург, 192029, Санкт-Петербург, пр-т Обуховской Обороны, д. 84е;
    +7 (812) 365-46-03 / 04; server@szko.ru
    Нижний Новгород
    Филиал «Эксмо» в Нижнем Новгороде,
    603094, Нижний Новгород, ул. Карпинского, д. 29;
    +7 (831) 216-15-91, 216-15-92, 216-15-93, 216-15-94; reception@eksmonn.ru
    Ростов-на-Дону
    Филиал «Эксмо» в Ростове-на-Дону, 344023,
    Ростов-на-Дону, ул. Страны Советов, 44а;
    +7 (863) 303-62-10; info@rnd.eksmo.ru
    Самара
    Филиал «Эксмо» в Самаре, 443052,
    Самара, пр-т Кирова, д. 75/1, лит. «Е»;
    +7 (846) 269-66-70 (71…73);
    RDC-samara@mail.ru
    Екатеринбург
    Филиал «Эксмо» в Екатеринбурге, 620024,
    Екатеринбург, ул. Новинская, д. 2щ;
    +7 (343) 272-72-01 (02...08)
    Новосибирск
    Филиал «Эксмо» в Новосибирске, 630015,
    Новосибирск, Комбинатский пер., д. 3;
    +7 (383) 289-91-42; eksmo-nsk@yandex.ru
    Хабаровск
    Филиал «Эксмо-Новосибирск» в Хабаровске,
    680000, Хабаровск, пер. Дзержинского, д. 24, лит. «Б», оф. 1; +7 (4212) 910-120; eksmo-khv@mail.ru
    Казахстан
    «РДЦ Алматы», 050039, Алматы, ул. Домбровского, д. 3а; +7 (727) 251-59-89 (90, 91, 92);
    RDC-almaty@eksmo.kz
    Украина
    «Эксмо-Украина», Киев, ООО «Форс Украина», 04073,
    Киев, Московский пр-т, д. 9; +38 (044) 290-99-44; sales@forsukraine.com
    Если у вас есть замечания и комментарии к содержанию, переводу, редактуре и корректуре, то просим написать на be_better@m-i-f.ru, так мы быстрее сможем исправить недочеты.

    МИФ Научпоп
    Узнавай первым
    о новых книгах,
    скидках и подарках
    из нашей рассылки
    mif.to/sci-letter
    Весь научпоп
    на одной странице:
    mif.to/science
    #mifnauka
    НЕЙРОБИОЛОГИЯ
    ТЕОРИЯ ИГР
    ЛИНГВИСТИКА
    ЭКОНОМИКА
    АСТРОФИЗИКА
    И МНОГОЕ ДРУГОЕ

    Научно-популярное издание
    Чарльз Петцольд
    Код
    Тайный язык информатики
    Руководитель редакции Артем Степанов
    Шеф-редактор направления
    «Переводная литература» Ренат Шагабутдинов
    Ответственный редактор Наталья Довнар
    Редактор Оксана Салова
    Арт-директор Алексей Богомолов
    Обложка Наталия Майкова
    Верстка Елена Бреге
    Корректоры Олег Пономарев, Дарья Балтрушайтис, Анна Угрюмова
    Подписано в печать 29.08.2019
    Формат 70×100/16. Гарнитура «Миньон»
    Бумага офсетная. Печать офсетная
    Усл. печ. л. 28. Тираж 3000 экз.
    Заказ
    ООО «Манн, Иванов и Фербер»
    www.mann-ivanov-ferber.ru www.facebook.com/mifbooks www.vk.com/mifbooks
    Отпечатано в филиале АО «Татмедиа» ПИК «Идел-Пресс»,
    г. Казань, ул. Декабристов, 2
    www.idel-press.ru
    16+

    Культовая книга талантливого преподавателя стала
    для многих первым уверенным шагом в программировании.
    От кодов до азбуки Морзе и шрифта Брайля, от устройства фонариков до телеграфов и реле... Автор заглянул в XIX век и на примере простейших электрических компонентов объяснил устройство компьютера.
    «Хотя в настоящее время компьютеры сложнее, чем четверть или полвека назад, они не изменились фундаментально. Вот почему изучать историю техники так здорово: чем сильнее углубляешься в прошлое, тем проще становятся технологии. Поэтому легко добраться до точки, где понятно решительно все... Хочу, чтобы с помощью „Кода“ вы научились разбираться во всех этих вещах настолько, чтобы смогли потягаться с электротехниками и программистами».
    Чарльз Петцольд
    1   ...   20   21   22   23   24   25   26   27   28


    написать администратору сайта