Categories (Site Organization)

How To Program Anything is a very structured site, and it intentionally follows a particular design. This is meant to aid the reader’s ability to hone down and find exactly what they may be looking for, much like a library index. Below is documentation on how the site is structured.

The Structure Of How To Program Anything

There are six main taxonomies (categories): Core Knowledge, Techniques, Languages, Applications, Technologies, and Disciplines. Each covers a respective domain of topics as outlined below. There are also five qualifiers (post types) that you can use to refine further the content listed: Reference, Tutorials, Series, News, and People. Each of these qualifiers refines the content shown towards a particular purpose, as will also be outlined.

The Main Taxonomies (Categories)

The Core Knowledge Taxonomy

A floating open book in a cirlce of stacked books.

Programming utilizes science, planning, and math to achieve its goals. Because of this, a good thing to learn in addition to any programming language is the theory behind programming itself.

The Core Knowledge taxonomy includes posts dedicated to the pertinent core theory and fundamental knowledge of computer science. Core theories of programming are as varied as they are deep. The primary one, of course, is the theory of computation. This theory rests heavily on discrete mathematics and formal languages and includes automata, computability, and complexity theories.

Learning about these theories in conjunction with mathematical logic will help you gain a deep understanding. You’ll know what properties and behaviors are possible for a program. Mathematical logic includes, but isn’t limited to, set, model, recursion, and proof theories. These theories often build upon first-order logic (also known as predicate/quantificational logic and first-order predicate calculus).

In other words, what you’ll find on these pages will help you learn how to program just about anything. These fundamental concepts don’t really change much from one machine or language to the next. They are almost always applicable no matter what you’re doing. If you understand these concepts well enough, you may even create your own programming language or structures.

We categorize these theoretical topics, such as combinatorics or computer science, under the Core Knowledge moniker.

Image Based On A Photo by Jaredd Craig on Unsplash

The Techniques / Algorithms Taxonomy

A hand is controlling an electronic weave.

The Techniques taxonomy includes posts dedicated to programming techniques and paradigms. Before coalescing into concrete mechanisms like languages, there is a preliminary step where the abstract core knowledge is organized into a model that is utilizable in a concrete way. These models are known as programming paradigms. A paradigm encompasses both a way of looking at things and the expectations of the structure of those things. Often this is according to a particular attribute or quality. Paradigms include object-oriented, prototypal, procedural, structured, functional, logical, declarative, and more.

Beyond paradigms, some meta-theories and techniques inform the structures of programming and its subsequent products (languages and programs). Some of these are historical, while others have yet to be attained, and others are interesting curiosities. Many of them focus on models and algorithms for specific problems, including parsing, searching and sorting, and machine learning techniques. All of these techniques and practices are documented here.

We categorize these techniques and algorithms under the Techniques moniker.

Image Based On A Photo by Lidya Nada on Unsplash

The Languages Taxonomy

A woman has different colored projections of code on her.

The Languages taxonomy includes posts involving specific programming languages. Programming languages are the product of taking systematic core knowledge and various techniques, including models and paradigms, and implementing them into a concrete and usable system that can be configured or coded, to accomplish the goals of a given domain. My definition here is a bit broad, technically speaking.

Some are more formatting languages but contain modules or elements sometimes involving elements of programming, like HTML5. I include them here and the more traditional programming languages like JavaScript, PHP, Python, or C/C++. Really, if it’s interpreted or compiled in any way in a systematic fashion to accomplish some goal, it qualifies as a programming language. These posts deal with specific programming languages, how to use them, how they’re built, and everything else associated with them.

We categorize all these different specifications and languages under the fairly straightforward Languages moniker.

Image Based On A Photo by ThisisEngineering RAEng on Unsplash

The Applications Taxonomy

A dark screen of a computer with a menu pulled down with a cursor.

Programming languages are just part of the whole picture, though. With this in mind, there’s also information available on particular applications of those programming languages. For example, the programming languages PHP, SQL, HTML5, CSS, and JavaScript are all employed by WordPress.

The Applications taxonomy includes posts involving specific programming applications. A programming application is a program created using a programming language that allows the user to further program or accomplish some goal. These include compilers, content management systems, and game engines.

These days, the distinction between a framework/technology and an application is often blurred. In one sense, WordPress out of the box allows you to make a blog. In another sense, it provides functionality that expands within that environment with additional code. The major difference here between something like WordPress and something considering technology such as PyGame is simple.

