Engineering Full Stack Apps with Java and JavaScript
The purpose of programming is to develop an executable computer program that will automate performing a specific task or solving a given problem.
Programming involves activities such as analysis, design, generating algorithms and implementation of algorithms in a target programming language.
The process of programming often requires expertise in many different areas, like the application domain knowledge, specialized algorithms etc.
Programming languages are used to write programs.
Programmers write the source code in any programming language of their choice available such as C, C++, Java, Fortran, JavaScript, Lisp, Python, Ruby, Smalltalk, etc.
A high-level programming language is a programming language with strong abstraction from the details of the computer.
A low-level programming language is a programming language that provides little or no abstraction from a computer's instruction set architecture; commands or functions in the language map closely to processor instructions.
A low level programming language may be also referred to as either machine code or assembly language.
A compiler is a computer program that transforms source code written in a programming language into another computer language, often in a binary form, that is understood by the computer platform.
A compiler usually transforms a high-level programming language to machine code specific to a platform, so that it can then be directly executed in that platform.
An interpreter is a computer program that directly executes instructions written in a programming or scripting language, without previously compiling them into a machine language program.
Compiled languages uses a compiler to translate the source code to machine code specific to a platform, and then this compiled form is taken to any computer with that platform, and executed; compile once and execute as many times.
Interpreted languages compiled line-by-line as as that line was about to be executed.
Performance was not the best with complete interpreted languages, as, if a loop or subroutine caused certain lines to be executed multiple times, they would be recompiled every time.
Newer programming languages like Java, Python etc. uses a combination of compiler and interpreter; a compiler may output some form of intermediate bytecode (Java's .class files or Python's .pyc files), which is then executed by a bytecode interpreter (Java Virtual Machine or Python virtual machine).