Будет ли Emacs сделать меня лучшим программистом?

Стив Йегге написал комментарий к своему блогу:

Все величайшие инженеры в мировой опыт использования Emacs. Человек-чейнджер типы. Не великая девочка в кубе рядом с тобой. Не Фред, удивительный парень по коридору. Я говорю о крупнейших разработчиков программного обеспечения наших профессии, те, кто изменил лицом отрасли. Джеймс Гослингс, Дональд Кнутс, Пол Грэхемы, Джейми Завинскис, Эрик Бенсонс. Настоящие инженеры используют Emacs. Вы должны быть умны, чтобы использовать это хорошо, и это делает вас невероятно мощный, если вы можете овладеть им. Посмотри над Полом Нордстремом он работает когда-нибудь, если вы не поверь мне. Это настоящий взгляд для кто-то, кто использовал Visual Blub.NET-подобные IDE всю свою карьеру.

Emacs является 100-летним редактором.

В прошлый раз, когда я использовал текстовый редактор для написания кода, я вернулся, когда я еще писал HTML в "Блокноте" около 1000 лет назад. С тех пор я был более или менее зависимым от IDE, используя Visual Studio, NetBeans, IntelliJ, Borland/Codegear Studio и Eclipse за всю свою карьеру.

Для чего это стоит, я пробовал Emacs, и мой опыт был разочаровывающим из-за его полного отсутствия готовых функций обнаружения. (Очевидно, есть команда Emacs для обнаружения других команд Emacs, которые я не мог найти, кстати, - это как жить собственной жестокой дзэн-подобной шуткой.) Я попытался сделать себя как программу в течение хорошего месяца, но в конечном итоге решил, что вместо этого я бы предпочел бы использовать графические интерфейсы drag-and-drop, IntelliSense и интерактивную отладку.

Трудно отделить факт от фанатизма, поэтому я пока не хочу принимать комментарии Yegge по номиналу.

Есть ли ощутимая разница в навыках, производительности или программировании между людьми, которые зависят от IDE и тех, кто этого не делает, или все это просто фанатизм?

Ответ 1

Сначала позвольте мне сказать, что я являюсь самоотверженным истинным верующим в культ Emacs.

Тем не менее, блоггер - это орехи. Вы пишете то, что считаете полезным. Я нахожу, что Emacs помогает мне, главным образом потому, что я провел годы своего колледжа, предварительно оплатив начальную стоимость обучения тому, как изменить его в соответствии с моими потребностями, и изменить себя на его потребности.

Но другие люди делают что-то по-другому, и, как говорится, "Это хорошо".

Ответ 2

Он (Стив Йегг) подробно изложил это, в кусках, в других сообщениях о нем. http://steve-yegge.blogspot.com/2008_04_01_archive.html, вероятно, является наиболее полным, но информация там похоронена, поскольку она касается касательной к основному предмету.

Я предполагаю, что обобщить: программисты, которые просто хороши или компетентны, заберут IDE и познакомятся с ней очень хорошо, и, возможно, будут достаточно прилично в ней, но они ограничится тем, что предоставляет им IDE, Другими словами, они адаптируются к IDE. С другой стороны, великие программисты будут адаптировать свою среду к себе, таким образом, как писать сценарии или свои собственные инструменты или расширять свои инструменты. И к этому последнему моменту не только Emacs является самой расширяемой средой, но и самой простой средой для расширения, и это среда, в которой вы извлекаете наибольшую выгоду от ее расширения - ваши расширения интегрируются в Emacs, например они являются функциями запаса, и поэтому ваши будущие расширения могут основываться на ваших предыдущих (тип обратной связи с обратной связью).

Ответ 3

Лучшие программисты используют vi или emacs, потому что самые опытные программисты являются лучшими, а 20 лет назад выбора не было, кроме vi и emacs.

После того, как я начал с vi (около 1987 года) на машине с очень медленным текстовым терминалом, я через несколько лет преобразовал в (GNU) Emacs (на более быстрой машине) и использовал его почти исключительно в течение почти 10 лет.

Emacs была первой по-настоящему интегрированной средой разработки - весь цикл редактирования/ссылки/компиляции можно было контролировать в emacs, и вы могли бы использовать свой собственный для любого используемого вами компилятора.

