You have a thing. When you add that thing to another thing, you create a new thing. When you take a thing from another thing, you create a new thing. That thing is called data. Adding and taking are called operations. You put data in an operation to create new data. You put the new data in an operation to create more new data. You do this over and over again.
A combination of data and operation is a proposition. The proposition, 1+1=2 is where 1 is the data, + is the operation and 2 is the answer. An answer follows from the application of a proposition. The answer is data that often becomes the premise of a successive proposition. A proposition feeds another proposition. The succession of propositions defines a system.
A centimeter sized piece of metal, could be longer or shorter, receives electricity. That short piece of metal holds that charge. Another piece of metal just like it does not have a charge. The piece of metal with the charge is said to be on. A piece that does not have charge, is said to be off. Each strand of metal lie next to each other like a row of thin columns in a hair comb. An individual column, a single strand of metal, is either off or on. The pattern of off and on is data.
Imagine a hair comb in which some columns are painted blue and some are painted orange. You can come up with many patterns of blue and orange. You can come up with a code book of what the different patterns mean. A unique pattern can be a number, letter, or action to take. You can combine patterns together to have patterns of patterns to form words, pictures and sounds. Hardware works on exactly the same principle. Instead of blue and orange paint, you have charge or no charge. On or off.
All data in a digital computer, flowing in memory or occupying a storage component (hard drive or solid state) obeys the pattern structure. This is binary data. The only data the digital computer understands, creates and runs is this binary data. Data that is subject to interpretation. A single pattern can mean different things. It is like Morse Code.
A computer program is a block of binary sequences. The sequences are groups of successive propositions. Use of a block of propositions end when a sequence of propositions are satisfied. The patterns must be logically consistent to be useful.
The true programming language is binary code writing. You put strips of binary sequences together. The computer executes them. Too verbose for most practical uses by people. Done in the earliest years of digital computing. The writing of binary code is automated today. Assembly language allows you to write code that can express the greatest number of pattern sequences that can be translated into blocks of binary. Other programming languages are more or less related to the writing systems people use to read information. Programming languages outside of Assembler are designed to allow people to more easily layout and change programs. Source code is a blueprint of intent.
Writing Binary Code
A computer program called a compiler creates computer programs of the binary form. They read program designs drafted by persons or processes and converts the stated propositions into a block of binary sequences. Another program called a linker puts all the binary sequences into an organized structure that the operating system (itself a binary program) requires. The compiler and linker automates the writing of binary code based on source code text. The blueprint is put into an actionable form.
An operating system is a master program that provides a binary standard for other programs. When you write code for an operating system, you are defining a body of propositions whose function will be governed by that operating system. Rules such as how to start your program and run it alongside other programs. The operating system permits your program to run. It decides if your program meets standards and permits execution if approved. It is involved in the running of your program in a way that creates order and cooperation. Binary files follow a standard. This is why code must be translated into the operating system’s format.
Computer Systems from A to Z
A computer system, the binary environment, receives data, creates data and executes operations to produce or remove data. Keyboards send data to the binary environment. Monitors receive data from the binary environment. This is called input and output. There are more sources of input and output besides these some of which serve as both. Every fundamental action is a proposition mentioned earlier. Data at rest is the result of an earlier proposition. Data that emerges (response to an input, an event) is the realization of a proposition. A to Z, all computing components, sensors, inputs, processing units, outputs comprise a collective succession of propositions in binary form.
So Many Programmers, So Many Programs
The basic principle is the proposition dating from Chrysippus, Aristotle and a little before. A principle refined by great thinkers over centuries including the appearance of truth tables and boolean logic. The concepts were intuitively conceived by past thinkers and are similarly intuitive to grasp. Part of the reason there are far more than 18 million programmers today is these concepts are readily applicable.
Data Structures, Algorithms and Information Theory
The physical design of computers, the electronics, the tempo of data exchange (clock cycles, pipelines, etc) and size constraints lead to certain optimal patterns in the sequence of binary digits to harness the underlying electronics. A different underlying design can influence the benefit of certain approaches, structures and concepts. The trend is towards writing code in a straight forward manner and deferring to the automated code writers (compilers and linkers) the selection of optimal sequencing patterns. Universally however, the design of data is about an arrangement that fits available capacity that can be processed in as complete a manner as possible. Complexity that exceed that scope tends to be unnecessary.
Know your general propositions first and foremost. Refine them. Know the syntax of your tools and encode your propositions in the form of a blueprint (the language or configuration). Translate the specification into a result acceptable to the system. Test and use. Refine as needed. Complete systems and solutions often become propositions for other systems and solutions.
A digital computing system continuously express propositions as a sequence of binary digits that represent a pattern of voltages that produce representations (words, numbers, graphics, sounds, physical triggers, etc) that is the result of the process of evaluating those propositions.
Opinion: Eventually learn C++ as it encompasses the full range of concepts described. You will be equipped to drift closer to the machine if needed or drive further in your level of abstraction. Computers are not a mystery. Starting from the tiniest spark to the most indulgent user interface, the entire chain of activity can be known and harnessed to great effect.