Какие преимущества имеет Ubuntu перед Windows как средой для программирования?


59

Почему писать программу в текстовых файлах или через терминал лучше (как я читал), чем использовать IDE, такие как Visual Studio в Windows? Существуют ли функции, которые предоставляет среда IDE (например, отображение ошибок компиляции), или это ручной процесс?


16
Некоторые люди занимались программированием в течение долгого времени и стали очень эффективными в выполнении того, что они делают из текстовой командной строки. Они могут также найти редакторов vimпо своему вкусу. Это очень субъективная область! Однако многие люди используют IDE в Linux, поэтому вы объединяете несколько вещей здесь.
Уоррен П

3
Я считаю, что IDE - не главное в этом вопросе. Существует множество IDE для ОС Linux. Например, все интегрированные среды разработки JetBrains (IntelliJ / PyCharm и т. Д.) Работают в Linux. Eclipse работает на Linux. QtCreator работает на Linux.
Бакуриу

12
Этот вопрос на этом сайте будет страдать от предвзятости подтверждения .
zzzzBov

5
Стремясь сохранить вопрос в чистоте от мета-дискуссии, я открыл отдельную мета-тему, чтобы конкретно обратиться к ней .
Оли

4
Пожалуйста, перефразируйте этот вопрос, чтобы иметь больше смысла, в частности, название. Ubuntu не заставляет вас избегать IDE и придерживаться текстовых редакторов для разработки программного обеспечения больше, чем Windows.
Reinier Post

Ответы:


87

Такая гипотетика может быть лучше на Programmers.SE, потому что она, скорее всего, здесь односторонняя. Тем не менее, я был разработчиком .NET в течение нескольких лет и стал зависеть от Visual Studio. Это очень много для вас, и да, мне особенно нравится встроенный отладчик ... Однако я думаю, что есть несколько причин, по которым люди выбирают Linux:

  • Ubuntu бесплатна. Windows и VS могут быть чрезвычайно дорогими.

  • Ubuntu бесплатна . Windows и VS дают вам очень мало контроля над тем, как вы их используете.

  • Ubuntu - это среда программирования прямо из коробки. Такие инструменты , как Bash, grep, sed, awk. Windows исторически является большой болью в сценарии. Пакетные файлы ужасны и даже с PowerShell, опыт командной строки в Windows становится ничтожным по сравнению с Bash и инструментами GNU. Вы можете перенести часть этого на Windows, но это не то же самое.

  • Сложные настройки легко автоматизировать и копировать с помощью apt-getтаких инструментов, как Puppet , Chef , Juju , Fabric и простых сценариев.

  • Некоторые вещи не нуждаются в сложных IDE. Сейчас я разработчик Python, и я очень доволен его собственными встроенными инструментами и отладчиком. Я использую текстовый редактор, командную строку и фабрику ... И я гораздо больше контролирую, чем в .NET. Я могу создавать, тестировать, фиксировать и развертывать свои веб-приложения с помощью одной команды Fabric.

    Это не значит, что нет монолитных IDE. Затмение и Netbeans. MonoDevelop. KDevelop4 и QT Creator. У всех есть свои пользователи, которые клянутся ими.

Ubuntu лучше для вас ? Кто знает. Это очень способная и очень настраиваемая система. Если вы дадите ему шанс и измените свой рабочий процесс, чтобы он помог вам, вы должны быть в состоянии заставить его придерживаться.


18
«Бесплатно» - это и стоимость, и хлопоты. Я использую Mac, но такой инструмент, как Vagrant, позволяет легко настроить чистую виртуальную машину Linux для любого проекта и отказаться от нее после завершения проекта. "Чего я хочу?" это единственное соображение, а не "есть ли у меня лицензионный ключ для этой ОС и как мне его распознать ...?"
Натан Лонг

14
+1 Для того, чтобы оставаться объективными, когда столь многим людям легко иметь отношение колена «Виндоз сосет во всем».
Фил

