¿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?
application-development
programming
Muhammad Charaf
fuente
fuente
vim
. ¡Esta es un área muy subjetiva! Sin embargo, muchas personas usan IDE en Linux, por lo que aquí se combinan varias cosas.Respuestas:
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-get
herramientas 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.
fuente
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 PSSin 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 :
Oh, has escuchado un editor elegante para Haskell:
Al igual que con las bibliotecas C / C ++ , solo
apt-get install
los archivos binarios y los encabezados van a las carpetas correctas, ¡y puede simplemente#include
colocarlos 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.
fuente
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í.The MacPorts Project currently distributes 17699 ports
. Una diferencia es que siempre se compila.yum
,pacman
,emerge
,petget
,pkgadd
...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
fuente
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
Editores de texto y herramientas de CLI
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.
fuente
grep
no sería CLI, no tiene una interfaz (solo sería una herramienta de línea de comando)grep
es 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.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
sed
espera 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 usarsed
. Y debido a quesed
produce texto, cualquier cosa que pueda leer texto puede usar la salida desed
. 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 sugrep
lugar.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 deMicrosoft 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.
fuente
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.
fuente
¿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.
fuente
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.
fuente
apt-get
es genial cuando se trata del desarrollo de C. Puede obtener rápidamente herramientas, bibliotecas y símbolos de depuración parasudo apt-get install libcurl4-openssl-dev
, por ejemplosudo apt-get install valgrind
,sudo apt-get install libz-dbg
Y probar cosas fácilmente.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 ...
fuente
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.
fuente
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.
fuente
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?!?!?
fuente
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.
fuente