noobの肖像

年を取るほど、カンマの重要性は低くなります。 読者に彼を一時停止する場所を決定させます。 -エリザベス・クラークソン・ズワート




このようなことは、20年前にコードにコメントしました( 注意、ちょっとしたドラマ ):



/*
 *    ,     . 
 *   ,     ,   
 *     ,    
 *  .   ,   ,    . 
 *     , ,   
 *   ,     .  
 *        
 * .   ,  ,     , 
 *   ,      .    
 *    ,   -    
 *    .
*/
counter++; //     

/*
 *       .   
 *      ,   
 *       . 
 *      ‘ref’,    
 *           . 
 *       ,     
 *     ‘pos’.  ,    
 *  .
*/
char* pos = buffer; //    

/*
, ...
*/
      
      







, ? ! , . ( , , , — ).







junior-. “The Tipping Point”, 2- , , . , . , :



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




. . - , .



:



. , , . .




, , , — , . , , . , , .



. .



, , :

(defun js2-parse-variables (in-for decl-type)
" 'var', 'const'  'let'   for-loop .
IN-FOR ,      init- for-.
DECL-TYPE  :  VAR  CONST  LET,    .
  "
(let ((result (make-js2-var-decl-node))
      destructuring-init
      destructuring
      s start tt init name node
      (continue t))
  ;; :
  ;; var foo = {a: 1, b: 2}, bar = [3, 4];
  ;; var {b: s2, a: s1} = foo, x = 6, y, [s3, s4] = bar;
  (while continue
    (setq destructuring nil
          s nil
          tt (js2-peek-token)
          start js2-token-start
          init nil)
    (if (or (= tt js2-LB) (= tt js2-LC))
        ;; , , var [a, b] = ...
        (setq destructuring (js2-parse-primary-expr))
      ;;   
      (js2-must-match js2-NAME "msg.bad.var")
      (setq name (make-js2-name-node))
      (js2-define-symbol decl-type js2-ts-string))
    (when (js2-match-token js2-ASSIGN)
      (setq init (js2-parse-assign-expr in-for)))
    (if destructuring
        (progn
          (if (null init)
              ;;  (var [k, v] in foo)  -
              (unless in-for
                (js2-report-error "msg.destruct.assign.no.init")))
          (setq node (make-js2-destructuring-init-node :start start
                                                       :end js2-ts-cursor
                                                       :lhs destructuring
                                                       :initializer init))
          (js2-node-add-children node destructuring init))
      ;;  ,   
      (setq node (make-js2-var-init-node :start start
                                         :end js2-ts-cursor
                                         :name name
                                         :initializer init))
      (js2-node-add-children node name init))
    (js2-block-node-push result node)
    (js2-node-add-children result node)
    (unless (js2-match-token js2-COMMA)
      (setq continue nil)))
  result))

      
      





, 20 . , ! ! ! “ !!!”, .



, Java Javascript, Emacs-Lisp , , .



, , . - Java Javascript Mozilla Rhino, - C- SpiderMonkey, , , - . .. , , . , , “” .



Java, Emacs-Lisp, . : . API-. , .



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







, , . , , , , ? , .



. , - ( - ), , , , . “ ” — , .



. , ,

, - . , , , , .



, , - “5-6 ”, — “”. : , 50 50 , , , . — .







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



, “ ”. , . , , - . ( - Finnegan's Wake, ). — , .



, , , .



, ( ), , , . , , , . , .



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



, .



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



, , . , , . , *-----*.







, — . , , . , . ! — .



— -. . , - — . , , .



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



, — . , : . — , . , , . — . , , .



, , , , , — .



-.



, , . . , .



, . , ? , “ ” . , , . - , - , — . .



, , . , - , — . , . . , - .



, , “ ”. , — , “ ”. , “-”. ( , , ).



, . , . , : . , — . -, , , . , .



- , “ ”. , . . . . , ( , ). , , , . , , .



. — , — . . — . — . , , , , Computer Science. — Computer Science. .







, , C++/Java ( Perl/Python/Ruby Modula-3/SML/Haskell) , , — , .



, . , , . , , , -, . , ? , . — , — API, . , , . , , , .



, C, Java. . Java , C, . — . , OO. , - , SmallTalk Lisp, . ( ) , .



, Java, — , , -, - . UML-, , - .



Perl, Python Ruby .. ? . — ( ). , ( C) , . , . , , , - Larry Wall java- . , … .



Haskell, OCaml ? 45- , , . . -- , “ ”. , . .



. , , “”. , — ? ( ), , . , “” , - , . java — , , , java. , java — “”.



“” . — , , — , . , , , . Java C++ — . - , , , “” ( ), , . ( , scala-, — ).



, , “”. , C++ Java : , .



. , , , ( ). , C++ Java , , - . , .



Java . , . . : . , , , . — .



“” . , , , . . , , , . — . . — , , .



Apache Struts WebWork . . , , , Struts “ Struts 2”:



… Struts 1 . , Ajax, .




Struts 2 Struts 1 , . WebWorks Struts 2.



JUnit 4. , , , Java 5 — . , , — , - . . — , .



Java-, , . IDE .



, Struts ? , Java, , IDE. IDE , . , , . , IDE , , , .



opensource- Java, -. - , , - Java. — Java (, -, Pascal), . , , .



“” . , . , , , , .



, .







— . , , .



, : ! — .



, , Java. . ? MyFunctionCallResult



ValueOne



ValueTwo



(, )? ( ) , ?



, : . , . , .



— API. . , , . — , -, .



. , . , — - , , , . .



, , , .







. , , “---”. , . . , . , . , , . , , - , , .



, !



All Articles