Инструментарии
Целевые библиотеки
Аксиома: найдётся всё (©ямдекс)
- Разнообразие библиотек: хорошо или плохо?
- NIH-синдром и FLOSS
- Сначала поиск, потом разработка
Ресурсы: http://sf.net, http://googlecode.com, http://launchpad.net, … , http://www.cpan.org, http://pypi.python.org, … Критерии качества:
- Команда и сообщество
- Возраст
- Регулярность разработки
- Качество кода
- Лицензия
- …
Инструментарии (frameworks)
Цели инструментария:
- Кроссплатформенность (возможно, прозрачная!)
- Расширение и переписывание стандартов
- Связное информационное пространство
- Общая идеология разработки
=> привлечение сообщества
GLib/GObject
Glib (Си):
- типы данных
- всякие
- строковые функции, кодировки
- случайные числа
- РВ
- i18n
- память, куча, динамическая загрузка кода
- атомарные операции
- процессы, нити, таймеры
- лексический анализатор, синтаксические анализаторы…
- I/O, потоки
- Отладка и диагностика, модульное тестирование
GObject (Си):
- Аналоги типов в Си (числа, ссылки, строки и т. п.)
- Классы (в смысле ООП), интерфейсы, простые контейнеры и классы с метаданными
- Сигналы и замыкания
Boost
C++:
- Алгоритмы
- Разные компиляторы
- Многопоточное программирование
- Контейнеры
- Модульное тестирование
- Структуры данных
- Функциональные объекты
- Обобщённое программирование
- Графы
- Работа с геометрическими данными
- Ввод/вывод
- Межъязыковая поддержка
- Итераторы
- Математические и числовые алгоритмы
- Работа с памятью
- Синтаксический и лексический разбор
- Метапрограммирование на основе препроцессора
- Метапрограммирование на основе шаблонов
- «Умные указатели»
- Обработка строк и текста
Что общего с GLib и в чём различие? Почему?
Qt
C++ и метапрограммирование как основа (обработка moc исходных текстов) Названия компонентов вполне говорящие:
QtCore
QtGui
QtNetwork
- !QtOpenGL
QtSql
QtScript
QtSvg
QtXml
QtAssistant
QtTest
QtWebKit
- Phonon
- !QtCLucene — модуль для поддержки полнотекстового поиска
ActiveQt — модуль для работы с ActiveX
- WoC (widgets on canvas)
В чём отличие от двух предыдущих?
???
Набор библиотек vs инструментарий.
ЯПВУ как инструментарии
- Python / Perl / Ruby / чёрта в ступе
- Java / Mono / …
Технологии программирования
Имя им легион, регулируют самые разные стороны:
- Extreme programming (взаимодействие разработчиков)
- Rails (подход к проектированию)
- Design patterns, ACE (подход к разработке кода)
- Rational (подход к процессу разработки)
- … (ещё примеры?)
Д/З
Собрать несколько примеров из INM-овской статьи про GLib
Собрать пример программы на boost (лежит в /usr/share/doc/boost*/libs/regex/example/grep). Подсказка: требуются библиотеки boost_regex и boost_program_options)
Собрать и запустить Пример консольной программы на Qt (в файле проекта включить модуль network и выключить gui)
Что будет, если не выключить модуль gui в проекте?
Почему?
Документация по Qt лежит на сервере в формате HTML (в каталоге /usr/share/doc/qt-3.8.3/html). Как проще всего её посмотреть с клиентской машины?