¿Qué ventajas tiene Ubuntu sobre Windows como entorno para la programación?


59

¿Por qué escribir un programa en archivos de texto o mediante el terminal es una mejor opción (mientras leo) que usar IDE (s) como Visual Studio en Windows? ¿Existen allí las características que proporciona un IDE (por ejemplo, mostrar errores de compilación) o es un proceso manual?


16
Algunas personas han estado haciendo programación durante mucho tiempo y han llegado a ser muy efectivas para hacer lo que hacen desde un símbolo del sistema basado en texto. También pueden encontrar editores que les gusten vim. ¡Esta es un área muy subjetiva! Sin embargo, muchas personas usan IDE en Linux, por lo que aquí se combinan varias cosas.
Warren P

3
Creo que los IDE no son el punto principal de la pregunta. Hay muchos IDE para sistemas operativos Linux. Por ejemplo, todos los IDE de JetBrains (IntelliJ / PyCharm, etc.) funcionan en Linux. Eclipse funciona en Linux. QtCreator funciona en Linux.
Bakuriu

12
Esta pregunta en este sitio sufrirá un sesgo de confirmación .
zzzzBov

55
En un esfuerzo por mantener la pregunta limpia de meta-discusión, he abierto un tema de Meta separado para abordarlo específicamente .
Oli

44
Reformule esta pregunta para que tenga más sentido, en particular el título. Ubuntu no te obliga a evitar IDEs y a seguir con los editores de texto para el desarrollo de software más de lo que lo hace Windows.
Reinier Post

Respuestas:


87

Este tipo de hipótesis podría funcionar mejor en Programmers.SE porque es probable que sea bastante unilateral aquí. Dicho esto, fui desarrollador de .NET durante unos años y llegué a depender de Visual Studio. Hace mucho por ti y sí, me gusta especialmente el depurador integrado ... Sin embargo, creo que hay algunas razones por las que las personas eligen Linux:

  • Ubuntu es gratis. Windows y VS pueden ser extremadamente caros.

  • Ubuntu es gratis . Windows y VS le dan muy poco control sobre cómo los usa.

  • Ubuntu es un entorno de programación listo para usar. Herramientas como Bash, grep, sed, awk. Windows es históricamente un gran dolor en la parte inferior del script. Los archivos por lotes son horribles e incluso con PowerShell, la experiencia de la línea de comandos en Windows es insignificante en comparación con Bash y las herramientas GNU. Puede transferir algo de eso a Windows, pero no es la misma experiencia.

  • Las configuraciones complicadas son fáciles de automatizar y replicar a través de apt-getherramientas como Puppet , Chef , Juju , Fabric y secuencias de comandos simples.

  • Algunas cosas no necesitan IDEs complicados. Soy desarrollador de Python en estos días y estoy perfectamente satisfecho con sus propias herramientas y depurador integrados. Uso un editor de texto, la línea de comandos y la estructura ... Y tengo mucho más control que bajo .NET. Puedo construir, probar, comprometer e implementar mis aplicaciones web con un solo comando de Fabric.

    Eso no quiere decir que no haya IDE monolíticos. Eclipse y Netbeans. MonoDevelop. KDevelop4 y QT Creator. Todos tienen sus usuarios que juran por ellos.

¿Ubuntu es mejor para ti ? Quién sabe. Es un sistema muy capaz y muy personalizable. Si le da la oportunidad y modifica su flujo de trabajo para permitir que lo ayude, debería poder hacerlo.


18
"Gratis" tiene que ver con el costo y la molestia. Utilizo una Mac, pero una herramienta como Vagrant hace que sea fácil configurar una máquina virtual Linux limpia para cualquier proyecto y descartarla cuando el proyecto esté terminado. "¿Qué quiero?" es la única consideración, no "¿Tengo una clave de licencia para este sistema operativo y cómo puedo reconocerla ...?"
Nathan Long

