Математический анализ в Maple

         

Математический анализ в Maple

Важным разделом математики является исследование аналитических функций. Оно обычно заключается в определении координат особых точек функции и ее значений в этих точках, а также в выяснении особенностей функции, таких как наличие точек разрыва, асимптот, точек перегибов, разрывов и т. д. К сожалению, пока нет средств, сразу выявляющих все особенности функций, поскольку даже средства, решающие частные задачи анализа функций, довольно сложны и специфичны. Достаточно отметить проблему поиска экстремумов функций (особенно функций нескольких переменных). Поэтому функции приходится анализировать индивидуально.
С помощью функции fsolve легко находятся значения независимой переменной х функций вида f(x), при которых f(x)=0 (корни этого уравнения). При этом данная функция позволяет (в отличие от функции solve) изолировать корни функции f(x) указанием примерного интервала их существования. Ряд функций служит для вычисления экстремумов, максимумов и минимумов функций, а также для определения их непрерывности. Одна из таких функций, extrema, позволяет найти экстремумы выражения ехрr (как максимумы, так и минимумы) при ограничениях constcs и переменных vans, по которым ищется экстремум: extrema(expr. constrs) extrema(expr, constrs, vars) extrematexpr, constrs, vans, V)
Ограничения contrs и переменные vars могут задаваться одиночными объектами или списками ряда ограничений и переменных. Найденные координаты точки экстремума присваиваются переменной 's'. При отсутствии ограничений в виде равенств или неравенств вместо них записывается пустой список {}. Эта функция в предшествующих версиях Maple находилась в стандартной библиотеке и вызывалась командой readlib(extrema). Но в Maple 7 ее можно использовать без предварительного объявления.

Вычисление сумм последовательностей
Анализ функций и полиномов
Основные операции с выражениями

Типовые средства построения графиков
Общая характеристика пакета plots
Основные средства решения дифференциальных уравнений

Феномен науки. Кибернетический подход к эволюции

Среди огромной массы научной и научно-популярной литературы совсем немного книг, которые можно считать вехами на пути человечества в формировании целостного и оптимистического мировоззрения, т.е. книг философских в истинном смысле этого слова. Книга, которую держит в руках читатель, несомненно, принадлежит к этой редкой категории. И это не случайно, так как ее автор являет собой редкий тип ученого-естественника, который философствует не потому, что это модно, престижно или, скажем, принято. Он философствует для того, чтобы привести в прямое соответствие философские знания и практику собственной жизни.
Автор излагает оригинальную теорию эволюции, базируясь на современных кибернетических концепциях и на одной основной идее, а именно — идее метасистемного перехода как кванта эволюции. Внешне все очень просто. Если у вас есть некоторая исходная кибернетическая система (амеба, человек, общество и т.п.), то метасистемный переход — это переход к некоторой другой системе, включающей в себя множество систем типа исходной. По сути здесь всегда возникает новый уровень управления. Примеры: переход от простейших одноклеточных организмов к многоклеточным, возникновение нервной системы, мозга, речи и т.д.
Но заслуга автора не ограничивается тем, что он высказывает идею метасистемного перехода как кванта эволюции. Он прослеживает с позиции этой идеи эволюцию на Земле от простейших макромолекул до современной науки (математики, философии) и культуры. Делает он это столь ярко и интересно, что не остается никаких сомнений в огромной мощности исходной идеи. По сути своей “Феномен науки” — глубокая научно-философская книга, но написана она как роман и, чтобы прочесть ее, достаточно любопытства и знаний в объеме средней школы.



Основной закон эволюции
Понятийные сваи
Формализация научного языка
Разговор с электрическим мозгом

Где они, двери в бессмертие?
Кибернетика и общество
Язык, беспорядок и помехи
Кибернетический манифест
Немного о кибернетике (I)
Немного о кибернетике (II)

Кибернетический подход и система философских взглядов Винера
Предтечи кибернетики в древней Индии
Мое отношение к кибернетике, ее прошлое и будущее
Синергетика 2, Cинергетика 3 или Эволюционная кибернетика
Эволюционно-кибернетический подход к проблеме познания
Программированное обучение
Кибернетика и человек

Теория и практика параллельных вычислений

