 .    
 . 


  ()
    仠      ,    .     ,         ,  ,    ,              .

            .       ,  ,    ,            ,    .



 :a4.pdfios.ePub   .





 

 

   








2018


 . 

  . 

  . 

 . , . , . 

 . , . 


ISBN 978-5-4461-0772-8



   "", 2018



  .                     .


   ,       ,       











   ,   ?

    ,         - ,  -, , ;   ,  ,   ,  .

     .     ,             , , , ,   ,   .              ,  - ,  ,  ,    .       ,   .

    ,   ,    ,     ,          .                 .  , ,     ,   .       ?    ,      , , ,   ,      .        , ,   ,       ,  ..,   .

  ,  ,          ,     .    .         ,         .           ,       ,      .     ,          ,    ,         ,   !

    ,        .      ,    PowerPoint     . ,      ,      ,  ,      ,    :        .         .       :  ;  ;     ; , , .        .

,              ,       .            .           .       ,  ,      ,  .



 , ,    ,  ,   ,    ,       .

 [1 -  . . . .]

    ,    ,         .          ,           .



       ,     .

 

, ,       ,              .            :     ,      ,       .



  ,     ,   .

    

 ,     ,    ,   ;              .

       :   .  ,     ,        ?              ?



     ,          ,     ,  .

 

  ;      ;   .

    .

     ,          .     ,        .      ,           .

       .   ,  ,           ,   ,   .

    ,  .              .  ,      ,  ,    .       ,   .   -   .      .             ,         .



   ,      .

 

    ,     ,     ,      .  ,    ,         .



  .

 . 

   .



 
, 2017




 


 , ,     comp@piter.com ( ,  ).

     !

 -  www.piter.com       .







    .  . -   .          ?

       1964 ,  12 .    2016-,        .     -     ,   ,   ,    .

   ,   ,   .          ,     -,  ,    ,   , ,  ,  ,   ,    ,  .

     ,            ,  ,   ,         ,  .

    ,     .         :

       !

,    ,     ,     .           ?    ,          .

     ,  ,       .        ,       , 4   , 32           10   .      ,    .   MacBook,   i7   ,        2,8 ,  16   , 1    (  SSD)     2880?1800,    .     .   ,   MacBook     1022    ,      .

      .        .           .     ,    ( )       .

       ,    ?    .   ,  2000     .   ,         4,5 .     - ,      100 000 .

      .       ,       1960-.   The Forbin Project[2 - ,     1970 ,       :  . . .], The Moon Is a Harsh Mistress[3 -   ,   . . .]  2001: A Space Odyssey[4 - ,   1968 ,       2001 :  . . .]       ,     .     ,  .       ,     .

           :         .     if,     while.

,   , ,          .   ,    Java, C#  Ruby   - .            ,    ,   1950-  1960- .

    ,  ,      50 .    .    .        .

    1966 ,  [5 -  ,          .]  2016-,    MacBook,  IntelliJ    Java,     ,    .        .  Java     C    Fortran.

      1966-   ,       PDP-8,    ,   10   ,     ,    .        .       .

   :                .          .             ,        .

   ,    ,         ,      .     , ,  ,  .   .     ,   ,    ,   ,   1946-      .

  : ,  ,     .      . ,     ,     .

             .







   (  -  ),        :



  (Chris Guzikowski)

  (Chris Zahn)

  (Matt Heuser)

  (Jeff Overbey)

  (Micah Martin)

  (Justin Martin)

  (Carl Hickman)

  (James Grenning)

  (Simon Brown)

  (Kevlin Henney)

  (Jason Gorman)

  (Doug Bradbury)

  (Colin Jones)

  (Grady Booch)

  (Kent Beck)

  (Martin Fowler)

  (Alistair Cockburn)

 . (James O. Coplien)

  (Tim Conrad)

  (Richard Lloyd)

  (Ken Finder)

  (Kris Iyer (CK))

  (Mike Carew)

 (Jerry Fitzpatrick)

  (Jim Newkirk)

  (Ed Thelen)

  (Joe Mabel)

  (Bill Degnan)



  .

            ,        (Jim Weirich)       .  , !




 







 .  (Robert C. Martin),      (Uncle Bob),     1970 .   cleancoders.com,      ,    Uncle Bob Consulting LLC,          .      8th Light, Inc.  .              .       C++ Report    Agile Alliance.

      ,  The Clean Coder[6 -  .  .     . .: , 2016. . .], Clean Code[7 -  .  : ,   . .: , 2013. . .], UML for Java Programmers, Agile Software Development[8 -  .   . , , . .: , 2004. . .], Extreme Programming in Practice, More C++ Gems, Pattern Languages of Program Design 3  Designing Object Oriented C++ Applications Using the Booch Method.