В настоящее время IDE, такие как eclipse, еще лучше интегрированы (честно говоря: emacs отстой в графике), но Emacs по-прежнему остается одной из лучших сред для "чистого" редактирования текста.

Ответ 4

Улучшение вашего четкого мышления и решения проблем сделает вас лучшим программистом. Никакая программа не может этого сделать.

Использование лучшего молота не поможет мне построить более приятный дом, если я не знаю, как и почему.;)

Ответ 5

Йегге нужно встретить Билла Джой. Он не только один из великих программистов в мире, он также написал большие куски vi. В vi.

Короткое постыдное исповедание: после 20 лет использования vi (и vim/gvim в последние годы) для всего, за последний год или около того я начал использовать Eclipse для редактирования java (и Thunderbird для электронной почты), хотя на моем текущая работа у моей машины так мало памяти, что я обычно использую vi, за исключением случаев, когда мне нужен отладчик.

Ответ 6

Есть ли ощутимая разница в навыках, производительности или программировании между людьми, которые зависят от IDE и тех, кто этого не делает, или все это просто фанатизм?

Давайте просто сузить это до Visual Studio vs. Emacs. Вопрос слишком широк, и я подозреваю, что большинство людей (по крайней мере, здесь, на StackOverflow) знакомы с этими двумя. [Я, и я использую и предпочитаю emacs]

Затем разбейте три компонента вопроса вниз.

Программирование удовольствия сводится к тому, чтобы в первую очередь любить программирование само по себе, и во-вторых, чтобы не возникало факторов раздражения, когда вы это делаете. Использование инструментов, с которыми вы работаете, вычитается из удовольствия. Таким образом, я бы оценил, удовольствие, скорее всего, будет максимизировано с помощью инструментов, которые вам нравятся и знакомы.

Конечно, как только вы познакомитесь с новым инструментом, вы можете обнаружить, что вам нравится этот инструмент лучше, и, следовательно, вам понравится программирование, если вы сделаете это с помощью своего нового любимого инструмента. Мне не ясно, что люди в целом будут любить VS над emacs (или наоборот), когда они хорошо знают их обоих.

Далее, умение программирования. Если есть какая-либо связь между навыком и выбором VS/emacs, я думаю, что это умение, вызывающее выбор, а не выбор, вызывающий умение. Ни один из {VS, emacs}, по моему опыту, похоже, заставляет меня узнать что-нибудь о написании лучшего кода.

Хороший инструмент может заставить меня написать один и тот же код (и, тем самым, такое же качество кода) за меньшее количество времени; если мы предположим, что productivity = quality of code `times` code per time, то разумно, что любой редактор, который позволит вам писать хороший код за меньшее время, - это повышение производительности.

Возможно, я слишком незнакома с VS, но здесь я думаю, что emacs имеет некоторые сильные стороны, которых я не нашел в VS. Это может показаться смешным, но что-то такое же простое, как движение курсора с Ctrl-[fbnp], является настоящим благом - это означает, что вам не нужно переводить руки на клавиши со стрелками. Другое дело: вы можете выполнить поиск или замену, которая включает в себя новые строки, которые я использую достаточно часто, чтобы мне было не допустить ее пропустить.

Еще одна вещь, которая мне нравится - это возможность встроить оболочку в мой редактор. По моему опыту, это гораздо более ценно на платформах, отличных от Windows (и мой первый "программирующий" опыт, IIRC, писал DOS.bat файлы, поэтому я не просто пламенный фанат), но на этих платформах это большая победа, Это позволяет emacs "интегрировать" с "всем" (поиск файлов с помощью find/locate, текстовый поиск с grep, управление версиями с помощью svn/ git/hg/..., вы называете его).

Окончательный вердикт - следует ли изучать emacs или нет? И разве это все фанатизм? Если у вас есть время, я бы сказал, что всегда стоит изучать новые способы сделать то же самое, потому что новый способ может оказаться лучше для вас. И я призываю вас не отвергать его за то, что кажется, когда вы все новичок в этом. В этом смысле это похоже на переход на раскладку клавиатуры Dvorak: сначала вы медленнее, но как только вы встанете на скорость, вы, вероятно, будете как минимум быстрее, чем на qwerty, и более комфортно. Я рекомендую тот же подход к изучению новых (программирующих) языков, потому что вы не знаете словарный запас (стандартная библиотека), говоря, что это сложно, но вознаграждение все еще существует на горизонте, ожидающем вас.