14
+1 Para mantenerse objetivo cuando a tantas personas les resulta fácil tener una actitud instintiva de "Windoze apesta a todo".
Phil

2
Una cosa que debe tenerse en cuenta es que el estudio visual es más gratuito de lo que solía ser, ha soportado archivos MAKE por un tiempo y los complementos le permiten escribir y depurar aplicaciones cygwin completamente dentro de Visual Studio.
Scott Chamberlain

66
even PowerShell scripts lack the power of Bash- Argumentaría que no conoces muy bien la PS entonces; es inmensamente poderoso y no he encontrado nada que puedas hacer en Bash que no puedas hacer en PS
Mark Henderson

44
@ MarkHenderson Sí, es casi seguro que no se usa lo suficiente. Fue introducido justo cuando dejaba Windows y .NET detrás de mí. Creo que Bash (y por "Bash" me refiero a GNU) se llevó conmigo porque lo usas en todas partes y para todo . PS requería por lo tanto googlear cada vez porque todo era siempre super-especializado. Sinceramente, es difícil decirlo después de tanto tiempo con Bash.
Oli

37

Sin embargo, me gustaría agregar una razón más importante; Ubuntu es ideal para experimentar con nuevas bibliotecas, idiomas, IDEs y compiladores. Todo es uno para escapar.

Entonces has oído hablar de un lenguaje elegante llamado Haskell :

sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!

Oh, has escuchado un editor elegante para Haskell:

sudo apt-get install <fancy-editor-for-haskell>

Al igual que con las bibliotecas C / C ++ , solo apt-get installlos archivos binarios y los encabezados van a las carpetas correctas, ¡y puede simplemente #includecolocarlos en sus archivos de origen sin necesidad de verificar dónde están ubicados!

En esencia, no se trata de qué tan rápido puede configurar su entorno de trabajo diario. También se trata de qué tan rápido puede configurar un entorno experimental. Creo que eso es lo que acelera la experiencia de aprendizaje en Linux.


36
apt-get, y la mentalidad de que todo debe ser instalable de esa manera, es quizás lo mejor de Linux. Ni OSX ni Windows se comparan aquí.
Nathan Long

11
Sí, pero debe buscar el instalador de cada aplicación manualmente: el hecho de que usen el mismo instalador en el interior no le compra mucho (les ahorra un poco de esfuerzo). Eso no es lo mismo que un administrador de paquetes incorporado.
Inútil

2
@NathanLong Acabo de hacer exactamente lo mismo usando Macports: sudo port install ghc. Recién compilado de las fuentes. The MacPorts Project currently distributes 17699 ports. Una diferencia es que siempre se compila.
alecail

2
@karadeniz: Y eso no es hablar yum, pacman, emerge, petget, pkgadd...
Aesin

2
Me gustan los MacPorts (y mantengo un par de paquetes allí y en Homebrew), pero realmente no se puede comparar con Debian. Estos proyectos más pequeños simplemente no tienen el poder personal para mantener un gran repositorio al mismo estándar. Lo mismo ocurre con Cygwin y Coapp en el lado de Windows. La diferencia clave es cultural, creo, los administradores de paquetes de Linux son parte del sistema y todos los usan, no son un remanso de complementos ligeramente descuidado.
jcupitt

20

Aquí hay una opinión de un desarrollador de plataforma principalmente de Microsoft. Si no está apuntando al ecosistema .NET, diría que su mejor opción es Ubuntu. Te resultará mucho más fácil obtener, configurar y usar herramientas para casi cualquier otra plataforma / idioma si estás en Ubuntu en lugar de Windows.

El valor de la cadena de herramientas de Microsoft es que está ALTAMENTE integrado. Desde el IDE hasta el control de origen, gestión de proyectos, compilación, implementación, base de datos, infraestructura en la nube, hasta la saciedad . Microsoft lo hace MUY fácil si te estás volviendo loco con su plataforma.