I.



   ,      .      .        ,      ,      PHP  Ruby.          ,    -,   ,     . ,      ,   .  ,    -        .

 ,    ,   .    .      ,       .    ,    ,        .      ,     .            .

     ,  - :         .          -.     ,     .

           .     .  .  ,      .

,    .     .    ,          .       ,    ,  .     ,      .  ,        ,    .     .

       .    .     - ?            ,   ,   ,         ?         ?    ,          ,     ?      ,  ,           ?     ?

 ,      .          ,        .




1.    ?










          .   ?   ?   ?

              ,     .  ,  ,       .  .

       ,     ,            .    ,     ,    .

   ,    .    ? !     ?    ,  , ,        .     ,  ,      .     ,   .  ,        .  ,     ,         .    ,    ,   .

 ,     ,    .   ,          .

      .         .    ,   .    ;    ,    .       .




?


     ,     ?      ,    :



            .


       ,     .          ,    .        ,    .    .




  



       .     ,   ,     .

     - .   ,   .  ,    .1.1,      !






.1.1.   - .       (Jason Gorman)



         ,      (.1.2).






.1.2.     



,   -  .   ,         , ,        .

    -  :  .1.3        .






.1.3.       



    .         ,          ,    .

     ?      8    40  ,    1?




 


    .    ,                        ,    ,         .

 .1.4 ,        .    ,   100%,        .    ,   ,         .






.1.4.      



   ,     ,         .     .

  ,      ,      .          ,     .      ,        ,   ,       .




  


  ,   ,       !  .1.5            .






.1.5.         



    1,         .           .          20       .

     ,  . ,   - .  ,      ,  ,  .         .

     .1.5            .1.2. ,        ,     ,   20         !  ,     ,   ,   - ,   .

   ?    ?      ?    ,          ?




  ?


 2600          .      -:

     ;

     ,     ;

  ,   .

   .       ,      ,    ,     .

          .  ,   , .      .         ,  ,  , ,      .

     :     ,      !       ,         .    ,                     .

      .       ,       ,    ,  ,  .    ,        .

         ,         .     ,   ,       .   ,        .

  ,     ,         ,          . ,    ,   , ,           ,     .   ,      ,    ,     .

  .1.6   ,       .                   .   ,        .          30 .  ,      






.1.6.           TDD



      (Test-Driven Development; TDD).      ,      .

      ,   .1.6.        .  ,   ,    TDD,     10% ,      TDD,     ,   TDD,     ,   TDD.

-,    ,    .   ,      ,    ,         :



  .


      ,   .                       ,   .

  ,    ,           ,         .   ,      ,    ,      ,      .       :



,  ,     ,   .








 ,  ,                  .

         ,    .   ,          ,  ,      .

      .   ,   ,    ,     ,     .




2.   










      :   .        . ,  ,     - ,   .  ,        ,      .







      .    ,           .             .   ,       .

   ,       .

  ,     .  ,           .   .







         .    ;  廅        .

     ,       .           ,     .

                 .         ,            .          ,     .

              .          .         ,   ,     ,   .

            .    ,     ,          .     ,        .

         , ,   ,    .       ,        .

