¿Cómo diferenciar entre software trivial y no trivial? [cerrado]

11

Entonces, ¿qué hace realmente un programa trivial?

'A menos que su software trivial' se use con tanta frecuencia en las discusiones de programación. Me parece muy vago en el sentido de que realmente no puedo entender si "algo es esencial porque es un software no trivial" o "su software no trivial porque algo se ha vuelto muy esencial".

Por ejemplo, muchas veces sobre la cuestión de las pruebas unitarias, escucho 'a menos que sea trivial, necesitará una prueba unitaria'.

NVM
fuente
99
A juzgar por algunos de los programadores con los que he trabajado, diría que para ellos la distinción se reduce a "su código es trivial; mi código no lo es".
PSU
¿Podría proporcionar una discusión de programación en la que vea esta cita utilizada? Parece que hay diferentes interpretaciones en las respuestas.
Steven Jeuris
Verifique la pregunta actualizada.
NVM

Respuestas:

12

Voy a salir de aquí y decir:

Un programa trivial es aquel que no afecta directamente al negocio.

Una empresa de fabricación consideraría su software de contabilidad trivial, pero el software que controla el brazo robótico que mueve el acero hirviendo es crítico. Pueden lidiar con errores y un bajo nivel de soporte en el primero, pero no en el segundo. Si hay un problema, necesitan solucionarlo ahora .

Michael K
fuente
Aunque, otra respuesta tiene más puntos, me gusta más esta respuesta. Hice la pregunta porque no estoy completamente seguro de si el trabajo que estoy haciendo es trivial o no, y esta es una forma segura de determinar si el 'negocio' lo considera trivial o no. Por ej. el software trivial puede escaparse sin pruebas unitarias y realmente no depende de líneas de código o complejidad. Todo lo que importa es si es crítico para el negocio o no.
NVM
+1, buen punto. Los señores corporativos a veces tienen ideas muy diferentes sobre lo que se considera "trivial". He agregado algunos a mi respuesta para reflejar esto.
FrustratedWithFormsDesigner
+1 - Creo que esta respuesta describe mejor el contexto del término tal como se aplica en la pregunta. La otra "respuesta de punto superior" es precisa, pero solo en un contexto general. Estoy seguro de que este lo superará en votos, ya que eso se considera.
Joel Etherton
2
Cuando los desarrolladores de software dicen trivial, generalmente se refieren a la complejidad del software, no al impacto comercial. Un script que copia algunos archivos de A a B sería trivial, pero podría impactar directamente en los negocios si no funciona.
JacquesB
16

Creo que la intención más común de esa declaración sería que un programa tenga las siguientes características:

  • Es pequeño.
  • Corta vida útil.
  • No hay necesidad de mayor extensión.
  • Solo un desarrollador.
Steven Jeuris
fuente
2
+1, todos estos son cruciales. Desafortunadamente, en un mundo con requisitos siempre cambiantes, a veces tendrá que expandir el software "trivial" más allá de su vida útil natural.
l0b0
1
¿Pequeño en términos de LOC, pequeño en términos de tamaño binario compilado, pequeño en términos de tiempo necesario para desarrollarlo? Además, diría que una vida útil corta no implica trivial y trivial no implica una vida útil corta. He visto casos en los que el software con un tiempo de elevación de solo 6 meses estuvo en desarrollo durante al menos el doble de tiempo y fue un sistema de puente crucial. He visto sistemas de conversión de datos que se usaron exactamente una vez, pero que estuvieron en desarrollo durante más de un año y estuvieron lejos de ser triviales. Y los programas triviales como Buscaminas parecen tener una vida útil muy larga.
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: pequeño como en, una ventana de curso de 100x100px. ; p Quiero decir, pequeño como en las líneas de código que deben escribirse, que es proporcional al tiempo necesario para desarrollarlo. La vida útil no es esencial, tiene razón, pero a menudo es una característica cuando se habla de un enfoque más avanzado frente a un enfoque simple.
Steven Jeuris
No estoy de acuerdo con que la baja LOC siempre implica trivial. A veces, la parte más complicada de un programa, la parte más difícil de corregir, los algoritmos más complicados, se ajustan a <20 líneas de código. Y un programa que es en su mayoría cientos de líneas de captadores / establecedores autogenerados, ¿eso no es trivial aunque ni siquiera necesita un desarrollador para crearlo?
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner: Creo que tienes una interpretación diferente de la pregunta que yo. Mi respuesta se relaciona con el hecho de decidir sobre una solución trivial versus una solución compleja. Su respuesta se refiere a problemas 'difíciles' versus 'fáciles' de resolver. Quizás la pregunta del OP debería aclararse un poco.
Steven Jeuris
14