Применение параллельных вычислительных систем (ПВС) является стратегическим направлением развития вычислительной техники. Это обстоятельство вызвано не только принципиальным ограничением максимально возможного быстродействия обычных последовательных ЭВМ, но и практически постоянным наличием вычислительных задач, для решения которых возможностей существующих средств вычислительной техники всегда оказывается недостаточно. Так, проблемы "большого вызова" возможностям современной науки и техники: моделирование климата, генная инженерия, проектирование интегральных схем, анализ загрязнения окружающей среды, создание лекарственных препаратов и др. - требуют для своего анализа ЭВМ с производительностью более 1000 миллиардов операций с плавающей запятой в секунду (1 TFlops).

Введение
Пути достижения параллелизма
Моделирование и анализ параллельных вычислений
Алгоритмы маршрутизации
Принципы разработки параллельных методов

Параллельное программирование на основе MPI
Параллельные методы умножения матрицы на вектор
Постановка задачи
Решение систем линейных уравнений
Параллельные методы сортировки

Параллельные методы на графах
Параллельные методы решения дифференциальных уравнений в частных производных
Общая характеристика системы

Теория и реализация языков программирования

В книге представлены "классические" разделы теории разработки компиляторов: лексический и синтаксический анализ, организация памяти компилятора (таблицы символов) и периода исполнения (магазина), генерация кода. Рассматриваются такие средства автоматизации процесса разработки трансляторов, как LEX, YACC, СУПЕР, методы генерации оптимального кода. Сделана попытка на протяжении всего изложения провести единую "атрибутную" точку зрения на процесс разработки компилятора.

Предисловие
Место компилятора в программном обеспечении
Алфавиты, цепочки и языки
Лексический анализ
Контекстно-свободные грамматики и автоматы с магазинной памятью
Элементы теории перевода

Описание областей видимости и блочной структуры
Организация таблиц символов
Промежуточное представление программы
Генерация кода
Системы автоматизации построения трансляторов

Формальные свойства
Определение атрибутных грамматик
Представление языков

Путь камикадзе

Вряд ли можно где-нибудь увидеть объявление о найме для участия в безнадежном проекте. Какой смысл спрашивать: «Хотите ли вы работать сверхурочно без какой-либо прибавки к зарплате? Привлекает ли вас бесконечная работа по устаревшей технологии и тщетное ожидание участия в каком-нибудь замечательном проекте GUI/DSS/DWH/HTML? Каково будет узнать, что трехзвенная архитектура «клиент-сервер» позволит остальным участникам проекта обойтись без вашей помощи?»
На самом деле, безнадежные проекты редко объявляются таковыми во всеуслышание, и вам придется достаточно долго проработать в нанявшей вас компании, прежде чем удастся обнаружить, что она обладает склонностью плодить безнадежные проекты.
Если вашему коллеге приходится руководить безнадежным проектом, то ему можно посоветовать включить в контракт пункт, позволяющий цивилизованным способом выйти из проекта. Одна из серьезных причин выхода - неспособность высшего руководства воспринимать правдивую информацию о проекте. Принимающий на себя руководство безнадежным проектом должен быть готов к тому, что у него будет практически отсутствовать пространство для маневра в отношении функциональности, затрат или времени.

Определение безнадежного проекта
Минимально необходимый набор средств

Лекции по управлению программными проектами

Термин 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) были детально описаны синтаксис (т.е. форма конструкций) и семантика (т.е. значение конструкций) ламбда-исчисления.

Вступительная лекция
Объектно-ориентированный подход к программированию
Платформа.NET и ее применение
Основные понятия языка программирования C#
Краткая информация о платформе .NET

Семантика основных конструкций языка программирования C#
Основные понятия объектно-ориентированного подхода: объекты, классы и методы
Классы и обьекты
Теория типов и типизация в .NET
Концепция наследования и ее реализация в языке C#

Концепция инкапсуляции и ее реализация в языке C# (2)
Концепция полиморфизма
Расширенные возможности полиморфизма в языке C#
Интерфейсы
Обработка событий

Компонентное программирование в .NET
Гетерогенные приложения

Математическая теория формальных языков

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

Предисловие
Конечные автоматы
Основные свойства автоматных языков
Слова, языки и грамматики

Дополнительные свойства автоматных языков
Регулярные выражения
Синтаксические моноиды
Неоднозначность в контекстно-свободных грамматиках

Нормальные формы контекстно-свободных грамматик
Основные свойства контекстно-свободных языков
Автоматы с магазинной памятью
Дополнительные свойства контекстно-свободных языков
Детерминированные контекстно-свободные языки

