High level programming language: A programming language that doesn't expose the raw interface of the machine or operating system, and instead offers a set of abstractions that simplify the process of doing most stuff.
Low level programming language: A programming language that exposes the interface of the machine, it's capabilities and limitations and generally doesn't offer any relevant abstraction. You have to write everything from scratch. The reason
for this is that low level languages are intended to be a close representation of the instructions of the underlying machine, and by creating abstractions that do work for you, you are losing this ability. When you write all the code, you know what's happening.
Native programming language: a programming language that, in order for the program to be built and executable, is translated to a stream of instructions that will be directly executed by the machine's processor.
Compiler: a program that translates code to a stream of instuctions which can be executed by a processor.
CPU instruction: a number which doesn't mean anything to you but that the circuits of the cpu can understand to do an action, which can be, for example, load X into register Y, multiply X by Y and store in register Z or if X is equal to Y jump to instruction at address Z.
Register: an electronic memory unit that can hold a number.
Byte: generally a 8bit number, the smallest integer unit that most computers can address.
Integer: a whole number. In other words, a number that doesn't contant any decimals.
Float: also referred to as "floating point", "floating point number", "double", "real". It is a number than can hold decimals, the amount of which is limited by its size. For example, a
is a 32 bit number, and can hold around 7 significant decimal digits, while
is a 64 bit number that can hold around 20 decimal digits.
Bit: the smallest unit of information. Only holds 1 value, either the value of 1 or 0. True or false. Enabled or disabled. The reason bits are used in electronics is that they resemble electronic circuits. There is current? 1. No current? 0.
Variable: a construct of programming languages that can hold a value. For example, a variable can hold a number, a character, a string, a pointer to memory or an structure composed by aggregation of these. Another definition could be: a way to give a name to a value so that it can be referenced later.
Memory: store of data.
Memory address: a number that represents a position in memory. Think of how we humans find where people live: we use addresses to know where someone lives. Computers do the same thing but with numbers instead of postal codes and street names.
IDE: shorthand for Integrated Desktop Environment. Example: Visual Studio or Qt Builder.
Framework: set of abstractions, APIs and implementations that create a standarized way of working. For example, .NET is a framework, composed by a set of libraries on top of which C# is built, which provides high level object oriented programming.
JIT: shorthand for Just In Time. A JIT compiler, or JITter, is a program that translates an intermediate representation of code (not the code in text form but also not as low level as machine code) into machine code at the time you run the program. This has some advantages and disadvantages over classic compilation.
For example, JIT compilers can take advantage of the capabilities of the CPU (for example, AVX) becuase it has all the information about the computer it is running on. On the downside, the process of compiling this intermediate code into machine code in runtime introduces more cpu load, which isn't generally noticeable but can affect really old computers.