рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдкрд░ рд▓рд╛рдЗрдХрдмреЗрдЬрд╝

рдЫрд╡рд┐

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдмрд╕ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рдмреБрд░рд╛рдИ рди рдХрд╣рд╛ рдЬрд╛ рд╕рдХреЗ, рд▓рд┐рд╕реНрдк рдПрдХ рдЯрд╛рдЗрдкрд▓реЗрд╕ рднрд╛рд╖рд╛ рд╣реИ, рдФрд░ рд╕реА рдПрдХ рдЬреЛрд░рджрд╛рд░ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рднрд╛рд╖рд╛ рд╣реИред

рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЯрд╛рдЗрдкрд┐рдВрдЧ, рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕реБрдЧрдВрдзрд┐рдд, рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдВрдХ рдФрд░ рдШрд╛рддреАрдп рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рд╣реИред

рдореИрдВ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдХреЗ рд▓рдШреБ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рдФрд░ рдкреВрд░реНрдг рдПрдХред

рд▓рдШреБ рд╕рдВрд╕реНрдХрд░рдг


рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рджреЛ рдмрдбрд╝реЗ рдХреИрдВрдк рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЯрд╛рдЗрдк рдФрд░ рдЕрдирдбрд┐рд╕реНрдкреЗрдб ( рдЯрд╛рдЗрдкрд▓реЗрд╕ )ред рдкреВрд░реНрд╡, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реА, рдкрд╛рдпрдерди, рд╕реНрдХрд╛рд▓рд╛, рдкреАрдПрдЪрдкреА рдФрд░ рд▓реБрдЖ, рдФрд░ рдмрд╛рдж рд╡рд╛рд▓реЗ, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рднрд╛рд╖рд╛, рдлреЛрд░реНрде рдФрд░ рдмреНрд░реЗрдирдлрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдЪреВрдВрдХрд┐ "рдЯрд╛рдЗрдкрд▓реЗрд╕ рдЯрд╛рдЗрдкрд┐рдВрдЧ" рдПрдХ рдХреЙрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдк рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдХрдИ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрди рд╕рднреА рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░рдВрдЧрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрдерд┐рд░ рдХрдордЬреЛрд░ рд╕реНрдкрд╖реНрдЯ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИ, рдФрд░ рдкрд╛рдпрдерди рднрд╛рд╖рд╛ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдордЬрдмреВрдд рдирд┐рд╣рд┐рдд рд╣реИред

рдлрд┐рд░ рднреА, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХреЛрдИ рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдЧреЗ рджреЗрдЦ рдХрд░ рдореИрдВ рдХрд╣реВрдБрдЧрд╛ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдБ рдЭреВрда рдмреЛрд▓ рд░рд╣рд╛ рд╣реВрдБ - рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫред

рдФрд░ рдЖрдЧреЗ рдЪрд▓рддреЗ рд╣реИрдВред

рд╡рд┐рд╕реНрддреГрдд рд╕рдВрд╕реНрдХрд░рдг


рдпрджрд┐ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд▓рдЧрддрд╛, рддреЛ рдЕрдЪреНрдЫрд╛ред рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рд╕реНрддреГрдд рд▓рд┐рдЦрд╛ рд╣реИ? рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЫреЛрдЯреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рднреА рдЙрдкрдпреЛрдЧреА рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдлрд┐рдЯ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛, рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдПрдХ рдмрд┐рдирд╛ рддрдирд╛рд╡ рдХреЗ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╕рднреА рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реЛрдЧрд╛ред

рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЯрд╛рдЗрдкрд┐рдВрдЧ


рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рд╕рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рд╡рд┐рднрд┐рдиреНрди рд▓рдВрдмрд╛рдИ рдХреЗ рдмрд┐рдЯреНрд╕ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдорддреМрд░ рдкрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп (рдЕрд╕реЗрдВрдмрд▓реА рд▓реИрдВрдЧреНрд╡реЗрдЬ, рдлреЛрд░реНрде) рдФрд░ рдЧреВрдврд╝ (рдмреНрд░реЗрдирдлрдХ, рдПрдЪрдХреНрдпреВ 9, рдкреАрдЯ) рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╣, рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде, рдХреБрдЫ рдлрд╛рдпрджреЗ рд╣реИрдВред

рд▓рд╛рдн