Синтаксический разбор
Алгоритмические проблемы
Алгоритмически разрешимые проблемы
Алгоритмически неразрешимые проблемы

Основы теории нечетких множеств

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

Основные определения
Нечеткие отношения
Классы нечетких отношений
Показатель размытости нечетких множеств. Нечеткие меры и интегралы

Методы построения функции принадлежности. Классификация
Прямые методы для одного эксперта
Нечеткие треугольные числа
Нечеткая логика
Понятие лингвистической переменной

Теория приближенных рассуждений
Формализация понятия нечеткого алгоритма
Нечеткие алгоритмы обучения
Нечеткие цели, ограничения и решения
Игры в нечетко определенной обстановке

Нейрокомпьютинг и его применения в экономике и бизнесе

Наш опыт свидетельствует, что главным препятствием к широкому практическому применению нейрокомпьютинга служит недостаточное понимание его основ. Эта книга писалась с целью восполнить этот пробел. Поэтому основное внимание здесь уделяется описанию принципов нейросетевой обработки данных, их потенциальных возможностей и преимуществ, а также подробному разбору нескольких конкретных применений. Упор делается на концептуальной стороне дела, а не на описании конкретных алгоритмов. Предполагается, что в случае необходимости читатель сможет воспользоваться одним из многочисленных коммерческих нейро-эмуляторов, а не возьмется программировать нейросети "с нуля" на С++. Главная задача книги - научить читателя "видеть" нейросетевые постановки задач в его повседневной работе, помочь ему автоматизировать рутинную обработку сложной многофакторной информации с помощью современного математического аппарата - искусственных нейронных сетей.
Хотя мы старались избегать математических выкладок и, по возможности, упростить изложение, хотелось бы заранее предупредить, что материал этой книги рассчитан на достаточно подготовленного читателя - как минимум студента старших курсов. Наш "идеальный" читатель - студент, научный работник, финансовый аналитик, консультант, брокер или просто бизнесмен, желающий повысить эффективность своего бизнеса путем более вдумчивой работы с доступной ему информацией.

Нейрокомпьютеры в заголовках газет
Краткая история нейрокомпьютинга
Персептроны. Прототипы задач
Обобщение данных. Прототипы задач
Исторический поворот в 1982 году

Комбинаторная оптимизация и задача коммивояжера
Необходимые этапы нейросетевого анализа
Предсказание как вид бизнеса
Извлечение знаний
Рейтинг корпоративных облигаций
Нейронные сети и статистика

Искусственный интеллект и экспертные системы

Типичное изучение математики (как и любой формальной теории) в школе, в вузе сопровождается ощущением растерянности, недоумения. Определения и доказательства преподносят как настоящую реальность, но причины явлений никогда не объясняются. Казалось, что большую часть доказательств преподаватели получают с помощью магических манипуляций с кусочком мела у доски. Как можно было связать воедино все эти линии и не выпустить из поля зрения ни одну из них от самого начала доказательства до его чудесного конца? И над всем этим: "А для чего все это надо?".
Ответ приходит через несколько лет активной жизни. На самом деле все это ни для чего не надо, потому что предметы, которые вы изучаете, вносятся в школьные и вузовские программы достаточно произвольно. По правде говоря, эти знания служат лишь поводом для перехода к более серьезным вещам, таким как учиться понимать, учиться решать задачи, учиться познавать. Но любопытно, что эти "вещи" не признаются и не преподаются. Можно сказать, что существует определенный вид интеллектуального терроризма, когда некоторых учеников называют "нуль в математике", хотя их единственная вина состоит в том, что они не понимают то, о чем … никогда не говорится. Некоторым удается это избежать, потому что они раньше сумели познакомиться с неявными правилами этой игры. Есть и такие, кто учит все наизусть…

Длительность интеллектуальной работы Производительность
Интеллект как динамический компонент в структуре способностей

Интеллектуальные информационные системы

