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

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

59
задан 7 April 2015 в 22:04

13 ответов

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

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

0
ответ дан 7 April 2015 в 22:04

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

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

IDE

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

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

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

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

0
ответ дан 7 April 2015 в 22:04

Я хотел бы добавить еще одну важную причину хотя; 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.

37
ответ дан 7 April 2015 в 22:04

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

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

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

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

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

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

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

0
ответ дан 7 April 2015 в 22:04

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

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

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

0
ответ дан 7 April 2015 в 22:04

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

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

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

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

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

0
ответ дан 7 April 2015 в 22:04

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

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

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

0
ответ дан 7 April 2015 в 22:04

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

IDE

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

Компилятор

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

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

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

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

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

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

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

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

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

0
ответ дан 7 April 2015 в 22:04

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

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


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


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

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

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

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

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

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

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

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

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

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

0
ответ дан 7 April 2015 в 22:04

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

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

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

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

0
ответ дан 7 April 2015 в 22:04

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

Я обнаружил, что в графической среде 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
ответ дан 7 April 2015 в 22:04

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

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

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

0
ответ дан 7 April 2015 в 22:04

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

MonoDevelop.

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

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

0
ответ дан 7 April 2015 в 22:04

Другие вопросы по тегам:

Похожие вопросы: