texto ser requisitos programar programador para mejores mejor herramientas editores desde como cero características buen emacs text-editor vi

emacs - ser - mejores editores de texto 2018



¿Emacs me hará un mejor programador? (30)

¿Existe una diferencia mensurable en la habilidad, la productividad o el disfrute de la programación entre las personas que dependen de los IDEs y los que no, o todo es simplemente fanboyismo?

Vamos a limitar esto a Visual Studio vs Emacs --- la pregunta es demasiado amplia de lo contrario, y sospecho que la mayoría de la gente (al menos aquí en StackOverflow) están familiarizados con esos dos. [Yo soy, y uso y prefiero emacs]

Luego, dividamos los tres componentes de la pregunta.

El disfrute de la programación se reduce a la programación que le gusta principalmente en sí misma y, en segundo lugar, a que no aparezcan factores de molestia cuando lo hace. Usar las herramientas con las que luchas va a restar del disfrute. Así que, supongo, el disfrute probablemente se maximice al usar herramientas que te gusten y con las que estés 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 está claro para mí que a la gente en general le gusten los VS sobre los emacs (o viceversa) cuando los conocen bien a los dos.

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 algo sobre cómo escribir un 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 que la 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 yo no esté muy 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] es una gran ayuda --- significa que no tienes que mover las manos a las teclas de flecha. Otra cosa: puedes hacer una búsqueda o reemplazarla que incluya nuevas líneas, que utilizo con la frecuencia suficiente como para odiar perderla.

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 Windows (y mi primera experiencia de "programación", IIRC, estaba escribiendo archivos DOS .bat, así que no soy solo un fanático en llamas), pero en esas plataformas es una gran victoria . Hace que emacs "integre" con "todo" (búsqueda de archivos con find / locate, 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 todo es fanboyismo? Si tienes tiempo, yo diría que siempre vale la pena aprender nuevas formas de hacer lo mismo, porque la nueva manera podría funcionar mejor para ti. Y te animo a que no lo rechaces por lo que parece ser cuando eres nuevo en él. En ese sentido, es como cambiar al diseño de teclado de 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 sabes el vocabulario (biblioteca estándar), diciendo que las cosas son difíciles, pero la recompensa sigue ahí en el horizonte esperándote.

Steve Yegge escribió un comentario en su blog :

Todos los mejores ingenieros del mundo usan Emacs. Los tipos de cambio de mundo. No es la gran chica en el cubo a tu lado. No Fred, el tipo increíble al final 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. Ve a ver el hombro de Paul Nordstrom mientras trabaja en algún momento, si no me crees. Es una verdadera revelación para alguien que ha usado Visual Blub .NET como IDEs durante toda su carrera.

Emacs es el editor de 100 años.

La última vez que utilicé un editor de texto para escribir código volvía cuando todavía escribía HTML en el Bloc de notas hace unos 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 lo que vale, lo intenté con Emacs, y mi experiencia fue frustrante debido a su completa falta de características reconocibles listas para usar. (Aparentemente hay un comando de Emacs para descubrir otros comandos de Emacs, que por cierto no pude encontrar, es como vivir tu propia broma cruel de Zen.) Traté de hacerme como el programa por un buen mes, pero finalmente decidí que preferiría tener los diseñadores de GUI de arrastrar y soltar, IntelliSense y la depuración interactiva en su lugar.

Es difícil separar los hechos del fanboyismo, por lo que no estoy dispuesto a tomar los comentarios de Yegge al pie de la letra por el momento.

¿Existe una diferencia mensurable en la habilidad, la productividad o el disfrute de la programación entre las personas que dependen de los IDEs y los que no, o todo es simplemente fanboyismo?


Él (Steve Yegge) ha elaborado sobre esto, en partes 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.

Creo que para resumir: los programadores que son meramente buenos o competentes elegirán un IDE y lo conocerán muy bien, y tal vez lo harán decentemente, pero se limitarán a lo que el IDE les brinda. En otras palabras, se adaptan al IDE. Los grandes programadores, por otro lado, adaptarán su entorno a sus necesidades, de forma tal que escriban guiones o sus propias herramientas, o amplíen sus herramientas. Y hasta este último punto, no solo Emacs es el entorno más extensible que existe, también es el entorno más fácil de extender allí, y es el entorno donde se obtiene el mayor beneficio de su ampliación: sus extensiones se integran en Emacs como son características de stock, por lo que sus futuras extensiones pueden basarse en las anteriores (tipo de cosa de retroalimentación positiva).


Con el texto citado que dice "Todos los mejores ingenieros del mundo usan Emacs", tampoco lo tomaría por su valor nominal. ¿Conoce a todos los mejores ingenieros del mundo? ¿Es la misma lista de los mejores ingenieros del mundo que tú o yo?

Una vez aprendido, un editor potente como EMACS o vi lo hará más eficiente, o al menos más eficiente si lo atrapan sin su IDE favorito.

Es la parte "una vez que se aprende" que es el asesino. Es mucho trabajo y práctica utilizar estas herramientas de manera productiva, y es muy difícil al principio.


Creo que Emacs puede convertirte en un mejor programador, aunque indirectamente. Creo que Emacs me hizo escribir en un lenguaje funcional ( Elisp ) que me interesaba en otros lenguajes funcionales ( Clojure ) que, según me dijeron, me convertiría en un mejor programador. Dicho eso, supongo que el tiempo dirá.


Creo que es una gran idea errónea de que el uso de estos editores basados ​​en texto, como VI y Emacs, se considera muy útil 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 estilo.


Dominar los enlaces de teclas de Emacs y sus funciones integradas le permitirá manipular el texto más rápido que los IDE, como Eclipse o Visual Studio.

No confíe en mi palabra, eche un vistazo a estos videos de profesionales que usan Emacs .

Una vez que alcanzas un nivel decente en Emacs, puedes editar efectivamente cualquier idioma: Java Script, Java, Ruby, Python, HTML, C, C ++, etc.

Comenzar con Emacs es un dolor en el trasero, la experiencia fuera de la caja es peor que mala. La configuración predeterminada de Emacs no expone al novato de Emacs a las características más potentes (hippie-expand, etags, yasnippets, etc.) de Emacs. Sugiero que comenzó con los archivos de puntos del 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 mucho más difícil que escribir una función rápida o incluso un nuevo modo menor en elisp.


Emacs me hizo más eficiente en la manipulación de texto y en 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).


