Mostrando entradas con la etiqueta Paradigma funcional. Mostrar todas las entradas
Mostrando entradas con la etiqueta Paradigma funcional. Mostrar todas las entradas

lunes, 10 de junio de 2024

7 razones para no usar Laravel en tu proyecto de PHP

En más de 40 años de experiencia como programador y director de proyectos de programación, he aprendido que cada requerimiento tiene mejores oportunidades de ser exitoso, dependiendo de la tecnología implementada para su realización. Y es por ello que he usado casi todo tipo de lenguajes, plataformas de desarrollo (IDE) y frameworks de lenguaje para tratar de ahorrar tiempo. En esta gran vastedad de existos y fracasos, he conocido un Framework que es relativamente popular entre algunos tipos de desarrolladores (generalmente con pocos años de experiencia), que recomiendan Laravel para cualquier tipo de proyecto. Pero realmente, Laravel no es el principe azul que muchos tienen en su cuento de hadas.

Laravel es un marco PHP popular conocido por su sintaxis elegante, funciones fáciles de desarrollar y su ecosistema sólido. Si bien Laravel es ampliamente utilizado por desarrolladores y empresas de diversos tamaños, incluidas muchas grandes empresas, puede haber varias razones por las que algunas grandes empresas pueden optar por no utilizar Laravel, aquí menciono sólo las mías, las que más dolor han causado en mis proyectos:

  1. Sistemas heredados: las grandes empresas suelen tener sistemas y aplicaciones existentes creados con diferentes tecnologías. Migrar a un nuevo marco como Laravel puede requerir mucho tiempo, recursos y esfuerzo, lo que puede ser un impedimento.
  2. Pila de tecnología: algunas empresas pueden haber estandarizado una pila o marco de tecnología diferente que se alinea con su infraestructura, experiencia o requisitos técnicos específicos existentes.
  3. Soluciones empresariales: las grandes empresas pueden tener requisitos complejos como escalabilidad, seguridad, cumplimiento e integración con sistemas heredados. Algunas empresas pueden preferir soluciones o marcos empresariales que ofrezcan características específicas que satisfagan estas necesidades.
  4. Soporte y mantenimiento: las empresas pueden considerar factores como el soporte a largo plazo, el mantenimiento y el respaldo de la comunidad al seleccionar una pila de tecnología. Si bien Laravel tiene una comunidad grande y activa, algunas empresas pueden preferir marcos con opciones de soporte comercial. Por otro lado, Laravel depende mucho de librerías y recursos de terceros, lo que puede generar momentos de crisis críticas al momento de hacer alguna actualización.
  5. Rendimiento y escalabilidad: si bien Laravel es conocido por sus funciones y productividad fáciles de usar para los desarrolladores, algunas empresas pueden tener aplicaciones críticas para el rendimiento en las que priorizan marcos conocidos por sus características de rendimiento y escalabilidad.
  6. Personalización y control: las grandes empresas pueden tener requisitos únicos que requieren un alto grado de personalización y control sobre el marco. Algunas empresas pueden optar por marcos más flexibles o de bajo nivel para satisfacer estas necesidades.
  7. Preocupaciones por la dependencia de un proveedor: las empresas pueden desconfiar de la dependencia de un proveedor y preferir marcos de código abierto que brinden flexibilidad y libertad para cambiar de tecnología si es necesario.
  8. Falta de independencia entre desarrollo y diseño: tal vez uno de los mayores problemas que enfrenta Laravel, es que todos los diseñadores dependen fuertemente del acompañamiento de los desarrolladores para actualizar sus diseños. Cosa que en otros Frameworks es muy fácil de sobrellevar.


Es importante tener en cuenta que las opciones de tecnología pueden variar según factores como los requisitos del proyecto, la experiencia del equipo, el presupuesto, el cronograma y los casos de uso específicos. Si bien es posible que algunas grandes empresas no utilicen Laravel por los motivos mencionados anteriormente, muchas otras organizaciones, incluidas grandes empresas, han adoptado Laravel con éxito para sus proyectos. La popularidad de Laravel y su comunidad activa indican que sigue siendo una opción viable para una amplia gama de proyectos de desarrollo web.

domingo, 5 de mayo de 2024

Uso de varias funciones en Python como ejercicio de Paradigma Funcional.

 El ejercicio busca resolver la siguiente solicitud:

