Vous êtes sur la page 1sur 7

Joel on Software

biculturalismo
Joel Spolsky por
Domingo, 14 de diciembre 2003
Por ahora, Windows y Unix son funcionalmente más similares que
diferentes. Ambos admiten las mismas metáforas principales de
programación, a partir de las líneas de comandos a interfaces gráficas de
usuario a servidores web; que se organizan en torno a prácticamente la
misma panoplia de recursos del sistema, a partir de los sistemas de
archivos casi idénticos a la memoria de tomas de corriente y los procesos
y subprocesos. No hay mucho sobre el conjunto básico de servicios
prestados por cada sistema operativo para limitar los tipos de aplicaciones
que se pueden crear.

Lo que queda es las diferencias culturales. Sí, todos comemos comida,


pero por allí, que comen pescado crudo con arroz con palos de madera,
mientras que aquí, comemos losas de suelo vaca en el pan con nuestras
manos. A diferencia cultural no significa que los estómagos
estadounidenses no pueden digerir sushi o que estómagos japoneses no
pueden digerir Big Macs, y eso no quiere decir que no hay una gran
cantidad de estadounidenses que comen sushi o japoneses que comen
hamburguesas, pero sí significa que los estadounidenses de bajar del
avión por primera vez en Tokio se enfrentan a una abrumadora sensación
de que este lugar es extraño , maldición, y ninguna cantidad de filosofar
acerca de cómo debajo todos somos lo mismo, a todos nos gusta y de
trabajo y cantar y morir va a superar el hecho de que los
estadounidenses y los japoneses nunca puede realmente sentirse cómodo
con arreglos de tocador de cada uno.

¿Cuáles son las diferencias culturales entre Unix y Windows


programadores? Hay muchos detalles y sutilezas, pero en su mayor parte
se trata de una cosa: Unix código de valores de la cultura que es útil para
otros programadores, mientras que la cultura de Windows valores de
código que es útil para los no programadores.

Esto es, por supuesto, una simplificación importante, pero en realidad,


esa es la gran diferencia: ¿estamos programando para los programadores
o usuarios finales? Todo lo demás es comentario.
La frecuencia controvertido Eric S. Raymond acaba de
escribir un largo libro sobre programación en Unix,
llamado El Arte de Programar en Unix explorar su propia
cultura con gran detalle. Puede comprar el libroy leerlo en
papel, o, si la política de Raymond son demasiado anti-
idiotarian para que usted considere darle dinero, incluso se
puede leer en línea de forma gratuita y estar seguro de que el
autor no recibirá un centavo de su trabajo duro.

Veamos un pequeño ejemplo. La cultura de programación Unix tiene en


alta estima los programas que pueden ser llamadas desde la línea de
comandos, que tienen argumentos que controlan todos los aspectos de su
comportamiento, y la salida de los cuales puede ser capturado como
formato regularmente, de lectura mecánica de texto sin formato.Tales
programas se valoran ya que fácilmente se pueden incorporar en otros
programas o sistemas de software más grandes por los
programadores. Para tomar un ejemplo minúsculo, no es un valor central
en la cultura Unix, que Raymond llama "El silencio es oro", que un
programa que ha hecho exactamente lo que le dijo que hiciera con éxito
debería proporcionar ninguna salida en absoluto . No importa si usted ha
acaba de escribir una línea de comandos 300 caracteres para crear un
sistema de archivos, o de compilar e instalar una pieza compleja de
software, o enviado un cohete tripulado a la luna. Si tiene éxito, la cosa
aceptada que hacer es simplemente nada de salida. El usuario deberá
deducir de la siguiente línea de comandos que todo debe estar bien.

Este es un valor importante en la cultura Unix porque estás programando


para otros programadores. Como Raymond dice, " Los programas que
balbucean no tienden a jugar bien con otros programas." Por el contrario,
en la cultura de Windows, que está programando para la tía Marge, y la tía
Marge pueden estar justificados con la observación de que un programa
que no produce ninguna salida porque tuvo éxito no se puede distinguir
de un programa que produce ninguna salida porque no mal o una
programa que produce ninguna salida porque malinterpretó su solicitud.

