Программное обеспечение и его разработка - [14]
Пять видов использования по-разному влияют и на аппаратуру, и на программное обеспечение.
В больших системах типа III есть одно интересное, но очень «хитрое» место. Фактором, ограничивающим производительность аппаратуры, становится в них время доступа к диску. Большая часть действий в подобных системах связана с модификацией данных, поэтому необходимо постоянно осуществлять «поиски» этих данных. При этих «поисках» приходится простаивать в очередях, пока механизмы доступа к диску не дадут возможности осуществить обращение к нему. Программное обеспечение должно строиться так, чтобы число одновременных поисков было максимальным. Очевидно, что чем больше дисков в системе, тем большее перекрытие становится возможным. В некоторых реализациях имеются сотни отдельных дисков.
Работы по программированию системы «Скайлэб» велись в Хьюстоне как продолжение работ над проектом «Апполон XV». Аппаратура осталась та же самая, что и для «Аполлона»; программное же обеспечение изменялось. Это было в некотором роде бедствие. Работы были закончены в положенный срок, но цена, которую пришлось заплатить группе примерно из 700 профессионалов, оказалась непомерной. Сверхурочная работа часто приводит к изнеможению и упадку сил.
Что же произошло? Почему столь опытная группа, имевшая за своими плечами 10 лет успешных разработок космических систем, т. е. всей системы Апполон и системы посадки на Луну, вдруг оказалась в таком положении? Ответ, кажущийся простым сейчас, в то время не был очевиден.
Рис. 2.2. Диаграмма, вносящая путаницу в вопрос процентного соотношения стоимости разработок.
Скайлэб была очень большая система типа III, которая постепенно превратилась в систему типа IV, и сбои в системе были исключены. Группа ожидала, что это будет система типа IV, не ожидая уклона в сторону системы типа V.
На борту космической лаборатории были проведены сотни экспериментов в реальном времени, и данные поступали от них тоже в реальном времени. Их надо было собирать, сортировать, запоминать, снабжать указателями, помечать и классифицировать — и все это в реальном времени. Ни NASA, ни фирма IBM не предвидели столь существенных отличий в применении систем, поэтому для выполнения работы пришлось создавать совершенно новое программное обеспечение.
Рис. 2.2 может быть использован как иллюстрация к большим системам типа V, а также к некоторым из систем типов III и IV. Он совершенно не отражает положение дел в системах типов I и II, хотя часто выдается за неоспоримую истину во многих книгах и докладах. Диаграмма, изображенная на нем, соответствует только той области, откуда она вышла, т. е. командным и управляющим вычислительным системам ВВС, как и было указано в докладе ВВС США.
Нужно постоянно помнить об одном часто не принимаемом во внимание факте, связанном с программным обеспечением. Оно слишком велико и разносторонне, чтобы его можно было обсуждать сколько-нибудь длительное время без предварительного указания того, какая область, часть или тин программного обеспечения обсуждается. Этот термин слишком широк, чтобы использовать его без определяющих прилагательных.
Разрабатывать программное обеспечение с каждым днем становится все труднее.
Разрабатывать программное обеспечение с каждым днем становится все легче.
Оба этих утверждения верны. Кажущееся их противоречие друг другу проистекает из широчайшего многообразия мира программного обеспечения. Давайте посмотрим, где же разработка программ становится проще.
Очень упрощенные, но достаточно верные графики могут значительно прояснить складывающуюся ситуацию. Давайте бросим взгляд на вычислительный мир (рис. 2.3). В 1952 г. он состоял из одной[4] машины — UNIVAC I.
В 1980 г. этот мир значительно расширился, вычислительные машины стали появляться как на нижних, так и на верхних частях шкалы (рис. 2.4).
После этого, в середине 1960-х гг. «миникомпьютеры» — термин относится скорее к цене, чем к размеру, — сместили положение вычислительных машин на шкале еще ниже (рис. 2.5).
В настоящее время благодаря использованию сверхбольших интегральных схем научились создавать микрокомпьютеры, вполне размещающиеся на ладони. Это снова заставляет нас перестраивать картину. Увеличивая масштаб (рис. 2.6), мы можем увидеть, что же произошло за эти годы в мире вычислительных машин — стоимость их уменьшилась, а емкость памяти и производительность увеличились.
Рис. 2.3 Соотношение стоимость/мощность 1951 г.
Рис. 2.4 Соотношение стоимость/мощность 1960 г.
Рис. 2.5 Соотношение стоимость/мощность 1965 г.
Машины становятся все более мощными (точка А). Они становятся настолько дешевыми, что проникают в такие области (точка В), куда до сих пор вычислительные машины не допускались Программное обеспечение, конечно, следует за аппаратурой и в точках А и В. Оно маленькое и простое В, большое и сложное в А.
Рис. 2.6. Соотношение стоимость/мощность 1980 г.
Рис. 2.7. Развитие полупроводниковой технологии[5]
Цифровые схемы превратились в цифровые вычислительные машины (ЦВМ) — а это означает, что они стали программируемыми Этот великолепнейший прибор стоит теперь сущую безделицу В результате цифровые вычислительные машины проникли в такие области применения, которые ранее не могли бы оправдать таких сложных средств (см. рис 2.7)
Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)
Книга посвящена разработке программ для мобильных устройств под управлением операционной системы Android. Рассматривается создание приложений с использованием системных компонентов и служб Android. Приведены базовые данные о структуре приложений, об основных классах и их методах, сопровождаемые примерами кода. Часть 1 содержит шесть глав, описывающих основные принципы создания приложений, пользовательский интерфейс, полномочия приложений, а так же базовые классы: Activity, Intent, Fragment. Книга предназначена для программистов, владеющих языком программирования Java и желающих освоить написание приложений, работающих под ОС Android.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
Система сборки программ, используемая во FreeBSD, имеет значительно большие возможности, чем те, которые мы задействовали. Какие это возможности и как их использовать в своих портах?
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Очень часто под рукой не оказывается ни отладчика, ни дизассемблера, ни даже компилятора, чтобы набросать хотя бы примитивный трассировщик. Разумеется, что говорить о взломе современных защитных механизмов в таких условиях просто смешно, но что делать если жизнь заставляет?..