mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #11198 from ethereum/docs_lang_insprirations
[DOCS] Add "Language Influences" page
This commit is contained in:
		
						commit
						2a4a2d8f7b
					
				| @ -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>`_. | ||||
| 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 | ||||
| user-defined types among other features. | ||||
| @ -157,3 +159,4 @@ Contents | ||||
|    bugs.rst | ||||
|    contributing.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