Software de escritura: ¿Por qué aprender FP en JavaScript?

Este artículo es parte de la serie de software de escritura sobre programación funcional y diversas técnicas para escribir programas JavaScript ES6 +, comenzando desde lo básico. Sección anterior: Software de escritura: Introducción





Olvídese de todo lo que sabía sobre JavaScript e intente interpretar este artículo como si fuera un programador principiante. Para ayudarlo, cubriremos JavaScipt desde los conceptos básicos, como si nunca hubiera visto JavaScript. Bueno, si eres principiante, estás de suerte. ¡Finalmente, intentemos aprender ES6 y programación funcional desde cero! Afortunadamente, todos los conceptos nuevos se explorarán en el camino, pero no cuente demasiado con eso.





Si es un desarrollador experimentado que ya está familiarizado con JavaScript o algún lenguaje puramente funcional, entonces podría pensar que JavaScript es una forma divertida de descubrir el mundo * [FP]: la programación funcional. Deje estos pensamientos a un lado y trate de mirar el texto con los ojos abiertos. Puede descubrir un nivel oculto en la programación de JavaScript, un nivel que nunca supo que existía.





Dado que este artículo tiene el título "Software de escritura", y FP es obviamente una forma de escribir un programa (usando composición funcional, funciones de orden superior, etc.), entonces podría preguntar por qué no tomamos Haskell, ClojureScript , o Elm en lugar de JavaScript.





JavaScript contiene características importantes necesarias para FP:





  1. . , .. , . , , , , .





  2. -. ,  x => x * 2



      JavaScript. .





  3. . - . . , , , , . , . - , . ,  add(1)(2)



      1



      ,  add(1)



    . :





/*
 *   :
 * const add = function (x) {
 *     return function (y) {
 *         return x + y;
 *     }    
 * }
 */
const add = x => y => x + y;
const summ = add(1)(2);
      
      



JavaScript

JavaScript - , , .. . : () (, ), , ; - , - - . - , - , , .





- . :





const foo = {
  bar: 'baz'
};
foo.bar = 'qux'; // 
      
      



, . .





, JavaScript:





  1. . "" . .





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





  3. . - . .  for



    while



      do ... while



    .





: JavaScript "" (.. - . .). , . , JavaScript "" .





: . JavaScript , , , ,  Immutable.js  Mori. , ECMAScript .





, , ,  const



  ES6. ,  const



, . ,  const



  .





 const



  , , . JavaScript  freeze()



, , , - , . , JavaScript , .





: , JavaScript , " ". ( - . .).





. JavaScript, , ES6. , , Babel ( JavaScript , ES6 ES5), , .





: , .





JavaScript ,

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





, , , , -, , "".





" - , ?" ~ , , . ", "





, , . - , :





" , , "", , , "", "". ~ . " ".





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





JavaScript , , , .





, :





"... , ++ ( ) Java, "", "", , HTML."





Netscape , , , Scheme ( Lisp). :





" Netscape " Scheme" ".





JavaScript :





" , Java. Perl, Python Tcl Scheme."





, :





  1. Scheme





  2. Java





:





" , , scheme- self- ( ) (, , Self JavaScript - . .). Java, y2k, , ."





"" Java- , - JavaScript:





  • -  new



    , -





  •  class



       extends



     





  • , .





: .





, JavaScript , "" ( Java, Flash ActiveX ).





, , JavaScript.





, , - JavaScript. , WebAssembly - , WebAssembly - JavaScript (AST). , WebAssembly JavaScript, ASM.js.





JavaScript :





, , JavaScript .





JavaScript . JavaScript , , , .





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





JavaScript , ,  npm



.





JavaScript - . , , , , , - , Java, Lisp C. JavaScript , , .





, JavaScript . , , , , ES6 - JavaScript , . JavaScript , , ?





JavaScript , , . Netflix ( Anglular 2+) , RxJS. Facebook , , Facebook Instagram. PayPal, KhanAcademy Flipkart Redux .





: Angular, React, Redux Lodash JavaScript, , Lodash Redux, , JavaScript .





" JavaScript?". , JavaScript , . JavaScript , " " Lisp, . , Haskell , Haskell.





. Haskell , JavaScript , .





, , JavaScript .








All Articles