Como algunos han mencionado, desviarse de Microsoft Way puede ser una molestia. Usar .NET para su código y Oracle para su base de datos ... eso será un dolor.

Desea crear una aplicación web .NET e implementarla en Amazon Web Services ... no es muy sencillo.

Pero si te quedas en el ecosistema de Microsoft ... ese bebé cantará como un pájaro burlón para ti. En manos de un desarrollador de software competente, la Plataforma Microsoft es como PED para un atleta talentoso. No permitirá que un programador aficionado cree el próximo Facebook. Pero le dará una ventaja a un desarrollador talentoso que entiende cómo encajan las piezas.

El argumento para el costo gratuito (como en la cerveza) de comenzar con Ubuntu está fuera de lugar, hay una serie de programas que ofrece Microsoft que le permiten comenzar con sus herramientas de forma gratuita. Incluyendo Bizspark, que otorga a su empresa de inicio 3 años de licencias (incluidas las licencias de uso de producción de sus herramientas). Y Dream spark, que se lo da a los estudiantes de forma gratuita.

Dicho esto, si desea explorar y aprender nuevos idiomas y plataformas, encontrará mejores herramientas para comenzar en Ubuntu y si está buscando trabajo fuera del ecosistema de Microsoft, necesitará estar familiarizado. con Ubuntu


77
Sí, estoy de acuerdo. Después de escribir un código C / Unix de bajo nivel por un tiempo en un entorno Linux, decidí tomar un descanso y hacer un desarrollo de gráficos C #, encendí el nuevo VS y, bueno, fue liberador, por decir lo menos. No es tan flexible, pero seguro que hace las cosas más fáciles si no te importa vender tu alma a Micr ... ¡Quiero decir, expandir tus horizontes!
Thomas

3
Sí +1 para un antídoto de bienvenida contra los disparos anti-MS a medias.
Alan B

15

Yo uso de ambas herramientas, entornos de desarrollo y editores de texto con C ommand- L ine I nterface (fuelle conocido como CLI ), para escribir programas.

Lo que ofrece Linux es una CLI útil a partir de la instalación predeterminada. Si no necesita eso y solo está utilizando un IDE de todos modos, entonces ya no hay mucha diferencia (en mi humilde opinión).

IDEs

  • Los IDE son muy buenos cuando se trata de integrar muchas funciones y presentarlas en una GUI gráfica.
  • La desventaja es que puede abrumar a alguien nuevo en esto. Ahora tendrá dos cosas que aprender: el IDE y el lenguaje de programación.

Editores de texto y herramientas de CLI

  • Los editores de texto y las herramientas de CLI no tardan mucho en aprender.
  • Si algo no funciona, es fácil ver qué herramienta no funciona como se esperaba.
  • También es más fácil buscar problemas con Google, ya que todo está basado en texto.
  • La programación con editores de texto y herramientas CLI es más rápida y más receptiva, especialmente comparándolas en hardware antiguo.
  • Puede trabajar con ellos incluso en pantallas de baja resolución.
  • Le permite programar y depurar con recursos mínimos en un servidor remoto.

A menudo hago mis prototipos con herramientas basadas en texto. Más tarde, cuando hay más archivos para administrar, valoro las herramientas de refactorización que me ofrece un IDE.


8
Para referencia futura, CLI es una abreviatura de interfaz de línea de comando. CLI generalmente se refiere a una interfaz como aptitude que es similar a una GUI, pero en texto. Vim sería un editor de CLI, pero grepno sería CLI, no tiene una interfaz (solo sería una herramienta de línea de comando)
kiri

La desambiguación es buena. Viniendo de un fondo de programación de Windows CLI podría significar Common Language Infrastructure .
jltrem

