A programming language (e.g. Objective-C) is an artificial language designed to express computations that can be performed by a machine, particularly a computer. Or with another words, programming language is a vocabulary and set of grammatical rules for instructing a computer to perform specific tasks. The term programming language usually refers to high-level languages[1]. It can be used to create programs that control the behavior of a machine(e.g system programming), to express algorithms precisely, or as a mode of human communication, e. g. Applications, Utilities, Servers, Systems Programs . Programming Languages, About PL, Types and PL, Essentials of PL, Concepts in PL, PL Pragmatics

applications
An application program (or just application) is any program designed to perform a specific function directly for the user or, in some cases, for another application program. Examples of application programs (pictured) include word processors; database programs; Web browsers; development tools; drawing, paint, and image editing programs; and communication programs, and more. Items in the below list is also an example of application.

Programmers of early 1950s computers, notably UNIVAC I and IBM 701, used machine language programs, that is, the first generation language (1GL). 1GL programming was quickly superseded by similarly machine-specific, but mnemonic, second generation languages (2GL) known as assembly languages or "assembler". Programming Languages Assembly languages are similar to machine languages, but they are much easier to program in because they allow a programmer to substitute names for numbers. Machine languages consist of numbers only. Later in the 1950s, assembly language programming, which had evolved to include the use of macro instructions, was followed by the development of "third generation" (3GL) refers to high-level languages , such as BASIC, FORTRAN, PASCAL, ADA, C, C++, COBOL, and JAVA, C#. Each language has a unique set of keywords (words that it understands) and a special syntax for organizing program instructions. High-level programming languages, while simple compared to human languages, are more complex than the languages the computer actually understands, called machine languages. Each different type of CPU has its own unique machine language. [2]

Programming Languages Lying above high-level languages are languages (1970s-1990) called fourth-generation languages (4GL) is a programming language (closest to human languages) or programming environment designed with a specific purpose in mind, such as the development of commercial business software. Some fourth-generation languages: Clipper, FoxPro, SQL, Oracle Reports, ABAP MATLAB, ColdFusion, and etc. The 4GL was followed by efforts to define and use a fifth-generation languages (5GL), which is a programming language based around solving problems using constraints given to the program, rather than using an algorithm written by a programmer. Most constraint-based and logic programming languages and some declarative languages are fifth-generation languages. Fifth-generation languages are used mainly in artificial intelligence research and neural networks. Some fifth-generation languages: Prolog, OPS5, and Mercury. 4GL and 5GL projects are more oriented toward problem solving and systems engineering. [2]



Languages Categorization (Taxonomies)

A given programming language (see History) does not usually have a single ancestor language. Languages commonly arise by combining the elements of several predecessor languages with new ideas in circulation at the time. Ideas that originate in one language will diffuse throughout a family of related languages, and then leap suddenly across familial gaps to appear in an entirely different family.
The task is further complicated by the fact that languages can be classified along multiple axes. For example, Java is both an object-oriented language (because it encourages object-oriented organization) and a concurrent language (because it contains built-in constructs for running multiple threads in parallel). Python is an object-oriented scripting language.



Some of the programming languages grouped by Category

In broad strokes, programming languages divide into programming paradigms and a classification by intended domain of use. More refined paradigms include imperative language, declarative programming, procedural programming, object-oriented programming, functional programming, symbolic programming and logic programming; some languages are hybrids of paradigms or multi-paradigmatic as in below table. See: Advanced topics, Advanced topics2, Spring Declarative Transaction Management