Empecé a utilizar Emacs hace un año y medio porque era la confluencia de varias necesidades: quería trabajar con expresiones regulares (en un editor que las admitía), 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 tomaron un tiempo para 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 concentrarme en la tarea que tengo entre manos.


Empecé con emacs pero cambié a vi, que para mí es más elegante por su simplicidad. Además, si alguna vez está atascado en el modo de usuario único, los comandos ed son un subconjunto de comandos vi. No sé si emacs puede manejar eso.

Entonces, en ese sentido, creo que vi te hace un mejor programador ...


En mi humilde opinión, los IDEs tienden a optimizarse en torno a una plataforma o lenguaje específico o sistema operativo: Eclipse JDT es ideal para Java, Visual Studio está basado en C ++ / .NET, etc. Ayudan mucho a la productividad (de nuevo en mi humilde opinión) si solo está trabajando en esa plataforma, pero si cambias de plataforma, básicamente debes aprender un nuevo IDE (o al menos un nuevo conjunto de complementos, vistas, perspectivas y no sé qué más usar para Eclipse).

La ventaja de conocer emacs, o Textmate, o vim (mis preferencias personales), o cualquier editor genérico , es que las habilidades que adquieras en ese editor se apliquen 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 calcular cómo adaptar cuatro IDE diferentes para que todos se comporten de la forma que desees.


He usado IDEs desde el principio (podría decirse que comencé con QBASIC) y durante muchos, muchos años. Ahora he cambiado casi completamente 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 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 malo. Una vez que aproveche la potencia bruta de la consola y las herramientas de desarrollo de GNU (me refiero a make , GCC, binutils y gdb , y algo más), 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 escalada muy empinada cuando comienzas a usar estas herramientas y el incentivo puede ser pequeño. Tuve la suerte (?) De forzarme a utilizar estas herramientas, por lo que no tuve la opción de poder evitarlo.


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 (alrededor de 1987) en una máquina con un terminal de texto muy lento, me convertí a Emacs (GNU) después de unos años (en una máquina más rápida), y lo 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 podría controlarse en emacs, y usted podría usar el compilador que utilizó.

Hoy en día, los IDE como eclipse están incluso 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 "pura".