Объем общедоступной информации по этой проблематике огромен и очень быстро возрастает.
Поэтому автор полностью осознает, что данное учебное пособие ни в коей мере не может претендовать на полноту изложения и является не более чем кратким введением в проблематику искусственного интеллекта, причем в авторской интерпретации. На это, в общем-то, и рассчитан обзорный курс, на который в учебном плане отведено лишь 68 часов.
При изложении материала не удалось избежать некоторых повторов, что, правда, может быть как-то оправдано с методической точки зрения ("Повторение – мать учения").
В то время необходимо отметить, что наука о системах искусственного интеллекта пока даже не имеет общепринятого названия, является одной из самых бурно развивающихся, новые результаты появляются в ней чуть ли не ежедневно, многие ее положения спорны и находятся в процессе обсуждения, и говорить о об этой науке, как об "устоявшейся" не приходится и еще, по-видимому, долго не придется. По мнению автора в этой ситуации полезнее для дела, т.е. для качества обучения, не загаживать проблемы науки, строя изложение так, как будто они все уже решены, а открыто показывать их, т.к. они являются "точками роста" науки. По этой же причине автор, сам являющийся активно работающим в области систем искусственного интеллекта исследователем и разработчиком, счел возможным в ряде случаев выразить в порядке научной дискуссии и свою точку зрения, даже если она ранее не публиковалась в научной печати. Поэтому данное "учебное пособие" в какой-то мере является и "научной работой". Кроме того авторское восприятие проблематики довольно сильно сказалось как на выборе материала, так и на характере его изложения.

Основные положения информационно-функциональной теории развития техники
Обобщение интегральной модели
Соотношение психографологии и атрибуции текстов

Обзор опыта применения АСК-анализа для управления
Пример решения задания "Создать"
Краткий словарь терминов по ск-анализу и системам искусственного интеллекта
Прогнозирование
Синтез семантической информационной модели
Верификация модели
Интеллектуальные информационные системы

Аппаратно программные платформы корпоративных инфосистем

Миникомпьютеры стали прародителями и другого направления развития современных систем - 32-разрядных машин. Создание RISC-процессоров и микросхем памяти емкостью более 1 Мбит привело к окончательному оформлению настольных систем высокой производительности, которые сегодня известны как рабочие станции. Первоначальная ориентация рабочих станций на профессиональных пользователей (в отличие от ПК, которые в начале ориентировались на самого широкого потребителя непрофессионала) привела к тому, что рабочие станции - это хорошо сбалансированные системы, в которых высокое быстродействие сочетается с большим объемом оперативной и внешней памяти, высокопроизводительными внутренними магистралями, высококачественной и быстродействующей графической подсистемой и разнообразными устройствами ввода/вывода. Это свойство выгодно отличает рабочие станции среднего и высокого класса от ПК и сегодня.

Персональные компьютеры и рабочие станции
Точность прогноза для адресов возврата
Эффективное использование легковесных процессов в симметричных мультипроцессорах
Распределенные файловые системы
Borland MIDAS - многозвенные информационные системы
Зрелость: Система навыков
Информационная культура личности
Информационные системы

Восстановление информации своими руками

Долгое время главным козырем противников NTFS был следующий аргумент – чем вы будете ее восстанавливать, если она умрет? А мрет она, как показывает практика, достаточно часто. При всей своей надежности, NTFS не застрахована от потрясений. Ошибки оператора, вирусы, сбои питания, зависания ОС, дефекты поверхности, отказ электроники… С каждым днем человечество все сильнее и сильнее становится зависимо от компьютеров, объемы жестких дисков стремительно растут, а вместе с тем растет и ценность содержащихся на них данных, потеря которых зачастую невосполнима.
Спрос рождает предложение и на рынке как грибы после дождя вылупляются фирмы, специализирующиеся на восстановлении данных, однако, по-настоящему хороших специалистов можно встретить только в двух, ну от силы в трех из них, а все остальные лишь создают видимость кипучей деятельности, выставляя астрономические счета при довольно посредственном качестве восстановления. Но время кустарей уже ушло. Рабочая атмосфера изменилась. Хакеры разобрались со строением NTFS и документировали ее ключевые структуры. Начал формироваться достойный инструментарий для ручного восстановления.

Восстановление данных на NTFS разделах
Статический анализ стратегии

Дополнительная информация по настройке узлов «Портативного TRX»

Повторение частей «Портативного TRX» другими радиолюбителями, дало дополнительную информацию по наиболее часто встречающимся «проблемам» при изготовлении и настройке. Фотографии всех «новых и старых» вариантов разводки можно смотреть в разделе «Фото плат» сайта. Для желающих получить более качественные фотографии (не ограниченные в объёме для размещения на сайте) – обращайтесь к Николаю UA9XBI - у него можно приобрести компакт-диск на котором помимо информации от UT2FW ещё масса всякой полезности для радистов (на диске будет и эта полная информация). Предполагаю обзавестись пишущим CD-ромом – тогда сам смогу предложить компакт с полнейшей и не урезанной информацией – её на харде накопилось уже более 100Мбт.