2
Стоит отметить, что Visual Studio более свободен, чем раньше, он уже некоторое время поддерживает файлы MAKE, а плагины позволяют писать и отлаживать приложения cygwin полностью внутри Visual Studio.
Скотт Чемберлен

6
even PowerShell scripts lack the power of Bash- Я бы сказал, что вы не очень хорошо знаете PS; это невероятно мощно, и я не встречал ничего такого, что вы могли бы сделать в Bash, чего нельзя делать в PS
Марк Хендерсон

4
@MarkHenderson Да, это почти наверняка из-за неиспользования этого достаточно. Он был представлен как раз когда я оставлял Windows и .NET позади себя. Я думаю, что Bash (и под «Bash» я действительно имею в виду GNU) взял с собой, потому что вы используете его везде и для всего . PS требуется так много погуглить каждый раз , потому что все было просто всегда супер-специализировано. Честно говоря, после Bash трудно сказать.
Оли

37

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

Итак, вы слышали о необычном языке Haskell :

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

О, вы слышали необычный редактор для Haskell:

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

То же самое и с библиотеками C / C ++ : вы только apt-get installих, двоичные файлы и заголовки переходите в нужные папки, и вы можете просто добавить #includeих в свои исходные файлы, даже не проверяя, где они находятся!

По сути, речь идет не о том, как быстро вы можете настроить свою повседневную рабочую среду. Это также о том, насколько быстро вы можете настроить экспериментальную среду. Я верю, что это ускоряет процесс обучения в Linux.


36
apt-getи менталитет, что все должно быть установлено таким образом, возможно, лучшая вещь в Linux. Ни OSX, ни Windows не сравниваются здесь.
Натан Лонг

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

2
@NathanLong Я сделал то же самое, используя Macports: sudo port install ghc. Свеже скомпилировано из источников. The MacPorts Project currently distributes 17699 ports, Разница лишь в том, что он всегда компилируется.
Alecail

2
@karadeniz: И это не говоря уже о yum, pacman, emerge, petget, pkgadd...
Aesin

2
Мне нравится MacPorts (и я поддерживаю несколько пакетов там и на Homebrew), но он не может сравниться с Debian. Эти небольшие проекты просто не имеют полномочий поддерживать большой репозиторий по тому же стандарту. То же самое касается Cygwin и Coapp на стороне Windows. Ключевое различие заключается в культурном, я думаю, что менеджеры пакетов linux являются частью системы и используются всеми для всех, они не являются слегка пренебрегаемой подпоркой надстроек.
Jcupitt

20

Вот мнение в первую очередь разработчика платформы Microsoft. Если вы не ориентируетесь на экосистему .NET, я бы сказал, что ваш лучший вариант - Ubuntu. Вам будет намного проще получать, настраивать и использовать инструменты практически для любой другой платформы / языка, если вы используете Ubuntu вместо Windows.

Ценность набора инструментов Microsoft в том, что он очень интегрирован. От IDE до управления исходным кодом, управления проектами, сборки, развертывания, базы данных, облачной инфраструктуры, до тошноты . Microsoft делает это ОЧЕНЬ легко, если вы используете полноценную платформу.

Как уже упоминалось, отклонение от Microsoft Way может быть проблемой. Использование .NET для вашего кода и Oracle для вашей базы данных ... О, это будет больно.

Хотите создать веб-приложение .NET и развернуть его в Amazon Web Services ... не очень просто.

Но если вы останетесь в экосистеме Microsoft ... этот ребенок будет петь для вас как издевающаяся птица. В руках компетентного разработчика программного обеспечения платформа Microsoft подобна PED для талантливого спортсмена. Это не позволит программисту-любителю создать следующий Facebook. Но это даст преимущество талантливому разработчику, который понимает, как части сочетаются друг с другом.