Utilizo una GUI para desarrollar GUI y un editor de texto para desarrollar CLI o programas / contenido basados ​​en texto. Nunca trataría de escribir una aplicación comercial con una gran interfaz gráfica de usuario en Vim, Visual C # facilita la creación de prototipos de este tipo de cosas sin esfuerzo. Del mismo modo, nunca haría desarrollo web (PHP / HTML / CSS / JS, etc.) en un IDE en Windows, porque hacerlo en Vim en mi servidor web es infinitamente más eficiente y conveniente.
Dan

@ minerz029 CLI es programas de estilo grep (un comando [línea] a la vez). Estás pensando en "aplicaciones de consola", que es aptitude / vim-style.
Izkata

44
@ minerz029 La interfaz grepes para los argumentos, stdin y stdout: la palabra no implica nada gráfico o pseudo-gráfico. Otros tipos de interfaces incluyen API web, protocolos seriales, etc.
Izkata

12

Lanzaré mi respuesta al ring (aunque creo que todos estos también son buenos).

La respuesta más básica que puede obtener es que se trata de filosofía.


En el mundo de Microsoft, es un poco religioso: tienes a los dioses en el monte. Redmond, a quien se debe solicitar si desea implementar algo. Algunas veces escucharán, otras veces tus sacrificios y súplicas caerán en oídos sordos. Quizás estaban cazando. Microsoft controla todo el ecosistema: son dueños del sistema operativo, son dueños del IDE y los juntan de maneras que probablemente no sean apropiadas para hablar en una red SE. Incluso dentro del IDE, las piezas están estrechamente acopladas; puede llamarse integradopero creo que acoplado es más preciso. Si desea cambiar un poco las cosas, Gates prohíbe que desee alterar algo de una manera que los diseñadores de Windows o Visual Studio no permitieron expresamente. Y luego agregue tecnologías como IE e IIS, servidores de Microsoft y MS SQL Server y Office ... y todo es una familia grande y feliz. ¿Pero si quieres dejar atrás a parte de la familia? estremecerse !


Por otro lado, tienes Linux, que hereda de la filosofía de Unix que cada pieza debe ser responsable de su pequeña esfera de responsabilidad. Debería hacer una cosa y hacerlo bien. Y, preferiblemente, la comunicación debe realizarse mediante cadenas de texto. Como otros han señalado, sed, awk, grep, etc, son ejemplos perfectos de esto. Ellos hacen el uno lo que están diseñados para hacer, y lo hacen muy bien. Si necesita hacer dos cosas, entonces combina las dos herramientas. Lo cual es muy fácil de hacer.

Debido a que sedespera que nada más que la entrada que ingrese sea texto, eso significa que cualquier cosa que pueda producir texto no tiene que reinventar la rueda. Simplemente pueden usar sed. Y debido a que sedproduce texto, cualquier cosa que pueda leer texto puede usar la salida de sed. El texto es muy universal (hay algunas excepciones a esto), y es muy fácil combinar este tipo de cosas.

No solo es fácil combinarlos, sino que también es muy fácil separarlos; si decido que ya no necesito editar una secuencia, pero quiero filtrar los resultados, en lugar de pasar mi texto sed, puedo pasar en su greplugar.

Ahora, esta es la filosofía fundamental detrás del desarrollo en un entorno Linux, por lo que incluso si avanza desde allí, muchas herramientas proporcionan tipos similares de interfaces. Le permiten descomponerlos en partes o interactuar con ellos a través de la línea de comando o puertos o HTTP.

E incluso si ese no fuera el caso, también tiene software de código abierto. La mayoría (si no todo) el software en la plataforma Linux es de código abierto. Por lo tanto, si no le gusta cómo está escrito, puede cambiar el software usted mismo de forma total, total y absoluta. Esto es increíblemente enriquecedor. ¿No puede separar ese IDE de la manera que desea? Realice los cambios y envíelos nuevamente en sentido ascendente, o bifurque el proyecto. ¿No está seguro de por qué algo se comporta como lo hace? ¡Usa la fuente, Luke! ¿Necesita poder automatizar algo a través de la línea de comando? Hackea el proyecto y pega tus cambios. ¿Te encuentras con un error o un problema de seguridad? Oye, adivina qué: puedes arreglarlo tú mismo, no tienes que esperar a que salga SP3.432vb89234.startdate1eQ.