Настройка узлов «Портативного TRX»

Информационное обеспечение систем управления

Предметом настоящего учебного пособия являются информационные системы, базы данных и системы управления базами данных. Это очень важная область, определяющая характер революции в информационных системах.
Границы применения вычислительной техники в различных сферах человеческой деятельности с каждым годом определить все сложнее – они становятся необъятными. Это объясняется рядом объективных причин. Так, неоспоримы успехи в областях технического и математического обеспечения ЭВМ, в развитии электроники и интегральной схемо-техники. Современные вычислительные машины и системы достигли высочайшего уровня развития.

Основные определения, классификация распределенных систем
Иерархическая модель

Visual C для начинающих

В связи с тем, что сегодня уровень сложности программного обеспечения очень высок, разработка приложений Windows с использованием только какого-либо языка программирования (например, языка C) значительно затрудняется. Программист должен затратить массу времени на решение стандартных задач по созданию многооконного интерфейса. Реализация технологии связывания и встраивания объектов - OLE - потребует от программиста еще более сложной работы.
Чтобы облегчить работу программиста практически все современные компиляторы с языка C++ содержат специальные библиотеки классов. Такие библиотеки включают в себя практически весь программный интерфейс Windows и позволяют пользоваться при программировании средствами более высокого уровня, чем обычные вызовы функций. За счет этого значительно упрощается разработка приложений, имеющих сложный интерфейс пользователя, облегчается поддержка технологии OLE и взаимодействие с базами данных.

Программная среда Windows
Использование класса CTabCtrl

Информационные системы - статьи

Стремительное разрастание Всемирной паутины и связанное с этим увеличение объема трафика продолжают беспокоить специалистов. Web-серверы стали не только хранилищем текстовой и графической информации, но и местом гигантских залежей видео- и аудиоматериалов, а также средством проведения масштабных коммерческих операций. На первый план выходит задача обслуживания запросов за гарантированное время, что неизбежно требует усовершенствованных технических, алгоритмических и программных средств построения распределенных Web-серверов.
Согласно данным компании Nortel Networks, число пользователей систем электронной коммерции возрастет с 142 млн. в 1999 году до 500 млн. в 2003-м, а суммарный финансовый оборот составит в 2003 году свыше 1 трлн. долл. При таком росте Сети главной заботой Web-разработчиков становится необходимость вовремя обслужить запрос клиента. Поиск решения приводит к идее распределенного Web-сервера.

Алгоритмическое обеспечение распределенных Web-серверов
Информационные электрические машины
Общее описание системы

Технические средства обработки информации

Информация - (от латинского слова Informatio разъяснение, изложение). Первоначальные – сведения, передаваемые одними людьми другим людям устным, письменным или каким-либо другим способом (например, с помощью условных сигналов, с использованием технических средств и т. д.), а также сам процесс передачи или получения этих сведений.
Информатика, дисциплина, изучающая структуру и общие свойства научной информации, а также закономерности её создания, преобразования, передачи и использования в различных сферах человеческой деятельности.
Благодаря наличию у человека пяти органов чувств, информация об окружающей среде поступает к человеку постоянно. Больше всего информации дает зрение. Если глаза открыты, то через них поступает огромное количество информации о форме и цвете предметов, о том, где они находятся, и даже о том, как они двигаются.

Воздействие средств информации на органы чувств
Перевод видеоданных в цифровую форму
Перенос изображения на бумагу и ее отделение от фотобарабана
Способы кодирование сигнала

Цифровая обработка информации

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

Цифровая обработка

Введение в программирование

