mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
adding language influences page
This commit is contained in:
parent
1eff128b6d
commit
391343564b
@ -12,6 +12,8 @@ within the Ethereum state.
|
|||||||
|
|
||||||
Solidity is a `curly-bracket language <https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages>`_.
|
Solidity is a `curly-bracket language <https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages>`_.
|
||||||
It is influenced by C++, Python and JavaScript, and is designed to target the Ethereum Virtual Machine (EVM).
|
It is influenced by C++, Python and JavaScript, and is designed to target the Ethereum Virtual Machine (EVM).
|
||||||
|
You can find more details about which languages Solidity has been inspired by in
|
||||||
|
the :doc:`language influences <language-influences>` section.
|
||||||
|
|
||||||
Solidity is statically typed, supports inheritance, libraries and complex
|
Solidity is statically typed, supports inheritance, libraries and complex
|
||||||
user-defined types among other features.
|
user-defined types among other features.
|
||||||
@ -157,3 +159,4 @@ Contents
|
|||||||
bugs.rst
|
bugs.rst
|
||||||
contributing.rst
|
contributing.rst
|
||||||
brand-guide.rst
|
brand-guide.rst
|
||||||
|
language-influences.rst
|
25
docs/language-influences.rst
Normal file
25
docs/language-influences.rst
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
###################
|
||||||
|
Language Influences
|
||||||
|
###################
|
||||||
|
|
||||||
|
Solidity is a `curly-bracket language <https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages>`_
|
||||||
|
that has been influenced and inspired by several well-known programming languages.
|
||||||
|
|
||||||
|
Solidity is most profoundly influenced by C++, but also borrowed concepts from languages like
|
||||||
|
Python, JavaScript, and others.
|
||||||
|
|
||||||
|
The influence from C++ can be seen in the syntax for variable declarations, for loops, the concept
|
||||||
|
of overloading functions, implicit and explicit type conversions and many other details.
|
||||||
|
|
||||||
|
In the early days of the language, Solidity used to be partly influenced by JavaScript.
|
||||||
|
This was due to function-level scoping of variables and the use of the keyword ``var``.
|
||||||
|
The JavaScript influence was reduced starting from version 0.4.0.
|
||||||
|
Now, the main remaining similarity to JavaScript is that functions are defined using the keyword
|
||||||
|
``function``. Solidity also supports import syntax and semantics that
|
||||||
|
are similar to those available in JavaScript. Besides those points, Solidity looks like
|
||||||
|
most other curly-bracket languages and has no major JavaScript influence anymore.
|
||||||
|
|
||||||
|
Another influence to Solidity was Python. Solidity's modifiers were added trying to model
|
||||||
|
Python's decorators with a much more restricted functionality. Furthermore, multiple inheritance, C3 linearization,
|
||||||
|
and the ``super`` keyword are taken from Python as well as the general assignment and copy semantics of value
|
||||||
|
and reference types.
|
Loading…
Reference in New Issue
Block a user