Escribir una función que aplique un descuento a un precio y otra que aplique el IVA a un precio. Escribir una tercera función que reciba un diccionario con los precios y porcentajes de una cesta de la compra, y una de las funciones anteriores, y utilice la función pasada para aplicar los descuentos o el IVA a los productos de la cesta y devolver el precio final de la cesta.

 El código es:

def aplicar_descuento(precio, porcentaje_descuento):
  """
  Función que aplica un descuento a un precio.

  Argumentos:
    precio: El precio original del producto.
    porcentaje_descuento: El porcentaje de descuento que se quiere aplicar.

  Devuelve:
    El precio final del producto con el descuento aplicado.
  """
  descuento = precio * porcentaje_descuento / 100
  precio_final = precio - descuento
  return precio_final

def aplicar_iva(precio, porcentaje_iva):
  """
  Función que aplica el IVA a un precio.

  Argumentos:
    precio: El precio original del producto.
    porcentaje_iva: El porcentaje de IVA que se quiere aplicar.

  Devuelve:
    El precio final del producto con el IVA aplicado.
  """
  iva = precio * porcentaje_iva / 100
  precio_final = precio + iva
  return precio_final

def calcular_total_compra(cesta_compra, funcion_aplicar):
  """
  Función que calcula el total de una compra aplicando una función a cada producto.

  Argumentos:
    cesta_compra: Un diccionario con los precios y porcentajes de descuento/IVA de cada producto.
    funcion_aplicar: La función que se quiere aplicar a cada producto (descuento o IVA).

  Devuelve:
    El precio total de la compra.
  """
  total = 0
  for producto, datos in cesta_compra.items():
    precio = datos["precio"]
    porcentaje = datos["porcentaje"]
    precio_final = funcion_aplicar(precio, porcentaje)
    total += precio_final
  return total

# Ejemplo de uso

cesta_compra = {
  "Producto A": {"precio": 100, "porcentaje": 10},
  "Producto B": {"precio": 50, "porcentaje": 20},
  "Producto C": {"precio": 200, "porcentaje": 5},
}

# Aplicar descuento del 10% a todos los productos
total_con_descuento = calcular_total_compra(cesta_compra, aplicar_descuento)
print(f"Total con descuento: {total_con_descuento}")

# Aplicar IVA del 21% a todos los productos
total_con_iva = calcular_total_compra(cesta_compra, aplicar_iva)
print(f"Total con IVA: {total_con_iva}")

Explicación del código:

  1. Funciones aplicar_descuento y aplicar_iva:

    • Estas funciones reciben el precio original del producto y el porcentaje de descuento/IVA como argumentos.
    • Calculan el descuento/IVA a aplicar.
    • Devuelven el precio final del producto con el descuento/IVA aplicado.
  2. Función calcular_total_compra:

    • Recibe un diccionario con los precios y porcentajes de descuento/IVA de cada producto, y una función para aplicar (descuento o IVA).
    • Inicializa una variable total para almacenar el precio total de la compra.
    • Recorre cada producto en la cesta de compra:
      • Obtiene el precio y el porcentaje del producto actual.
      • Aplica la función funcion_aplicar para obtener el precio final del producto.
      • Suma el precio final al total.
    • Devuelve el total de la compra.
  3. Ejemplo de uso:

    • Se crea un diccionario cesta_compra con los precios y porcentajes de descuento/IVA de cada producto.
    • Se calcula el total de la compra con descuento del 10% y se imprime.
    • Se calcula el total de la compra con IVA del 21% y se imprime.

Características del código:

  • Sigue los principios de la programación funcional:
    • Las funciones son puras, es decir, no modifican el estado externo y siempre devuelven el mismo resultado para los mismos argumentos.
    • Se utilizan funciones anónimas para pasar la función aplicar_descuento o aplicar_iva a la función calcular_total_compra.
  • Es modular:
    • Cada función tiene una responsabilidad específica.
    • El código es fácil de leer y entender.
  • Es reutilizable:
    • Las funciones aplicar_descuento, aplicar_iva y calcular_total_compra se pueden utilizar en otros programas.

7 razones para no usar Laravel en tu proyecto de PHP

En más de 40 años de experiencia como programador y director de proyectos de programación, he aprendido que cada requerimiento tiene mejores...