В пятидесятые годы двадцатого века с появлением компьютеров на электронных лампах началось бурное развитие языков программирования. Компьютеры, стоившие в то время значительно дороже, чем разработка любой программы, требовали высокоэффективного кода. Такой код разрабатывался вручную на языке Ассемблер. В середине 50-х годов под руководством Джона Бэкуса для фирмы IBM был разработан алгоритмический язык программирования FORTRAN. Несмотря на то, что уже существовали разработки языков, выполняющие преобразование арифметических выражений в машинный код, создание языка FORTRAN (FORmula TRANslator), предоставляющего возможность записи алгоритма вычислений с использованием условных операторов и операторов ввода/вывода, стало точкой отсчета эры алгоритмических языков программирования.
К языку FORTRAN предъявлялись требования cоздания высокоэффективного кода. Поэтому многие конструкции языка первоначально разрабатывались с учетом архитектуры IBM 407. Успех разработки этого языка привел к тому, что производители других вычислительных систем стали создавать свои версии трансляторов. С целью некоторой возможной на тот момент унификации языка язык FORTRAN IV, разработанный в 1966 году, стал первым стандартом, именуемым FORTRAN 66.

Первые языки программирования
Трансляторы
Объявление производного типа
Управляемый код
Создание приложений на С++ в Visual Studio .NET
Архитектура "документ-отображение"
Проекты

Как перестать беспокоиться и начать программировать

Хочу обратить внимание читателей, что никаких откровений или мыслей, блистающих особой глубиной/новизной, вы здесь не найдёте. Просто прикладной программист среднего (или чуть выше) уровня излагает свои соображения, рождённые опытом работы, и иллюстрирует их конкретными примерами работающего инструментария.
Ещё раз подчёркиваю, что по всем вопросам изложена моя личная точка зрения. Я открыт для конструктивной дискуссии и с радостью восприму все замечания, исправления и дополнения к исходным текстам.
Предполагается, что читатель знаком с основными принципами объектно-ориентированного программирования и разработки приложений.
Последовательность изложения: вначале будет описана совокупность инструментов. Это займёт несколько статей (глав) – вместе с исходными текстами и примерами использования.

Комплект инструментов
Джоэл о программном обеспечении
Заметки о программировании

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

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

Общее понятие алгоритма
Типы переменных
Управляющие конструкции
Структуры данных

Парадигмы программирования

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

Определение языков программирования
Стандартное (системное) программирование

Справочник по программному обеспечению

Наиболее известной программой для удаления spyware-модулей является детище немецких программистов - Ad-aware. На сайте разработчиков доступна для скачивания бесплатная версия программы, которая, не смотря на то что, не обладает всеми возможностями платного аналога, со своей задачей справляется прекрасно.

Антишпионы
Графические конверторы
Интернет-общение
Ограничители доступа

Заметки по структурному программированию

Эти заметки относятся к жанру "писем к себе": одни и те же соображения очень часто вертелись у меня в голове, и чтобы отвлечься от них, я был просто вынужден записать их. Перечитывая написанное, я не всегда испытывал полное удовлетворение.
Прежде всего я чувствовал, что страдаю излишним многословием. Тем не менее я, не пытаюсь ужать текст (теперь), во-первых, потому, что это вызвало бы дополнительную задержку и я снова увлекся бы этими размышлениями, а во-вторых, потому что прежний опыт заставляет меня бояться, что я окажусь непонятым: часто программист склонен рассматривать свои (иногда довольно специфические) трудности как суть программирования, и в результате существует большое разнообразие мнений о том, что же такое программирование на самом деле.
Надеюсь, что, несмотря на недостатки моей работы, вам понравятся хотя бы некоторые ее части. Если эти заметки послужат источником вдохновения или позволят вам по-новому оценить профессию программиста, то мои основные цели будут достигнуты.

Продолжение

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

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

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

Исследование операций. Линейное, динамическое программирование

В наше время, которое по справедливости называют эпохой научно-технической революции, наука уделяет все большее внимание вопросам организации и управления. Причин этому много. Быстрое развитие и усложнение техники, небывалое расширение масштабов проводимых мероприятий и спектра их возможных последствий, внедрение автоматизированных систем управления (АСУ) во все области практики — все это приводит к необходимости анализа сложных целенаправленных процессов под углом зрения их структуры и организации. От науки требуются рекомендации по оптимальному (разумному) управлению такими процессами. Прошли времена, когда правильное, эффективное управление находилось организаторами «на ощупь», методом «проб и ошибок». Сегодня для выработки такого управления требуется научный подход — слишком велики потери, связанные с ошибками.
Потребности практики вызвали к жизни специальные научные методы, которые удобно объединять под названием «исследование операций». Под этим термином мы будем понимать применение математических, количественных методов для обоснования решений во всех областях целенаправленной человеческой деятельности.

Исследование операций

Компонентный подход в программировании

