Вопросы программирования

         

Пособие по практике программирования

Приходилось ли вам когда-нибудь:

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

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

Введение
Стиль
Алгоритмы и структуры данных
Проектирование и реализация

Интерфейсы
Отладка
Тестирование

Производительность
Переносимость
Нотация
Свод правил

Цвет и цветовоспроизведение

Действие на органы зрения излучений, длины волн которых находятся в диапазоне 400—700 нм, приводит к возникновению зрительных ощущений. Эти ощущения различа­ются, количественно и качественно. Их количественная характеристика называется светлотой, качественная -цветностью. Физические свойства излучения — мощность и длина волны — тесно связаны со свойствами возбуждаемого им ощущения. С изменением мощности изменяется светлота, а с изменением длины волны — цветность.
Первоначальное представление о светлоте и цветности можно проиллюстрировать, поместив окрашенную поверхность частично на прямой солнечный свет, а частично — в тень. Обе части ее имеют одинаковую цветность, но разную светлоту.
Совокупность этих характеристик обозначается термином «цвет». Строгое определение термина можно дать только после излучения свойств цветового ощущения. Однако целесообразно в начале курса дать определение, понимание которого не требует предварительной подготовки. Оно предложено известным физиком Шредингером (1920 г.). По Шредингеру, цвет есть свойство спектральных составов излучений, не различаемых человеком визуально.
В связи с ролью цветовых ощущений в жизни и деятельности человека возникла наука о цвете — теория цвета, или цветоведение. Она изучает круг вопросов, связанных с оп­тикой и физиологией зрения, психологией восприятия цвета, а также теоретические основы и технику измерения к воспроизведения цветов.
Так как причиной возникновения цветового ощущения является действие света, то один из разделов теории цвета— физика цвета — рассматривает свойства света, главным образом распределение светового потока по спектрам испускания и отражения, а также способы получения этих спектров, аппаратуру и приемники излучения.

Цвет и объекты изучаемые теорией цвета
Частичные изображения оригинала

CAN протоколы высокого уровня

Рассмотрим основные возможности, которые предоставляют протоколы высокого уровня:
система назначения идентификатора для сообщения
метод обмена данных процесса
прямая(peer-to-peer) связь
метод установления связей для обмена данных процесса
сетевое управление
Модели и профайлы устройств

Основные возможности протоколов на базе CAN

Программирование для IBM OS2

Если вы раньше программировали только для операционной системы MS-DOS , то вы уже создавали текстовые приложения. В составе MS-DOS нет удобных средств для организации текстового или графического вывода, поэтому большинство программ MS-DOS работают напрямую с видеопамятью, физически расположенной на плате видеоадаптера.
Операционная система IBM OS/2 Warp использует защищенный режим работы процессора, причем в большинстве случаев приложениям запрещается обращаться к портам периферийных устройств и видеопамяти в обход соответствующих драйверов. Это ограничение, однако, с лихвой компенсируется удобными и быстродействующими функциями, доступными приложениям в рамках программного интерфейса IBM OS/2 Warp. Поэтому в целом программирование экранного вывода для текстового режима IBM OS/2 Warp заметно проще, чем для операционной системы MS-DOS .

Базовые понятия и определения
Глобальные переменные
Файл slider.h

Учебник по созданию shareware программ

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

Введение
Что такое shareware?
С чего начинать
Немного об авторском нраве

Как работает правильная программа
Пользовательский интерфейс
Защита программ
Документация
Подготовка к выпуску программы
Ваша программа в Интернете

Организация продаж и маркетинг
Приложение
Заключение

Стили и методы программирования

Программирование на языках появилось одновременно с вычислительными машинами. Конрад фон Цузе, построивший первую в мире серию программно-управляемых вычислительных машин (Германия, 1938-1944 г.), создал язык Plankalkul для записи программ. Квалифицированные сотрудники писали программы на этом языке, а техники затем вручную переводили их в машинные коды. Сейчас наиболее широко используются традиционные языки. В их число входят FORTRAN, Pascal, C/C++, Ada, Java и т. п.

Введение
Традиционная модель
Конструкции традиционных языков
Различные стороны определения языка

Конкретизация
Общие концепции
Развитие языка Prolog
Списки и функциональные выражения
Автоматные задачи
Анализ состояния дел

Требования к автоматической трансляции таблиц
Пример
Событие, сообщение, демон
Общая характеристика структурного программирования
Естественный параллелизм алгоритмов
Что нужно для переиспользования
Почему нет универсальных методов?

SW-CMM (Модель зрелости процессов разработки ПО)