Mientras que los IDE han mejorado mucho en la última década, todavía contienen la programación en una pequeña "burbuja" segura, lejos de algunos de los detalles más feos. Lo que tiende a 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 sencillas llevan la programación a un público más amplio.

Más 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 simplemente mencionar EMACS como el único indicador principal, ya que proviene de una amplia gama de idiomas 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, o aprendiste VI o EMACS en las cajas 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 cadenas 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 fueron muy diferentes.


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 ha codificado, o el nivel inferior que ha codificado, mayores son las probabilidades de que haya usado emacs o vi.


No creo que te haga un mejor programador, pero cuando tienes ESE nivel, lo más probable es que uses 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, 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. Tú solo, sigue escribiendo. Dentro de tu mente, dices algo como: "Reemplaza todas las apariciones de esta palabra para eso", presiona enter y continúa con tu trabajo.

Además, no creo que usen emacs como su única herramienta.

¿Te haría mejor programador? Probablemente no. Pero cuando tienes ese nivel de experiencia, probablemente te gustará qué tan rápido puedes codificar usando esas herramientas.


No.

La disciplina, el pensamiento crítico y el deseo de superación personal lo convertirán en un mejor programador. Su conjunto de herramientas, aunque es un factor importante en su productividad, no creará genio.

Si no te gustan los 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 de trabajo. En cualquier caso, tiene derecho a usar lo que quiera, e ignore a cualquiera que sea tan tonto como para criticarle por la herramienta que utiliza para escribir los bits en el disco: son los bits los que importan.

Nota: "Conjunto de herramientas" significa, literalmente, la "marca" de herramientas: editores específicos, compiladores, etc. Conjuntos de herramientas conceptuales, por ejemplo, el uso de control de versiones, pruebas unitarias, todos en general, son parte del autocontrol. proceso de mejora


No. El buen código te convierte en un mejor programador.

Dicho esto, una buena manipulación de texto es clave para la eficiencia. O bien vim o emacs cambiarán la forma en que trabajas con el texto: ambos han demostrado ser efectivos, pero están en desacuerdo entre sí en términos de estilo. Además, este debate es bastante antiguo (en los años 80 y 90, donde el compilador de texto -> era clave), por lo que hay muchos otros editores de texto y / o IDE que pueden ayudarlo a ser el mejor programador que pueda ser.


No. Si crees que usar emacs te convierte en un mejor programador, estás confundiendo causa y efecto.

Lo uso a diario, sin embargo. Encuentro que soy más productivo con emacs + maven que con Eclipse para el desarrollo de Java (aunque todavía utilizo Eclipse de vez en cuando para realizar la refactorización o la sesión de depuración ocasionalmente).

Estas son mis razones:

  • La experiencia real de edición de texto en emacs supera a todo lo demás. Es increíble lo rápido que puedes lograr tanto usando solo tu teclado. Eclipse está más orientado al mouse, y cuando escribes te encuentras con muchos inconvenientes irritantes.
  • Poder personalizar emacs usando elisp es increíblemente poderoso. Iré tan lejos como para decir que si no te estás tomando el tiempo para aprender eludir de manera rudimentaria y personalizar tu entorno, simplemente estás perdiendo el tiempo.
  • Hay extensiones para prácticamente cualquier cosa que quieras hacer en un editor de texto.

Para mí, la razón principal por la que elegiría Emacs en vez de un IDE es porque me permite hacer todo desde mi teclado. Esto es bueno ya que ahorra tiempo para cuando normalmente usaría un mouse. Además, dado que me encuentro muy móvil, tengo la tendencia a interrumpir mi programación "groove" debido al uso de mi touchpad lento. Además, su personalización hace que brille 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 vale la pena.


Personalmente, creo que debes usar lo que sea que te haga más productivo. Si no tiene tiempo de 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 tienes tiempo suficiente para hacerlo. Uso Visual Studio en mi trabajo diario, pero en casa uso Eclipse para proyectos pequeños y he usado Emacs también. En el punto particular en el que consideré usar Emacs, mi esfuerzo estuvo mejor servido para hacer el trabajo real que reducir mi velocidad de lucha 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.