Al tirarlo por completo, binarios y fuentes. Si alguien se da cuenta, no fue trivial.

vegai
fuente
66
+1 Eso me hizo reír y también tiene sentido.
NVM
8

Trivial es ...

  • algo que ya existe, entonces, ¿por qué reinventar la rueda?
  • algo que se puede construir fácilmente mediante la creación de scripts de algunos otros programas juntos o escribiendo un pequeño código que hace un uso intensivo de las bibliotecas existentes que hacen lo que hay que hacer.
  • algo que un estudiante de pregrado de CS promedio podría hacer como tarea de pequeña a mediana tarea.
  • algo que tiene requisitos detallados que podrían caber fácilmente en una servilleta de cóctel.
  • algo que podría codificar mientras está distraído / borracho / en un tiempo libre de 4 o 5 minutos.
  • algo que podría crearse con una sencilla herramienta generadora de código.

En un entorno corporativo, agregaría estos:

  • algo que a los usuarios empresariales no les importa esperar un tiempo para solucionarlo.
  • algo usado internamente que no tiene soporte oficial de TI.
  • algo que la empresa prioriza entre las prioridades más bajas, al hacer la planificación y programación de recursos.
FrustratedWithFormsDesigner
fuente
4

Definiría un programa trivial como uno que podría codificarse razonablemente:

  • En una sentada
  • Como un solo archivo / módulo (suponiendo que no esté programando en Java o en algún lenguaje que fuerce la división súper fina de los módulos).
  • Por cualquier programador "de todos los oficios" decente, en lugar de un especialista.
dsimcha
fuente
3

Estos son mis ejemplos de programas "triviales":

  1. Un proyecto "ficticio" que configuré y comencé a codificar para poder probar una pieza de tecnología o un código de muestra. No hay intención de ser desplegado o incluso mostrado a nadie.
  2. Código de demostración escrito para presentaciones técnicas.
  3. Un hecho aislado". Me refiero a una aplicación rápida que tuve que construir para usar una vez, porque es una situación extraña de datos que tuvieron que ser movidos de cierta manera, o algo que luego será reemplazado inmediatamente por algo más permanente.
Marcie
fuente
3

El software Trival no existe, es cuando escuchas los requisitos y lo que será trival cuando en realidad siempre es no trival

Aquí hay una cita que vi en Usenet hace una década, ahora es aún más relevante.

La complejidad de una solución de software es inversamente proporcional a la complejidad de la explicación de lo que debe hacer. - Desconocido


fuente
-1

Un programa que es solo un montón de métodos getter / setter. Sin lógica de programación. Tal vez algo con algunos bucles.

Esa es mi definición de trivial.

davidhaskins
fuente
-1

Nuestra definición de trabajo es "algo de lo que nada más depende".

Desafortunadamente, ha habido algunos prototipos triviales que se convirtieron en productos de producción no triviales.

Wyatt Barnett
fuente
-3

También he oído que se utiliza en el contexto del impacto del programa en la planificación general del proyecto. Si una determinada especificación no cambia la línea de tiempo de entrega del producto, queda bajo la etiqueta de trivial.

Conocí a un programador que solía usar "trivial" como sinónimo de "Ni siquiera vale la pena discutirlo".

SQLSuperHero
fuente