Одной из наиболее популярных, востребованных и весомых методик на сегодняшний день является модель построения зрелых процессов разработки программного обеспечения SW-CMM (Capability Maturity Model for Software). До сих пор эта модель, разработанная Институтом программной инженерии при Университете Карнеги-Меллон (США), была почти неизвестна в России. Основной причиной этого было отсутствие материалов по этому стандарту на русском языке.
Данный перевод текстов стандарта SW-CMM призван устранить этот пробел и предназначается для всех ИТ специалистов: топ-менеджеров компаний, руководителей проектов, а также рядовых разработчиков. Мы надеемся, что изложенный в книге материал о модели SW-CMM и изложенный в ней опыт успешных и развитых компаний помогут отечественным специалистам повысить эффективность своей работы, выстроить процессы разработки ПО в соответствии с современными требованиями рынка, лучше взаимодействовать с заказчиками и отвечать их запросам.

Обзор модели зрелости процессов разработки
Обеспечение качества ПО

Программирование модемов

В последнее время модемы все чаще становятся неотъемлемой частью компьютера. Установив модем на свой компьютер, вы фактически открываете для себя новый мир. Ваш IBM PC превращается из обособленного компьютера в звено глобальной сети.
Модем позволит вам, не выходя из дома (буквально не вставая из-за стола), получить доступ к базам данных, которые могут быть удалены от вас на многие тысячи километров, разместить сообщение на BBS (электронной доске объявлений), доступной другим пользователям, скопировать с той же BBS интересующие вас файлы, интегрировать домашний компьютер в сеть вашего офиса, при этом (не считая низкой скорости обмена данными) создается полное ощущение работы в сети офиса. Кроме того, воспользовавшись глобальными сетями (Relcom, FidoNet) можно принимать и посылать электронные письма не только внутри города, но фактически в любой конец земного шара. Например, вы можете отправить сообщение президенту фирмы Microsoft, если вы считаете, что он им заинтересуется. Глобальные сети дают возможность не только обмениваться почтой, но и участвовать во всевозможных конференциях, получать новости практически по любой интересующей вас тематике.

Последовательный асинхронный адаптер
Сигнальные лампы для внутреннего модема

Индустрия программирования

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

Механизмы межпроцессных взаимодействий в операционной системе Unix
Сложные проекты на базе современных информационных технологий

Системное программирование

Программы и программное обеспечение
Определение (ГОСТ)
Программа - это данные, предназначенные для управления конкретными компонентами системы обработки информации (СОИ) в целях реализации определенного алгоритма.
Определения даются по: ГОСТ 19781-90. Обеспечение систем обработки информации программное. Термины и определения. - М.:Изд-во стандартов, 1990.
Обратить внимание: программа - это данные. Один из основных принципов машины фон Неймана - то, что и программы, и данные хранятся в одной и той же памяти. Сохраняемая в памяти программа представляет собой некоторые коды, которые могут рассматриваться как данные. Возможно, с точки зрения программиста программа - активный компонент, она выполняет некоторые действия. Но с точки зрения процессора команды программы - это данные, которые процессор читает и интерпретирует. С другой стороны программа - это данные с точки зрения обслуживающих программ, например, с точки зрения компилятора, который на входе получает одни данные - программу на языке высокого уровня (ЯВУ), а на выходе выдает другие данные - программу в машинных кодах.

Программы и программное обеспечение

Основы программирования

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

Общее понятие алгоритма
Типы переменных
Символьные переменные
Значения "минус" и "плюс бесконечность"

Алгоритм Евклида вычисления наибольшего общего делителя
Устройство компьютера
RTL: машинно-независимый Ассемблер
Основы языка Си
Управляющие конструкции

Представление матриц и многомерных массивов
Структуры данных
Ссылочные реализации структур данных

Параллельное программирование

Реализация языка логического программирования ПРОЛОГ на ВС SPMD-архитектуры Рассмотрим упрощенную задачу в виде ПРОЛОГ-программы, содержащую все характерные элементы решения задачи удовлетворения (сложной) цели на основе базы знаний.

Реализация языка логического программирования ПРОЛОГ на ВС SPMD-архитектуры
Принцип работы БД с циркулирующей информацией
Вычислительные комплексы на базе локальной сети

Предпосылки методов
Постановка задачи и планы решения
Параллельное решение задач НП при линейных ограничениях
Неформальная постановка задач параллельного программирования ВС
Общая схема параллельных вычислений при обслуживании потока заявок (в АСУ)

Схема организации параллельного процесса
Частичная упорядоченность работ отсутствует
Средства синхронизации параллельных процессов
Оценка производительности ВС
Основные направления исследований в области Grid-технологий