Array languages 
Analytica, IDL, A+, R, Fortran , MATLAB, ...
Aspect-oriented languages 
AspectC++, AspectJ, CaesarJ, ObjectTeams, ...
Assembly languages 
ASEM-51, C--, COMPASS, GAS , MASM, ...
Authoring languages 
Bigwig, Coursewriter,
PILOT, TUTOR, ...
Command line interface languages
4DOS, Winbatch, SpiritShadow (2009), Win PowerShell, sh, bash., ksh,..
Playgrounds, Online Coding
Compiled languages
Ada, Basic, ALGOL, COBOL, PL/I, Python, C, C++,
C# (compiled into Intermediate Language ),
Java (usually compiled into JVM bytecode), ...
Concurrent languages, Concurrent Pascal,  
Ada, Concurrency in Java vs Node.js
Cilk - a concurrent C, Eiffel, Java, ...
Curly-bracket languages
AWK, csh ("C Shell"), C, C++, C#,
ECMAScript (ActionScript, Javascript),
Java (Groovy, JoinJava, X10), PHP, Perl, ...
Dataflow languages 
Hartmann pipelines, G (used in LabVIEW), Lucid
Prograph, WebMethods Flow, Monk,...
Data-oriented languages
Clarion, Clipper, dBase, SPARQL,
Visual FoxPro, Tutorial D, WebQL, ...
Data-structured languages 
Array-based, List-based, Stack-based
Declarative languages 
Analytica, Ant, MetaPost, Modelica, SQL, XSL,
DASL(partial declarative, partial imperative), Prolog, ...
Esoteric languages 
Befunge, Brainfuck, FALSE, LOLCODE, Qwertycode, Shakespeare, Var'aq, ...
Extension languages 
AutoLISP (specific to AutoCAD), Guile,
Python (Maya and other 3-D), S-Lang, SQL,
Ruby (Google SketchUp), Tcl,..
Fourth-generation languages 
ABAP, IBM Informix-4GL / Aubit-4GL, Oracle Express 4GL, Progress 4GL, Today, Visual FoxPro, ...
Functional languages, e.g.
APL, Charity,, Curl, Lisp, Mathematica,
ML -Alice, Poplog, ...
Interactive mode languages 
Clojure, Common Lisp, F#, Maple, MATLAB, PostScript, Ruby, S-Lang, Tcl,...
Interpreted languages 
Ant, AutoHotkey, Eiffel, Game Maker Language, Groovy, Haskell , Lisp (Tea), Maple, Ruby, Groovy, PostScript, S-Lang, ...
Iterative languages 
Aldor, CLU, Cobra, Eiffel, Icon, Python, ...
List-based languages - LISPs 
Joy, Lisp (Dylan, Arc, Logo), Tcl (Tea), TRAC, ...
Little languages 
apply, awk, SQL, ...
Logic-based languages 
Oz (Mozart Programming System),
Curry, Leda, Prolog (Mercury), ...
Machine languages 
ARM, Intel 80x86, IBM System/360,
National 32032, Motorola 680x, Sun SPARC, ...
Macro languages, PL/I Preprocessors
cpp (the C preprocessor), PHP, SMX,...
Metaprogramming languages 
C++, Curl, Lisp, Haskell, Lua, Pels, Python,
Smalltalk, XL (concept programming), ...
Multiparadigm languages 
BETA, C++, C#, Curl, PHP, SCALA,
Ruby, Tcl, XL,...
Numerical analysis 
Algae, AMPL, GAMS, MATLAB,
Seneca an Oberon variant, ...
Non-English-based languages 
ARLOGO - Arabic, Chinese BASIC - Chinese, Lexico - Spanish, Rapira , Glagol (Russian), ...
Object-oriented class-based languages 
Dylan, Goo, BETA, C++, C#, Chrome, Cobra, Java (Groovy, JoinJava, X10), PHP, Ruby, SCALA,...
Object-oriented prototype-based languages 
ABCL/1, ECMAScript (ActionScript, Javascript),
Lua, NewtonScript, ...
Off-side rule languages 
Ivy, Miranda-Haskell-Curry, XL,
ISWIM, ABC (Python, Cobra, Boo), ...
Procedural languages 
ADA, ALGOL, BASIC, C, C++, C#, ECMAScript (ActionScript, Javascript), Java (Groovy, JoinJava, X10), Lasso, Modula-2, MATLAB, Perl, Python, Rapira, S-Lang, X++, XL,...
Reflective languages 
Aspect-oriented, ECMAScript (ActionScript, Javascript), Java (Groovy, JoinJava, X10), Lisp,
Lua, PHP, Pico, Perl, Python, Rapira, Tcl, X++/XL,...
Scripting languages 
AppleScript, AWK, BeanShell, ColdFusion, ECMAScript (ActionScript, Javascript), PHP,
Game Maker Lang., Java (Groovy, JoinJava, X10),
Python, Ruby, Smaltalk, S-Lang, Tcl, ...
Stack-based languages 
Cat, Factor, Forth, Joy, Prolog, PostScript, Urq,...

Dynamically typed 
JULIA, Javascript, Python, Ruby, Lua, PHP...
Synchronous languages 
Argos, Averest, LEA, Lustre, SyncCharts,...
Syntax handling languages 
ANTLR, GNU Flex, lex, JavaCC, ...
Visual languages 
CODE, Eiffel, Prograph, Simulink, Vvvv,...
Wirth languages 
ALGOL W, Modula, Modula-2, Oberon,
Object Pascal (Borland Delphi),...
XML-based languages 
Ant, Cω, ECMAScript ECMAScript for XML, MXML, XPath, XQuery, XSLT, XMLmosaic,...