Del mismo modo, la cultura Unix aprecia programas que se


mantienentextual . No les gusta mucho interfaces gráficas de usuario,
excepto como barra de labios pintados limpiamente en la parte superior
de los programas textuales, y no les gusta formatos de archivo
binario. Esto se debe a una interfaz textual es más fácil de programar en
contra de, por ejemplo, una interfaz gráfica de usuario, que es casi
imposible programar en contra si no se hacen algunas otras disposiciones,
como un built-in lenguaje de script. Una vez más, vemos que la cultura
Unix valora la creación de código que es útil para otros programadores,
algo que rara vez es una meta en la programación de Windows.

Lo que no quiere decir que todos los programas de Unix están diseñados
exclusivamente para los programadores. Lejos de ahi. Pero
la cultura valora las cosas que son útiles para los programadores, y esto
explica una cosa o dos acerca de una cosa o dos.

Supongamos que usted toma un programador de Unix y Windows y un


programador a cada uno da la tarea de crear la misma aplicación de
usuario final. El programador de Unix creará una línea de comandos o
núcleo de texto impulsado y, en ocasiones, en el último momento,
construir una interfaz gráfica de usuario que impulsa ese núcleo. De esta
manera las operaciones principales de la aplicación estará disponible para
otros programadores que puede invocar el programa en la línea de
comandos y leer los resultados como texto. El programador de Windows
tenderá a empezar con una interfaz gráfica de usuario, y de vez en cuando,
en el último momento, añadir un lenguaje de script que puede
automatizar el funcionamiento de la interfaz gráfica de usuario. Esto es
apropiado para una cultura en la que el 99.999% de los usuarios no son
programadores de cualquier manera, forma o forma, y no tienen ningún
interés en ser uno.

Hay un grupo importante de los programadores de Windows que son la


codificación principalmente para otros programadores: el equipo de
Windows en sí, dentro de Microsoft. La forma en que tienden a hacer las
cosas es la creación de una API, puede llamar desde el lenguaje C, que
implementa la funcionalidad, y luego crear aplicaciones GUI, que se
llaman a esa API. Cualquier cosa se puede hacer desde la interfaz de
usuario de Windows también se puede realizar usando una interfaz de
programación que puede llamarse desde cualquier lenguaje de
programación razonable. Por ejemplo, Microsoft Internet Explorer es en
sí nada más que un pequeño programa de 89 KB que envuelve a decenas
de componentes muy potentes que son de libre disposición de los
programadores sofisticados Windows y que en su mayoría diseñado para
ser flexible y potente. Por desgracia, ya que los programadores no tienen
acceso al código fuente de estos componentes, que sólo pueden utilizarse
de modo que se previeron con precisión y permitidas por los
desarrolladores de componentes de Microsoft, que no siempre funciona. Y
a veces hay errores, por lo general la culpa de la persona que llama a la
API, que son difíciles o imposibles de depuración sin el código fuente. El
valor cultural de Unix de código fuente visible hace que sea un entorno
más fácil desarrollar para. Cualquier desarrollador de Windows le
informará sobre el tiempo que pasaron cuatro días la pista de un error,
porque, por ejemplo, pensaban que el tamaño de la memoria devuelta por
LocalSize sería el mismo que el tamaño de la memoria que originalmente
solicitaron con LocalAlloc, o algún error similares que pudieron han fijado
en diez minutos si pudieran ver el código fuente de la
biblioteca. Raymond inventa una divertida historia para ilustrar esto que
suenan verdad para cualquiera que haya utilizado una biblioteca en forma
binaria.

Para que pueda obtener estos argumentos religiosos. Unix es mejor