,  ,    .      -  ,   ,             .        .




 


  ?   ?          ?

     ,   ,    .      .   .           .

        ,    ,   ,        .     .

   ,    ,              .       .

     .   ,   ,   .   ,    ,       .           .

  ,       ,  ,    ,     ,           .      ,         ,      ,       ,      .






 


             (.2.1).      :



     ,   .  ,  ,   ,      [9 -  ,   -   1954 .].







.2.1.  



     .     ,    .

         ,    .

      ,    .

,              .         .

1.  .

2.   .

3.   .

4.    .

 ,               ,         .

     ,   3    1.  ,          ,  -    .                .

     ,      .         .            .




  


        ,       .  ,     .      , ,   ,   ,     ,  ,     .   .

        .             . :         .        ,    .       .     ,   .

   ,        . ,     ,     ,       .   ,         ,    .

 ,       ,      ,                 .   , ,       ,    .




II. :  



     ,           .

      1938 .   ,    ,    ,       .  1945         ,  ,      (  ).      ,  ,  , ,      .    .

       .       . -,   1940-  .             .  1951       A0.      .  1953     Fortran (    ).       : COBOL, PL/1, SNOBOL, C, Pascal, C++, Java    .

,   ,   ,     .     ,     .  ,       .        .  ,    ,     - ,  .




3. 










        :  , -    .






 


,    (    ),    ,      1968 .  ,     ( goto)    .      ,        if/then/else  do/while/until.

 ,  , :



       .





- 


 ,   ,  ,      ,  1966-,   -    .    ,    ALGOL           (),    ,   ,      .       ,      ,      .           .

 ,  , :



-       .





 


 ,    ,     .         .         ׸,   1936   - ( ?-),     ,         .  ?-     LISP,   1958   .   ?-         .   ,       .        ,    ,     .

 ,  , :



     .





  


   ,          :     - .      .   -  ,    .       ,    .

    ,  ,    -   .        goto,      .      -,   ?

, .  ,     ,   ,    , -   .        ,           ,  1958  1968 .          .







         ?  .        ,               ,           .

,         : ,     .




4. 










       1930 .         ,      1948         , ,   .   1952 ,   21  (   9    ),               .

 1955 ,         ,    ,          .          .  1957      .            .            ;       .         -.

        ,   .  ,         ,             .  ,              .

       ,    , , ,     (  ).            .          .        ,    .

        .







    ,              .       ,          .       ,  ,   ,        .

        .       , ,   .  ,        .  ,          ,       .

 ,            .      .

    ,       goto                   ,       .

     goto    .  ,      goto       ,   if/then/else  do/while. ,     ,       .

 ,            .           , ,     ,    : ,   .

   :  ,    ,      ,      .    .

 ,        .           .        .

         ,     .          ,    .

    .    ,    .         . ,    , ,     N  , ,     N + 1 .     ,        .

     ,    .            .




 


 1968      CACM    Go To Statement Considered Harmful (   Go To)[10 -        A Case Against the Goto Statement (   goto),   CACM    . . .],      .           [11 -          http://hosting.vspu.ac.ru/~chul/dijkstra/goto/goto.htm. . .].

   .      ,              .             .

    .      ;    .       .

        :  .       goto     , , ,  .        goto,  ,   LISP,    .

        ,     .          .

    break      Java   goto




  .


   .

   ,     (https://www.litres.ru/robert-s-martin/chistaya-arhitektura-iskusstvo-razrabotki-program-39113892/)  .

      Visa, MasterCard, Maestro,    ,   ,     ,  PayPal, WebMoney, ., QIWI ,       .



notes








1


 . . . .




2


,     1970 ,       :  . . .




3


  ,   . . .




4


,   1968 ,       2001 :  . . .




5


 ,          .




6


 .  .     . .: , 2016. . .




7


 .  : ,   . .: , 2013. . .




8


 .   . , , . .: , 2004. . .




9


 ,   -   1954 .




10


       A Case Against the Goto Statement (   goto),   CACM    . . .




11


         http://hosting.vspu.ac.ru/~chul/dijkstra/goto/goto.htm. . .


