При описании протоколов взаимодействия или систем, которые совместно используют определенные структуры данных, требуется определить типы данных, передаваемые этими протоколами или совместно используемые различными системами. Для того чтобы определить эти типы данных, требуется специальная нотация. Такой нотацией является ASN.1.
Данная нотация, с одной стороны, интуитивно понятна, а с другой стороны, может использоваться как протоколами, так и программными системами. Неотъемлемой частью ASN.1 являются базовые правила представления BER (Basic Encoding Rules). BER описывает принцип представления любой величины в рамках стандарта ASN.1. Практически все величины представляются в виде последовательности 8-битных октетов. Восьмой бит октета считается самым старшим. BER позволяет представить величину в виде последовательности 8-битных октетов несколькими способами. Имеется также поднабор правил представления DER (Distinguished Encoding Rules), который определяют однозначные способы представления величин в ASN.1.
К сожалению, выбор компилятора часто обусловлен, опять-таки, идеологией и соображениями вроде "его все используют". Конечно, среда разработки Microsoft Visual C++ несколько более удобна, чем у портированного gcc - но это ведь вовсе не значит, что релиз своего продукта вы должны компилировать с использованием MSVC++. Используйте оболочку, компилируйте промежуточные версии на MSVC++ (кстати, время компиляции у него гораздо меньше, чем у gcc), но релиз можно собрать с использованием другого компилятора, например от Intel. И, в зависимости от компилятора, можно получить прирост в производительности на 10% просто так, на ровном месте. Но какой "правильный" компилятор выбрать, чтобы он сгенерировал максимально быстрый код? К сожалению, однозначного ответа на этот вопрос нет - одни компиляторы лучше оптимизируют виртуальные вызовы, другие - лучше работают с памятью.
Microsoft Windows 3.1 для программиста. Дополнительные главы
Так как приложения Windows работают не в гордом одиночестве (как программы MS-DOS), а в компании других приложений, у пользователя должна быть возможность передавать данные из одного приложения в другое или даже организовать постоянно действующий канал передачи данных между различными приложениями.
Для однократной или эпизодической передачи данных можно использовать универсальный буфер обмена Clipboard и соответствующие функции программного интерфейса Windows, которые мы опишем во второй главе.
Вы можете также организовать канал передачи данных между любыми приложениями, пользуясь механизмом динамической передачи данных DDE. Этот механизм, а также интерфейсная dll-библиотека DDEML будет описана в третьей главе.
В наши дни многие уже путают компьютерную математику как науку о математических вычислениях и преобразованиях с помощью компьютеров с СКМ Маthematica, созданной фирмой Wolfram Research, Inc. Хотя это и знаменательно само по себе, во избежание такой путаницы мы начнем наш курс с рассказа о том, как зародилась компьютерная математика и как были созданы программные системы компьютерной математики различных классов. Здесь мы также опишем отражение системы Mathematica в мировой сети Интернет.
Для многих неискушенных в математике пользователей не совсем понятно, что делают СКМ, особенно те из них, которые выполняют символьные операции. Поэтому в этом уроке мы впервые познакомимся с особенностями различных систем и оценим их возможности, так сказать, в первом приближении. Некоторые из приведенных примеров лучше повторить в дальнейшем — после изучения основ работы с системой
Язык программирования Форт (англ. forth - вперед и одновременно сокращение от fourth - четвертый), которому посвящена эта книга, появился в начале 1970-х гг. в США. Его изобретатель Чарльз Мур первоначально применил его для разработки программного обеспечения микроЭВМ, управляющей работой радиотелескопа. Преимущества работы с языком Форт вместо применявшегося ранее Ассемблера были настолько велики, что вскоре он стал использоваться и на других специализированных ЭВМ.
Быстрый рост популярности языка Форт начался с середины 1970-х гг., когда появились персональные ЭВМ. Оказалось, что этот язык позволяет обходиться сравнительно небольшим набором возможностей первых персональных ЭВМ, превращая их в удобный и эффективный инструмент для самой разной работы. К середине 1980-х гг. Форт выдвинулся на третье место после языков Бейсик и Паскаль в качестве средства программирования для персональных ЭВМ, и рост его применения продолжается. Широкое распространение получили коммерческие программные продукты, написанные на Форте: системы обработки текстов, пакеты машинной графики, трансляторы, видеоигры. Стихийно быстрое распространение Форта и его практический успех обусловили необходимость стандартизации языка. В 1983 г. был опубликован стандарт «Форт-83», в соответствии с которым ведется изложение материала в этой книге.
Одной из наиболее сложных систем сегодня являются открытые системы связи OSI (Open System Interconnection). OSI представляет собой достаточно формализованную стандартную архитектуру управления межкомпьютерными коммуникациями. Для описания этой системы была разработана абстрактный синтаксис нотаций ASN.1 (Abstract Syntax Notation; См. A Layman’s Guide to a Subset of ASN.1, BER, and DER. Burton S. Kaliski Jr., RSA Data Security, Inc. Redwood City, CA, 1991). ASN.1 является формальным языком, который обладает двумя основными чертами.
Используемая в документах нотация легко читаема и понимаема, а в компактном кодовом представлении информация может использоваться коммуникационными протоколами. Неотъемлемой частью ASN.1 являются базовые правила кодирования BER (Basic Encoding Rules), которые позволяют определить большое разнообразие типов данных. BER описывает то, как представить или закодировать любую величину в рамках стандарта ASN.1. Практически все величины здесь представляются в виде последовательности 8-битных октетов. Восьмой бит октета всегда считается самым старшим. BER позволяет закодировать величину более чем одним способом. Имеется также поднабор правил кодирования DER (Distinguished Encoding Rules, описаны в документе Х.509), которые определяют однозначные способы кодирования величин ASN.1.
Язык разметки (markup languages) - это набор специальных инструкций, называемых тэгами, предназначенных для формирования в документах какой-либо структуры и определения отношений между различными элементами этой структуры. Другими словами разметка показывает, какая часть документа является заголовком, какая подзаголовком, что следует считать именем автора и т. д. Разметка разделяется на стилистическую разметку, структурную и семантическую.
Bluetooth технические требования, практическая реализация
Настоящая книга посвящена одной из наиболее динамично развивающихся беспроводных технологий связи, получившей широкую известность в мире как Bluetooth технология. Книга адресована самому разнообразному кругу читателей: «обывателям», желающим понять «проблему», инженерам-проектировщикам, которые найдут в книге конкретные технические характеристики и алгоритмы работы или будут ориентированы к интересующим их разделам технических требований, а также инженерам-интеграторам, которые используют технологию Bluetooth для создания конкретных технических систем.
Учебник состоит из трех частей и приложения.
В первой части собраны задачи. Они сгруппированы по темам и относятся практически ко всем разделам программирования: от объявления переменных и программ с линейной структурой до работы с графикой и файлами.
Во второй части приведены решения, представленные в виде хорошо документированных текстов программ, изучение которых поможет начинающему программисту даже в том случае, если задача решена им самостоятельно.
Третья часть представляет собой справочник по языку программирования Turbo Pascal, содержащий описание большинства процедур и функций.
Если вы имеете компьютер с процессором типа Pentium (Celeron), то используйте Turbo Pascal версии 7.1. Программы, созданные при помощи Turbo Pascal 7.0 и использующие библиотеку ctr, на компьютерах с процессором типа Pentium (Celeron) не работают, при их запуске возникает ошибка "деление на ноль". Еще раз хочется повторить, что научиться программировать можно только программируя, т. е. решая конкретные задачи.
Электронная почта - краткое руководство пользователя
Одним из наиболее используемых сервисов Интернет является электронная почта (ЭП). Редко встретишь "визитку" без поля E-mail (произносится "е-майл" или "и-мэйл", кому как больше нравиться, сокращение от Electronic Mail). Удобство использования и скорость доставки сообщения - два главных козыря, которые позволили этому сервису победить "бумажную почту". Прочитав это руководство, вы сможете воспользоваться ЛЮБОЙ программой чтения ЭП, для этого не надо изучать каждую программу, для этого нужно знать принципы работы, их я вам опишу. Также я попытаюсь вам рассказать об основных возможностях и отличиях современных пакетов программного обеспечения для работы с ЭП.
В этом томе мы продолжим изучение библиотеки классов MFC и ее возможностей. Теперь мы расскажем о использовании Microsoft Visual C++ и библиотеки MFC для разработки приложений Internet и Intranet. Мы также затронем технологию ActiveX и расскажем о том как использовать в своих приложениях готовые органы управления OLE и ActiveX. В приложениях, представленных в данной книге, мы будем активно работать с диалоговыми панелями. На примере списка с пиктограммами и линейного индикатора вы научитесь использовать стандартные органы управления Windows 95 и Windows NT. Мы также приведем начальные сведения о использовании мультизадачности в приложениях MFC. Одно из наших приложений будет создавать дополнительную задачу, выполняющую загрузку файлов с сервера FTP в фоновом режиме.
До недавнего времени создание приложений, которые могут работать с ресурсами сети Internet или Intranet, являлось достаточно сложной задачей. Программист должен был использовать интерфейс сокетов Windows или программировать на более низком уровне протокола TCP\IP.
Чтобы облегчить тяжелый труд программиста, Microsoft разработала новый программный интерфейс Win32 Internet, получивший красивое название WinInet. С использованием WinInet значительно облегчается создание приложений, работающих с протоколами HTTP, FTP и системой Gopher. При этом программист избавляется не только от необходимости программирования на уровне сокетов Windows или протокола TCP\IP, но и от самостоятельной реализации протоколов HTTP и FTP.
Опция Accuracy [Точность] задает точность вычислений. Первоначальное значение точности определяется системной переменной пользовательских умолчаний Assemblies_WeightDataAccuracy (по умолчанию - 0.99). Задавая большее значение точности, Вы снизите погрешность, но при этом увеличится время расчетов. И наоборот, меньшее значение точности ускоряет процесс вычислений. Доступны следующие значения: 0.9, 0.99, 0.999, 0.9999, 0.99999 и 0.999999.
В наши дни многие уже путают компьютерную математику как науку о математических вычислениях и преобразованиях с помощью компьютеров с СКМ Маthematica, созданной фирмой Wolfram Research, Inc. Хотя это и знаменательно само по себе, во избежание такой путаницы мы начнем наш курс с рассказа о том, как зародилась компьютерная математика и как были созданы программные системы компьютерной математики различных классов. Здесь мы также опишем отражение системы Mathematica в мировой сети Интернет.
Для многих неискушенных в математике пользователей не совсем понятно, что делают СКМ, особенно те из них, которые выполняют символьные операции. Поэтому в этом уроке мы впервые познакомимся с особенностями различных систем и оценим их возможности, так сказать, в первом приближении. Некоторые из приведенных примеров лучше повторить в дальнейшем — после изучения основ работы с системой Mathematica. Впрочем, нетерпеливые учащиеся могут попробовать сделать это немедленно! Однако, чтобы запустить систему Mathematica 3 или 4 и начать работу с ней, надо вначале установить систему на жесткий диск вашего ПК. Об этом пойдет речь в конце данного урока.