Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Computer science
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
====Programming language theory and formal methods==== {{main|Programming language theory|Formal methods}} Programming language theory is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of [[programming language]]s and their individual [[Programming language#Elements|features]]. It falls within the discipline of computer science, both depending on and affecting mathematics, software engineering, and [[linguistics]]. It is an active research area, with numerous dedicated academic journals. Formal methods are a particular kind of mathematically based technique for the [[formal specification|specification]], development and [[formal verification|verification]] of software and [[computer hardware|hardware]] systems.<ref>Phillip A. Laplante, (2010). ''Encyclopedia of Software Engineering'' Three-Volume Set (Print). CRC Press. p. 309. {{ISBN|978-1-351-24926-3}}.</ref> The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design. They form an important theoretical underpinning for software engineering, especially where safety or security is involved. Formal methods are a useful adjunct to software testing since they help avoid errors and can also give a framework for testing. For industrial use, tool support is required. However, the high cost of using formal methods means that they are usually only used in the development of high-integrity and [[life-critical system]]s, where safety or [[computer security|security]] is of utmost importance. Formal methods are best described as the application of a fairly broad variety of [[theoretical computer science]] fundamentals, in particular [[logic in computer science|logic]] calculi, [[formal language]]s, [[automata theory]], and [[program semantics]], but also [[type systems]] and [[algebraic data types]] to problems in software and hardware specification and verification. {| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15" |- | [[File:IF-THEN-ELSE-END flowchart.svg|96px]] | <math>\Gamma\vdash x: \text{Int}</math> | [[File:Compiler.svg|96px]] | [[File:Python add5 syntax.svg|96px]] | [[File:Prop-tableau-1.svg|96px]] | [[File:Coq plus comm screenshot.jpg|96px]] |- | [[Semantics (computer science)|Formal semantics]] | [[Type theory]] | [[Compiler design]] | [[Programming language]]s | [[Formal verification]] | [[Automated theorem proving]] |}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)