-
Notifications
You must be signed in to change notification settings - Fork 5.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
28 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |