| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>Background: GObject Reference Manual</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> |
| <link rel="home" href="index.html" title="GObject Reference Manual"> |
| <link rel="up" href="pt01.html" title="Part I. Concepts"> |
| <link rel="prev" href="pt01.html" title="Part I. Concepts"> |
| <link rel="next" href="ch01s02.html" title="Exporting a C API"> |
| <meta name="generator" content="GTK-Doc V1.25.1 (XML mode)"> |
| <link rel="stylesheet" href="style.css" type="text/css"> |
| </head> |
| <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
| <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> |
| <td width="100%" align="left" class="shortcuts"></td> |
| <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> |
| <td><a accesskey="u" href="pt01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> |
| <td><a accesskey="p" href="pt01.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> |
| <td><a accesskey="n" href="ch01s02.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> |
| </tr></table> |
| <div class="chapter"> |
| <div class="titlepage"><div><div><h2 class="title"> |
| <a name="chapter-intro"></a>Background</h2></div></div></div> |
| <div class="toc"><dl class="toc"> |
| <dt><span class="sect1"><a href="chapter-intro.html#id-1.3.2.5">Data types and programming</a></span></dt> |
| <dt><span class="sect1"><a href="ch01s02.html">Exporting a C API</a></span></dt> |
| </dl></div> |
| <p> |
| GObject, and its lower-level type system, GType, are used by GTK+ and most GNOME libraries to |
| provide: |
| </p> |
| <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
| <li class="listitem"><p>object-oriented C-based APIs and</p></li> |
| <li class="listitem"><p>automatic transparent API bindings to other compiled |
| or interpreted languages.</p></li> |
| </ul></div> |
| <p> |
| </p> |
| <p> |
| A lot of programmers are used to working with compiled-only or dynamically interpreted-only |
| languages and do not understand the challenges associated with cross-language interoperability. |
| This introduction tries to provide an insight into these challenges and briefly describes |
| the solution chosen by GLib. |
| </p> |
| <p> |
| The following chapters go into greater detail into how GType and GObject work and |
| how you can use them as a C programmer. It is useful to keep in mind that |
| allowing access to C objects from other interpreted languages was one of the major design |
| goals: this can often explain the sometimes rather convoluted APIs and features present |
| in this library. |
| </p> |
| <div class="sect1"> |
| <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
| <a name="id-1.3.2.5"></a>Data types and programming</h2></div></div></div> |
| <p> |
| One could say |
| that a programming language is merely a way to create data types and manipulate them. Most languages |
| provide a number of language-native types and a few primitives to create more complex types based |
| on these primitive types. |
| </p> |
| <p> |
| In C, the language provides types such as <span class="emphasis"><em>char</em></span>, <span class="emphasis"><em>long</em></span>, |
| <span class="emphasis"><em>pointer</em></span>. During compilation of C code, the compiler maps these |
| language types to the compiler's target architecture machine types. If you are using a C interpreter |
| (assuming one exists), the interpreter (the program which interprets |
| the source code and executes it) maps the language types to the machine types of the target machine at |
| runtime, during the program execution (or just before execution if it uses a Just In Time compiler engine). |
| </p> |
| <p> |
| Perl and Python are interpreted languages which do not really provide type definitions similar |
| to those used by C. Perl and Python programmers manipulate variables and the type of the variables |
| is decided only upon the first assignment or upon the first use which forces a type on the variable. |
| The interpreter also often provides a lot of automatic conversions from one type to the other. For example, |
| in Perl, a variable which holds an integer can be automatically converted to a string given the |
| required context: |
| </p> |
| <div class="informalexample"> |
| <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> |
| <tbody> |
| <tr> |
| <td class="listing_lines" align="right"><pre>1 |
| 2</pre></td> |
| <td class="listing_code"><pre class="programlisting"><span class="normal">my $tmp </span><span class="symbol">=</span><span class="normal"> </span><span class="number">10</span><span class="symbol">;</span> |
| <span class="normal">print </span><span class="string">"this is an integer converted to a string:"</span><span class="normal"> </span><span class="symbol">.</span><span class="normal"> $tmp </span><span class="symbol">.</span><span class="normal"> </span><span class="string">"</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">;</span></pre></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| |
| <p> |
| Of course, it is also often possible to explicitly specify conversions when the default conversions provided |
| by the language are not intuitive. |
| </p> |
| </div> |
| </div> |
| <div class="footer"> |
| <hr>Generated by GTK-Doc V1.25.1</div> |
| </body> |
| </html> |