Ответ 7

С цитируемым текстом, начинающимся с "Все величайшие инженеры в мире, использующие Emacs", я бы тоже не принял его по номиналу. Знает ли он всех величайших инженеров мира? Это тот же список мировых величайших инженеров, что и вы или я?

Как только вы узнаете, мощный редактор, такой как EMACS или vi, сделает вас более эффективными или, по крайней мере, более эффективными, если вас случайно поймают без вашей любимой среды IDE.

Это "некогда узнанная" часть, что убийца. Это много работы и практики, чтобы использовать эти инструменты продуктивно, и это очень сложно в начале.

Ответ 8

Я фанат Emacs, лично, но Emacs - всего лишь инструмент. Это не сделает вас лучшим программистом, чем супер-фантазийная ручка сделает вас лучшим писателем.

Прояснение того, что "великие программисты" адаптируют свою среду к себе, может иметь некоторые достоинства, но многие инструменты могут это сделать (например, vim и SlickEdit), поэтому в этом нет ничего особенного в Emacs.

Я думаю, что наиболее правдоподобным является то, что "великие программисты" увлечены программированием, и люди, которые увлечены этим, склонны находить инструменты, которые помогают управлять этой страстью. Emacs (и vim и SlickEdit, и др.) Являются таким инструментом.

Ответ 9

Я не считаю, что есть разница, это скорее вопрос предпочтения.

Однако то, что я заметил, заключается в том, что чем дольше вы закодировали, или закодировали более низкий уровень, тем выше вероятность того, что вы использовали emacs или vi.

Ответ 10

В то время как среда IDE стала намного лучше за последнее десятилетие, они все еще содержат программирование в небольшом безопасном "пузыре", вдали от некоторых более уродливых деталей. То, что имеет тенденцию, состоит в том, что это увеличение абстракции позволяет большему количеству программистов делать больше, с меньшими знаниями. Это, конечно, не относится ко всем программистам, но более простые инструменты приносят программирование более широкой аудитории.

Больше знаний о инструментах более низкого уровня часто приводит к большей стабильности кода, так как меньше шансов "идти против зерна" случайно. Несправедливо просто перечислять EMACS как единственный ведущий индикатор, поскольку он исходит из целого ряда языков и инструментов, и в действительности больше касается глубины понимания, а не конкретной технологии.

Вернувшись, вы либо изучили ВИ, либо EMACS на коробках UNIX, либо специализировались на ПК (хорошо, были также VMS, CMS, AS400 и т.д., но это были более старые технологии). Оба потока привлекали очень острых людей, но ребята из UNIX стремились к созданию сложного решения, в то время как парни ПК просто хотели, чтобы это было сделано быстро. Культуры были очень разными.

Ответ 11

ИМХО ИМХО, как правило, оптимизируются вокруг определенной платформы или языка или ОС: Eclipse JDT отлично подходит для Java, Visual Studio - это С++/. NET-ориентированный и т.д. Они часто помогают производительности (снова IMHO), если вы работая только на этой платформе, но если вы меняете платформы, вам нужно в основном изучить новую IDE (или, по крайней мере, новый набор плагинов, представлений, перспектив, и я не знаю, что еще для Eclipse).

Преимущество знания emacs, Textmate или vim (моих личных предпочтений) или любого универсального редактора заключается в том, что навыки, которые вы приобретаете в этом редакторе, применяются независимо от того, на какой платформе вы пишете. Они оптимизированы для редактирования текста, и как только вы их освоите, вы можете редактировать текст очень эффективно на любом языке.

Там также утверждается Yegge, что великие программисты приспосабливают свои инструменты к их рабочему стилю, а не наоборот. Я думаю, что это победа для универсальных редакторов, потому что вы настраиваете один редактор, вместо того, чтобы решать, как адаптировать четыре разных IDE, чтобы они вели себя так, как вы хотите.

Ответ 12

Я бы сказал, что лучшие программисты, как правило, те, кто займет время, чтобы настроить свою среду, что делает ее быстрее/легче выполнять задачи, которые они могут сделать. Emacs является одним из самых мощных редакторов, когда дело доходит до настройки вашей среды. Он имеет крутую кривую обучения, но, как только вы пройдете мимо, практически нет ограничений на то, что вы можете сделать для вас.