Помимо методических рекомендаций, при конструировании больших систем часто используются прагматические принципы работы со сложными системами вообще. Они играют значительную роль в выработке качественных технических решений в достаточно широком контексте. Эти принципы позволяют распределять работы между участвующими в проектах людьми с меньшими затратами на обеспечение их взаимодействия и акцентировать внимание каждого из участников на наиболее существенных для его части работы характеристиках системы. К таким принципам относятся использование абстракции и уточнения, модульная разработка и переиспользование.

Понятие жизненного цикла ПО
Унифицированный процесс Rational
Анализ предметной области
Качество программного обеспечения
Анализ области решений
Образцы человеческой деятельности
Данные–представление–обработка
Удобство использования программного обеспечения
Платформы Java и .NET
Наследование
Основные понятия компонентных технологий
Web-приложения
Общая архитектура Web-приложений
Развитие технологий J2EE
Задачи управления проектами

Технологии программирования на базе Microsoft Solutions Framework

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

Об одном методе маскировки программ
Перспективы интеграции методов верификации программного обеспечения
Понятность системы Обучение работе с системой
Программирование - вопрос/ответ
Программирование - с женой или без
Программирование в машинных кодах или soft-ice как logger

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

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

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

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

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

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

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

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

Эта книга построена как раз на основных принципах, применимых к информационным технологиям на любом уровне. К таким взаимосвязанным принципам относятся: простота, благодаря которой программы остаются короткими и управляемыми, четкость и ясность, которые облегчают понимание программ и людям, и машинам, обобщенность, означающая, что программа способна корректно работать в широком диапазоне ситуаций и нормально адаптироваться к новым ситуациям, и автоматизация, которая позволяет передавать машине наиболее утомительные и скучные части нашей работы. Рассматривая программирование на различных языках, от алгоритмов и структур данных, через проектирование, отладку, тестирование, до улучшения производительности, мы иллюстрируем универсальные концепции, которые не зависят ни от языка, ни от операционной системы, ни от конкретного задания.
Книга родилась из нашего многолетнего опыта в написании и поддержке разнообразнейших программ, в преподавании программирования и в общении с большим количеством программистов. Мы хотим поделиться знаниями, приобретенными благодаря этому опыту, чтобы помочь программистам всех уровней работать более эффективно и профессионально.

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

Программирование для встроенных систем - статьи

Данный обзор содержит описание характерных особенностей ЦПОС и связанных с ними оптимизаций, которые могут быть реализованы в компиляторе языка 'С'. Рассматриваются как сами алгоритмы оптимизаций, так и взаимное влияние различных оптимизаций друг на друга.

Использование особенностей ЦПОС в компиляторе языка 'С'
Первые шаги в Symbian OS
Создание dll для Symbian OS
Интегрированная среда описания системы команд встраиваемых процессоров
Архитектура и принципы построения операционной среды «мини-ОС»
Сборка примера "Hello World"
Применение UniTesK к тестированию встроенных систем
Использование UID в среде Symbian OS
Программированное обучение

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

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

Программы и программное обеспечение
Использование контекстного меню датчика
Операторы повторений
Сохранение содержимого Реестра
Системное программирование. Конспект лекций

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

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

Традиционная модель
Развитие языка Prolog
Событие, сообщение, демон

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

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

Что такое shareware?
Пользовательский интерфейс
Защита программ
Ваша программа в Интернете
Приложение

Основы функционального программирования

Общее представление о функциональном программировании и его применении Идея функционального программирования опирается на интуитивное понятие о функциях как о достаточно общем механизме представления и анализа решений сложных задач. Механизм функций основательно изучен математиками, и это позволяет программистам наследовать выверенные построения, обладающие предельно высокой моделирующей силой [1]. Систематическое применение функционального программирования впервые достаточно ярко было продемонстрировано Джоном Мак-Карти и его учениками в методах реализации языка Лисп и программирования на этом языке. Наиболее очевидные из этих методов были успешно ассимилированы другими языками и системами программирования. Обычно про функциональное программирование вспоминают при смене технологий, когда возрастает роль аналитики и исследовательских задач. В настоящее время часто употребляют термин "функциональность" при сравнительной характеристике информационных систем, что, видимо, свидетельствует о проявлении новой метрики, заслуживающей отдельного рассмотрения

Основы символьной обработки. Базовые средства
Компилятор и требования к коду программы
Функциональное и операционное управление
Функциональное программирование