Аргумент в пользу бесплатной (как в пиве) стоимости начала работы с Ubuntu уже открыт, есть ряд программ, которые Microsoft предлагает вам бесплатно начать работу с их инструментами. В том числе Bizspark, который дает вашей стартап-компании 3 года лицензий (включая лицензии на использование их инструментов в производственных целях). И Мечта Искры, которая дает это студентам бесплатно.

При этом, если вы хотите исследовать и изучать новые языки и платформы, вы найдете более эффективные инструменты для начала работы с Ubuntu, и если вы ищете работу вне экосистемы Microsoft, вам нужно быть знакомым с Ubuntu.


7
Да, я согласен. После того, как я некоторое время писал низкоуровневый код C / Unix для среды Linux, я решил сделать перерыв и заняться разработкой графики на C #, запустить новую VS и, по меньшей мере, это освободило. Это не так гибко, но, безусловно, облегчает ситуацию, если вы не против продать свою душу Микру ... я имею в виду, расширить свой кругозор!
Томас

3
Да +1 за долгожданное противоядие от полуинформированного снайперского действия против MS.
Алан Б

15

Я использую оба инструмента, Иды и текстовые редакторы с C ommand- L ине I nterface (ниже упоминается как CLI ), чтобы писать программы.

Linux предлагает полезный интерфейс командной строки, начиная с установки по умолчанию. Если вам это не нужно, и вы все равно используете IDE, то разницы больше не будет (ИМХО).

Иды

  • IDE очень хороши, когда дело доходит до интеграции многих функций и представления их в графическом графическом интерфейсе.
  • Недостатком является то, что он может ошеломить кого-то нового в этом. Теперь у вас будет две вещи для изучения: IDE и язык программирования.

Текстовые редакторы и инструменты CLI

  • Текстовые редакторы и инструменты CLI не занимают много времени, чтобы учиться.
  • Если что-то не работает, легко увидеть, какой инструмент работает не так, как ожидалось.
  • Так же проще искать проблемы с Google, так как все основано на тексте.
  • Программирование с помощью текстовых редакторов и инструментов CLI происходит быстрее и быстрее, особенно если сравнивать их на старом оборудовании.
  • Вы можете работать с ними даже на экранах низкого разрешения.
  • Это позволяет программировать и отлаживать с минимальными ресурсами на удаленном сервере.

Я часто делаю свои прототипы с помощью текстовых инструментов. Позже, когда есть еще файлы для управления, я ценю инструменты рефакторинга, которые предлагает мне IDE.


8
Для дальнейшего использования CLI - это сокращение от интерфейса командной строки. CLI обычно относится к интерфейсу, подобному aptitude, который похож на GUI, но в текстовом виде. Vim будет редактором CLI, но grepне будет CLI, у него нет интерфейса (это будет просто инструмент командной строки)
kiri

Однозначность это хорошо. Исходя из опыта программирования Windows, CLI может обозначать Common Language Infrastructure .
Jltrem

Я использую GUI для разработки GUI и текстовый редактор для разработки CLI или текстовых программ / контента. Я бы никогда не попытался написать бизнес-приложение с большим графическим интерфейсом в Vim, Visual C # делает создание прототипов такими вещами без усилий. Точно так же, я бы никогда не занимался веб-разработкой (PHP / HTML / CSS / JS и т. Д.) В среде IDE в Windows, потому что делать это в Vim на моем веб-сервере гораздо эффективнее и удобнее.
Дан

@ minerz029 CLI - программы в стиле grep (одна команда [строка] за раз). Вы думаете о «консольных приложениях» в стиле aptitude / vim.
Изката

4
@ minerz029 Интерфейс для grepаргументов, stdin и stdout - слово не подразумевает ничего графического или псевдографического. Другие типы интерфейсов включают веб-API, последовательные протоколы и так далее.
Изката

12

Я брошу свой ответ на ринг (хотя я верю, что все они тоже хорошие).

Самый простой ответ, который вы можете получить, заключается в том, что все дело в философии.


