Software Programming Language: Difference between revisions
Jump to navigation
Jump to search
(Redirected page to Programming Language) |
(Removed redirect to Programming Language) Tag: Removed redirect |
||
Line 1: | Line 1: | ||
# | A [[Software Programming Language]] is a [[machine processable]] [[formal language]] that can be used to create a [[software program]]. | ||
* <B>AKA:</B> [[Programming Language|Computer Programming Language]]. | |||
* <B>Context:</B> | |||
** It can typically have a [[Programming Language Syntax]] that defines [[valid statement]]s and [[expression structure]]s. | |||
** It can typically include [[Semantic Rule]]s that determine the [[meaning]] and [[behavior]] of [[program construct]]s. | |||
** It can typically support [[Data Structure]] definition and [[manipulation]] through [[variable]]s and [[operator]]s. | |||
** It can typically provide [[Control Flow Mechanism]]s such as [[sequence]], [[selection]], and [[iteration]]. | |||
** It can typically enable [[Abstraction]] through [[function]]s, [[procedure]]s, or [[module]]s. | |||
** It can typically specify [[Input/Output Operation]]s for interaction with [[external environment]]s. | |||
** ... | |||
** It can often include a [[Standard Library]] of [[predefined function]]s and [[utility routine]]s. | |||
** It can often support [[Error Handling]] through [[exception mechanism]]s or [[error code]]s. | |||
** It can often implement [[Memory Management]] through [[manual allocation]], [[garbage collection]], or [[reference counting]]. | |||
** It can often facilitate [[Code Organization]] through [[namespace]]s, [[package]]s, or [[module system]]s. | |||
** It can often provide [[Debugging Capability]] through [[diagnostic tool]]s and [[tracing mechanism]]s. | |||
** ... | |||
** It can range from being a [[Low-level Programming Language]] to being a [[High-level Programming Language]]. | |||
** It can range from being a [[General-Purpose Programming Language]] to being a [[Domain-Specific Programming Language]]. | |||
** It can range from being a [[Dynamic Programming Language]]/[[Interpreted Programming Language]] to being a [[Static Programming Language]]/[[Compiled Programming Language]]. | |||
** It can range, based on its [[Data Type System]], from being an [[Untyped Programming Language|Untyped Language]] to being a [[Typed Programming Language|Typed Language]] ([[Strongly Typed Programming Language|strongly typed]] to [[Weakly Typed Programming Language|weakly typed]]); ([[Statically Typed Programming Language|statically typed]] to [[Dynamically Typed Programming Language|dynamically typed]]). | |||
** It can range from being a [[Procedural Programming Language]] to being a [[Declarative Programming Language]], depending on its [[execution model]]. | |||
** It can range from being a [[Simple Programming Language]] to being a [[Complex Programming Language]], depending on its [[feature set]] and [[expressiveness]]. | |||
** ... | |||
** It can have a [[set]] of [[Primitive Data Type]]s. | |||
** It can have [[Syntax Highlighting]] to improve [[code readability]] and [[visual distinction]]. | |||
** It can have [[Documentation System]]s for [[code annotation]] and [[api description]]. | |||
** It can have [[Testing Framework]]s to ensure [[code correctness]] and [[functional compliance]]. | |||
** It can have [[Performance Optimization]] techniques for [[execution efficiency]]. | |||
** ... | |||
** It can reference a [[Software Programming Paradigm]], such as [[imperative programming]], [[functional programming]], or [[logic programming]]. | |||
** It can reference a [[Programming Language Paradigm]], such as an [[Object-Oriented Programming Language]] or a [[Functional Programming Language]]. | |||
** It can facilitate the design of [[Software]]. | |||
** ... | |||
* <B>Examples:</B> | |||
** [[System Programming Language]]s, such as: | |||
*** [[Assembly Programming Language]]s for [[hardware-specific instruction]]. | |||
*** [[C Language]] for [[operating system development]]. | |||
*** [[Rust Programming Language]] for [[memory-safe system programming]]. | |||
** [[Application Programming Language]]s, such as: | |||
*** [[Imperative Programming Language]]s, such as: | |||
**** [[Fortran Programming Language|Fortran]] for [[scientific computation]]. | |||
**** [[Algol-like Programming Language|Algol]] for [[algorithm expression]]. | |||
**** [[C Language|C]] for [[performance-critical application]]. | |||
**** [[Perl Programming Language|Perl]] for [[text processing]]. | |||
*** [[Object-Oriented Programming Language]]s, such as: | |||
**** [[C++]] for [[resource-constrained system]]. | |||
**** [[Java Programming Language|Java]] for [[cross-platform application]]. | |||
**** [[C# Programming Language|C#]] for [[Windows platform development]]. | |||
**** [[Python Programming Language]] for [[general-purpose scripting]]. | |||
** [[Specialized Programming Language]]s, such as: | |||
*** [[Declarative Programming Language]]s, such as: | |||
**** [[SQL]] for [[database query expression]]. | |||
**** [[Prolog Programming Language]] for [[logic programming]]. | |||
*** [[Matrix Programming Language]]s, such as: | |||
**** [[MATLAB Language]] for [[numerical computation]]. | |||
**** [[R Programming Language]] for [[statistical computation]]. | |||
*** [[Functional Programming Language]]s, such as: | |||
**** [[Haskell Programming Language|Haskell]] for [[pure functional programming]]. | |||
**** [[LISP Programming Language]] for [[symbolic computation]]. | |||
**** [[Clojure Programming Language]] for [[functional JVM programming]]. | |||
** [[Experimental Programming Language]]s, such as: | |||
*** [[English as a Programming Language]] for [[natural language programming]]. | |||
** ... | |||
* <B>Counter-Examples:</B> | |||
** [[Natural Language]]s, which lack [[formal syntax]] and [[unambiguous semantic]]s. | |||
** [[Mathematical Language]]s, which express [[abstract concept]]s rather than [[computational instruction]]s. | |||
** [[Markup Language]]s, such as [[HTML]] or [[XML]], which describe [[document structure]] rather than [[computational process]]s. | |||
** [[Configuration Language]]s, which specify [[program setting]]s rather than [[executable algorithm]]s. | |||
** [[Query Language]]s that are not [[Turing complete]], which can only express [[data retrieval]] rather than [[general computation]]. | |||
* <B>See:</B> [[Procedural Semantic Theory]], [[Abstract Machine]], [[Compiler]], [[Interpreter]], [[Algorithm]], [[Syntax]], [[Semantics]], [[Source Code]], [[Software Development]], [[Computer Program]]. | |||
---- | |||
---- | |||
== References == | |||
=== 2015 === | |||
* The RedMonk Programming Language Rankings: January 2015 http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/ | |||
** QUOTE: 1-[[JavaScript]], 2-[[Java]], 3-[[PHP]], 4-[[Python]], 5-[[C#]], 5-[[C++]], 5-[[Ruby]], 8-[[CSS]], 9-[[C]], 10-[[Objective-C]], 11-[[Perl]], 11-[[Shell]], 13-[[R]], 14-[[Scala]], 15-[[Haskell]], 16-[[Matlab]], 17-[[Go]], 17-[[Visual Basic]], 19-[[Clojure]], 19-[[Groovy]], | |||
=== 2013 === | |||
* (Wikipedia, 2013) ⇒ http://en.wikipedia.org/wiki/Programming_language#Syntax | |||
** A programming language's surface form is known as its [[syntax (programming languages)|syntax]]. Most programming languages are purely textual; they use sequences of text including words, numbers, and punctuation, much like written natural languages. On the other hand, there are some programming languages which are more [[visual programming language|graphical]] in nature, using visual relationships between symbols to specify a program. <P> The syntax of a language describes the possible combinations of symbols that form a syntactically correct program. The meaning given to a combination of symbols is handled by semantics (either [[Formal semantics of programming languages|formal]] or hard-coded in a [[Reference implementation (computing)|reference implementation]]). Since most languages are textual, [[this article]] discusses textual syntax. <P> Programming language syntax is usually defined using a combination of [[regular expression]]s (for [[lexical analysis|lexical]] structure) and [[Backus–Naur Form]] (for [[context-free grammar|grammatical]] structure). Below is a simple grammar, based on [[Lisp (programming language)|Lisp]]: | |||
<pre> | |||
expression ::= atom | list | |||
atom ::= number | symbol | |||
number ::= [+-]?['0'-'9']+ | |||
symbol ::= ['A'-'Z'<nowiki>'</nowiki>a'-'z'].* | |||
list ::= '(' expression* ')' | |||
</pre> | |||
* | |||
** This grammar specifies the following: | |||
*** an ''expression</i> is either an ''atom'' or a ''list'' ; | |||
*** an ''atom'' is either a ''number'' or a ''symbol'' ; | |||
*** a ''number'' is an unbroken sequence of one or more decimal digits, optionally preceded by a plus or minus sign; | |||
*** a ''symbol'' is a letter followed by zero or more of any characters (excluding whitespace); and | |||
*** a ''list'' is a matched pair of parentheses, with zero or more ''expressions'' inside [[it]]. | |||
** The following are examples of well-formed token sequences in this grammar: '<code>12345</code>', '<code>()</code>', '<code>(a b c232 (1))</code>' | |||
<references/> | |||
---- | |||
__NOTOC__ | |||
[[Category:Concept]] | |||
[[Category:Computing]] | |||
[[Category:Software Development]] | |||
[[Category:Quality Silver]] |
Latest revision as of 04:41, 2 March 2025
A Software Programming Language is a machine processable formal language that can be used to create a software program.
- AKA: Computer Programming Language.
- Context:
- It can typically have a Programming Language Syntax that defines valid statements and expression structures.
- It can typically include Semantic Rules that determine the meaning and behavior of program constructs.
- It can typically support Data Structure definition and manipulation through variables and operators.
- It can typically provide Control Flow Mechanisms such as sequence, selection, and iteration.
- It can typically enable Abstraction through functions, procedures, or modules.
- It can typically specify Input/Output Operations for interaction with external environments.
- ...
- It can often include a Standard Library of predefined functions and utility routines.
- It can often support Error Handling through exception mechanisms or error codes.
- It can often implement Memory Management through manual allocation, garbage collection, or reference counting.
- It can often facilitate Code Organization through namespaces, packages, or module systems.
- It can often provide Debugging Capability through diagnostic tools and tracing mechanisms.
- ...
- It can range from being a Low-level Programming Language to being a High-level Programming Language.
- It can range from being a General-Purpose Programming Language to being a Domain-Specific Programming Language.
- It can range from being a Dynamic Programming Language/Interpreted Programming Language to being a Static Programming Language/Compiled Programming Language.
- It can range, based on its Data Type System, from being an Untyped Language to being a Typed Language (strongly typed to weakly typed); (statically typed to dynamically typed).
- It can range from being a Procedural Programming Language to being a Declarative Programming Language, depending on its execution model.
- It can range from being a Simple Programming Language to being a Complex Programming Language, depending on its feature set and expressiveness.
- ...
- It can have a set of Primitive Data Types.
- It can have Syntax Highlighting to improve code readability and visual distinction.
- It can have Documentation Systems for code annotation and api description.
- It can have Testing Frameworks to ensure code correctness and functional compliance.
- It can have Performance Optimization techniques for execution efficiency.
- ...
- It can reference a Software Programming Paradigm, such as imperative programming, functional programming, or logic programming.
- It can reference a Programming Language Paradigm, such as an Object-Oriented Programming Language or a Functional Programming Language.
- It can facilitate the design of Software.
- ...
- Examples:
- System Programming Languages, such as:
- Application Programming Languages, such as:
- Imperative Programming Languages, such as:
- Fortran for scientific computation.
- Algol for algorithm expression.
- C for performance-critical application.
- Perl for text processing.
- Object-Oriented Programming Languages, such as:
- Imperative Programming Languages, such as:
- Specialized Programming Languages, such as:
- Declarative Programming Languages, such as:
- Matrix Programming Languages, such as:
- Functional Programming Languages, such as:
- Experimental Programming Languages, such as:
- ...
- Counter-Examples:
- Natural Languages, which lack formal syntax and unambiguous semantics.
- Mathematical Languages, which express abstract concepts rather than computational instructions.
- Markup Languages, such as HTML or XML, which describe document structure rather than computational processs.
- Configuration Languages, which specify program settings rather than executable algorithms.
- Query Languages that are not Turing complete, which can only express data retrieval rather than general computation.
- See: Procedural Semantic Theory, Abstract Machine, Compiler, Interpreter, Algorithm, Syntax, Semantics, Source Code, Software Development, Computer Program.
References
2015
- The RedMonk Programming Language Rankings: January 2015 http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/
2013
- (Wikipedia, 2013) ⇒ http://en.wikipedia.org/wiki/Programming_language#Syntax
- A programming language's surface form is known as its syntax. Most programming languages are purely textual; they use sequences of text including words, numbers, and punctuation, much like written natural languages. On the other hand, there are some programming languages which are more graphical in nature, using visual relationships between symbols to specify a program.
The syntax of a language describes the possible combinations of symbols that form a syntactically correct program. The meaning given to a combination of symbols is handled by semantics (either formal or hard-coded in a reference implementation). Since most languages are textual, this article discusses textual syntax.
Programming language syntax is usually defined using a combination of regular expressions (for lexical structure) and Backus–Naur Form (for grammatical structure). Below is a simple grammar, based on Lisp:
- A programming language's surface form is known as its syntax. Most programming languages are purely textual; they use sequences of text including words, numbers, and punctuation, much like written natural languages. On the other hand, there are some programming languages which are more graphical in nature, using visual relationships between symbols to specify a program.
expression ::= atom | list atom ::= number | symbol number ::= [+-]?['0'-'9']+ symbol ::= ['A'-'Z''a'-'z'].* list ::= '(' expression* ')'
-
- This grammar specifies the following:
- an expression is either an atom or a list ;
- an atom is either a number or a symbol ;
- a number is an unbroken sequence of one or more decimal digits, optionally preceded by a plus or minus sign;
- a symbol is a letter followed by zero or more of any characters (excluding whitespace); and
- a list is a matched pair of parentheses, with zero or more expressions inside it.
- The following are examples of well-formed token sequences in this grammar: '
12345
', '()
', '(a b c232 (1))
'
- This grammar specifies the following: