operating-system - ultima - unix ventajas y desventajas
Beneficios de elegir Windows sobre Unix como plataforma de desarrollo (10)
¿Existen beneficios técnicos para Windows / Microsoft como plataforma para usar durante el desarrollo, en un dialecto de Unix como Linux o Solaris?
Sé que las empresas eligen Microsoft a veces porque simplemente no hay suficientes programadores disponibles que conozcan Unix, o que estos programadores son mucho más caros de contratar.
Entonces, suponiendo que todos los desarrolladores conocieran bien a Unix y Microsoft, ¿seguiría habiendo casos en los que es mejor desarrollarse en Windows?
Creo que esta pregunta presenta una dicotomía falsa. No hay ninguna razón por la que deba elegir Windows sobre Unix o viceversa. La virtualización es gratis y fácil. ¡Es lo mejor de ambos mundos!
Justo fuera de mi mente:
- .NET (aunque mono es realmente genial)
- Visual Studio: probablemente el mejor IDE alrededor
- Excelente documentación (en mi opinión, MSDN Library es mucho más amigable para los desarrolladores que las páginas man)
- Una enorme base de usuarios (que es más como una cosa de negocios, pero aún así es un factor muy importante)
- Compatibilidad binaria (es mucho más fácil admitir 4-5 kernels y versiones estándar de biblioteca C que el número infinito de combinaciones que puede encontrar en las distribuciones de Linux)
Los sistemas de Microsoft tienden a tener una mejor integración entre las diferentes partes: hay mucha menos heterogeneidad de la que preocuparse si está utilizando un software binario (x86 y comctl3d son mucho más fáciles de admitir que todo * nix se ejecuta).
La curva de aprendizaje en Windows es superficial, pero tiene una distancia global más larga. En Unix / Linux, el comienzo es una lucha, pero hacer las cosas más tarde es más fácil, cuando el funcionamiento interno del sistema operativo comienza a tener sentido.
Al menos esa ha sido mi experiencia con ellos. Windows para un pago rápido, Linux si vas a hacer algo a más largo plazo. Y máquinas virtuales si no puedes decidir :)
Para mí, solo hay dos argumentos para usar Windows como plataforma de desarrollo:
- Tienes que hacerlo porque estás haciendo un desarrollo .Net / Windows (o porque la compañía simplemente no te da opción); o
- Las aplicaciones, específicamente Microsoft Office / Exchange. Lo siento, pero OpenOffice es terrible en comparación con Word / Excel.
Además de eso, Linux tiene todas las demás ventajas, incluyendo:
- MUCHO más rápido sistema de archivos (particularmente importante cuando se trata de muchos archivos pequeños). El año pasado pasé de un tiempo de compilación de 8-10 minutos a 2-3 solo con este cambio (compilación de la misma base de código);
- Normalmente, su entorno de desarrollo se adapta a su entorno de producción (si su entorno de producción es Windows, su entorno de desarrollo estará prácticamente garantizado), que puede ser útil. Hemos tenido problemas con la visibilidad del classpath de Java debido a las diferencias entre JBoss en Windows y Linux; y
- Un conjunto mucho mejor de herramientas de línea de comandos (sí, sé que puedes usar Cygwin, etc. pero no es tan bueno).
Esa es una de las razones por las que considero que la idea de una Mac como mi próxima estación de trabajo de desarrollo es tan atractiva: puedes verla como Unix con aplicaciones (es decir, Office) o Windows con un sistema de archivos decente (será aún mejor si / cuando OSX adopta ZFS) De cualquier forma, es una victoria. Lo único que realmente me desalentó es que Apple hace cosas estúpidas como retrasar el lanzamiento de Java 6 en un año para poder poner el Leopard Look and Feel.
Puedo darte un argumento común que podría hacer la gente de Windows, aunque no con el que estoy necesariamente de acuerdo.
A veces las personas piensan que los cuadros de Windows en tiempo de producción son más fáciles de mantener e implementar. Eso es porque hay muchas herramientas visuales disponibles para el administrador. Por lo tanto, prefieren .Net o un lenguaje de desarrollo específico de Windows para una fácil integración.
Si sus clientes o clientes internos usan todas las computadoras de escritorio de Windows, algunos argumentarán que es menor el trabajo preliminar para hacer cosas con los servidores de Windows. Esto incluye elementos para el uso compartido de documentos de Microsoft Office (es decir, compartir) o cosas con el uso compartido de archivos de Windows. Obviamente, es más fácil escribir una aplicación .Net para hacer frente a tales restricciones específicas de Microsoft.
Realmente no puedo pensar en ninguna otra razón. El último es probablemente el más válido; puede que exista una tecnología específica de Microsoft que sea difícil de integrar a menos que use herramientas de desarrollo de MSFT.
Razones periféricas para algunos tipos específicos de desarrollo:
- necesitas ver cómo se ven las cosas tanto en Firefox como en el explorador
- estás trabajando con flash (que AFAIK no puedes desarrollar en Linux, y los jugadores son terribles).
- estás trabajando en un proyecto que involucró la integración de MS Office
- tu oficina tiene algún sistema de correo o notas godawful que no puedes iniciar sesión de otra manera. lo mismo para algunas configuraciones vpn.
Considero que todas estas cosas son lamentables.
Una de las mejores cosas que puede hacer es mantener sus opciones abiertas. Chopse una plataforma independiente de tecnología y podrá tener software para cualquier O / S o implementación. Desde un punto de vista técnico, esto tiene mucho sentido, así como de una empresa.
En cuanto a las ventajas técnicas específicas para la plataforma de Windows, aparte de la gran comunidad de desarrolladores y la tienda de información de desarrollo, y el ampliamente soportado IDE como Visual Studio, diría que será difícil encontrar uno. Incluso allí, Eclipse puede hacer un buen trabajo con una plataforma independiente de tecnología.
Una razón por la que tenemos plataformas de desarrollo de Windows (aunque nuestra producción está en Linux o Solaris) es un entorno común para todos .
Eso significa que todas las diferentes poblaciones involucradas en la realización de un software:
- no son todos los desarrolladores (las personas de negocios y funcionales también se preocupan por un entorno de trabajo)
- están todos en la misma plataforma (Windows)
- use todas las mismas herramientas para escribir / comunicar (como en Word, PowerPoint)
- puede tener su mismo entorno en la computadora portátil
En resumen: uniformidad del entorno para todos (desarrolladores y no desarrolladores por igual).
La otra razón es la depreciación : es fácil administrar la depreciación para PC, donde los servicios son más livianos que un servidor Unix a escala completa (como un Sun Fire, un F15K o F50K, ...): este último necesita un servicio de asistencia costoso contratos (como "bronce", "plata" u "oro" según el nivel requerido). Una PC es más fácil de reparar / reemplazar, y no es tan crítica que un desarrollador la "estropee" y la interrumpa completamente;)
Una vez dicho esto, la desventaja de esto es que no cambias de PC todos los días: significa administrar un gran número de equipos de escritorio, no puedes decidir simplemente actualizar de esa manera (y eso también aplica para Os).
Entonces, cuando las otras respuestas son sobre "máquina virtual", mientras que su conjunto de PC es de 2003, con solo 40Go de disco duro y 1, puede ser 2Go de memoria ..., se da cuenta de que la "virtualización" no siempre es obvia solución.
Por lo tanto, se requiere algún servidor de "integración" de Unix para que los desarrolladores prueben sus productos en un entorno más cercano al objetivo. En cierto modo, esto es mejor, ya que esos servidores de integración se administran de forma uniforme, evitando el síndrome de "funciona para mí TM ", en oposición a la máquina virtual, donde cada desarrollador es la propia raíz / administrador de su propia pequeña mundo / servidor;).
¿Por qué no usar ambos?
En cualquiera de los casos, puede usar una máquina virtual en Windows o Linux / Unix básicamente sin usar Virtual Box o el reproductor de VMware. O puede acceder a escritorio / vnc remoto a la otra plataforma desde su caja de desarrollo. Si desarrollas en .net probablemente estarías mejor en Windows para dev. Si desarrollas para LAMP, Windows / * nix estaría bien.
dame apache mysql (ok postgres en un apuro) php y eclipse ... a quien le importa el sistema operativo ...