В мире Microsoft это немного религиозно - у вас есть боги на горе. Редмонд, которому нужно ходатайствовать, если ты хочешь что-то реализовать. Иногда они будут слушать, а иногда ваши жертвы и просьбы не будут услышаны. Возможно, они были на охоте. Microsoft контролирует всю экосистему - им принадлежит ОС, им принадлежит IDE, и они связывают их вместе способами, о которых, вероятно, не следует говорить в сети SE. Даже в пределах IDE части тесно связаны - это можно назвать интегрированнымно я думаю, что в сочетании является более точным. Если вы хотите немного изменить положение вещей, Гейтс запрещает вам изменять то, что явно не разрешали разработчики Windows или Visual Studio. А затем добавьте такие технологии, как IE, IIS, серверы Microsoft, MS SQL Server и Office ... и все это - большая хорошая счастливая семья. Но если вы хотите оставить часть семьи? дрожь !


С другой стороны, у вас есть Linux, который наследует философию Unix, согласно которой каждый компонент должен отвечать за свою небольшую сферу ответственности. Это должно сделать одну вещь, и делать это хорошо. И желательно, чтобы общение происходило посредством текстовых строк. Как уже отмечалось, sed, awk, grepи т.д. являются прекрасными примерами этого. Они делают одну вещь, для которой они предназначены, и делают это очень хорошо. Если вам нужно сделать две вещи, то вы объедините два инструмента. Что очень легко сделать.

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

Мало того, что их легко объединить, но и очень легко разделить их - если я решу, что мне больше не нужно редактировать поток, но я хочу отфильтровать результаты, а не передавать свой текст sed, я могу передать это grepвместо.

Теперь, это фундаментальная философия разработки в среде Linux - поэтому, даже если вы идете оттуда, многие инструменты предоставляют схожие интерфейсы. Они позволяют вам разбивать их на части или взаимодействовать с ними через командную строку или порты или HTTP.

И даже если бы это было не так, у вас также есть программное обеспечение с открытым исходным кодом. Большая часть (если не все) программного обеспечения на платформе Linux имеет открытый исходный код. Так что, если вам не нравится, как это написано, вы полностью, абсолютно, абсолютно способны изменить программное обеспечение самостоятельно. Это невероятно расширяет возможности. Не можете разбить эту IDE так, как вы хотите? Либо внесите изменения и отправьте их обратно в апстрим, либо разветвите проект. Не уверен, почему что-то ведет себя так, как это происходит? Используйте источник, Люк! Нужно уметь что-то автоматизировать через командную строку? Взломайте проект и внесите свои изменения. Обнаружили ошибку или проблему безопасности? Эй, угадайте, что - вы можете это исправить самостоятельно, вам не нужно ждать появления SP3.432vb89234.startdate1eQ.

Вы можете комбинировать инструменты, которые вы хотите, и вам нужно. И если на вашем пути есть что-то, вы можете изменить это на 100%. Даже если у вас нет такой возможности, вы, безусловно, можете заплатить кому-то за разработку этого изменения - или даже предложить его кому-то еще, у кого есть ноу-хау.

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

Устранение трения является ключевым.

Так что, если религия экосистемы Microsoft - это то, где вы чувствуете себя как дома, и вам настолько нравятся эти инструменты, что они не доставляют вам больших / каких-либо трений ... ну, тогда, вероятно, это просто прекрасно.

Но если вам не подходит Microsoft Mold (tm), заявка на патент подана, то вы столкнетесь с трениями. Развитие будет болью. Каждый раз, когда вы хотите что-то сделать, но не можете, это истощит драгоценные когнитивные ресурсы. И если это так, то среда разработки Linux, вероятно, для вас.


1
Мне очень понравились эссе, которые вы связали, спасибо.
Гарет Дэвидсон

3
Хвалите Балмера, и пусть все его биты четности установлены правильно. ACK. ACK. ACK.
Уоррен П

