El programa perfecto

¿Quién no ha pensado alguna vez en crear un programa perfecto? Es el típico mito imposbile que intentamos conseguir los informáticos, programadores e ingenieros del software. No sería genial hacer algo como:

Perfect.CreatePerfectAplication();

Esto es una chorrada con la que se reirán los programadores que estén leyendo esto :), pero también da mucho que pensar. Este sería el código fuente del programa perfecto creado con el lenguaje de programación perfecto. Esa línea condensa todas las maravillas teóricas de la programación orientada a objetos, encapsulación, herencia y todos los demás rollos teóricos. Pero se trata de una utopía con la que muchos sueñan pero que nadie consigue.

Ya hemos hablado sobre estos temas en otras ocasiones, pero para los nuevos, vuelvo a lanzar la pregunta: ¿Llegaremos algún dia a crear software perfecto, sin bugs,sin errores? También podríamos tratar el tema de la usabilidad perfecta ¿Cómo sería para vosotros un programa/web con una interfaz y usabilidad perfectas?

18 respuesta a “El programa perfecto”

  1. Más bien sería: new ProgramaPerfecto() 😀
    Respecto a las preguntas que planteas, no creo qe nunca exista el soft perfecto (en cuanto a libre de errores), sí bien creo que el soft perfecto (en cuanto a cumplir su cometido a la perfección) sí existe con más o menos frecuencia.
    En el tema de usabilidad no entro. Cada vez sospecho más que se trata de algo relativo y puede que hasta arbitrario.

  2. Si ese fuera el código del programa perfecto qué rematadamente aburrido sería programar no? 😛 Es lo mismo que nacer sabiendo, con todo aprendido, o una vida sin ni una sola preocupación o problema ¿no sería un peñazo? Al menos para mí sí (debe ser la Primera Ley del Masoquismo: querer tener problemas :D)

    Yo como Juanjo tampoco creo que exista el software libre de errores. Si existe algo llamado desarrollo del software entonces está claro que los errores serán siempre parte del software. Sin el error no hay desarrollo.

    La usabilidad, JEEE, me río de ella. Me he comprado “¡No me hagas pensar! Una aproximación a la usabilidad en la Web” (Steve Krug) Lo recibí antes de ayer y me lo leeré muy detenidamente, con tiempo (ahora no). ¿Y sabes? Me lo voy a tomar como un reto, la usabilidad, también pienso que es algo demasiado subjetivo. Y siendo un poco redundante: la usabilidad es también es algo personal, algo individual. Pretender desarrollar el software perfectamente usable y universal, para todo cristo, JEEEE, me río. No tengo ni puta idea pero me da igual, sigo riéndome porque cada persona es un mundo: a ver como montas algo perfectamente usable para todos. La usabilidad yo la entiendo como un estado mental 🙂

    Siguiendo con el tema de la usabilidad, a mí me va a ser muy difícil domesticar a mi mente. Soy de los que no les gusta esa idea de “la informática doméstica”. Vamos, que no quiero que el ordenador termine siendo un simple electrodoméstico, con su interfaz completamente simple y manejable sin necesidad de aprender previamente cómo utilizarlo. No lo quiero, y añoro, por ejemplo, ese linux de antes donde tenias que darte realmente de ostias (es la segunda ley del masoquismo XD: quererlo difícil). Por eso digo que me va a costar educar mi estado mental, mi usabilidad, porque cuando creas usabilidad no puedes pensar en ti, debes ponerte en el lugar del Usuario (a todos los niveles. Una utopía vamos). Algo muy muy muy jodido (si por mi fuera, dejaría una bella línea de comandos y un manual en plan bíblico (apocalíptico para algunos XD) sobre la mesa)

    ¡Saludos y Larga Vida a la Command Line! (be user-friendly :D)

  3. claro! y entonces se acabaría la programación… un programa “perfecto” sin errores y eficiente al 100% y aún encima tan sencillo de usar que no precisase de instrucciones… ni tan siquiera nuestra especie (animal) cumple los requisitos… deja de soñar, anda!

  4. Estoy hasta cierto punto de acuerdo Enrique…
    # mkisofs -r -J /var/backup/ -o cd.iso && burncd -f /dev/cdrw -s 40 data cd.iso fixate
    Para mi eso es muy usable 😀

  5. ¿No existe el software libre de errores? Entonces … em … ¿De qué se habla cuando se habla de “software libre”?

    Mientras exista una línea que programar, existe una posibilidad de cometer un despiste, de eso sé mucho …

  6. Para mí no, pero ¿por qué? ¿Culpa de mkisofs y burncd? Yo diría que no. No es usable para mí porque no conozco las funciones para cada parámetro que utilizas en esa línea.

    Es decir, que mkisofs y burncd son perfectamente usables. ¿Qué falta? Saber utilizarlas, tiempo para aprender a utilizarlo y ganas (sin esto último, no es usable nada de nada :D)

    Jejeje, en el libro este que comento el autor cita una frase de su esposa, que dice: «Si algo es complicado de utilizar, simplemente no lo uso demasiado»

    Imagino que ahí hay parte del paradigma de la usabilidad: el hacer software fácil de utilizar. Que sea intuitivo y no requiera una inversión de tiempo por parte del Usuario para funcionar con ese software. Esto es lo que no me mola de “la informática doméstica” porque precisamente es en donde se pretende hacer del ordenador un electrodoméstico, como si fuera una tostadora.

    Si la usabilidad consiste en hacer de un proceso/software algo completamente metafórico e intuitivo para todo el mundo, conozca o no conozca ese proceso/software, entonces mal vamos. Por eso creo que mkisofs, burncd, …y trabajar con la línea de comandos SI tiene usabilidad, la misma que trabajar con una interfaz gráfica. Solo que tienes que aprender a utilizar el software para beneficiarte del mismo.

    Ahí está mi problema con la usabilidad creo yo… porque si parto de esa base, entonces casi cualquier programa es perfectamente usable. Si sabes utilizarlo no hay problema. Pero imagino que “la gente normal” (osea, bichos raros como yo abstenerse jeje) no quiere aprender mil programas, mil interfaces. Lo quieren todo intuitivo. ¿Es eso usabilidad?

    Larga vida a la CommandLine! XD
    (poweroff -f)

  7. Jeje. Un post que iba un poco en plan cachondeo al final se ha convertido en discusión sobre usabilidad ;). Pedazo coments de Enrique. Para mi un programa es más usable que otro si una persona que no tiene ni puta idea de usar ninguno de los dos programas aprende a usar uno antes que el otro. Yo creo que esa es la clave. Otra de las claves, como dice Steve Krug, “NO ME HAGAS PENSAR!!!”.
    Sobre el tema de Linux y la línea de comandos: puede ser que la primera vez que instale Apache, Mysql etc… sea entretenido aprender como funciona todo, compilarlo todo y tal y cual. Pero quizás la segunda, la tercera, o la cuarta vez que haya que instalarlo me apetece más hacer doble click, siguiente, siguiente, finalizar y ya lo tengo todo configurado.

  8. No sería un programa perfecto, porque podría petar. ¿Quien te dice a ti que no venga otro programa y escriba encima del programa hola mundo cuando se está ejecutando y se joda todo? A mi me ha petado el programa “ls” un par de veces con un pedazo de Segmentation Fault, todo es posible. El software libre de errores no existe y sino que alguien me demuestre lo contrario. De todas formas deberíamos buscar la definición de un programa perfecto 😉

  9. Ejemplo de relatividad de la usabilidad: comentarios en un blog.
    Kirai tiene: nombre, email, uri, tu tomentario
    Blackshell tiene: autor, url/mail, título, comentario
    Pues bien… Héctor (ToReK) pone en blackshell su URL en el título (imagino el motivo :D).
    ¿Eso dice algo de la usabilidad de Kirai y Blackshell? 😉

  10. Además, piensa que crear un Hola mundo que funcione en cualquier ordenador no es tarea fácil. Podríamos usar Java para no complicarnos la vida, pero entonces tendríamos que demostrar que JVM no tiene ningún fallo por ejemplo. Como ves, hasta hacer un Hola mundo perfecto es una tarea muy muy jodida.

  11. Jajaja, La verdad es que la usabilidad de mis comentarios es un poco mala. La quiero cambiar para que aparezcan más separados los comentarios no como ahora que aparece todo apelotonado. Sobre el formulario para enviar comentarios poz eso que la usabilidad es muy relativa 😉

  12. Si es que en este universo todo es relativo 🙁 Cagon la leche! XD Einstein y Jarabe de Palo (Depende) son la luz 😀 (Dios, no sé como me atrevo a meter en el mismo saco a Einstein y J- de Palo… XDDDDDDDD(

    Bueno, ahora si: corto y ¿cierro?

  13. Jajaja mu bueno lo del programa perfecto.

    Yo creo que estáis desvariando con tanta metafísica 🙂

    A ver si este es mejor…

    STACK SEGMENT STACK ; Segmento de pila
    DW 64 DUP (?) ; Define espacio en la pila
    STACK ENDS

    DATA SEGMENT ; Segmento de datos
    SALUDO DB “Hola mundo!!”,13,10,”$” ; Cadena
    DATA ENDS

    CODE SEGMENT ; Segmento de Codigo
    ASSUME CS:CODE, DS:DATA, SS:STACK

    INICIO: ; Punto de entrada al programa
    MOV AX,DATA ; Pone direccion en AX
    MOV DS,AX ; Pone la direccion en los registros
    MOV DX,OFFSET SALUDO ; Obtiene direccion del mensaje
    MOV AH,09H ; Funcion: Visualizar cadena
    INT 21H ; Servicio: Funciones alto nivel DOS
    MOV AH,4CH ; Funcion: Terminar
    INT 21H
    CODE ENDS

    END INICIO ; Marca fin y define INICIO

  14. Que me asustas a la audiencia 🙂 . Ese Hola mundo solo funciona con arquitecturas Intel y seguramente de aquí 20 años no funcione en ningún ordenador. Además se podría crear un programa, virus o lo que sea que te escriba en el segmento de código y jorobe el invento. O mil cosas más que podrían pasar para que petara el hola mundo. Ya se que es muy metáfisico, pero es el gran problema de la informática. De todas formas yo me refería más bien a crear un programa grande que funcione siempre de forma estable.

  15. Perfecto, es una palabra demasiado grande. Hablas de que otro programa pueda interferir en un “Hola mundo!” perfecto… y si el procesador (cualquiera) está mal diseñado y da un error “inesperado”.
    No busques un programa perfecto sino eficiente, que cumpla su cometido con un alto índice de probabilidad…

  16. Preguntale a algun argentino, tal vez te diga que si ha creado el software perfecto xD

    Hablando en serio, obviamente son objetivos utópicos. Además en este caso, que es perfecto? que no tenga errores solamente? o podemos ir más allá y abarcar usabilidad, amigabilidad, portabilidad, escalabilidad, etc, etc, etc.

    Por eso creo que ni existe ni existirá nunca. Obviamente, es nuestro norte hacerlo lo más parecido al punto perfecto pero a sabiendas que es inalcanzable.

  17. El programa perfecto… como dice JR eso depende mucho de la definición de perfecto. Yo creo que sí existen programas perfectos, los que son tan simples que sólo se pueden hacer de una manera.

    dorfun, que el procesador de un error ya es otro nivel, me puedes hablar de programas en sistemas operativos distribuidos, pero es lo que te digo, otro nivel.

    La usabilidad… como se nota que sois programadores (y linuxeros?) hay que hacer los programas para el más dummie, y cuando hasta mr. bean sepa usarlos serán usables 😛

Comentarios cerrados.