Внешние библиотеки

Целевые библиотеки

Аксиома: всё уже написали до нас

Критерии качества:

Инструментарии (frameworks)

Цели инструментария:

GLib/GObject

Glib (Си):

GObject (Си):

Пример использования GLib

Базовая статья: Manage C data using the GLib collections — учебник Тома Копланда.

Репозиторий с примером разработки простейшей программы с использованием GSList

Пример использования GObject

Базовая серия статей Поперечно-полосатое программирование (Хабр).

Более сложный пример

Другие инструментарии

Универсальных для Си очень мало, и они маложивые

Для более высокоуровневых языков обкатывают на стророне, а потом забирают в базовый комплект библиотек (как в Python, JS и т. п.) или вообще в стандарт (как с C++)

Инструментарии C++

Boost

Цели:

Например (я не уверен, что часть этих тем уже не перекочевала в стандарт C++ ☺):

Qt (сайт выглядит как извержение маркетоидного бреда, но на самом деле нет!)

Цели:

Свойства:

wxWidgets Типичный представитель кроссплатформенного GUI Toolkit, но:

Д/З

  1. Почитать и по возможности отщёлкать Manage C data using the GLib collections — учебник Тома Копланда.

    • В любом случае разобраться с Hash Tables — задание про них)
  2. Написать программу, которая подсчитывает количество вхождений каждого слова из входного текста в этот самый текст, и выводит отсортированную по частоте статистику (второй ключ сортировки не важен)
    • Ширина строки текста — не более 80 символов
    • понятие «слова» — традиционное: есть символы-«буквы», из которых состоит слово и символы «разделители», последовательности которых стоят между словами. Классификация на ваше усмотрение, лишь бы в строке их находилось несколько и они были разной длины ☺
    • Использовать как минимум g_hash_table, но лучше ещё

      • g_strsplit()

      • сортировку (GSlist или GArray)
      • <!> и вообще обойтись без функций из libc

    • Как минимум сделать Make или ninja проект, но можно autotoos / cmake / …
  3. Выложить исходники результата в подкаталог 11_Toolkits отчётного репозитория

LecturesCMC/LinuxApplicationDevelopment2020/11_Toolkits (последним исправлял пользователь FrBrGeorge 2020-11-29 17:02:55)