Both microncontrollers such as the Atmega found in classic Arduino Boards or the ARM processors found on recent development boards, smartphones, Tabs and laptops are very powerful programmable components.
They can only work if you provide them instructions in a program that is basically written so as to provide looping interactions between Input and Output Events. This is achieved using specific languages that you have to be able to read and understand if you want to be able to write your own programs.
However, you can find many program examples on-line and start enjoying open source computing witout any programming skills if you follow appropriate guidelines and tutorials. This can be a great way to get into programming through your own projects and hobbies.
Let us start with a few definitions of common words used in the fields of programming:
An instruction is a line in a program that requests hardware components to behave so as for instance to read a sensor voltage signal or to feed a Pin with a given voltage potential on an Arduino Board, or to open an Application when clicking on its icon with the mouse of a laptop.
More complex Programs benefits from conditionnal instructions and can quickly become long and complex. Professionnal programmers will then use a bunch of development tools starting with a litteral Algorithm that is a sort of universal programming language that enables to build sort of a MAP of the program objectives before wrting it into a processable language.
A wide variety of programming languages have been created and are stiil more or less used today.
There are various levels of programming depending on how close you work from the Hardware or the User. Programmers developping Operating Systems or programmable chips work at the so called "Assembly Level". Most other programmers work at a Higher Level.
As one can imagine an infinity of machines and applications to be developped, and as each application may require different types of hardware and software, programming language are often devoted to specific applications. For intance, HTML, CSS and PHP have been among the main languages used for web development.
C++ and C are more often used when dealing with programming Arduino Boards or equivalent electronics and is also often used to develop Softwares as C++ is a bit faster language than Java. These languages have led to very famous variations, among which Visual Basics, Visual C++ and even Simple Basics...
Programming Environments are dedicated softwares use to build your program. Yo may do this with a simple text-editor, but programming environments are much more confortable as much for beginners than for professionnals.
Neophytes from 7 to 77 years old will enjoys environments like Scratch or Blocky to build their first program. App Inventor 2 may then be a great environment for playing with Android phones.
The Arduino Software has become a programming reference along with Processing for Students in Electronics, Medias & Arts or any other field that can benefit from DIY interfaces.
Last Eclipse is among the mostly used and the most powerfull environment (thus being quite more complex to use) from advanced students, programmers and professionnals.
Programs are used to monitor the computer state and inputs events: when you swith your computer on, the processor starts clocking and the Operating system is started. When you switch it off by clicking the "switch off" button, the Operating system will shut down and then the power will shut down.
This is due to conditionnal events written in the program being read in loops monitoring input signal comming from hardware button or user actions: aline in the program tells that if you click the "switch off" button, then a specific part of the program will be executed to try to switch off the computer.
Conditionnal events are the skeletton of you programming structure and it is a good chapter to start with as a beginner.