¿Existe una filosofía de programación de Windows? [cerrado]

30

He estado programando en entornos Unix y Windows. Sobre todo he trabajado en Unix, donde aprendí filosofía de Unix , que se puede resumir como

  • Escriba programas que hagan una cosa y que lo hagan bien.
  • Escribir programas para trabajar juntos.
  • Escriba programas para manejar secuencias de texto, porque esa es una interfaz universal.

Parece haber una clara diferencia en las culturas de programación entre los mundos de Unix y Windows, por ejemplo:

  • GUI vs CLI
  • Registro vs archivos de configuración
  • Muchas herramientas especializadas para cualquier necesidad frente a un grupo de herramientas ortogonales genéricas que pueden combinarse

¿Hay equivalente de "filosofía Unix" en el mundo de Windows? ¿Qué programador de Unix puede aprender de Windows o debe tener en cuenta al pasar a la programación en Windows?

Me gustaría que las respuestas se centren en las mejores prácticas de programación de Windows (y no en una pelea entre Windows y Unix).

Maglob
fuente
15
Debe ser consciente de? "Las cosas apestan, apestan mal".
Orbling
3
Solo una filosofía que, no hay filosofía. ;)
Mudassir
66
En realidad, Powershell ha introducido parte de la filosofía de Unix en Windows, particularmente escribiendo pequeños programas (en realidad cmdlets en Powershell) que solo hacen una cosa, y combinándolos con otros cmdlets que hacen otras cosas. Por supuesto, la mayoría de los usuarios casuales todavía no saben cómo usar Powershell, pero eso depende del tipo de software que esté escribiendo.
JohnL
44
Lo haremos bien la tercera vez.
aufather
77
La filosofía de Windows es generar ingresos para Microsoft.
dan04

Respuestas:

28

En realidad hay algo así como "filosofía de Windows". Principalmente se trata del concepto de composición y la parte de la interfaz de usuario: programas de diseño para usuarios que no sean para otros programadores.

Eso significa:

  • Interfaces de usuario simples e intuitivas.
  • Flujo de trabajo natural
  • Debería funcionar fuera de la caja
  • No se requieren conocimientos técnicos allí donde no se requieren.

Aquí hay una buena lectura:

Biculturalismo

Con la proliferación de Windows, el enfoque hacker de la codificación comenzó a desfavorecerse. Primero estaba escribiendo programas C / C ++ de la manera más compleja y ofuscada, de modo que solo los cerebros más duros pudieran entenderlos, como una especie de rito de iniciación. En Windows, las cosas comenzaron a cambiar y ese "estilo de código" ahora está muy desfavorecido. No estoy seguro si su influencia directa de Windows o más bien el nuevo nivel de comprensión de la calidad del código, pero al menos a tiempo coinciden.


fuente
77
No creo que ninguno de esos puntos se aplique particularmente bien a Windows.
Tom Hawtin - tackline
44
@Tom: Es una filosofía; no necesita aplicarse a nada. Sin embargo, creo que se aplica muy bien a la mayoría de las cosas en el mundo de Windows.
Allon Guralnek
@Tom Estoy más de acuerdo con @Allon porque para mí parece que la pregunta del OP es más programación de consola frente a GUI.
Gedeón
66
¿¡¿Qué?!? Eche un vistazo a las buenas fuentes de BSD y AT&T. Limpio, sencillo, elegante. Y nunca he visto nada más ofuscado que un típico código MFC hinchado.
SK-logic
Incluso si no hay una respuesta correcta única, esta me gustó más. La publicación del blog de Joel fue genial.
Maglob
8

Creo que las diferencias a las que alude en su pregunta son más sobre los usuarios de estos sistemas que sobre los estilos de programación de sus desarrolladores. Durante mucho tiempo, * nix ha sido el campo del programador o del entusiasta de la informática. Había muy poco en el camino del uso "casual". Donde como Windows tiene [inicio] números de usuario de órdenes de magnitud mayor.

Los usuarios ocasionales no quieren recordar una docena de banderas de línea de comando diferentes para ejecutar un programa. Quieren hacer clic en un botón.