рдХрдорд┐рдпреЛрдВ


рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЯрд╛рдЗрдкрд┐рдВрдЧ?

, . ( 86/86-64, ) , cx (16 ) rax (64 ).

mov cx, eax ;

, - ? , . , , .



image

, (static) (dynamic) , , .

, ( , ). , тАФ , ? ? , , ?

.





image


, тАФ . тАФ ( ) тАФ , .

? 3- : .

тАФ . , ( ) , , тАФ (-1).

(Python):
def find( required_element, list ):
    for (index, element) in enumerate(list):
        if element == required_element:
            return index

    return (-1)


, , , , . . тАФ - !

():
unsigned int find_int( int required_element, int array[], unsigned int size ) {
    for (unsigned int i = 0; i < size; ++i )
        if (required_element == array[i])
            return i;

    return (-1);
}

unsigned int find_float( float required_element, float array[], unsigned int size ) {
    for (unsigned int i = 0; i < size; ++i )
        if (required_element == array[i])
            return i;

    return (-1);
}

unsigned int find_char( char required_element, char array[], unsigned int size ) {
    for (unsigned int i = 0; i < size; ++i )
        if (required_element == array[i])
            return i;

    return (-1);
}


, Python, ? ?

, . , . C++ . :

( , C++):
template <class T>
unsigned int find( T required_element, std::vector<T> array ) {
    for (unsigned int i = 0; i < array.size(); ++i )
        if (required_element == array[i])
            return i;

    return (-1);
}


! Python . , 3-, !

, тАФ .

, , . - ( Haskell). - ( ), () .


, , :


, :


, ?



image

. ┬л ┬╗. тАФ strong typing.

, , , . ┬л ┬╗. тАФ weak typing.

, . .

, . , , . !

. , , , , , ┬л┬╗ ? тАФ , ! (, )

- ? , , , , .

?





, , ! ?

.

,

тАж . ┬л ┬╗ ?

, . тАФ . тАФ ( , , , -, , ).

. 3.5 тАФ ( тАФ ? ? ? ?).

тАФ , . .

, PL/I . ! !

, . ? , Pascal , . C#, Groovy Common Lisp.

, , . , .

Haskell.

, .

pi + 1, pi + 1.0 pi + float(1). pi + 1!

Haskell, , 1 . , , . !

sum x y, x y ( 1), тАФ sum , sum , sum , sum sum .

, .

, , . , ( Haskell, Java, C#, Python), ( C, JavaScript, Lua, PHP).

, ?



image

, , . тАФ explicit typing.

, , . тАФ implicit typing.

- , , тАФ , , .

, , ?





, , ( - ?), !

-

, - . . тАФ Haskell, , :
--    
add (x, y) = x + y

--   
add :: (Integer, Integer) -> Integer
add (x, y) = x + y


: , add :: (Num a) => a -> a -> a*, .. , Haskell'.

* int_index .

. , . 18 , !

, Haskell, . ( )

- -?
.

-

C++, C++11 ( C++0x), auto, , :
 :
//   
unsigned int a = 5;
unsigned int b = a + 3;

//   
unsigned int a = 5;
auto b = a + 3;


. . ( , , , ):
//   
std::vector<int> vec = randomVector( 30 );
for ( std::vector::const_iterator it = vec.cbegin(); ... ) { 
    ...
}

//   
auto vec = randomVector<int>( 30 );
for ( auto it = vec.cbegin(); ... ) { 
    ...
}


! . , - Haskell, ?

, decltype auto:
//   
int divide( int x, int y ) {
    ...
}

//   
auto divide( int x, int y ) -> decltype(x / y) {
    ...
}


, , (templates / generics) .



тАЬтАЭ.

JavaScript  -  |       | 
Ruby        -  |      | 
Python      -  |      | 
Java        -   |      | 
PHP         -  |       | 
C           -   |       | 
C++         -   |       | 
Perl        -  |       | 
Objective-C -   |       | 
C#          -   |      | 
Haskell     -   |      | 
Common Lisp -  |      | 
D           -   |      | 
Delphi      -   |      | 


( C# qxfusion):


- , CL, PHP Obj-C, - тАФ .


. , . ? ? ? , .

!


:
:

Source: https://habr.com/ru/post/In161205/


All Articles