Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Conclusiones

23/23
Recursos

¡Felicitaciones por terminar el Curso de Programación Funcional en JavaScript!

Ahora conocemos la diferencia entre escribir código de forma imperativa y declarativa, también dominamos conceptos como Closures, Currying, Funciones puras, inmutabilidad, entre otros. Gracias a esto podemos escribir código mucho más fácil de leer y testear.

No olvides completar el proyecto del curso, aprobar el examen y tomar otros cursos excelentes para complementar todo lo que aprendiste:

Aportes 23

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Dato curioso:
Aún cuando en JavaScript se pueden implementar los principios básicos de la Programación Funcional, este no es un lenguaje ideal para el máximo aprovechamiento de los beneficios de este paradigma, sino que más bien ha ido adoptando estos conceptos y técnicas para hacerse más robusto y acorde con areas del conocimiento que son más estrictas y rigurosas, como es el caso de las Matemáticas.

De hecho es poco conocido por los desarrolladores en general que existen lenguajes de programación que realmente fueron creados pensando en este paradigma desde su esencia. A estos lenguajes se les llama Puros.

A continuación una lista de lenguajes Puros e Impuros que implementan los principios de la Programación Funcional.

Puros:

  • Agda
  • Charity
  • Clean
  • Coq (Gallina)
  • Cuneiform
  • Curry
  • Elm
  • Haskell
  • Hope
  • Idris
  • Joy
  • Mercury
  • Miranda
  • KRC
  • SAC
  • SASL
  • SequenceL

Impuros:

  • APL
  • ATS
  • CAL
  • C++ (a partir de C++11)
  • C#
  • Ceylon
  • D
  • Dart
  • Curl
  • ECMAScript
  • ActionScript
  • ECMAScript for XML
  • JavaScript
  • JScript
  • Erlang
  • Elixir
  • LFE
  • F#
  • Groovy
  • Hop
  • J
  • Java (since version 8)
  • Julia
  • Kotlin
  • Lisp
  • Clojure
  • Common Lisp
  • Dylan
  • Emacs Lisp
  • LFE
  • Little b
  • Logo
  • Scheme
  • Racket (formerly PLT Scheme)
  • Tea
  • Mathematica
  • ML
  • Standard ML (SML)
  • Alice
  • OCaml
  • Nemerle
  • Nim
  • Opal
  • OPS5
  • Perl
  • Perl 6
  • PHP
  • Python
  • Q (equational programming language)
  • Q (programming language from Kx Systems)
  • R
  • Red
  • Ruby
  • REFAL
  • Rust
  • Scala
  • Spreadsheets
  • Wolfram Language

Para ser sincero no me gustó mucho el curso. Esperaba algo más como el curso de Programación Orietada a Objetos (http://platzi.com/clases/oop/), en el que se explicaron los conceptos fundamentales de ese paradigma mediante ejemplos muy sencillos, construidos íntegramente durante el desarrollo del curso. Fue un curso espectacular.
Tal vez este sea un curso más avanzado, pero yo que vengo siguiendo la ruta de aprendizaje de la Escuela de Javascript y se me hizo complejo.

Mi crítica principal es que dediqué más neuronas a entender el código del proyecto (por ejemplo no conozco jquery) que en asimilar los conceptos de la PF.

Es mi humilde opinión.
Saludos.

¡Otros artículos para mejorar y aplicar todo lo que aprendimos en el curso 🎉!

Un excelente curso, todo muy claro pero me parece un poco extraño que Freddy normalmente nos dice que jQuery ya no se usa, y sin embargo tiene cursos basados en jQuery.

Buen curso, aunque creo que le falta la segunda parte!

Si esos son los conceptos fundamentales, Cuáles son los temas avanzados para dominar la programación funcional? 😮

¡Gracias David por un curso realmente interesante!
¡Buen trabajo! 👏👏👏

Les comparto mi proyecto, montado en CodePen https://codepen.io/Londrack/full/MWOwNRX

Excelente curso!, no tenia idea sobre los temas de programación imperativa y declarativa, sin duda me llevo muy buena información

Genial! Ahora se qué es la programación funcional, debo decir que por el nombre me imaginaba a algo como “Un estilo de programación que funciona para los desarrolladores” o algo así pero vi que literalmente es un código basado en funciones jaja

Super David!!!

excelente curso aunque tender que verlo varias veces para entender bien este tipo de programacion

Muchas Gracias, fue un gran curso!!

Aqui hablan sobre el tema de “y combinator” en el area de las mates no la empresa?

¡Excelente curso! Me encantaron todas las explicaciones.

Un curso muy interesante, siempre es bueno repasar los conceptos fundamentales.

Me enseño mucho este curso, me encanto porque fue conciso, rápido y muy dinámico…

Excelente muchas gracias 😃

Muy Buen curso David! Gracias 😃

😉

          <div class="card-footer">
            <div class="row mb-2">
              <div class="col">
                  <input type="text" class="form-control mb-2 mr-sm-2" id="description" placeholder="Description">
              </div>
              <div class="col">
                  <input type="number" min="1" class="form-control mb-2 mr-sm-2" id="quantity" placeholder="Quantity">
              </div>
              <div class="col">
                  <input type="number" min="0" class="form-control mb-2 mr-sm-2" id="calories" placeholder="Calories">
              </div>
              <div class="col">
                  <input type="number" min="0" class="form-control mb-2 mr-sm-2" id="carbs" placeholder="Carbs">
              </div>
              <div class="col">
                  <input type="number" min="0" class="form-control mb-2 mr-sm-2" id="protein" placeholder="Protein">
              </div>
              <div class="col">
                  <button class="btn btn-primary mb-2" onclick="validateInputs()">
                    <i class="fas fa-plus"></i>
                  </button>
              </div>
description.keypress(() => {
  description.removeClass('is-invalid')
})

quantity.keypress(() => {
  quantity.removeClass('is-invalid')
})

calories.keypress(() => {
  calories.removeClass('is-invalid')
})

carbs.keypress(() => {
  carbs.removeClass('is-invalid')
})

protein.keypress(() => {
  protein.removeClass('is-invalid')
})

const validateInputs = () => {

  description.val() ? '' : description.addClass('is-invalid')
  quantity.val() ? '' : quantity.addClass('is-invalid')
  calories.val() ? '' : calories.addClass('is-invalid')
  carbs.val() ? '' : carbs.addClass('is-invalid')
  protein.val() ? '' : protein.addClass('is-invalid')

  if(
    description.val() &&
    quantity.val() &&
    calories.val() &&
    carbs.val() &&
    protein.val()
  ) add()
}

const add = () => {
  const newItem = {
    description: description.val(),
    calories: parseInt(calories.val()) * parseInt(quantity.val()),
    carbs: parseInt(carbs.val()) * parseInt(quantity.val()),
    protein: parseInt(protein.val()) * parseInt(quantity.val())
  }
  list.push(newItem);
  cleanInputs()
  updateTotals()
  renderItems()
}

quedé picado