9

Я хотел бы высказать более общие соображения по этому вопросу:

«Почему Linux - лучшая среда для программирования?»

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


2
Хорошая точка зрения. Открытый исходный код - естественная выгода для всех разработчиков, которые проявляют любопытство. На окнах все черепахи вниз!
Уоррен П

Неплохо подмечено. У вас есть представление о внутренностях программного обеспечения здесь
Anwar

Многие разработчики Windows будут работать всю свою жизнь на платформе Windows, программируя под API, они никогда не увидят другую сторону. Что-то вроде тюрьмы для разума, тебе не кажется?
Уоррен П

@WarrenP Если API правильно задокументирован, вы не узнаете больше об этом, посмотрев на исходный код. (Хотя я признаю, что многие API не полностью документированы в обоих мирах.)
svick

8

Почему Linux лучше для программирования

Иды

Помимо Visual Studio и Xcode, которые служат своим конкретным целям, наиболее популярными IDE являются мультиплатформенные. Может показаться, что существует несколько миллиардов IDE для десятков языков, но, в конце концов, большинство из них основаны на Eclipse , IntelliJ IDEA или NetBeans . Их объединяет то, что все они основаны на Java. Java работает более эффективно в Linux, чем в любой другой ОС на том же оборудовании. На самом деле Java работает на 20% быстрее в Linux, чем в OS X на том же оборудовании. Многие из этих IDE готовы к установке одним щелчком мыши в Ubuntu Software Center.

составитель

GCC во многом стал отраслевым стандартом. Вне всякого сомнения, его основной платформой является Linux, где она лучше всего поддерживается. И это бесплатно и без лицензионных платежей.

Дополнительные инструменты

Linux предоставляет уникальные инструменты, недоступные на других платформах, таких как, например, Valgrind (инструмент для отладки памяти, обнаружения утечек памяти и профилирования). Linux также поставляется с инструментами отладки, такими как strace и ltrace , которые можно использовать для отладки даже рабочего кода (т. Е. Не скомпилированного с символами отладки). Эквивалентные инструменты для Windows либо не существуют, либо очень дороги и не обеспечивают такую ​​же функциональность.

Простота установки OSS

У Ubuntu есть отличный менеджер пакетов. В большинстве случаев установка программного обеспечения проста apt-get install package-name(вы также можете сделать это с помощью графического интерфейса, Ubuntu Software Center или Synaptic). После установки они автоматически обновляются системой с помощью исправлений ошибок. Система пакетов также автоматически отслеживает зависимости, поэтому вам не нужно беспокоиться о других необходимых пакетах; они будут установлены автоматически.

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

Производственные машины, скорее всего, будут Linux

Если вы занимаетесь программированием для серверной части, для Интернета, для облака и т. Д., Вполне вероятно, что ваши целевые машины - Linux. Существует гораздо меньше неприятных сюрпризов, когда вы разрабатываете ту же ОС, что и ваша целевая машина.

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


Настольные приложения для Windows - это нишевый рынок? Wha?
Алан Б

2
@AlanB: Нет, программисты настольных приложений Windows нишу. По оценкам, 90-95% программистов занимаются внутренней разработкой, и в основном это не настольные приложения. Кроме того, просто подумайте: когда вы в последний раз покупали (как за реальные деньги) приложение для Windows, которое не было игрой (или продуктом Adobe в этом отношении)?
vartec

Насколько я вижу, почти все в бизнес-пространстве все еще решительно основано на настольных ПК и оплачивается, несмотря на то, что компании, ориентированные на облачные вычисления, постоянно заявляют об обратном.
Алан Б

4
@AlanB: опять же, я не говорю о рынке конечных пользователей. Я говорю о рынке труда для программистов . Например, одно из приложений, о которых вы говорите, это MS Office. Тем не менее, вся команда Office в MS - всего около 2500 программистов, и многие из них даже не работают над настольной версией.
vartec