Los usuarios ocasionales no quieren preocuparse por los archivos de configuración de sus sistemas, o por cómo Fluffy Kitties recuerda a su raza felina favorita.

Los usuarios ocasionales generalmente usarán algo siempre que haga lo que quieran, incluso si hay productos "mejores" disponibles.

Creo que mi punto principal aquí es ... Windows se trata mucho de crear para el usuario , en lugar del creador . No vaya en contra de los paradigmas de larga data que existen en el desarrollo de Windows. No contamine a los usuarios Mis documentos con basura, ni se inserte en su inicio sin ninguna razón.

Quizás de una importancia similar: escribir documentación del usuario.

TZHX
fuente
77
¿Documentación del usuario? Los usuarios de programas exitosos nunca tendrán que tocar ninguna documentación.
@Developer Art: esto es cierto hasta cierto punto, pero cuando escribe software para, por ejemplo, física de partículas que debe ser entendida por personas de diversas nacionalidades, la capacidad de decir "haga clic aquí para obtener una descripción de lo que hacemos con sus datos aquí "si es más fácil que escribir una computadora telepática que pueda extraer de su mente las expectativas de los usuarios.
TZHX
3
"No contamine al usuario con basura". - bastante irónico.
ocodo
1
¿Cómo es eso, Slomojo?
TZHX
4

Comprometerse y personalizar

No es lo mejor en nada, pero si está dispuesto a dedicar tiempo y tomar decisiones desagradables en algunos lugares, hay poco que no pueda hacer. Si no le gusta lo que está haciendo actualmente, probablemente pueda cambiarlo. Hay pocos lugares donde solo hay una forma o incluso una forma que siempre es la mejor.

Lo suficientemente bueno para que el usuario comience

Muy pocas cosas son fenomenales fuera de la caja, pero la mayoría de las cosas son utilizables. Unix tiende a ir en la dirección donde nada funciona hasta que lo configuras y Apple hace que todo esté muy pulido, pero a costa de cierta configurabilidad / flexibilidad.

Espere una cola de soporte de registro

Los usuarios de Windows no actualizan solo porque hay una versión más nueva. Ni siquiera siempre se actualizan debido a una vulnerabilidad o corrección de errores. Los usuarios de Windows a menudo deben verse obligados a actualizar, pero si los obliga a actualizar rápidamente, buscarán productos alternativos

Los usuarios tienen una amplia gama de niveles de habilidad.

Unix tiene una alta barrera de entrada percibida desde un nivel técnico desde el punto de vista de un usuario doméstico informal. Apple tenía un nivel de habilidad requerido muy bajo percibido, pero no alienta al usuario casual a hacer mucho en la forma de personalizar su sistema operativo. Windows está en el medio. Es solo un poco más difícil comenzar a usar que los productos de Apple, sin embargo, hay mucha información simple disponible, a veces directamente en la instalación misma, sobre cómo cambiar una configuración bastante profunda del sistema. Esto lleva a un nivel de habilidad bastante aleatorio en el nivel medio de los usuarios porque si tienen la confianza suficiente para probar algo, hay una buena posibilidad de que puedan descubrir cómo hacerlo. También deja a los usuarios más tímidos sin experiencia en algunos casos porque desconfían de las advertencias de que las cosas pueden salir mal.

Cuenta
fuente
2

UNIX hace mucho tiempo era para programadores y personas así, y Windows siempre fue para usuarios que no saben cómo escribir scripts de bash. Por lo tanto, en Windows debe preocuparse por los usuarios, eso significa hacer una herramienta para todas las tareas que el usuario no necesita preocuparse por quién configurar pocos programas para trabajar juntos.

Dainius
fuente
1

No estoy seguro de si es una filosofía, pero en mi humilde opinión, hay una especie de densidad de pensamiento que va con la programación de Windows. También hay una sensación de sorpresa por cómo funcionan las cosas a veces.

Recomiendo tener paciencia si adoptas el desarrollo de Windows y te preocupas un poco más por tus suposiciones.

John Bickers
fuente