Кто-то однажды сказал, что лучшие программисты - ленивые; те, которые, когда им нужно что-то делать не один раз, найти способ автоматизировать его, чтобы он делал меньше усилий. Emacs позволяет вам быть очень, очень ленивым;)

Ответ 13

Я использовал IDE с самого начала (возможно, начал с QBASIC) и на многие, многие годы. Я сейчас почти полностью переключился на VIM (в разных вкусах) на все мои разработки, и я не жалею об этом. Моя продуктивность определенно увеличилась.

Конечно, ничто не заменит конструктор Windows Forms из Visual Studio. Но по сравнению с VIM (и Emacs, я уверен) текстовый редактор внутри Visual Studio действительно паршивый. После того, как вы используете необработанную мощность консоли и инструменты разработчика GNU (под которыми я имею в виду make, GCC, binutils и gdb, а затем некоторые), вы заметите, что эти инструменты могут выглядеть примитивными, наоборот, и на самом деле предлагают все инструменты, которые предоставляет IDE (ну, кроме дизайнера форм).

Просто, когда вы впервые начали использовать эти инструменты, у вас очень крутой подъем, и стимул может быть небольшим. Мне повезло (?), Чтобы заставить вас использовать эти инструменты, поэтому у меня не было выбора, из которого я мог бы избавиться.

Ответ 14

Для меня главной причиной, по которой я выбрал Emacs над IDE, является то, что он позволяет мне делать все, начиная с клавиатуры. Это приятно, потому что это экономит время, когда я обычно использую мышь. Кроме того, поскольку я нахожу себя очень мобильным, у меня есть тенденция прерывания моего программирования "канавки" из-за использования моей медленной сенсорной панели. Кроме того, его настройка делает его сияющим для некоторых IDE для меня. Однако, если вы обнаружите, что программируете достаточно быстро с помощью IDE, я бы сказал, что кривая обучения Emacs не стоит проблем.

Ответ 15

Лично я считаю, что вы должны использовать то, что делает вас более продуктивным. Если у вас нет времени, чтобы инвестировать в проект, чтобы сидеть и учиться Emacs, то это, вероятно, не лучшее использование вашего времени в этот момент.

Однако я считаю, что неплохо познакомиться с другой IDE, когда у вас есть достаточно времени для этого. Я использую Visual Studio в повседневной работе, но дома я использую Eclipse для небольших проектов и использовали Emacs. В тот момент, когда я рассматривал использование Emacs, моим усилиям лучше было выполнять фактическую работу, чем замедлять борьбу с Emacs.

Я думаю, в какой-то степени абсурдно думать, что все лучшие программисты используют Emacs. Есть много удивительных программистов, которые не так популярны (или как вокальные, возможно), которые не используют Emacs.

Ответ 16

Я начал использовать Emacs около полутора лет назад, потому что это было слияние нескольких желаний - хотелось работать с регулярными выражениями (в редакторе, который их поддерживал), хотел узнать lisp, хотел лучший редактор.

Редактирование моего кода с помощью регулярных выражений научил меня многому о поиске шаблонов в коде. К нажатию клавиш потребовалось некоторое время, чтобы привыкнуть, но я летаю намного быстрее без мыши.

Emacs дал мне возможность работать с моими нотами и кодированием в одном приложении - минимальное переключение контекста означает минимальную коммутацию с мозгом, и я могу сосредоточиться на задаче.

Ответ 17

Нет. Хороший код делает вас лучшим программистом.

Тем не менее, хорошие манипуляции с текстом являются ключом к эффективности. Либо vim, либо emacs изменят, как вы работаете с текстом, - оба они оказались эффективными, но почти не согласуются друг с другом с точки зрения стиля. Кроме того, эта дискуссия довольно старая (назад к 80 и 90, где был компилятор text → ), поэтому есть много других текстовых редакторов и/или IDE, которые могут помочь вам стать лучшим программистом, которым вы можете быть.

Ответ 18

Нет. Если вы считаете, что использование emacs делает вас лучшим программистом, вы путаете причины и следствия.