Poder usar algún editor personalizable te permite hacer cosas ingeniosas, pero emacs en particular no es necesariamente el mejor posible. Soy un usuario de SlickEdit, hago todas las cosas extrañas y semiautomatizadas con las que es famoso emacs. He visto a gente hacer cosas similares con vi y varios editores basados ​​en Windows.

Así que, sí, socket es bueno, pero argumentando que Craftsman hace el One True Socket Set es algo tonto.


Primero déjame decirte, soy un verdadero creyente autoproclamado en el culto de Emacs.

Dicho eso, el blogger está loco. Usted escribe en lo que le parece útil. Encuentro que Emacs me ayuda, principalmente porque pasé mis años en la universidad pagando por adelantado el costo inicial de aprender cómo modificarlo para adaptarlo a mis necesidades y modificarme a sus necesidades.

Pero otras personas hacen las cosas de manera diferente, y cuando dicen "Está bien".


Sé que no preguntaste esto, pero una cosa que aprendió 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 explorar el historial con 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 y backward-kill-word (que siempre he vinculado a Cw , como Stevey sugiere ) en bash ( Mt es a menudo útil también, y 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. Encuentro que mis dedos ahora exec bash " exec bash por propia iniciativa, cada vez que ingreso, mucho más rápido me siento con los comandos de edición ahora familiares bajo mis dedos.

Aunque debo admitirlo, todavía encuentro que los libros de Knuth son difíciles (aunque valen la pena), así que no creo que haya mejorado mágicamente mi programación.


Soy un fanboy de Emacs, personalmente, pero Emacs es solo una herramienta. No te convertirá en un mejor programador, como tampoco un bolígrafo súper elegante te hará 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 hacer eso (por ejemplo, vim y SlickEdit), por lo que no hay nada particular acerca de Emacs en ese sentido.

Creo que lo más cierto es que los "grandes programadores" son apasionados de la programación y las personas que les apasiona tienden a encontrar herramientas que ayuden a impulsar esa pasión. Emacs (y vim y SlickEdit, et al) es una herramienta de este tipo.


Una de las mejores características de emacs es que puede manejar casi cualquier tipo de archivo que le arrojes, de cualquier tamaño. Es cierto que si estás abriendo un gran archivo cifrado loco, no necesariamente será útil, pero se abrirá. La mayoría de los editores (e IDE) le causarán un gran dolor de cabeza si les entrega un archivo demasiado grande y / o uno de sus formatos esperados.

Intenta abrir un archivo de 1 Gig en el Bloc de notas para ver un ejemplo.

Empecé a usar Emacs 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 sé 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 vendí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 por ahí 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? ¿Hay una herramienta mejor para ese tipo de cosas que emacs? Ciertamente funciona para mi.


Usé emacs en la universidad. eso fue hace unos 16 años. No he mirado hacia atrás. Aunque me gustaría poder sentirme cómodo con los 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.


Yegge necesita conocer a Bill Joy. No solo es uno de los grandes programadores del mundo, 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 he comenzado a usar Eclipse para edición java (y Thunderbird para correo electrónico), aunque en mi trabajo actual mi la máquina tiene tan poca memoria que usualmente utilizo vi excepto cuando necesito el depurador.


Yo diría que los mejores programadores tienden a ser los que se toman el tiempo para personalizar su entorno, por lo que es más rápido / más fácil realizar las tareas que es probable que hagan. Emacs es uno de los editores más potentes a la hora de personalizar su entorno. Tiene una curva de aprendizaje abrupta pero, una vez que hayas pasado eso, prácticamente no hay límite para lo que puedes hacer por ti.

Alguien dijo una vez que los mejores programadores son los perezosos; los que, una vez que necesitan hacer algo más de una vez, encuentran una forma de automatizarlo para que les cueste menos hacerlo. Emacs te permite ser muy, muy vago;)


¿Existe una diferencia mensurable en la habilidad, la productividad o el disfrute de la programación entre las personas que dependen de los IDEs y los que no, o todo es simplemente fanboyismo?

No creo que realmente puedas obtener una respuesta a eso. Hay tantas 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 provoque o no.

Todavía es una pregunta interesante.

Mi creencia personal es que depende del programador :)

G-Man


Mejorar su pensamiento claro y la resolución de problemas lo harán un mejor programador. Ningún programa puede hacer eso.

Usar un martillo mejor no me ayudará a construir una casa más bonita a menos que sepa cómo y por qué. ;)