Puede combinar las herramientas que desee y necesite. Y si hay algo en tu camino, eres 100% capaz de cambiar eso. Incluso si no tiene la capacidad, sin duda podría pagarle a alguien para que desarrolle ese cambio, o incluso sugerirlo a otra persona que tenga los conocimientos.

La razón por la que esto es mejor para la programación es porque cuando encuentras fricción , puedes eliminarla de tu flujo de trabajo. Debido a que el desarrollo es difícil, hay muchas cosas en las que tienes que pensar para ser un programador exitoso, y cuanto más tienes que pensar, más difícil es pensar en otras cosas .

Eliminar la fricción es la clave.

Entonces, si la religión del ecosistema de Microsoft es donde te sientes como en casa, y disfrutas tanto de las herramientas que no te proporciona mucha / ninguna fricción ... bueno, entonces probablemente esté bien.

Pero si no se ajusta al molde de Microsoft (tm), pendiente de patente, entonces se encontrará con fricciones. El desarrollo será un dolor. Cada vez que desee , podría hacer algo, pero no puede, que drenará preciosos recursos cognitivos. Y si ese es el caso, entonces un entorno de desarrollo de Linux es probablemente para usted.


1
Realmente disfruté los ensayos que vinculaste, gracias.
Gareth Davidson

3
Elogie a Balmer, y que todos sus bits de paridad se configuren correctamente. ACK. ACK. ACK.
Warren P

9

Me gustaría proporcionar mis pensamientos más generales a la pregunta:

"¿Por qué Linux es un mejor entorno para la programación?"

Creo que la razón más importante por la que desarrollar en Linux es porque tiene una visión completa de la mayoría de los componentes internos del software. Usted puede aprender cómo funcionan realmente las cosas si está interesado. Eso le permite aprender y adaptar buenas o malas prácticas al verlas en acción. Esto permite más diversidad para sus ideas.


2
Buen punto. El código abierto es un beneficio natural para todos los desarrolladores que tienen algún tipo de curiosidad. ¡En las ventanas, son tortugas hasta el fondo!
Warren P

Ese es un buen punto. Usted tiene una idea de lo interno de un software aquí
Anwar

Muchos desarrolladores de Windows trabajarán toda su vida laboral en la plataforma de Windows, programando contra una API que nunca verán al otro lado. Una especie de prisión para la mente, ¿no te parece?
Warren P

@WarrenP Si una API está debidamente documentada, entonces no aprenderá más al mirar el código fuente. (Aunque admito que muchas API no están completamente documentadas, en ambos mundos.)
svick

8

¿Por qué Linux es mejor para programar?

IDEs

Además de Visual Studio y Xcode, que sirven para sus propósitos específicos, los IDE más populares son multiplataforma. Puede parecer que hay miles de millones de IDEs para docenas de idiomas, pero al final la mayoría de ellos se basan en Eclipse , IntelliJ IDEA o NetBeans . Lo que tienen en común es que todos están basados ​​en Java. Java funciona de manera más eficiente en Linux que en cualquier otro sistema operativo en el mismo hardware. De hecho, Java es hasta un 20% más rápido en Linux que en OS X en el mismo hardware. Muchos de estos IDE están listos para instalar con un clic en el Centro de software de Ubuntu.

Compilador

GCC se ha convertido en un estándar de la industria. Sin lugar a dudas, su plataforma principal es Linux, donde es más compatible. Y es gratis y sin regalías.

Herramientas adicionales

Linux proporciona herramientas únicas, no disponibles en otras plataformas, como por ejemplo Valgrind (una herramienta para depuración de memoria, detección de pérdida de memoria y creación de perfiles). Linux también viene con herramientas de depuración como strace y ltrace , que pueden usarse para depurar incluso el código de producción (es decir, no compilado con símbolos de depuración). Las herramientas equivalentes para Windows son inexistentes o muy caras y no ofrecen la misma funcionalidad.

Facilidad de instalación de OSS

Ubuntu tiene un excelente administrador de paquetes. En la mayoría de los casos, la instalación del software es sencilla apt-get install package-name(también puede hacerlo con la GUI, ya sea Ubuntu Software Center o Synaptic). Una vez instalados, el sistema los actualiza automáticamente con las versiones de corrección de errores. El sistema de paquetes también realiza un seguimiento automático de las dependencias, por lo que no tiene que preocuparse por otros paquetes necesarios; Se instalarán automáticamente.

Por otro lado, en Windows debe descargar e instalar manualmente los paquetes, y si requieren otros paquetes, también debe hacerlo manualmente. Tampoco hay una actualización de todo el sistema, cada paquete de software implementa su propio actualizador molesto o no se actualiza en absoluto.

Es muy probable que las máquinas de producción sean Linux

Si está haciendo algún tipo de programación para back-end, para web, para la nube, etc., es muy probable que sus máquinas de destino sean Linux. Hay muchas menos sorpresas desagradables cuando estás desarrollando en el mismo tipo de sistema operativo que tu máquina de destino.

Por supuesto, es posible que esté desarrollando una aplicación de escritorio para Windows, pero hoy en día es una especie de nicho de mercado de trabajo para programadores.


¿Las aplicaciones de escritorio para Windows son un nicho de mercado? Que?
Alan B

2
@AlanB: No, los programadores de aplicaciones de escritorio para Windows son un nicho. Se estima que entre el 90 y el 95% de los programadores están haciendo desarrollo interno, y en su mayoría no son aplicaciones de escritorio. Además, piense en ello, ¿cuándo fue la última vez que compró (como en dinero real pagado) una aplicación de Windows, que no era un juego (ni un producto de Adobe)?
vartec

Hasta donde puedo ver, casi todo en el espacio empresarial todavía está resueltamente basado en el escritorio y pagado, a pesar de que las empresas centradas en la nube continuamente afirman lo contrario.
Alan B

44
@AlanB: nuevamente, no estoy hablando del mercado de usuarios finales. Estoy hablando del mercado laboral para programadores . Por ejemplo, una de las aplicaciones de las que habla es MS Office. Sin embargo, todo el equipo de Office en MS solo tiene unos 2.500 programadores, y muchos de ellos ni siquiera están trabajando en la versión de escritorio.
Vartec

7

¿Por qué escribir un programa en archivos de texto o mediante el terminal es una mejor opción (mientras leo) que usar IDE (s) como Visual Studio en Windows?

No lo es, puedo argumentar que es todo lo contrario. En general, sin embargo, las personas tienden a preferir herramientas en las que son mejores. El tipo de herramientas que utiliza podría beneficiar la facilidad de escribir programas. Entonces, por ejemplo, puedo escribir programas Java perfectamente con vim, pero es realmente contraproducente en comparación con un IDE completo como Eclipse o IntelliJ. Jon Skeet dio una gran respuesta a la pregunta ¿Por qué usar un IDE ?

Volviendo a su pregunta original, lo único en lo que Linux es mejor es la programación en C. Todo lo demás que puede hacer en Linux también lo puede hacer en Windows y viceversa (programación inteligente). La programación en C es mejor en Linux por razones históricas, ofrece un gran conjunto de herramientas (que puede obtener en Windows BTW pero es mucho más fácil configurar Linux para él). Del mismo modo, si está escribiendo C # y le gusta .NET, entonces Windows es una mejor opción por razones obvias. Todo lo demás es completamente subjetivo y escuchará los pros y los contras de ambos lados.