porque se puede depurar en las bibliotecas. Windows es mejor porque la
tía Marge consigue alguna confirmación de que su correo electrónico fue
enviado. En realidad, uno no es mejor que otro, simplemente tienen
valores diferentes: en Unix hacer las cosas mejor para otros
programadores es un valor fundamental y en Windows haciendo las cosas
mejor para la tía Marge es un valor fundamental.

Veamos otra de las diferencias culturales. Raymond dice, "documentación


clásico Unix está escrito para ser telegráfico pero completo ... El estilo
asume un lector activo, aquel que es capaz de deducir consecuencias
obvias no se han dicho de lo que se dice, y que tiene la confianza en sí
mismo para confiar en esas deducciones. Lea cuidadosamente cada
palabra, ya que rara vez se le dirá cualquier cosa dos veces. " Oy encuesta,
pensé, que en realidad la enseñanza de jóvenes programadores escribir
más imposibles hombre páginas.

Para los usuarios finales, que no se consigue con la suya. Raymond puede
llamarlo " condescendencia simplificar demasiado ", pero la cultura de
Windows entiende que los usuarios finales no les gusta la lectura y si se
conceden para leer la documentación, que sólo leerá la cantidad mínima,
por lo que hay que explicar las cosas en varias ocasiones ... de hecho el
sello de un buen archivo de ayuda de Windows es que cualquier tema solo
puede ser leído por sí mismo mediante un lector medio sin asumir el
conocimiento de cualquier otro tema de ayuda.

¿Cómo hemos llegado diferentes valores fundamentales? Esta es otra


razón el libro de Raymond es tan bueno: se profundiza en la historia y la
evolución de Unix y trae nuevos programadores al día con toda la historia
acumulada de la cultura de nuevo a 1969. Cuando se creó Unix y cuando
se formó sus valores culturales , no hubo usuarios finales .Las
computadoras eran caros, tiempo de CPU era caro, y aprender acerca de
las computadoras significaba aprender a programar. No es de extrañar
que la cultura que surgió valora las cosas que son útiles para otros
programadores. Por el contrario, Windows se ha creado con un único
objetivo: vender tantas copias como concebible en un beneficio. Scrillions
de copias. "Una computadora en cada escritorio y en cada hogar" era el
objetivo explícito del equipo que creó en Windows, establece su programa
y determina sus valores fundamentales. Facilidad de uso para los no
programadores era la única manera de conseguir en cada escritorio y en
cada hogar y por lo tanto la facilidad de uso über alles se convirtió en la
norma cultural.Programadores, como público, eran una ocurrencia tardía
extrema.

El cisma cultural es tan aguda que Unix nunca ha hecho incursiones en el


escritorio. Tía Marge en realidad no puede utilizar Unix, y los esfuerzos
para hacer una interfaz bastante para Unix que la tía Marge
repetida puede utilizar haber fallado, en su totalidad debido a que estos
esfuerzos fueron hechos por los programadores que estaban inmersos en
la cultura Unix. Por ejemplo, Unix tiene un valor de la separación de la
política de mecanismo que, históricamente, vino de los diseñadores
de X . Esto condujo directamente a un cisma en las interfaces de
usuario; nadie ha jamás bastante podido ponerse de acuerdo sobre todos
los detalles de cómo la interfaz de usuario de escritorio debería
funcionar, y creen que esto está bien, porque su cultura valora esta
diversidad, pero para la tía Marge es en gran medida no bien tener que
utilizar una diferente IU para cortar y pegar en un programa que se utiliza
en otro. Así que aquí estamos, 20 años después de que los desarrolladores
de Unix comenzaron tratando de pintar una buena interfaz de usuario en
sus sistemas, y todavía estamos en el punto donde el CEO de la mayor
proveedor de Linuxestá diciendo a la gente que los usuarios domésticos
sólo deben usar Windows . He oído economistas afirman que Silicon
Valley jamás podría ser recreada en, digamos, de Francia, debido a que la
cultura francesa pone una sanción tan alta en caso de fallo de que los
empresarios no están dispuestos a correr el riesgo. Tal vez lo mismo es
cierto para Linux: nunca podrá ser un sistema operativo de escritorio
debido a que la cultura valora las cosas que le impiden. OS X es la prueba:
Apple finalmente creado Unix para la tía Marge, pero sólo porque los
ingenieros y gerentes de Apple estaban firmemente de la cultura del
usuario final (que yo he estado llamando imperialista "la cultura de
Windows" a pesar de que históricamente se originó en
Manzana). Rechazaron norma fundamental de la cultura Unix del
programador de la centralidad. Incluso cambiar el nombre de los
directorios de núcleo - herético! - Utilizar palabras comunes en inglés
como "aplicaciones" y "biblioteca" en lugar de "bin" y "lib".

