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

59

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

задан muhammad 17.10.2013 в 10:15
источник

13 ответов

85

Такой тип гипотезы может быть лучше на 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 , инструменты, такие как Кукольный , Chef , Juju , Fabric и простые скрипты.

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

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

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

    
ответ дан Oli 17.10.2013 в 10:42
источник
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.

    
ответ дан enobayram 17.10.2013 в 14:42
20

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

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

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

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

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

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

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

    
ответ дан Michael Brown 18.10.2013 в 00:29
15

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

Что предлагает Linux - это полезный CLI, начиная с установки по умолчанию. Если вам это не нужно, и вы все равно используете IDE, то больше нет большой разницы (IMHO).

Иды

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

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

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

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

    
ответ дан MadMike 17.10.2013 в 10:32
12

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

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

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

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

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

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

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

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

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

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

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

Итак, если религия Microsoft ecostystem - это то место, где вы чувствуете себя как дома, и вы так сильно наслаждаетесь инструментами, что он не дает вам много / трения ... ну, наверное, это просто штраф тогда.

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

ответ дан Wayne Werner 17.10.2013 в 17:02
9

Я хотел бы представить свои более общие мысли на вопрос:

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

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

    
ответ дан schmijos 17.10.2013 в 15:18
8

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

Иды

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

Compiler

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

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

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

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

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

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

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

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

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

    
ответ дан vartec 17.10.2013 в 17:45
7
  

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

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

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

ответ дан Daniel 17.10.2013 в 15:18
6

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

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

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

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

Надеюсь, мой «blafasel» поможет немного ...

    
ответ дан mondjunge 17.10.2013 в 10:42
1

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

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

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

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

    
ответ дан david25272 18.10.2013 в 01:08
1

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

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

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

ответ дан AsymLabs 18.10.2013 в 12:17
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?!?!?

    
ответ дан Phil Hannent 18.10.2013 в 11:17
0

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

MonoDevelop.

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

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

    
ответ дан Xavier J 09.01.2014 в 02:40