Я использую его ежедневно. Я нахожу, что я более продуктивен с emacs + maven, чем с Eclipse для разработки java (хотя я все равно запускаю Eclipse каждый раз, чтобы делать случайный рефакторинг или отладочную сессию).

Вот мои причины:

  • Фактическое редактирование текста в emacs превосходит все остальное. Удивительно, как быстро вы можете так много сделать, используя только свою клавиатуру. Eclipse более ориентирован на мышь, и когда вы печатаете, вы сталкиваетесь с множеством раздражающих коряг.
  • Возможность настройки emacs с использованием elisp невероятно мощна. Я пойду так далеко, чтобы сказать, что если вы не тратите время на изучение рудиментарного elisp и настройку своей среды, вы просто теряете время.
  • Существуют расширения для практически любого, что вы когда-либо могли бы сделать в текстовом редакторе.

Ответ 19

Одной из замечательных особенностей emacs является то, что он может обрабатывать практически любой тип файла, который вы на него нажимаете, любого размера. По общему признанию, если вы открываете сумасшедший огромный зашифрованный файл, он не обязательно будет полезен, но он откроется. Большинство редакторов (и IDE) дадут вам большую душевную боль, если вы передадите им файл, который слишком велик и/или не соответствует их ожидаемым форматам.

Попробуйте открыть файл 1 Gig в Блокноте для примера.

Я начал использовать Emacs где-то в 1980 году, и он всегда был инструментом в моей панели инструментов. Это не единственный инструмент, но я всегда могу сказать, что смогу получить полезную работу.

Обязательный воспалительный комментарий: С другой стороны, мне нечего сказать о vi. Я всегда чувствовал, что vi с удовольствием убьет меня и продаст мои органы только из-за злобы.

В реальной жизни я использую Netbeans практически для всех форм разработки, и я время от времени использую emacs для быстрого редактирования. Там почти ничего нет, что довольно удобно, как emacs (для меня), когда дело доходит до получения чего-то сумасшедшего, сделанного прямо сейчас.

Кто-нибудь еще должен редактировать статические строки в скомпилированных исполняемых файлах? Есть ли лучший инструмент для такого рода вещей, чем emacs? Это, безусловно, работает для меня.

Ответ 20

Я не думаю, что это сделает вас лучшим программистом, но когда у вас есть THAT-уровень, вы, скорее всего, будете использовать emacs (или vi)

: -/

Хорошая вещь о тех двух (я никогда раньше не использовал emacs, но я все еще использую vi для самой мирской задачи) является фактом, они не прерывают ваш вам не нужно вынимать руки из клавиатуры, чтобы захватить мышь, и охотиться в меню файла для правильной опции. Ты просто продолжай писать. В вашем уме вы говорите что-то вроде: "Замените все вхождения этого слова для этого" , нажмите "Enter" и продолжайте свою работу.

Кроме того, я не думаю, что они используют emacs - это их единственный инструмент.

Это сделает вас лучше программистом? Возможно нет. Но когда у вас есть такой уровень знаний, вероятно, вам понравится, как быстро вы можете использовать эти инструменты.

Ответ 21

Нет.

Дисциплина, критическое мышление и стремление к самосовершенствованию сделают вас лучшим программистом. Ваш набор инструментов, являясь основным фактором вашей производительности, не создаст гения.

Если вам не нравятся emacs или vi, не используйте их. Не делая сознательного выбора, вы формируете свою среду разработки в соответствии со своими потребностями и методами работы. В любом случае вы имеете право использовать то, что вам нравится, и игнорировать любого, кто достаточно глуп, чтобы издеваться над инструментом, который вы используете для записи бит на диск, - это бит, который имеет значение.

Примечание. "Набор инструментов" здесь означает буквально "бренд" специальных инструментов, компиляторов и т.д. Концептуальные наборы инструментов, например. использование контроля версий, модульное тестирование - все в целом - являются частью процесса самосовершенствования.

Ответ 22

Я знаю, что вы не спрашивали об этом, но одна вещь, которая изучала emacs (неожиданно), улучшала для меня манипулирование командной строкой. Прежде чем я узнал ключевые слова emacs, я использовал для перемещения курсора и навигации по истории с помощью клавиш курсора, потому что я не знал ничего лучшего. Это было что-то вроде лампового момента, когда я понял, что могу использовать backward-word, move-beginning-of-line и backward-kill-word (которые я всегда связывал с C-w, как предлагает Stevey) в bash (M-t часто полезно и наиболее впечатляет тех, кто никогда не видел его раньше).