Comparison of programming languages

These days, (see: TIOBE Index for September 2025, software development life-cycle PYPL PopularitY of Programming Language) programming languages are becoming more and more general and all-purpose, but they still have their specializations, and each language has its disadvantages and advantages. [4]

Some useful links: Wiki-Compare, Wiki-Compare2, Comparing , Compare2, Compare3



Language Execution - Compilation and Interpretation

software development life-cycle Regardless of what language you use, you eventually need to convert your program into machine language so that the computer can understand it. [3] Programming language implementation, there are two ways to do this: 1. Compile the program, or 2. Interpret the program.
See more: Compiler and Interpreter Differences, Courses, PL Processors in Java, Difference

What is the difference between interpreted and compiled languages? Interpreted computing languages are languages whose source code is processed by a software program called an interpreter that reads in the text and immediately acts upon the instructions defined by the text. Compiled computing languages are languages whose source code is processed by a software program called a compiler that converts the source code into a file which can then be run directly or indirectly by a computer operating system. See also, what is compiled or interpreted program?

There also exist hybrid languages, such as Java and Python, that have qualities of both compiled and interpreted languages. Java, for example, can be compiled into bytecode which must then itself be run by an interpreter referred to as a virtual machine. Since Java source code itself does not have an interpreter, it's reasonable to consider Java to be a compiled langauge. In comparison, Python source code can also be compiled into bytecode to be read by a virtual machine. However, Python source code can also be interpreted by an interpreter. So, it is reasonable to consider Python an interpreted language.

WebAssembly (Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating communication between such programs and their host environment.
Wasm is a low-level bytecode format that runs in the browser just like JavaScript. It is designed to be faster to parse than JavaScript, as well as faster to execute which makes it a suitable compilation target for new and existing languages - see webassembly-language-support.

JIT ((Just-In-Time)) compiler is a runtime technology that improves a program's performance by compiling frequently executed sections of code into native machine code during the program's execution, rather than at a separate compilation stage.
GraalVM (Wasm) is a high-performance Java Development Kit (JDK) distribution that can accelerate application performance and efficiency with its advanced compilation technology. It is developed by Oracle and can be used with applications written in Java, as well as many other popular languages, such as Python, JavaScript, and Ruby.
See my repo for : GraalVM Features.



Language Engineering and Language Recognizers

Software Language Engineering (SLE) is concerned with the engineering principles of software languages: their design, their implementation, and their evolution.
Software languages come in many shapes and sizes, including programming languages, modeling languages, data format languages, specification languages etc. rules Identifying or engineering appropriate languages for the various activities in software and systems development is one of the most important issues in software engineering.

antlr4 A language parser (a language recognizer, repo ) is a program that analyzes a string of symbols, such as code or a sentence, to determine its grammatical structure. This process, known as parsing or syntactic analysis, involves breaking down the input into its constituent parts and building a structured representation, like a tree, based on a formal grammar. One of the most popular language parser is ANTLR4: Learn more about it in my article: ANTLR Magic — Developing Language Applications Using Language Recognizer.
Try also antlr4ts - TypeScript/JavaScript target for ANTLR 4: antlr4ts, article.

Prominent Language Parsers:  
ANTLR - Mega Tutorial,    Xtext,    Chevrotain - Playground,   Langium,    ANTLR-alternatives,    JS-parsers,    list-of-parsers,   Comparison of Parser Generators

Building a Language Applications via Extensions

Developers each have their favorite IDE which facilitates their application development. So, let’s rephrase the question, have you ever wondered how these IDEs deliver modern coding and debugging experiences?

To enable the IDEs to support modern coding and debugging experiences, you need to implement a language server and a client based on the LSP (read blog - LSP Magic) and DAP (read blog - DAP Magic) specifications and integrate them into the IDE. antlr4 To become a client, the code editor (or IDE) adds a small extension, which provides a language-agnostic, front-end editing capability without any awareness of the semantics of the language.

Visual Studio Code provides smart editing features for different programming languages through Language Extensions APIs (e.g. see your first extension, language server extension guide, Git Usage) that enable rich language features. VS Code Extension Samples - GitHubRepo
Examples and blogs:
Shortest COBOL Grammar Support with ANTLR4,
Developing Language Applications Using Language Recognizer,
PL/I Language Support with Langium,
Langium Demo,