An application can perform a function or empower the user concerning a task without additional programming. You can install WordPress and never code again, and you’ll still have a blog. You can’t install PyGame and expect to have a game engine instantly. This section also outlines various (hackable) applications (that sometimes act as frameworks) such as the aforementioned WordPress and other CMSs, editors like Atom, compiler toolchains such as LLVM, and even game development applications such as Godot, Unity, and even Visual Novel Maker.

We categorize all these different applications, under the Applications moniker.

Image Based On A Photo by Pankaj Patel on Unsplash

The Technologies Taxonomy

Close-up of a circuit board with integrated circuits.

The Technologies taxonomy includes posts involving various specific technologies. These are physical and software platforms that we write our software “on.” For example, I listed PyGame, Raspberry Pi, and even packaging an iOS app.

A technology is a framework, whether physical or abstract, that defines the environment in which you program. Let us consider a given machine. We must consider its memory, its instruction set, its interfaces, and its organization. When you must consider these things, you are speaking of a technology or platform. It’s possible to do the same thing on two different technologies. However, you’ll likely do them somewhat differently.

You might wonder why something like PyGame is included here. Isn’t it a software framework/library? It’s included here because, much like a computer processor defines your instruction set, a framework like PyGame offers you an interface to program within but doesn’t actually do anything by itself. In that regard, technologies found here include frameworks such as Laravel, PyGame, the C++ runtime environment, and more.

We categorize all these different technologies, under the Technologies moniker.

Image Based On A Photo by Michael Dziedzic on Unsplash

The Disciplines Taxonomy

A man sits on a black motorcycle wearing a motorcycle suit and helmet.

A discipline (or field) is a domain of interest that employs the concepts and practices of programming.

The Disciplines taxonomy includes posts involving various fields and disciplines that have something to do with programming and computers. The ability to perform vast computational feats has become essential to almost every realm of human activity. We rely on computers to process, catalog and transmit information in research, business, and recreation combined.

Disciplines and fields can range from the obvious (such as applied mathematics or bioinformatics) to the niche (like artificial life simulations or machine learning) and even the fun (game development and social networks). Each field easily forms its own microcosm of in-depth studies and histories, gives rise to its own star programmers, publishes its own journals, and develops its own history.

We break down fields into their domains of interest, such as computer graphics, programming language design, software engineering, human-computer interaction, simulations, artificial intelligence, networking, business applications, robotics, cybernetics, and so on.

We categorize all these different fields under the Disciplines moniker.

Image Based On A Photo by Jusdevoyage on Unsplash

Qualifiers (Post Types)

How Qualifiers Work

Main taxonomies slice up the content on the site into various categories. However, that content may be one of several forms, such as a news article or a tutorial. One taxonomy may contain several different types of posts, each serving a different purpose.

The Reference Qualifier

A laptop sits open on a desk with a lamp.

In the Reference qualifier, you will find all posts that are not tutorials, news, profiles, or series. These posts make up most of the content on How To Program anything and often go into reference-level detail regarding various systems, be they programming languages, theories, or applications.

These differ from tutorials in that they do not necessarily provide a step-by-step process on how to accomplish a given task, and the reader won’t end up with any final product. They also differ from news posts because of their referential nature, which is more timeless than topical. Deep diving into these articles should provide clear and useful information about all the various subjects covered on How To Program Anything.

Image Based On A Photo by Radek Grzybowski on Unsplash

The Tutorials Qualifier

A person applies makeup to their eyelid.

Tutorial posts range over the general taxonomies and teach the reader how to do something. Tutorials feature step-by-step processes and explanations or links to more in-depth explanations, which help the reader solve a particular problem or end up with a final product.

Subjects and lengths vary for tutorials. They can range from simple “How do I?” processes to something as complex as building a web app or computer game.

Tutorials are rated by difficulty with green gears by the editors correlating to the old Infocom difficulty levels (Introductory, Standard, Advanced, and Expert). They are also rated by lightbulbs in terms of reception by readers (the more lightbulbs, the better). If a tutorial helps you, please consider leaving a positive rating. If there’s an issue with a tutorial, please leave a comment indicating the issue, and the editors will try to address it.

Image Based On A Photo by Apostolos Vamvouras on Unsplash

The Series Qualifier

A stack of open books lies before a window showing a forest outside.

Sometimes a single post doesn’t suffice to cover the extent of a particular subject. This is often true of larger tutorials such as building a web app or a computer game. Sometimes a series of posts might span different types of posts and core taxonomies but are linked by a common thread.

You can imagine a Series as a sort of miniature (or not so miniature!) book that aggregates several other posts together to achieve coverage of a subject. This often happens in the intricate world of computer programming.