Я занимаюсь довольно большой работой в Solaris, где корневая оболочка является "оболочкой posix" и по умолчанию не имеет привязок emacs. Я нахожу, что мои пальцы теперь набирают exec bash самостоятельно, каждый раз, когда я вхожу в систему, я намного быстрее чувствую себя с помощью знакомых команд редактирования под пальцами.

Должен признаться, я все еще нахожу книги Кнута трудными (хотя стоит того), поэтому я не думаю, что это волшебным образом улучшило мое программирование.

Ответ 23

Emacs сделал меня более эффективным при манипулировании текста и навигации по файловой системе. И поскольку обе эти вещи задействованы при программировании, это сделало меня более эффективным (тем самым лучшим) программистом.

Ответ 24

Я думаю, что Emacs может сделать вас лучшим программистом, хотя и косвенно. Я думаю, что Emacs заставил меня писать на функциональном языке (Elisp), который меня интересует другими функциональными языками (Clojure), который, как мне сказали, сделает меня лучшим программистом. Тем не менее, я полагаю, время покажет.

Ответ 25

Есть ли ощутимая разница в навыках, производительности или программировании между людьми, которые зависят от IDE и тех, кто этого не делает, или все это просто фанатизм?

Я не думаю, что вы действительно можете получить ответ на этот вопрос. Существует так много разных способов измерения навыков, производительности и программирования - и все они, вероятно, очень субъективны и/или не могут быть разбиты на одну вещь, вызывающую ее или нет.

Это все еще интересный вопрос.

Мое личное убеждение - это зависит от программиста:)

G-Man

Ответ 26

Возможность использовать какой-то настраиваемый редактор позволяет вам делать изящные вещи, но emacs, в частности, не обязательно является самым лучшим вариантом. Я сам пользователь SlickEdit, я делаю все тот же странный полуавтоматический материал, с которым славится emacs. Я видел, как люди делают подобные вещи с vi и различными редакторами на базе Windows.

Итак, да, сокет накладывается хорошо, но утверждая, что мастер делает One True Socket Set своего рода немым.

Ответ 27

Освоение привязок клавиш Emacs и встроенных функций позволит вам обрабатывать текст быстрее, чем IDE, например Eclipse или Visual Studio.

Не верьте мне на слово, просмотрите эти видео профи, используя Emacs.

Как только вы достигнете достойного уровня в Emacs, вы сможете эффективно редактировать любой язык: Java Script, Java, Ruby, Python, HTML, C, С++ и т.д.

Начало работы с Emacs - это боль в прикладе, опыт из коробки хуже, чем плохо. Конфигурация по умолчанию Emacs не предоставляет новичкам Emacs более мощные функции (hippie-expand, etags, yasnippets и т.д.) Emacs. Я предлагаю начинать с файлов Emacs Starter Kit.

Еще одна причина, по которой Стив Йегг утверждает, что лучшие программисты мира используют Emacs, это elisp. Elisp позволяет опытному программисту использовать легко расширение Emacs. Написание расширения в Eclipse или Visual Studio значительно сложнее, чем запись быстрой функции или даже новый

Ответ 28

Я считаю, что его большое заблуждение в том, что использование этих текстовых редакторов, таких как VI и Emacs, выглядит высоко или необходимо, чтобы стать "великим программистом". Я всегда чувствовал, что IDE более эффективны, чем они привыкли, и это действительно имеет предпочтение и стиль.

Ответ 29

Я использовал emacs в колледже. это было около 16 лет назад. Я не оглядывался назад. Хотя мне жаль, что я все еще не ухожу с emacs, правда в том, что я достаточно продуктивен для своей MS IDE.

текст, который вы опубликовали, просто тролль. Ага. Никакой другой причины для этого, кроме как начать религиозную войну.

Ответ 30

Я начал с emacs, но переключился на vi, который для меня более изящный из-за его простоты. Кроме того, если вы когда-либо застреваете в однопользовательском режиме, команды ed являются подмножеством команд vi. Я не знаю, сможет ли emacs справиться с этим.

Поэтому в этом отношении я думаю, что vi сделает вас лучшим программистом.