7

Почему писать программу в текстовых файлах или через терминал лучше (как я читал), чем использовать IDE, такие как Visual Studio в Windows?

Это не так, я могу утверждать, что это совсем наоборот. Обычно люди предпочитают инструменты, в которых они лучше. Тип используемых вами инструментов может помочь в написании программ. Так, например, я могу писать Java-программы просто отлично с vim, но это действительно контрпродуктивно, в отличие от полноценной IDE, такой как Eclipse или IntelliJ. Джон Скит дал отличный ответ на вопрос, зачем использовать IDE .

Возвращаясь к вашему первоначальному вопросу, единственное, в чем Linux лучше всего - это программирование на Си. Все остальное, что вы можете делать в Linux, вы можете делать и в Windows, и наоборот (программирование). Программирование на C лучше для Linux по историческим причинам, оно предлагает отличный набор инструментов (которые вы можете получить в Windows BTW, но гораздо проще настроить Linux для него). Аналогично, если вы пишете на C # и любите .NET, то Windows по лучшим причинам является лучшим выбором. Все остальное абсолютно субъективно, и вы услышите за и против обеих сторон.


5
Пожалуйста, попробуйте установить в Windows среду «поставь другой язык программирования, кроме MS's here», посмотрим, как далеко она зайдет
Брайам

1
@Braiam Я сделал, Java: P.
Даниил

6
Linux лучше всего работает под Unix. Набор инструментов GCC (который включает в себя компилятор C и C ++ и другие вещи) имеет давние традиции Unix / Posix. Но, если вы думаете, что все Unix-подобное программирование - это C-программирование, вы, к сожалению, недооценены богатым разнообразием наследия и инструментов Unix / Posix / Linux.
Уоррен П

2
Java - это особый случай, поскольку вы быстро создаете глубоко вложенные папки и множество файлов. И как только вы переименуете классы или пакеты, вам нужно будет синхронизировать имена файлов или папки соответственно. Весело, весело, весело :)
MadMike

1
Я не знаю, лучше ли Linux и CLI лучше для программирования на C (VS отлично работает на C ++, но не поддерживает C99, Posix может быть немного чище, чем Win32). Но apt-getзамечательно, когда речь заходит о разработке на C. Вы можете быстро получить инструменты, библиотеки и отладочные символы , например sudo apt-get install libcurl4-openssl-dev, sudo apt-get install valgrind, sudo apt-get install libz-dbgи попробовать то легко.
Алекс Жасмин

6

Какие инструменты (текстовый редактор или IDE) вы используете для программирования - вопрос выбора. Вообще говоря, вы можете сказать: начинающие и очень маленькие проекты, как правило, используют лучшие текстовые редакторы, такие как возвышенный текст или модифицированная версия gedit. Просто потому, что вы узнаете больше при использовании текстовых редакторов. Среды IDE могут испортить ваш процесс обучения за счет автоматизации вещей (как это делает Visual Studio;)).

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

По моему личному опыту, ОС Ubuntu намного быстрее и проще в настройке для разработки, чем Windows. Я предполагаю, что это потому, что большинство инструментов и программ, которые я использую, основаны на Linux, и потому что мне не нужно искать в интернете ссылки на скачивание моих любимых программ. Это просто «apt-get install program1 program2 program3». Для сравнения: мне нужно 3 рабочих дня, чтобы установить и настроить новую установку Windows со всем, что мне нужно для программирования (компания, а не частная, это было бы быстрее), но это всего один день для той же задачи в Ubuntu.

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

Надеюсь, мой "блафасел" немного поможет ...


1

Я бы сказал, что дистрибутив Linux - это IDE.

Для начала Unix с самого начала была разработана как среда разработки. Это было написано программистами для программистов. Большинство Unixes и Linux все еще поставляются с инструментами разработки в конфигурации по умолчанию. И недостающие части только apt-get(или эквивалент) прочь. Windows, с другой стороны, является ужасной средой разработки до тех пор, пока вы не установите IDE, что не дешево, или тривиальный процесс.

