Low-level languages are written in code closer to machine language and are more difficult to debug for most programmers. Low-level is a programming language that provides little or no abstraction from a computer's instruction set architecture. Generally low-level refers to either machine code or assembly language because the code is less like natural language.
Machine code is the only language a microprocessor can process directly without a previous transformation. Programmers almost never write programs directly in machine code because it requires attention to numerous details which a high-level language would handle automatically. It also requires memorizing or looking up numerical codes for every instruction that is used.
Assembly language has no semantics and no specification, being only a mapping of human-readable symbols, including symbolic addresses, opcodes, addresses, numeric constants, strings and so on. Typically, one machine instruction is represented as one line of assembly code. Assemblers produce object files which may be linked with other object files or loaded on their own.
A programming language with strong abstraction from the details of the computer. In comparison to low-level programming languages, it may use natural language elements, be easier to use, or may automate (or even hide entirely) significant areas of computing systems (e.g. memory management), making the process of developing a program simpler and more understandable relative to a lower-level language.
High-level programming language
The amount of abstraction provided defines how "high-level" a programming language is. So a high-level lanuage such as Java or C++ had strong abstraction from the details of the computer.
Caption: : Do you notice th different between low level and high level programming languages? Which woudl you rather work with?
4GL is a computer programming language envisioned as a refinement of the style of languages classified as third-generation programming language (3GL). Each of the programming language generations aims to provide a higher level of abstraction of the internal computer hardware details, making the language more programmer-friendly, powerful and versatile. While the definition of 4GL has changed over time, it can be typified by operating more with large collections of information at once rather than focus on just bits and bytes.
Languages claimed to be 4GL may include support for database management, report generation, mathematical optimization, GUI development, or web development. Fourth-generation languages have often been compared to domain-specific languages (DSLs). Some researchers state that 4GLs are a subset of DSLs.