Основы программирования на языке Пролог
В октябре 1981 года Японское министерство международной торговли и промышленности объявило о создании исследовательской организации — Института по разработке методов создания компьютеров нового поколения (Institute for New Generation Computer Technology Research Center). Целью данного проекта было создание систем обработки информации, базирующихся на знаниях. Предполагалось, что эти системы будут обеспечивать простоту управления за счет возможности общения с пользователями при помощи естественного языка. Эти системы должны были самообучаться, использовать накапливаемые в памяти знания для решения различного рода задач, предоставлять пользователям экспертные консультации, причем от пользователя не требовалось быть специалистом в информатике. Предполагалось, что человек сможет использовать ЭВМ пятого поколения так же легко, как любые бытовые электроприборы типа телевизора, магнитофона и пылесоса. Вскоре вслед за японским стартовали американский и европейский проекты.
Появление таких систем могло бы изменить технологии за счет использования баз знаний и экспертных систем. Основная суть качественного перехода к пятому поколению ЭВМ заключалась в переходе от обработки данных к обработке знаний. Японцы надеялись, что им удастся не подстраивать мышление человека под принципы функционирования компьютеров, а приблизить работу компьютера к тому, как мыслит человек, отойдя при этом от фон неймановской архитектуры компьютеров. В 1991 году предполагалось создать первый прототип компьютеров пятого поколения.
Введение в язык логического программирования Пролог
Основы программирования на языке Пролог
Основные понятия Пролога
Рекурсия
Основы Турбо Пролога. Структура программы на Турбо Прологе
Управление выполнением программы на Прологе
Списки
Сортировка списков
Множества
Деревья
Строки
Файлы
Внутренние (динамические) базы данных
Пролог и искусственный интеллект
Руководство по UI дизайну для программистов
Большинство известных мне программистов, работающих на С++, с большой опаской относятся к созданию пользовательских интерфейсов (UI). Меня это, признаться, удивляет, поскольку программирование UI, на мой взгляд,-- дело простое, очевидное и увлекательное.
Простое -- потому, что самый сложный алгоритм, который вам может потребоваться,-- алгоритм отцентровки одного прямоугольника в другом. Очевидное -- потому, что, сделав ошибку, вы можете ее немедленно увидеть и исправить. Увлекательное -- потому, что вы можете сразу же увидеть результаты вашей работы. Работа по UI дизайну сродни работе скульптора: вы непосредственно ваяете программу.
Мне кажется, страх программистов перед UI программированием объясняется их страхом перед UI дизайном. Они полагают, что UI дизайн похож на дизайн графический: мистический процесс создания классного, необъяснимо художественного материала, затеянный креативными, одетыми во все черное, украшенными замысловатыми пирсинг-узорами людьми, небрежно потягивающими абсент через трубочки. Себя же программисты оценивают как логически мыслящих аналитиков: блестящее умение аргументировать, слабовыраженный художественный вкус. К тому же, пьют они растворимый черный кофе. И поэтому работать над UI дизайном они не могут.
Все под контролем, или баллада о счастливых пользователях
Совет студентам изучающим вычислительную технику
Как узнать, чего они ждут
Безболезненные функциональные спецификации
Объектно-ориентированное программирование
Расширение возможностей вычислительной техники и увеличение масштабных задач, решаемых с помощью ЭВМ, приводят к возрастанию размера и сложности систем программного обеспечения. Если еще два-три десятилетия назад составление программ для ЭВМ являлось в значительной мере искусством, которым владели немногие, то в наши дни разработка программного обеспечения вычислительных систем проводится большими коллективами и затраты на его создание значительно превышают затраты на аппаратную часть. В такой ситуации становится весьма актуальной проблема снижения стоимости программного обеспечения, решение которой связано с поиском новых эффективных путей и методов разработки программ. Последним достижением в этой области и является Объектно-Ориентированное Программирование.
Продолжение
Программирование графических процессоров с Direct3D и HLSL
Настоящий курс лекций разработан доцентом кафедры информационных технологий факультета прикладной математики и кибернетики Тверского государственного университета, кандидатом физико-математических наук А.Б. Семеновым при финансовой поддержке Microsoft Corporation.
Целью разрабатываемого курса является изучение слушателями математических и алгоритмических основ современной двумерной и трехмерной графики, включая задачи и методы реалистической визуализации и анимации, а также основные методы и алгоритмы обработки изображений. Особое внимание в курсе уделяется основам программирования графических процессоров, поддерживающих шейдерную архитектуру и приобретению навыков при разработке программного обеспечения с помощью графической библиотеки Direct3D и языка программирования высокого уровня HLSL. Задачей проекта является разработка и исследование алгоритмов и методов компьютерной графики на базе ядра графического микропроцессора. Заложенные внутри графического процессора механизмы параллелизма позволяют использовать видеокарту как эффективный параллельный вычислитель.
Предисловие
Предмет, задачи и применение машинной графики
Библиотека DirectX
Текстурирование
Полупрозрачность
Построение отрезков
Схема графического конвейера
Освещенность и материалы
Использование шейдеров с помощью языка HLSL
Расчет освещенности с помощью шейдеров
Дополнительные материалы
Программа обработки архивов tar
Программа tar используется для создания tar-архивов и манипулирования ими. Архив - это файл, заключающий в себе содержимое многих файлов. Кроме того, архив идентифицирует имена файлов, их хозяев и т.д. (в архивах также записываются разрешение доступа, пользователь и группа, размер в байтах и время последней модификации.
В некотрых архивах еще указываются имена файлов в каждом заархивированном каталоге и информация о каталогах). Файлы, соодержащиеся в архиве, называются членами aрхива. В данном руководстве мы используем термин "файл" только для файлов, доступных обычным способом (с помoщью ls, cat и т.д.), и термин "члены архива" для обозначения членов архива. Аналогично, "имя файла" - для имен файлов в системе файлов, а "имя члена архива" - для имени члена архива
внутри архива.
Изначально tar-архивы использвались для компактнго хранения файлов на магнитной ленте - отсюда термин tar (tape archiver). Вне зависимости от имени утилиты tar может направлять свой вывод на любое доступное устройство, а текже хранить ее в файле или направлять в другую программу через канал. tar также может иметь дооступ к удаленным устройствам и файлам.
Есть много способов использования tar-архивов. Расскажем о некоторых из них: хранении, резервном копировании и транспортировке.
Продолжение
Программирование для встроенных систем - статьи
Данный обзор содержит описание характерных особенностей ЦПОС и связанных с ними оптимизаций, которые могут быть реализованы в компиляторе языка 'С'. Рассматриваются как сами алгоритмы оптимизаций, так и взаимное влияние различных оптимизаций друг на друга.
Использование особенностей ЦПОС в компиляторе языка 'С'
Первые шаги в Symbian OS
Создание dll для Symbian OS
Интегрированная среда описания системы команд встраиваемых процессоров
Архитектура и принципы построения операционной среды «мини-ОС»
Сборка примера "Hello World"
Применение UniTesK к тестированию встроенных систем
Использование UID в среде Symbian OS
Программирование для встроенных систем
Заметки по структурному программированию
Эти заметки относятся к жанру "писем к себе": одни и те же соображения очень часто вертелись у меня в голове, и чтобы отвлечься от них, я был просто вынужден записать их. Перечитывая написанное, я не всегда испытывал полное удовлетворение.
Прежде всего я чувствовал, что страдаю излишним многословием. Тем не менее я, не пытаюсь ужать текст (теперь), во-первых, потому, что это вызвало бы дополнительную задержку и я снова увлекся бы этими размышлениями, а во-вторых, потому что прежний опыт заставляет меня бояться, что я окажусь непонятым: часто программист склонен рассматривать свои (иногда довольно специфические) трудности как суть программирования, и в результате существует большое разнообразие мнений о том, что же такое программирование на самом деле.
Надеюсь, что, несмотря на недостатки моей работы, вам понравятся хотя бы некоторые ее части. Если эти заметки послужат источником вдохновения или позволят вам по-новому оценить профессию программиста, то мои основные цели будут достигнуты.
Продолжение
Длительность физических действий пользователя
Любое физическое действие, совершаемое с помощью мускулатуры, может быть или точным или быстрым. Вместе точность и быстрота встречаются исключительно редко, поскольку для этого нужно выработать существенную степень автоматизма. Объясняется это сугубо физиологическими факторами: при резком движении невозможно быстро остановиться, соответственно, чем точнее должно быть движение, тем более плавным и замедленным оно должно быть. Таким образом, чтобы физическое действие пользователя было быстрым, оно не должно быть точным.
Пользователь, как правило, управляет компьютером двумя способами, а именно мышью и клавиатурой. Клавиатура не требует особой точности движений – неважно, быстро нажали клавишу или медленно, равно как сильно или слабо. Мышь, напротив, инерционна – есть разница между медленным её перемещением и быстрым, сильным приложенным усилием и слабым. Именно поэтому оптимизация использования мыши в системе может существенно повысить общую скорость работы.
Продолжение