Background

Типы данных и программирование
Экспорт C API

GObject, и её система типов низшего уровня GType, используются в GTK+ и в большинстве библиотек GNOME для обеспечения:

Многие программисты используют для работы только компилируемые или только динамически интерпретируемые языки и не понимают вызовы связанные с разно-языковой совместимостью. Это введение является попыткой объяснить эти вызовы, кратко описывая выборочные решения GLib.

Следующие разделы лучше описывают то как работают GType и GObject, а так же как вы можете использовать их как C программист. Полезно помнить что доступность C объектов из других интерпретируемых языков было главной целью дизайна: это объясняет некоторую замысловатость API и усовершенствования представляемые этой библиотекой.

Типы данных и программирование

Можно сказать (я видел такие определения используются в некоторых учебниках по теории языков программирования), что язык программирования - это просто способ создания типов данных и манипулирования ими. Большинство языков обеспечивают множество родных языковых типов и несколько примитивов для создания более сложных типов на основе этих примитивных типов.

В C, язык обеспечивает такие типы как char, long, pointer. В процессе компилирования C кода, компилятор отображает эти языковые типы в скомпилированные целевые машинные типы. Если вы используете C интерпретатор (я никогда не видел этого сам, но это возможно :), интерпретатор (программа которая интерпретирует исходный текст и выполняет его) отображает языковые типы в машинные типы целевой архитектуры во время выполнения программы (или перед выполнением если это используется во время механизма компилирования).

Perl и Python, которые являются интерпретируемыми языками, на самом деле не обеспечивают определения типов подобно используемым в C. Perl и Python программисты манипулируют переменными и типами переменных только после первого назначения или после первого использования которое определяет тип переменной. Интерпретатор так же часто обеспечивает большинство автоматических преобразований из одного типа в другой. Например, в Perl, переменная которая содержит целочисленное может быть автоматически конвертирована в строку с данным контекстом:

my $tmp = 10; print "это целочисленное конвертированное в строку:" . $tmp . "\n";

Конечно, также часто возможно явное преобразование, когда преобразование по умолчанию обеспеченное языком не является интуитивно понятным.