There are many theories about why the C programming language has endured for as long as it has. Maybe it\'s the austerity of its syntax, or the simplicity of its vocabulary. Or maybe it\'s that C is often seen as a utilitarian language, something that\'s rugged and ready to be used as a building material for something that needs no platform because it\'s going to be its own foundation. C is clearly a powerful language, and I think its longevity has a little something to do with the way it serves as a springboard for other popular technologies. Here are five of my favorite technologies that utilize and rely upon C, and how they can each help you learn more about C yourself. ## 1. GObject and GTK C is not an object-oriented programming language. It has no `class` type. Some folks use C++ for object-oriented programming, but others stick with C along with the GObject libraries. The GObject subsystem provides a `class` structure for C, and the GTK project famously provides widgets accessible through C. Without GTK, there would be no GIMP (for which GTK was developed), GNOME, and hundreds of other popular open source applications.) ### Learn more GObject and GTK are excellent ways to start using C for GUI programming. They\'re well equipped to get you programming graphical applications using C because they do so much of the \"heavy lifting\" for you. The classes and data types are defined, the widgets have been made, and all you have to do is put everything together. ## 2. Ncurses If GTK is more than you need, you might decide a terminal user interface (TUI) is more your speed. The ncurses library creates \"widgets\" in a terminal, creating a kind of graphical application that gets drawn over your terminal window. You can control the interface with your arrow keys, selecting buttons and elements much the same way as you might use a GUI application without a mouse. ### Learn more Get started by writing a [guessing game in C](https://opensource.com/article/21/8/guess-number-game-ncurses-linux){target="_blank"} using the ncurses library as your display. ## 3. Lua and Moonscript Lua is a scripting language with access to C libraries through a built-in C API. It\'s a tiny, fast, and simple language with about 30 functions and just a handful of builtin libraries. You can get started with Lua for system automation, game modding and scripting, game development with a frontend like LÖVE, or general application development (like the [Howl text editor](https://opensource.com/article/20/12/howl){target="_blank"}) using GTK. ### Learn more The nice thing about Lua is that you can start out with it to learn the basic concepts of programming, and then start exploring its C API when you feel brave enough to interface directly with the foundational language. If, on the other hand, you never grow out of Lua, that\'s OK too. There\'s a wealth of [extra libraries](https://opensource.com/article/19/11/getting-started-luarocks){target="_blank"} for Lua to make it a great choice for all manner of development. ## 4. Cython Lua isn\'t the only language that interfaces with C. [Cython](http://cython.org){target="_blank"} is a compiler and language designed to make writing C extensions for Python as easy as writing Python code. Essentially, you can write Python and end up with C. The simplest possible example: print("hello world") Create a `setup.py` script: from setuptools import setup from Cython.Build import cythonize setup( ext_modules = cythonize("hello.pyx") ) Run the setup script: $ python3 ./setup.py And you end up with a `hello.c` and `hello.cpython-39-x86_64-linux-gnu.so` file in the same directory. ### Learn more The Cython language is a superset of Python with support for C functions, and datatypes. It isn\'t likely to directly help you learn C, but it opens up new possibilities for the Python developer looking to learn and integrate C code into Python. ## 5. FreeDOS The best way to learn more about C is to write code in C, and there\'s nothing more exciting than writing code you can actually use. The FreeDOS project is an open source implentation of DOS, the predecessor to Windows. You may have already used FreeDOS, either as a handy open source method of running a BIOS updater, or maybe in an emulator to play a classic computer game. You can do a lot more with FreeDOS than that, though. It makes an ideal platform to learn C with a collection of tools that encourage you to write your own commands and simple (or not-so simple, if you prefer) applications. Of course you can write C code on any OS, but there\'s a simplicity to FreeDOS that you might find refreshing. The sky\'s the limit, but even at ground level you can do some amazingly fun things with C. ### Download the ebook You can learn more about C in our new ebook LINK-TO-EBOOK, and more about C on FreeDOS in our ebook LINK-TO-EBOOK. These are collections of programming articles to help you learn C and to demonstrate how you can implement C in useful ways.