Take WordPress, for instance: it is programmed in PHP, uses SQL, outputs HTML/CSS/JavaScript, and runs inside a web server. These elements are separate and independent from each other, but they can also be brought together to produce a WordPress website. Parts of a WordPress process could be categorized on this site in several places, but a series would bring all the parts of the process together.

Image Base On A Photo by John-Mark Smith on Unsplash

The News Qualifier

Keys of a dark typewriter.

New technologies and discoveries are popping up every day in the tech industry. The purpose of News posts is to feature new developments and other facets of the computational industry. Frameworks, operating systems, and even hardware are always evolving, and new announcements are made every day.

Because computers touch every aspect of our modern lives, news articles can cover a much broader area as well. The technology industry is expansive, with many large, very influential companies such as Apple or Google. News often comes from the web/social media and its effects on society. These articles cover anything considered newsworthy that has to do with computers and technology.

Image Base On A Photo by Markus Winkler on Unsplash

The Person Qualifier

Two engineers talk about work at a workstation.

The technology industry often has big, sometimes odd, celebrated personalities and many unsung heroes whose intellect and contribution have shaped the modern landscape. For every Steve Jobs, there are easily a dozen Brian Kernighan’s, Cliff Jones, or John Hollands. None better or worse, their only inequality being public recognition.

Person posts hope to provide profiles on contemporary enthusiasts, both professional and hobbyist, and masters, both historical and current. Through the great examples of others, we can study great works and histories of computational innovation from the viewpoints of its creators.

Image Base On A Photo by amir shamsipur on Unsplash

Featured Image Base On A Photo by Dennis Eusebio on Unsplash

Recent Posts

Negative Binary Numbers

A non-standard positional notation is one where the value of each position isn’t necessarily a straightforward power of the radix. I am also including when the radix is not a positive integer (such as -2), even though mathematically the representation is consistent with standard positional notation. By altering the interpretation of one or more of the place values (or the radix) of a binary representation, we are able to represent negative values. In this post I’ll be covering sign-magnitude, the most intuitive method, the radix complement methods (ones’ complement and two’s complement), offset binary (also known as excess-k or biased), and base -2 (base negative two).

Read More »

Binary (Base-2) And Its Operations

This article continues the trend of the previous articles and begins with a history of binary. After that, I briefly reiterate why binary is used in modern electronic devices as covered in the previous article, and go into more depth regarding binary “sizes” (bit, byte, kilobyte, etc.) Then I move on to important elements of binary arithmetic, and the operations of addition, subtraction, multiplication, and division. I cover two operations often found in computing processors, the shift operators, and their mathematical meaning. Finally, I briefly cover Boolean logic operations.

Read More »
An incadescent lightbulb burns.

Radix Economy

This article begins with a recap of where we are in the series in regards to the concept of counting. I review the definition of positional notation as outlined in the first article and then move on to reveal how we can calculate the number of digits a value will have in a given radix. In doing so I will go over two mathematical concepts relevant to this calculation: exponents and logarithms. I will then use logarithms to show how you can calculate the efficiency of a given radix, also called the radix economy, and answer the question, “What’s the most efficient radix?”

Read More »
A measurement chart in a shoe store.

Converting To Binary, Octal, and Hexadecimal

This is the second article in a series whose intention is to have the reader able to understand binary, octal, and hexadecimal; three radices of great importance to contemporary computer theory. This article builds upon the previous article by outlining three important radices (binary, octal, and hexadecimal) that are useful in the field of computer science. I start with arbitrary base conversion using two methods. Then, a bit of background is given for why these bases are important, particularly binary. Finally, we perform radix conversion.

Read More »
A man in darkness has computer code projected onto him.

Understanding Radix

This article puts forth a brief history of counting, which details how we arrived at some of the conventions we have today, including the notion of radix. It then explores the concept of radix in positional numeral systems, and in particular the concept of using radices of arbitrary values. With this foundation, it becomes a simple exercise to use binary, octal, and hexadecimal, each with a radix of two, eight, and sixteen respectively.

Read More »
A set of cathode ray tube based numeric displays.

Binary, Octal, And Hexadecimal

This series intends to have the reader able to understand binary, octal, and hexadecimal; three radices of great importance to contemporary computer theory. By the end of this series, you should be able to read and convert integer values into binary, octal, and hexadecimal, perform arithmetic operations on all three representations, understand basic Boolean operations, and otherwise have a further appreciation of the power of binary.

Read More »
  • Follow On Twitter!