IDE более интегрирован в том смысле, что IDE более тесно связаны, чем, например, GCC, Git и Vi. Тесная связь позволяет вещам вроде intellisense работать лучше. Но с другой стороны, слабая связь имеет много преимуществ (например, гибкость, взаимозаменяемость, отсутствие блокировки).

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


Итак, в основном вы говорите, что Linux - это интегрированная среда разработки, которая на самом деле мало интегрирована? :-)
svick

1

Что касается философии: Ubuntu / Linux позволяет программисту иметь прямой доступ к внутренним компонентам и аппаратному обеспечению, тогда как Windows является своего рода привратником. Это важный философский вопрос, когда дело доходит до программирования. Таким образом, с философской точки зрения, эта особенность, являющаяся преимуществом, будет зависеть от того, достаточно ли хорошо осведомлен пользователь или технически осведомлен о его важности.

Что касается программирования: вся системная архитектура Ubuntu / Linux основана на традиции Unix, заключающейся в том, что небольшие простые программы выполняют одно, а затем соединяют их вместе для выполнения более сложных задач. Для программиста эта архитектура невероятно мощная, и, на мой взгляд, это причина, по которой Unix в долгосрочной перспективе будет преобладать над любой другой программной архитектурой на любой платформе. Одним из немногих мест, где Unix в настоящее время не является доминирующим, является рабочий стол, но со временем это изменится. Такие дистрибутивы, как Ubuntu, помогают увидеть эту эволюцию до конца.

Однако я не оспариваю, что в Windows есть несколько очень хороших сред программирования. Для программирования в корпоративной среде они часто доминируют.


0

Скорость - это своего рода ответ.

Я обнаружил, что в графической среде IDE, такой как Visual Studio или QtCreator, я слишком часто использую мышь, когда мне нужно использовать ярлыки. Каждый раз, когда вы переключаете контекст, вам приходится останавливать свой мозг, сосредотачиваться на своей цели и ждать действия. Принимая во внимание, что нажатие F5 бесконечно быстрее.

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

Ошибки представлены более подробно с помощью интерфейса командной строки, который я предпочитаю, и он также дает обратную связь во время компиляции. Одна вещь, которую я ненавижу в Visual Studio, это то, что по умолчанию это маленький значок, указывающий на то, что он выполняет компиляцию, после чего вы получите список ошибок.

При узком представлении вы будете придерживаться ширины 80 столбцов, что способствует удобочитаемости, я видел код, который охватывает ширину 200 столбцов. С кодом, подходящим к 80 столбцам, вы можете открыть 4/5 окон одновременно.

С помощью редактора CLI вы можете кодировать удаленно, без необходимости медленного (по сравнению с текстовым) сеанса RDP к вашей Visual Studio. Вы можете закодировать через ссылку GSM.

Визуальная форма развития вроде отстой. Одним из преимуществ, которое вы можете использовать в GUI IDE, является то, что вы можете рисовать свои экраны и их быстрее. Однако по моему опыту это хорошо для прототипа, но часто вы получаете лучшие результаты, если делаете это вручную в коде. Анализатор кода VS2012 этим утром только что предупредил меня о 200+ проблемах с кодом, который был автоматически сгенерирован Visual Studio?!?!?


0

Я думаю, что ваш реальный вопрос может быть: «Существуют ли какие-либо альтернативы Visual Studio, которые будут работать в Ubuntu, поскольку это не так?»

MonoDevelop.

Это выполнимо, но вы будете ненавидеть его, если вы привыкли к VS и всем функциям.

Нет никакого преимущества в использовании текстового редактора. Помните ту замечательную вещь под названием Intellisense? Не происходит (но в MonoDevelop есть что-то подобное). Надеюсь это поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.