Raymond hace intento de comparar y contrastar Unix para otros sistemas


operativos, y esto es realmente la parte más débil de un excelente libro de
otro modo, porque realmente no sabe lo que está hablando. Cada vez que
abre la boca acerca de Windows que tiende a demostrar que sus
conocimientos de programación de Windows viene sobre todo de la
lectura de periódicos, no de programación real de Windows. Está bien; él
no es un programador de Windows;perdonaremos eso. Como es típico de
alguien con un conocimiento profundo de una cultura, que sabe lo que sus
valores de la cultura, pero no acaba de cuenta de la distinción entre las
partes de su cultura que son universales (matar ancianas, programas que
rompen: siempre es malo ) y partes de la cultura que sólo se aplican
cuando se está programando para los programadores (comer pescado
crudo, los argumentos de línea de comando: depende de la audiencia).

Hay demasiados programadores de monocultivo que, como el típico niño


estadounidense que nunca salió de St. Paul, Minnesota, no puedo decir la
diferencia entre un valor cultural y un valor humano básico.Me he
encontrado con muchos programadores de Unix que se burlan de
programación de Windows, pensando que Windows es gentil y
estúpida. Raymond demasiada frecuencia cae en la trampa de
menospreciar los valores de otras culturas sin tener en cuenta de dónde
venían. Es bastante raro encontrar tales intolerancia entre los
programadores de Windows, que son, en general, orientado a las
soluciones y no ideológico. Por lo menos, los programadores de Windows
concederán las faltas de su cultura y decir de manera pragmática, "Mira, si
quieres vender un procesador de textos para mucha gente, tiene que
ejecutar en sus equipos, y si eso significa que utilice el Registro de mal en
vez de elegante ~ / .rc archivos para guardar las configuraciones, que así
sea ". El mismo hecho de que el mundo Unix está tan lleno de
superioridad cultural de justicia propia, "promoción" y el sectarismo
slashdot-karma-whoring mientras que el mundo de Windows es más
práctico ( "sí, lo que sea, sólo hay que hacer una vida aquí" ) se deriva de
una cultura que se siente en estado de sitio, incapaz de salir del armario
mercado de servidores y aficionado y en el escritorio de la corriente
principal. Esta soberbia-de-una-posición-de-la debilidad es el mayor
defecto de El Arte de Programar en Unix , pero no es realmente un gran
defecto: en general, el libro está lleno de una visión muy interesante en
muchos aspectos de la programación que estoy dispuesto a sostener mi
nariz durante las diatribas ideológicas mal olor raro porque hay mucho
que aprender acerca de los ideales universales del resto del libro. De
hecho, recomendaría este libro a los desarrolladores de cualquier cultura
en cualquier plataforma con cualquier objetivo, ya que muchos de los
valores que son universales trompetas. Cuando Raymond señala que el
formato CSV es inferior al formato de / etc / passwd, que está tratando de
ganar puntos para Unix contra Windows, pero, ¿sabes qué? El tiene
razón. / etc / passwd es más fácil de analizar que la CSV, y si usted lee este
libro, usted sabrá por qué, y serás un mejor programador.

Vous aimerez peut-être aussi