55
Por favor, intente configurar un entorno <poner otro lenguaje de programación excepto MS's here> en Windows, veamos qué tan lejos llega.
Braiam

1
@Braiam lo hice, Java: P.
Daniel

66
Linux es mejor para ejecutar cualquier cosa similar a Unix. La cadena de herramientas GCC (que incluye un compilador C y C ++ y otras cosas) tiene una larga herencia de Unix / Posix. Pero, si cree que toda la programación similar a Unix es programación en C, lamentablemente está subexpuesta a la rica diversidad de la herencia y las herramientas de Unix / Posix / Linux.
Warren P

2
Java es un caso un poco especial, ya que genera rápidamente carpetas profundamente anidadas y muchos archivos. Y tan pronto como cambie el nombre de las clases o paquetes, debe sincronizar los nombres de archivo o las carpetas respectivamente. Fun fun fun :)
MadMike

1
No sé si Linux y la CLI son necesariamente mejores para la programación en C (VS es excelente en C ++ pero carece de soporte C99, Posix puede ser un poco más limpio que Win32). Pero apt-getes genial cuando se trata del desarrollo de C. Puede obtener rápidamente herramientas, bibliotecas y símbolos de depuración para sudo apt-get install libcurl4-openssl-dev, por ejemplo sudo apt-get install valgrind, sudo apt-get install libz-dbgY probar cosas fácilmente.
Alex Jasmin

6

Qué herramientas (editor de texto o IDE) utiliza para programar es una cuestión de elección. En términos generales, puede decir: los principiantes y los proyectos muy pequeños tienden a usar mejores editores de texto, como texto sublime o una versión modificada de gedit. Solo porque aprende más cuando usa editores de texto sin formato. Los IDE pueden arruinar su proceso de aprendizaje al automatizar cosas (como lo hace Visual Studio;)).

Cuando se trata de profesionales, jugando con muchas herramientas e idiomas, los IDE son útiles, porque pueden hacer mucho más por usted, si se lo permite. Hay muchos IDE para elegir, dependiendo del idioma en el que desea programar. Hay mejores y menos convenientes.

Mi experiencia personal es que un sistema operativo Ubuntu es mucho más rápido y fácil de configurar para el desarrollo que Windows. Supongo que esto se debe a que la mayoría de las herramientas y programas que uso se basan en Linux y porque no tengo que buscar enlaces de descarga de mis programas favoritos en Internet. Es solo un 'apt-get install program1 program2 program3' de distancia. En comparación: necesito 3 días hábiles para instalar y configurar una nueva instalación de Windows con todo lo que necesito para programar (empresa, no privada, sería más rápido), pero es solo un día para la misma tarea en Ubuntu.

Mi experiencia es que los programadores que cambian a Linux para programar tienen (la mayoría de las veces) una comprensión más profunda de los contextos técnicos y de cómo funcionan los conceptos básicos. Los usuarios de Mac y Windows tienden a no saber por qué algo funciona de esta manera o por qué no. No estoy seguro de si realmente puedes aprender algo trabajando con Linux o si solo esas personas que quieren aprender cambian a Linux.

Espero que mi "blafasel" ayude un poco ...


1

Yo diría que una distribución de Linux es un IDE.

Para empezar, Unix fue diseñado desde el principio para ser un entorno de desarrollo. Fue escrito por programadores para programadores. La mayoría de los Unix y Linux aún incluyen herramientas de desarrollo en su configuración predeterminada. Y las partes faltantes están a solo una apt-get(o el equivalente) de distancia. Windows, por otro lado, es un entorno de desarrollo terrible hasta que instala un IDE, que no es barato, o un proceso trivial.

