- Firefox and other web browsers
- Graphics Image Manipulation Program (GIMP)
- Libre Office (formerly Open Office)
- GnuCash and accounting software
- web servers like Apache, the killer app for Internet servers
Many learn to code tutorials are available online.
Another way to learn how computers work is to practice using a command line user interface before you are required to. All computers still function internally by manipulating text instructions and numbers. We describe programs and programming below.
Like other systems, any software that is valuable enough for distributing goes through a customized but generally predictable series of stages as it matures and becomes more widely distributed.
- Software development
- packaging & distribution
- maintenance, bugs, patches
- internationalization also known as i18n (code preparations) and localization also known as l10n (translation strings)
Computers can not be precisely told what to do using human language. Computer instructions are called source code (wikipedia) and are coded in one of several well known computer programming languages (wikipedia).
In order to use/run/execute the source code, the human readable code must be converted into the machine code (wikipedia) instructions specific to the hardware CPU. Each language either does this in advance (compiled) or when the program is run (interpreted). Because of these reinterpretations people often speak of high-level languages (most languages you may have heard of) and low-level languages that are closer to the binary 1s and 0s used inside your CPU.
An added layer of reinterpretation called virtualization can simulate one computer hardware CPU inside another. Virtualization is the main enabling technology of cloud computing (wikipedia).
Because of the unambiguous nature of source code, software developers can refer knowledgable people back to the source code when discussing problems. A play on words from the movie Star Wars is used and feels appropriate in more than one way. Obi-Wan Kenobi tells Luke Skywalker to "Use the Force". Developers sometimes tell their users to "Use the source". Users are also instructed to "scratch their own itch" in a manner which parallels the do-it-yourself (DIY, wikipedia) movement. These kinds of instructions can catch less experienced people by surprise often because of the assumption that users can code as well as developers, a lack of understanding of the program’s software development life cycle and a lack of awareness of the different roles people can play in this life cycle.
Many different languages have been created for different purposes.
- One of the oldest families of languages is named after the letter C including C++ (object-oriented), C# (Windows), Objective-C (OS X)
- the standard Unix Bourne shell (wikipedia) scripts
- vim script or Emacs lisp are languages built into two of the most popular command line text editors
- R is for statistics
I want to learn more. Which programming language should I learn? I recommend learning the language that you can use to solve a problem you are interested in solving. Your interests might match the languages that are most popular. All languages are logical instructions for a computer which does take some getting used to. Often a macro language or spreadsheet language is a good choice. The first language one learns is always the most difficult but it is well worth the effort.
There are many online resources for learning to program. For example, YouTube hosts the videos for UC Berkeley CS61A which teaches the Python (python.org) language. For many years this course was taught in a much older language scheme (wikipedia).