Steve Yegge escribió un comentario en su blog :
Todos los mejores ingenieros del mundo usan Emacs. Los tipos que cambian el mundo. No es la gran chica en el cubo a tu lado. No Fred, el chico asombroso del pasillo. Estoy hablando de los mejores desarrolladores de software de nuestra profesión, los que cambiaron la faz de la industria. James Goslings, Donald Knuths, Paul Grahams, Jamie Zawinskis, Eric Bensons. Los verdaderos ingenieros usan Emacs. Tienes que ser muy inteligente para usarlo bien, y te hace increíblemente poderoso si puedes dominarlo. Mire por encima del hombro de Paul Nordstrom mientras trabaja en algún momento, si no me cree. Es una verdadera revelación para alguien que ha usado IDE similares a Visual Blub .NET durante toda su carrera.
Emacs es el editor de 100 años.
La última vez que usé un editor de texto para escribir código fue cuando todavía estaba escribiendo HTML en el Bloc de notas hace aproximadamente 1000 años. Desde entonces, he sido más o menos dependiente de IDE, habiendo usado Visual Studio, NetBeans, IntelliJ, Borland / Codegear Studio y Eclipse durante toda mi carrera.
Por si sirve de algo, yo he tratado de Emacs, y mi experiencia fue una frustración debido a su falta completa de fuera-de-the-box características detectables. (Aparentemente hay un comando de Emacs para descubrir otros comandos de Emacs, que no pude encontrar por cierto, es como vivir tu propia broma cruel al estilo Zen.) Traté de hacer que me gustara el programa durante un buen mes, pero eventualmente decidí que preferiría tener diseñadores de GUI de arrastrar y soltar, IntelliSense y depuración interactiva en su lugar.
Es difícil separar los hechos del fanboyismo, por lo que todavía no estoy dispuesto a tomar los comentarios de Yegge al pie de la letra.
¿Existe una diferencia apreciable en la habilidad, la productividad o el disfrute de la programación entre las personas que dependen de los IDE y las que no, o todo es fanboyismo?
fuente
Respuestas:
Primero permítanme decir que soy un verdadero creyente en el culto a Emacs.
Dicho eso, el blogger está loco. Escribes lo que te parece útil. Encuentro que Emacs me ayuda, principalmente porque pasé mis años universitarios pagando por adelantado el costo inicial de aprender a modificarlo para adaptarlo a mis necesidades, y modificándome a sus necesidades.
Pero otras personas hacen las cosas de manera diferente, y como dicen "Eso está bien".
fuente
Él (Steve Yegge) ha elaborado esto, en pedazos, en otras publicaciones suyas. http://steve-yegge.blogspot.com/2008_04_01_archive.html es probablemente el más completo, pero la información está enterrada allí ya que está en una tangente al tema principal.
Supongo que para resumir: los programadores que son simplemente buenos o competentes recogerán un IDE y lo conocerán realmente bien, y tal vez lo hagan con bastante decencia, pero se limitarán a lo que el IDE les proporciona. En otras palabras, se adaptan al IDE. Los grandes programadores, por otro lado, adaptarán su entorno para adaptarse a sí mismos , de tal manera que escriban guiones o sus propias herramientas, o amplíen sus herramientas. Y hasta ese último punto, no solo Emacs es el entorno más extensible que existe, sino que también es el entorno más fácil de extender que existe, y es el entorno donde se obtiene el mayor beneficio de extenderlo: sus extensiones se integran en Emacs como si fueran características de stock, por lo que sus futuras extensiones pueden basarse en las anteriores (tipo de cosa de bucle de retroalimentación positiva).
fuente
Los mejores programadores usan vi o emacs, porque los programadores más experimentados son los mejores, y hace 20 años, no había muchas opciones, excepto vi y emacs.
Después de haber comenzado con vi (ca. 1987) en una máquina con una terminal de texto muy lenta, me convertí a (GNU) Emacs después de unos años (en una máquina más rápida), y la usé casi exclusivamente durante casi 10 años.
Emacs fue el primer entorno de desarrollo verdaderamente integrado: todo el ciclo de edición / enlace / compilación se podía controlar en emacs, y usted podía rodar el suyo para cualquier compilador que utilizara.
Hoy en día, los IDE como eclipse están aún mejor integrados (para ser honesto: emacs apesta a los gráficos), pero Emacs sigue siendo uno de los mejores entornos para la edición de texto "puro".
fuente
Mejorar su pensamiento claro y la resolución de problemas lo convertirá en un mejor programador. Ningún programa puede hacer eso.
Usar un martillo mejor no me ayudará a construir una casa más agradable a menos que sepa cómo y por qué. ;)
fuente
Yegge necesita conocer a Bill Joy. No solo es uno de los grandes programadores del mundo, sino que también escribió grandes fragmentos de vi. En vi.
Breve confesión vergonzosa: después de 20 años de usar vi (y vim / gvim en los últimos años) para todo, en el último año más o menos comencé a usar Eclipse para la edición de Java (y Thunderbird para el correo electrónico), aunque en mi trabajo actual mi la máquina tiene tan poca memoria que generalmente uso vi, excepto cuando necesito el depurador.
fuente
Simplemente reduzcamos esto a Visual Studio vs. Emacs --- la pregunta es demasiado amplia de lo contrario, y sospecho que la mayoría de las personas (al menos aquí en StackOverflow) están familiarizadas con esos dos. [Soy, y uso y prefiero emacs]
A continuación, analicemos los tres componentes de la pregunta.
El disfrute de la programación se reduce a gustar principalmente la programación en sí misma y, en segundo lugar, a que no surjan factores molestos cuando lo haces. Usar herramientas con las que luches va a restarle placer. Entonces, supongo que el disfrute se maximiza al usar herramientas que le gustan y con las que está familiarizado.
Por supuesto, una vez que se familiarice con una nueva herramienta, es posible que le guste más esa herramienta y, por lo tanto, le gustará programar más si lo hace con su nueva herramienta favorita. No me queda claro que a la gente en general le gustará VS sobre emacs (o viceversa) cuando los conozca bien a ambos.
A continuación, habilidad de programación. Si hay alguna conexión entre la habilidad y la elección de VS / emacs, creo que es la habilidad que causa la elección, no la elección que causa la habilidad. Ninguno de {VS, emacs}, en mi experiencia, parece hacerme aprender nada sobre la escritura mejor código.
Una buena herramienta puede hacerme capaz de escribir el mismo código (y, por lo tanto, la misma calidad de código) en menores cantidades de tiempo; si asumimos eso
productivity = quality of code `times` code per time
, entonces es lógico que cualquier editor que le permita escribir un buen código en menos tiempo sea un aumento de la productividad.Puede que no esté demasiado familiarizado con VS, pero aquí creo que emacs tiene algunas fortalezas que no he encontrado en VS. Puede sonar ridículo, pero algo tan simple como el movimiento del cursor con
Ctrl-[fbnp]
mover el es una verdadera bendición, lo que significa que no tiene que mover las manos hacia las teclas de flecha. Otra cosa: puede hacer una búsqueda o reemplazo que incluya nuevas líneas, que uso con la frecuencia suficiente para odiarlo.Otra cosa que me gusta es la capacidad de incrustar un shell en mi editor. En mi experiencia, es mucho más valioso en plataformas que no son de Windows (y mi primera experiencia de "programación", IIRC, fue escribir archivos .bat de DOS, así que no soy solo un fanático en llamas), pero en esas plataformas es una gran victoria . Hace que emacs se "integre" con "todo" (búsqueda de archivos con buscar / localizar, búsqueda de texto con grep, control de versiones con svn / git / hg / ..., lo que sea).
Veredicto final: ¿deberías aprender emacs o no? ¿Y es todo fanboyismo? Si tuviera tiempo, diría que siempre vale la pena aprender nuevas formas de hacer lo mismo, porque la nueva forma podría funcionar mejor para usted. Y te animo a que no lo rechaces por lo que parece ser cuando eres nuevo en esto. En ese sentido, es como cambiar a la distribución del teclado Dvorak: al principio eres más lento, pero una vez que alcanzas la velocidad es probable que seas al menos tan rápido como en qwerty y más cómodo. También recomiendo el mismo enfoque para aprender nuevos lenguajes (de programación): porque no conoces el vocabulario (biblioteca estándar), decir que las cosas son difíciles, pero la recompensa sigue ahí en el horizonte esperándote.
fuente
Con el texto citado que comienza "Todos los mejores ingenieros del mundo usan Emacs", tampoco lo tomaría al pie de la letra. ¿Conoce a todos los mejores ingenieros del mundo? ¿Es la misma lista de los mejores ingenieros del mundo que tú o yo tenemos?
Una vez aprendido, un editor potente como EMACS o vi te hará más eficiente, o al menos más eficiente si te atrapan sin tu IDE favorito.
Es la parte "una vez aprendida" que es el asesino. Es mucho trabajo y práctica usar estas herramientas productivamente, y es muy difícil al principio.
fuente
Soy fanático de Emacs, personalmente, pero Emacs es solo una herramienta. No te convertirá en un mejor programador de la misma manera que un bolígrafo súper elegante te convertirá en un mejor escritor.
La aclaración de que los "grandes programadores" adaptan su entorno a sí mismos puede tener algún mérito, pero muchas herramientas pueden hacerlo (por ejemplo, vim y SlickEdit), por lo que no hay nada de particular en Emacs a ese respecto.
Creo que lo más probable es que los "grandes programadores" sean apasionados de la programación y las personas que lo hacen tienden a encontrar herramientas que ayuden a impulsar esa pasión. Emacs (y vim y SlickEdit, et al) es una herramienta de este tipo.
fuente
No creo que haya una diferencia, es más una cuestión de preferencia.
Sin embargo, lo que he notado es que cuanto más tiempo haya codificado, o cuanto más bajo haya codificado, mayores serán las posibilidades de que haya utilizado emacs o vi.
fuente
Si bien los IDE han mejorado mucho en la última década, aún contienen la programación en una pequeña "burbuja" segura, lejos de algunos de los detalles más feos. Lo que suele suceder es que este aumento en la abstracción permite que más programadores hagan más, con menos conocimiento. Eso, por supuesto, no se aplica a todos los programadores, pero las herramientas más fáciles llevan la programación a un público más amplio.
Un mayor conocimiento de las herramientas de nivel inferior, a menudo se traduce en una mayor estabilidad en el código, ya que hay menos posibilidades de "ir contra la corriente" accidentalmente. Es injusto enumerar EMACS como el único indicador principal, ya que proviene de una amplia gama de lenguajes y herramientas, y realmente se trata más de la profundidad de la comprensión, no de la tecnología específica.
Hace mucho tiempo, aprendiste VI o EMACS en los cuadros de UNIX o te especializaste en PC (OK, también había VMS, CMS, AS400, etc., pero esas eran tecnologías más antiguas). Ambas transmisiones atrajeron a personas muy entusiastas, pero los chicos de UNIX tendían a querer una solución sofisticada, mientras que los chicos de PC solo querían que se hiciera rápidamente. Las culturas eran muy diferentes.
fuente
Los IDE de IMHO tienden a optimizarse en torno a una plataforma o lenguaje o sistema operativo específico: Eclipse JDT es excelente para Java, Visual Studio es C ++ /. NET-céntrico, etc. Ayudan mucho a la productividad (nuevamente en mi humilde opinión) si solo estás trabajando esa plataforma, pero si cambia de plataforma, básicamente tiene que aprender un nuevo IDE (o al menos un nuevo conjunto de complementos, vistas, perspectivas y no sé qué más para Eclipse).
La ventaja de conocer emacs, o Textmate, o vim (mi preferencia personal), o cualquier editor genérico , es que las habilidades que adquieres en ese editor se aplican independientemente de la plataforma para la que estés escribiendo. Están optimizados para editar texto , y una vez que los domine, puede editar texto de manera muy eficiente en cualquier idioma.
También está la afirmación de Yegge de que los grandes programadores adaptan sus herramientas a su estilo de trabajo en lugar de viceversa. Creo que esto es una victoria para los editores genéricos, porque personalizas un editor, en lugar de tener que averiguar cómo adaptar cuatro IDEs diferentes para que se comporten de la manera que quieras.
fuente
C-[npfbaed]
. (Pero lamentablemente noM-
)Yo diría que los mejores programadores tienden a ser los que se toman el tiempo para personalizar su entorno, lo que hace que sea más rápido / fácil realizar las tareas que es probable que realicen. Emacs es uno de los editores más potentes a la hora de personalizar su entorno. Tiene una curva de aprendizaje empinada pero, una vez que hayas superado eso, prácticamente no hay límite para lo que puedes hacer por ti.
Alguien dijo una vez que los mejores programadores son los flojos; los que, una vez que necesitan hacer algo más de una vez, encuentran una manera de automatizarlo para que se requiera menos esfuerzo. Emacs te permite ser muy, muy vago;)
fuente
He usado IDEs desde el principio (posiblemente; habiendo comenzado con QBASIC), y durante muchos, muchos años. Ahora he cambiado casi por completo a VIM (en diversos sabores) para todo mi trabajo de desarrollo y no me arrepiento. Mi productividad definitivamente ha aumentado.
Por supuesto, nada reemplazará al diseñador de formularios Windows Forms de Visual Studio. Pero en comparación con VIM (y Emacs, estoy seguro), el editor de texto dentro de Visual Studio es realmente pésimo. Una vez que aproveche la potencia bruta de la consola y las herramientas de desarrollo de GNU (es decir
make
, GCCbinutils
ygdb
) notará que estas herramientas pueden parecer primitivas pero son todo lo contrario, y en realidad ofrecen todas las herramientas que proporciona un IDE (bueno, excepto para el diseñador de formularios).Es solo que tienes una subida muy pronunciada por delante cuando comienzas a usar estas herramientas y el incentivo puede ser pequeño. Tuve la suerte (?) De ser forzado a usar estas herramientas, así que no tuve otra opción de la que pudiera escapar.
fuente
Personalmente, siento que deberías usar lo que sea que te haga más productivo. Si no tiene tiempo para invertir en un proyecto para sentarse y aprender Emacs, entonces probablemente no sea el mejor uso de su tiempo en ese momento.
Sin embargo, creo que es una buena idea conocer otros IDE cuando tenga tiempo suficiente para hacerlo. Uso Visual Studio en mi trabajo diario, pero en casa uso Eclipse para pequeños proyectos y he usado Emacs también. En el punto particular en el que consideré usar Emacs, mi esfuerzo fue mejor al realizar el trabajo real que a ralentizarme luchando con Emacs.
Creo que hasta cierto punto es absurdo pensar que todos los mejores programadores usan Emacs. Hay muchos programadores increíbles que no son tan populares (o tan vocales, tal vez) que no usan Emacs.
fuente
Comencé a usar Emacs hace aproximadamente un año y medio porque era la confluencia de varios deseos: quería trabajar con expresiones regulares (en un editor que los respaldara), quería aprender lisp, quería un mejor editor.
Editar mi código con expresiones regulares me enseñó mucho sobre cómo encontrar patrones en el código. Las pulsaciones de teclas tardaron un tiempo en acostumbrarse, pero vuelo mucho más rápido sin el mouse.
Emacs me dio la capacidad de seguir trabajando con mis notas y codificación en la misma aplicación: un cambio de contexto mínimo significa un cambio de cerebro mínimo, y puedo mantenerme enfocado en la tarea en cuestión.
fuente
No. Un buen código te hace un mejor programador.
Dicho esto, una buena manipulación de texto es clave para la eficiencia. Tanto vim como emacs cambiarán la forma en que trabaja con el texto; ambos han demostrado ser efectivos pero están casi en desacuerdo en términos de estilo. Además, este debate es bastante antiguo (desde los años 80 y 90, donde el texto -> el compilador era clave), por lo que hay muchos otros editores de texto y / o IDE que pueden ayudarlo a ser el mejor programador posible.
fuente
No. Si crees que usar emacs te convierte en un mejor programador, estás confundiendo causa y efecto.
Sin embargo, lo uso a diario. Me parece que soy más productivo con emacs + maven que con Eclipse para el desarrollo de Java (aunque todavía enciendo Eclipse de vez en cuando para hacer la refactorización ocasional o la sesión de depuración).
Estas son mis razones:
fuente
Para mí, la razón principal por la que elegiría Emacs en lugar de un IDE es porque me permite hacer todo desde mi teclado. Esto es bueno porque ahorra algo de tiempo para cuando normalmente usaría un mouse. Además, dado que me encuentro muy móvil, tengo la tendencia de interrumpir mi ritmo de programación debido al uso de mi teclado táctil lento. Además, su personalización lo hace brillar sobre algunos IDEs para mí. Sin embargo, si te encuentras programando lo suficientemente rápido con un IDE, entonces diría que la curva de aprendizaje de Emacs no merece la pena.
fuente
¿Existe una diferencia apreciable en la habilidad, la productividad o el disfrute de la programación entre las personas que dependen de los IDE y las que no, o todo es fanboyismo?
No creo que realmente puedas obtener una respuesta a eso. Hay muchas maneras diferentes de medir la habilidad, la productividad y el disfrute de la programación, y todas ellas son probablemente muy subjetivas y / o no se pueden dividir en UNA cosa que lo cause o no.
Todavía es una pregunta interesante aunque.
Mi creencia personal es: depende del programador :)
G-Man
fuente
No creo que lo haga un mejor programador, pero cuando tenga ESO nivel, lo más probable es que use emacs (o vi)
: - /
Lo bueno de esos dos (nunca he usado emacs antes, pero todavía uso vi para la tarea más mundana) es el hecho de que no interrumpen tu línea de pensamiento , no tienes que sacar tus manos de el teclado para agarrar el mouse y buscar en el menú de archivo la opción correcta. Solo sigue escribiendo. Dentro de tu mente dices algo como: "Reemplaza todas las apariciones de esta palabra por eso", presiona enter y continúa con tu trabajo.
Además, no creo que usen emacs es su única herramienta.
¿Te haría mejor programador? Probablemente no. Pero cuando tenga ese nivel de experiencia, probablemente le gustará qué tan rápido puede codificar usando esas herramientas.
fuente
No.
La disciplina, el pensamiento crítico y el deseo de superación personal te harán un mejor programador. Su conjunto de herramientas, si bien es un factor importante en su productividad, no creará genio.
Si no te gustan emacs o vi, no los uses. Al tomar la decisión consciente de no hacerlo, está configurando su entorno de desarrollo para que se ajuste a sus propias necesidades y prácticas laborales. En cualquier caso, tienes derecho a usar lo que quieras, e ignorar a cualquiera que sea tan tonto como para regañarte por la herramienta que usas para escribir bits en el disco, son los bits lo que importa.
Nota: "Conjunto de herramientas" aquí significa, literalmente, la "marca" de herramientas: editores específicos, compiladores, etc. Los conjuntos de herramientas conceptuales, por ejemplo, el uso del control de versiones, las pruebas unitarias, todo en general, son parte de proceso de mejora.
fuente
Una de las grandes características de emacs es que puede manejar prácticamente cualquier tipo de archivo que le arrojes, de cualquier tamaño. Es cierto que si está abriendo un enorme archivo encriptado, no será necesariamente útil, pero se abrirá. La mayoría de los editores (e IDEs) le causarán una gran angustia si les entrega un archivo que es demasiado grande y / o no es uno de sus formatos esperados.
Intente abrir un archivo de 1 Gig en el Bloc de notas para ver un ejemplo.
Comencé a usar Emacs en algún lugar alrededor de 1980 y siempre ha sido una herramienta en mi caja de herramientas. No es la única herramienta, pero siempre es algo a lo que puedo recurrir y saber que podré hacer un trabajo útil.
Comentario inflamatorio obligatorio : por otro lado, no tengo nada bueno que decir sobre vi. Siempre he sentido que vi felizmente me mataría y vendería mis órganos solo por despecho ...
En la vida real, uso Netbeans para casi todas las formas de desarrollo y uso emacs de vez en cuando para hacer una edición rápida. No hay casi nada que sea tan conveniente como emacs (para mí) cuando se trata de hacer algo loco en este momento.
¿Alguien más tiene que editar cadenas estáticas en ejecutables binarios compilados? ¿Existe una herramienta mejor para ese tipo de cosas que emacs? Ciertamente funciona para mi.
fuente
Sé que no preguntaste esto, pero una cosa que aprendí emacs (inesperadamente) mejoró para mí fue manipular una línea de comando. Antes de aprender las combinaciones de teclas de emacs, solía mover el cursor y navegar por el historial usando las teclas del cursor porque no sabía nada mejor. Fue algo así como un momento de bombilla cuando me di cuenta de que podía usar
backward-word
,move-beginning-of-line
ybackward-kill-word
(lo que siempre he obligadoC-w
, como sugiere Stevey ) enbash
(aM-t
menudo es útil también, y lo más impresionante para aquellos que nunca lo han visto antes).Trabajo bastante en Solaris, donde el shell raíz es "el shell posix" y no tiene enlaces emacs por defecto. Me parece que mis dedos ahora escriben
exec bash
por su propia cuenta, cada vez que inicio sesión, me siento mucho más rápido con los comandos de edición ahora familiares bajo mis dedos.Sin embargo, debo admitir que todavía encuentro los libros de Knuth difíciles (aunque vale la pena), así que no creo que haya mejorado mágicamente mi programación.
fuente
Emacs me hizo más eficiente en la manipulación de texto y la navegación del sistema de archivos. Y dado que ambas cosas están involucradas cuando programo, me ha convertido en un programador más eficiente (por lo tanto, mejor).
fuente
Creo que Emacs puede hacerte un mejor programador, aunque indirectamente. Creo que Emacs me hizo escribir en un lenguaje funcional ( Elisp ) que me tiene interesado en otros lenguajes funcionales ( Clojure ) que, según me han dicho, me harán un mejor programador. Dicho esto, supongo que el tiempo lo dirá.
fuente
Ser capaz de usar algún editor personalizable le permite hacer cosas ingeniosas, pero emacs en particular no es necesariamente el mejor posible. Yo mismo soy un usuario de SlickEdit, hago las mismas cosas extrañas semiautomatizadas por las que emacs es famoso. He visto a personas hacer cosas similares con vi y varios editores basados en Windows.
Entonces, sí, los conjuntos de enchufes son buenos, pero argumentar que Craftsman hace que el conjunto de enchufes verdadero sea un poco tonto.
fuente
El dominio de las asociaciones de teclas de Emacs y sus funciones integradas le permitirán manipular el texto más rápido que los IDE como Eclipse o Visual Studio.
No confíes en mi palabra, mira estos videos de profesionales que usan Emacs .
Una vez que llegue a un nivel decente en Emacs, puede editar efectivamente cualquier lenguaje: Java Script, Java, Ruby, Python, HTML, C, C ++, etc.
Comenzar a usar Emacs es un fastidio, la experiencia original es peor que mala. La configuración predeterminada de Emacs no expone al novato de Emacs a las funciones más potentes (hippie-expand, etags, yasnippets, etc.) de Emacs. Sugiero comenzar con los archivos de puntos de Emacs Starter Kit .
Otra razón por la que Steve Yegge afirma que los mejores programadores del mundo usan Emacs, es elisp. Elisp le permite al programador experimentado el poder de expandir fácilmente Emacs. Escribir una extensión en Eclipse o Visual Studio es significativamente más difícil que escribir una función rápida o incluso un nuevo modo menor en elisp.
fuente
Creo que es una gran idea errónea que el uso de estos editores basados en texto como VI y Emacs es muy apreciado o necesario para convertirse en un "gran programador". Siempre sentí que los IDE son más poderosos de lo que solían ser, y realmente se trata de una preferencia y un estilo.
fuente
Usé emacs en la universidad. eso fue hace unos 16 años. No he mirado hacia atrás. Si bien desearía poder estar cómodo con emacs, la verdad es que soy bastante productivo con mi MS IDE.
el texto que publicaste es solo un troll. Sí. No hay otra razón para ello que comenzar una guerra religiosa.
fuente
Comencé con emacs pero cambié a vi, que para mí es más elegante debido a su simplicidad. Además, si alguna vez está atascado en modo de usuario único, los comandos ed son un subconjunto de comandos vi. No sé si emacs puede manejar eso.
En ese sentido, creo que vi te hace un mejor programador.
fuente