Un IDE está más integrado, en el sentido de que los IDE están más estrechamente acoplados que el uso de GCC, Git y Vi (por ejemplo). El acoplamiento apretado permite que cosas como 'intellisense' funcionen mejor. Pero, por otro lado, el acoplamiento suelto tiene muchas ventajas (por ejemplo, flexibilidad, intercambiabilidad, falta de bloqueo).

Y los avances en el diseño de compiladores (compiladores con front-end fácilmente separables como LLVM) podrían eventualmente significar un mejor soporte para características tales como resaltar errores de sintaxis incluso en entornos poco acoplados.


Entonces, ¿básicamente estás diciendo que Linux es un entorno de desarrollo integrado que en realidad no está muy integrado? :-)
svick

1

En cuanto a la filosofía: Ubuntu / Linux permite al programador de la computadora acceso directo a los componentes internos y al hardware, mientras que Windows es una especie de controlador. Este es un tema filosófico importante cuando se trata de programación. Entonces, filosóficamente hablando, esta característica como una ventaja dependerá de si el usuario tiene suficiente conocimiento o es técnicamente consciente de la importancia de la misma.

En cuanto a la programación: toda la arquitectura del sistema de Ubuntu / Linux se basa en la tradición de Unix de programas pequeños y simples que hacen una cosa y luego los unen para hacer cosas más complejas. Para un programador, esta arquitectura es increíblemente poderosa y, en mi opinión, es la razón por la cual Unix prevalecerá a largo plazo contra cualquier otra arquitectura de software en cada plataforma. Uno de los pocos lugares donde Unix no es actualmente dominante es el escritorio, pero eso cambiará con el tiempo. Distribuciones como Ubuntu están ayudando a ver esta evolución.

Sin embargo, no disputo que hay algunos entornos de programación muy buenos en Windows. Para la programación dentro de un entorno corporativo, estos a menudo dominan.


0

La velocidad es la respuesta correcta.

Me parece que con un IDE gráfico como Visual Studio o QtCreator utilizo demasiado el mouse cuando debería usar atajos. Cada vez que cambia de contexto, tiene que pausar su cerebro, concentrarse en su objetivo y esperar la acción. Mientras que presionar F5 es infinitamente más rápido.

Ahora, si está utilizando vim, Emacs o cualquier otra cosa que no tenga botones bonitos, se centrará en presionar las teclas, tiene un método y será más rápido debido a su rutina.

Los errores se presentan de manera más detallada con una interfaz de línea de comandos, que prefiero, y también proporciona comentarios durante la compilación. Una cosa que odio de Visual Studio es que el valor predeterminado es un pequeño ícono que indica que está compilando, luego obtienes una lista de errores.

Con una vista estrecha que mantendrá el ancho de 80 columnas que ayuda a la legibilidad, he visto código que se extiende hasta el ancho de 200 columnas. Con el código que se ajusta a 80 columnas, puede tener 4/5 ventanas abiertas a la vez.

Con un editor de CLI puede codificar de forma remota, sin necesidad de una sesión RDP lenta (en comparación con el texto) en su Visual Studio. Puede codificar a través de un enlace GSM.

El desarrollo de formas visuales es una mierda. Una ventaja que puede poner en un IDE GUI es que puede dibujar sus pantallas y es más rápido. Sin embargo, en mi experiencia está bien para un prototipo, pero a menudo obtienes mejores resultados al hacerlo manualmente en código. El analizador de código VS2012 de esta mañana acaba de advertirme sobre más de 200 problemas con el código que fue generado automáticamente por Visual Studio?!?!?


0

Creo que su verdadera pregunta podría ser: "¿Hay alguna alternativa de Visual Studio que se ejecute en Ubuntu, ya que no lo hará?"

MonoDevelop.

Es viable, pero lo odiarás si estás acostumbrado a VS y a todas las funciones.

NO hay ninguna ventaja al usar un editor de texto. ¿Recuerdas esa cosa bonita llamada Intellisense? No sucede (pero MonoDevelop tiene algo así). Espero que esto ayude.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.