В книге представлены "классические" разделы теории разработки компиляторов: лексический и синтаксический анализ, организация памяти компилятора (таблицы символов) и периода исполнения (магазина), генерация кода. Рассматриваются такие средства автоматизации процесса разработки трансляторов, как LEX, YACC, СУПЕР, методы генерации оптимального кода. Сделана попытка на протяжении всего изложения провести единую "атрибутную" точку зрения на процесс разработки компилятора. В книге не затрагиваются чрезвычайно важные вопросы глобальной оптимизации и разработки компиляторов для машин с параллельной архитектурой. Авторы надеются восполнить эти пробелы в будущем. Книга рассчитана как на студентов и аспирантов программистских специальностей, так и на профессионалов в области программирования.
Вряд ли можно где-нибудь увидеть объявление о найме для участия в безнадежном проекте. Какой смысл спрашивать: «Хотите ли вы работать сверхурочно без какой-либо прибавки к зарплате? Привлекает ли вас бесконечная работа по устаревшей технологии и тщетное ожидание участия в каком-нибудь замечательном проекте GUI/DSS/DWH/HTML? Каково будет узнать, что трехзвенная архитектура «клиент-сервер» позволит остальным участникам проекта обойтись без вашей помощи?»
На самом деле, безнадежные проекты редко объявляются таковыми во всеуслышание, и вам придется достаточно долго проработать в нанявшей вас компании, прежде чем удастся обнаружить, что она обладает склонностью плодить безнадежные проекты.
Если вашему коллеге приходится руководить безнадежным проектом, то ему можно посоветовать включить в контракт пункт, позволяющий цивилизованным способом выйти из проекта. Одна из серьезных причин выхода - неспособность высшего руководства воспринимать правдивую информацию о проекте. Принимающий на себя руководство безнадежным проектом должен быть готов к тому, что у него будет практически отсутствовать пространство для маневра в отношении функциональности, затрат или времени.
Данная книга посвящена иллюстрации возможностей одной из самых эффективных систем компьютерного программного обеспечения – пакета универсальных интегрированных программ MATLAB. Любознательному читателю предлагается ознакомиться в первом приближении с основами языка программирования и комплексной визуализации результатов решения ряда научных и инженерных задач. Рассматриваются такие проблемы как табулирование функций, решение нелинейных уравнений, поиск оптимальных решений, решение задач Коши, численное интегрирование и другие задачи, традиционно включаемые в курс численных методов. Алгоритм этих задач хорошо известен и разработчики системы MATLAB (фирма Math Works, Inc., U.S.A.) учли опыт численного решения и программирования задач вычислительной математики за все время существования вычислительной техники. Поэтому в системе MATLAB по каждой проблеме имеется несколько программ (иногда их более 10), предназначенных для ее решения в зависимости от особенностей данной задачи.
Термин software (программное обеспечение, ПО) ввел в 1958 году всемирно известный статистик Джон Тьюкей (John Tukey). Термин software engineering (программная инженерия) впервые появился в названии конференции НАТО, состоявшейся в Германии в 1968 году и посвященной так называемому кризису программного обеспечения. С 1990-го по 1995 год велась работа над международным стандартом, который должен был дать единое представление о процессах разработки программного обеспечения. В результате был выпущен стандарт ISO/IEC 12207 . В 2004 году в отрасли был создан основополагающий труд «Руководство к своду знаний по программной инженерии» (SWEBOK) , в котором были собраны основные теоретические и практические знания, накопленные в этой отрасли.
Важнейшими математическими формализациями, рассматриваемыми в данном курсе, являются ламбда-исчисление и комбинаторная логика.
Еще в 1924 г. М. Шейнфинкель (Moses Schonfinkel) разработал простую (simple) теорию функций, которая фактически являлась исчислением объектов-функций и предвосхитила появление ламбда-исчисления – математической формализации, поддерживающей языки функционального программирования (т.е. программирования в терминах функций).
Затем в 1934 г. А. Черч (Alonso Church) предложил собственно исчисление ламбда-конверсий (или ламбда-исчисление) и применил его для исследования теории множеств. Вклад ученого был фундаментальным, так что теория до сих пор называется ламбда-исчислением и часто именуется в литературе ламбда-исчислением Черча.
Позднее, в 1940 г., Х. Карри (Haskell Curry) создал теорию функций без переменных (иначе называемых комбинаторами), известную в настоящее время как комбинаторная логика. Эта теория является развитием ламбда-исчисления и представляет собой формальный язык, подобный языку функционального программирования.
В 60-х годах Х. Барендрегтом (H. Barendregt) были детально описаны синтаксис (т.е. форма конструкций) и семантика (т.е. значение конструкций) ламбда-исчисления.
Цель этого курса - познакомить читателя с некоторыми основополагающими моделями и результатами, используемыми в теоретической информатике. Неудивительно, что они относятся к математике, а не к какой-либо другой области знаний - ведь в науке о компьютерах именно математические абстракции являются самыми плодотворными.
Рассматриваемые здесь идеи и результаты принадлежат теории формальных языков, грамматик и автоматов. По существу, эта теория описывает некоторые ограниченные абстрактные машины, способные выполнять определенные операции со строками. Например, конечный автомат может выяснить, содержит ли некоторый файл определенное слово, а автомат с магазинной памятью способен определить, правильна ли система вложенных круглых, квадратных и фигурных скобок.
Теория нечетких множеств представляет собой обобщение и переосмысление важнейших направлений классической математики. У ее истоков лежат идеи и достижения многозначной логики, которая указала на возможности перехода от двух к произвольному числу значений истинности и поставила проблему оперирования понятиями с изменяющимся содержанием; теории вероятностей, которая, породив большое количество различных способов статистической обработки экспериментальных данных, открыла пути определения и интерпретации функции принадлежности; дискретной математики, которая предложила инструмент для построения моделей многомерных и многоуровневых систем, удобный при решении практических задач.
Подход к формализации понятия нечеткого множества состоит в обобщении понятия принадлежности. В обычной теории множеств существует несколько способов задания множества. Одним из них является задание с помощью характеристической функции, определяемой следующим образом. Пусть — так называемое универсальное множество, из элементов которого образованы все остальные множества, рассматриваемые в данном классе задач, например множество всех целых чисел, множество всех гладких функций и т.д.
Представлен подход к построению архитектуры инструментария для тестирования на основе моделей, использующего современные компонентные технологии. Одна из основных идей, лежащих в его основе — применение техник неинвазивной композиции, позволяющих с минимальными затратами интегрировать множество независимо разработанных компонентов в сложную систему и переконфигурировать ее, не изменяя кода компонентов. Также описывается прототипная реализации предложенного подхода на базе свободно доступных библиотек и пример ее использования для построения тестов.
Macromedia Dreamweaver — достаточно "старый" пакет. Первая его версия была разработана еще в 1998 году и получила популярность в России благодаря своей "благосклонности" к русскому языку и снисходительному отношению к множеству русскоязычных кодировок. Я пользуюсь Dreamweaver, начиная с версии 2.0. В прошлом году я написал электронная книгау о предыдущей версии Dreamweaver — 4.0. Теперь же, с выходом Dreamweaver MX, я снова взялся за перо, так сказать.
Изучать Dreamweaver мы будем на конкретном примере. Мы будем делать личный Web-сайт гипотетического Web-дизайнера Ивана Ивановича Иванова. Сначала этот сайт будет совсем простеньким; на его основе мы изучим базовые инструменты программы и основные принципы Web-дизайна. Впоследствии сайт станет сложнее и красивее; мы будем использовать фреймы и таблицы, чтобы придать ему профессиональный вид. Далее мы изучим таблицы стилей, встроенные средства для анимации элементов страницы и сценарии, позволяющие "оживить" страницы нашего сайта. И на самой последней ступени мы изучим серверное программирование и сделаем для нашего сайта гостевую электронную книгу. Ну и, конечно же, мы узнаем, как собрать разрозненные страницы в сайт и опубликовать его в Сети.
Любой паттерн проектирования, используемый при разработке информационных систем, представляет собой формализованное описание часто встречающейся задачи проектирования, удачное решение данной задачи, а также рекомендации по применению этого решения в различных ситуациях. Кроме того, паттерн проектирования обязательно имеет общеупотребимое наименование. Правильно сформулированный паттерн проектирования позволяет, отыскав однажды удачное решение, пользоваться им снова и снова. Следует подчеркнуть, что важным начальным этапом при работе с паттернами является адекватное моделирование рассматриваемой предметной области. Это является необходимым как для получения должным образом формализованной постановки задачи, так и для выбора подходящих паттернов проектирования. В качестве примера монографии, в которой описаны основы построения модели анализа и модели проектирования, можно привести работу
Проектирование и расчет автоматизированных приводов
Согласно ГОСТ 16593—79 под электроприводом (ЭП) понимается электромеханическая система (рис. 1), состоящая из электродвигательного, преобразовательного, передаточного и управляющего устройств, предназначенная для приведения в движение вспомогательных органов рабочей машины и управления этим движением.
Электродвигательное устройство (ЭД) служит для преобразования электрической энергии в механическую в целях механического воздействия на объект регулирования (OP).
Преобразовательным является устройство, преобразующее род тока (напряжения), частоту и изменяющее показатели качества электрической энергии. Так как обязательной функцией этого устройства является усиление сигнала, то часто его называют усилительно-преобразовательным устройством (УПУ) или просто усилителем.
Передаточное устройство (редуктор P) предназначено для передачи механической энергии от ЭД к исполнительному органу рабочей машины и согласования вида и скоростей их движения.
Практически ежегодно Microsoft представляет публике новую версию самого популярного своего продукта - операционной системы Windows. По традиции компания обещает, что именно эта, последняя версия наиболее стабильна, надежна и удобна. Все по той же традиции пользователи ждут "улучшений" с изрядной долей пессимизма…
Конечно, идеальной операционной системы не существует, и семейство Windows имеет как плюсы, так минусы. Однако, положа руку на сердце, признаем: прогресс, в первую очередь в стабильности, есть. Кроме того, следует учитывать, что продукцией Microsoft пользуются десятки миллионов пользователей во всем мире - и угадать конфигурацию компьютера, индивидуальные потребности к внешнему оформлению и набору программ просто невозможно. Поэтому, установив Windows на свой ПК, не рассчитывайте, что дальше система будет работать идеально - она будет работать стандартно, в расчете на среднестатистические потребности пользователя.
Ключевым понятием операционной системы Windows, позволяющим понять любую технологию, использующуюся в ней, является понятие библиотеки динамической компоновки (DLL, Dynamic Link Library). Любое полноценное приложение этой операционной системы (32-разрядное приложение, имеющее собственное окно) использует DLL-файлы. По мере необходимости приложение обращается к библиотекам, вызывая из них нужные функции. Например, выполнимый модуль приложения не содержит кода по отображению окна, вывода в окно и реакции на большинство событий. Перечисленные действия реализуются в системных DLL. В частности, использованием такой технологии удается экономить драгоценные ресурсы, один и тот же код не дублируется многократно, а размещается в памяти единожды.
К одной библиотеке, как правило, может обращаться одновременно несколько приложений. Библиотеку в такой схеме называют сервером, а обслуживаемое им приложение - клиентом. Сервером и клиентом в общем случае могут являться и библиотека, и приложение. В частности, это означает, что некоторая библиотека, в свою очередь, может "подгружать" функции из другой библиотеки.
Часть механики жидких сред, которая рассматривает движение жидкости, а также силовое взаимодействие между жидкостью и обтекаемыми ею телами или ограничивающими ее поверхностями, называется гидромеханикой.
Раздел механики, в котором изучают движение газов и жидкостей и обтекание ими тел, называют аэромеханикой.
Прикладную часть гидромеханики, для которой характерен определенный круг технических вопросов, задач и методов их решения, называют технической механикой жидкости, или гидравликой.
Обычно гидравлику определяют как науку о законах равновесия и движения жидкостей и о способах приложения этих законов к решению практических задач. В гидравлике рассматриваются главным образом потоки жидкости, ограниченные и направленные твердыми стенками, т. е. течения в открытых и закрытых руслах (каналах). Можно сказать, таким образом, что в гидравлике изучают внутренние течения жидкостей и решают так называемую «внутреннюю» задачу в отличие от «внешней» задачи, связанной с внешним обтеканием тел сплошной средой, которое имеет место при движении твердого тела в жидкости или газе (воздухе). «Внешнюю» задачу рассматривают в собственно гидромеханике или аэрогидромеханике. Этот раздел в основном связан с потребностями авиации и судостроения.
Данный краткий обзор содержит систематизированное описание протоколов информационно-вычислительных сетей (ИВС). За основу систематизации приняты следующие критерии:
уровни взаимодействия:
физическое
сетевое
прикладное
типы сетевой архитектуры: TCP/IP, SNA, DEC, Banyan Vines, Apple Talk, XNS Xerox(Novell), ISO.
Данное деленеие на уровни взаимодействия предлагается только для облегчения понимания и ни в коей мере не заменяют эталонную модель взаимодействия открытых систем (ЭМВОС).
Изложение материала построено по принципу "от простого — к сложному". Главы, каждая из которых нацелена на решение определенной задачи, мы назвали уроками, подчеркивая тем самым, что основное назначение нашей книги — научить читателя работе с Premiere. При этом мы старались думать о разных пользователях — как начинающих работу с компьютером вообще и пытающихся освоить Premiere "с нуля", так и продвинутых, знакомых с приложениями Adobe Photoshop и Premiere, а также с предыдущими версиями Adobe Premiere.
Переход от традиционных методов сборки функциональных узлов аппаратуры из готовых типовых электрорадиоэлементов к принципиально новой технологии, совмещающей процессы изготовления элементов и процессы объединения их в конструктивно завершенную функциональную структуру, стал возможным лишь благодаря полупроводниковой технологии, освоившей значительное количество новых весьма эффективных приемов и процессов. Результаты этого перехода оказались столь существенными, что знаменовали подъем всей электроники на качественно новый уровень, Появление ИС — это фактически создание новой, более совершенной элементной базы РЭА. Интегральная технология изменила представление об оптимальных функциональных структурах радиоэлектронных устройств и их функциональном базисе. Она вызвала к жизни новые принципы и способы конструирования аппаратуры, оказывает глубокое влияние на все этапы изготовления радиоэлектронных устройств и на способы их эксплуатации, невиданно расширяет сферу их применения.Произошло формирование специальной отрасли электроники, разрабатывающей проблемы конструирования и производства электронных изделий на базе интегральной технологии. Эта отрасль получила название микроэлектроники.
В отличие от RIP, OSPF может работать в пределах некоторой иерархической системы. Самым крупным об'ектом в этой иерархии является автономная система (Autonomous System - AS) AS является набором сетей, которые находятся под единым управлением и совместно используют общую стратегию маршрутизации. OSPF является протоколом маршрутизации внутри AS, хотя он и способен принимать маршруты из других AS и отправлять маршруты в другие AS.
Любая AS может быть разделена на ряд областей (area). Область - это группа смежных сетей и подключенных к ним хостов. Роутеры, имеющие несколько интерфейсов, могут участвовать в нескольких областях. Такие роутеры, которые называются роутерами границы областей (area border routers), поддерживают отдельные топологические базы данных для каждой области.
Топологическая база (topological database) данных фактически представляет собой общую картину сети по отношению к роутерам. Топологическая база данных содержит набор LSA, полученных от всех роутеров, находящихся в одной области. Т.к. роутеры одной области коллективно пользуются одной и той же информацией, они имеют идентичные топологические базы данных.
В мире программирования 1990-е годы можно по праву назвать десятилетием программного обеспечения с открытым кодом (Open Source software). Движение Open Source оставило свой след практически в каждом уголке технологий - от Linux до Perl и от карманных компьютеров до мэйнфреймов. Это влияние особенно сильно в области серверных приложений среднего масштаба, в которых часто нуждаются некоммерческие организации и малые предприятия и которыми пренебрегают нацеленные на коммерческий успех производители.
В первые два десятилетия компьютерного века серверы среднего масштаба встречались достаточно редко. Компьютеры были дорогими изделиями, имевшимися в больших учреждениях, таких как банки и университеты. Громадные серверы, работавшие в режиме разделения времени, обеспечивали вычислительными мощностями целые корпорации. Большая использовавшегося на этих системах программного обеспечения была такой же грандиозной, как сами серверы. Поскольку единственный компьютер обслуживал нужды нескольких подразделений, если не всей организации, ему приходилось удовлетворять запросы всех пользователей.
Документация к Citrix MetaFrame XP включает электронные руководства и он-лайновую помощь.
Документация, включенная в MetaFrame XP, находится в каталоге Docs на CD-ROM с MetaFrame XP. Документация к клиентам ICA находится на CD-ROM "MetaFrame XP Components".
Дополнительная информация доступна на странице Product Documentation в разделе Support на сайте. Например, "Расширенные концепции" является дополнением к "Руководству администратора" и содержит руководство по масштабированию, развертыванию, настройке, оптимизации и устранению проблем.
После инсталляции сервера MetaFrame электронную документацию можно найти в каталоге Documentation. Доступ к нему осуществляется посредством выбора из основного меню Programs -> Citrix -> Documentation.
Онлайновая помощь
Помимо документации, есть он-лайновая помощь в Management Console и других инструментах, включенных в комплект MetaFrame XP. Доступ к помощи осуществляется из меню Help.
Помощь в Management Console находится в формате JavaHelp и требует наличия Java Run-Time Environment (JRE), который по умолчанию инсталлируется при установке сервера. Другие утилиты содержат подсказку в формате WinHelp, по умолчанию присутствующий во всех системах Windows.