Почему писать программу в текстовых файлах или через терминал лучше (как я читал), чем использовать IDE, такие как Visual Studio в Windows? Существуют ли функции, которые предоставляет среда IDE (например, отображение ошибок компиляции), или это ручной процесс?
application-development
programming
Мухаммед Хараф
источник
источник
vim
по своему вкусу. Это очень субъективная область! Однако многие люди используют IDE в Linux, поэтому вы объединяете несколько вещей здесь.Ответы:
Такая гипотетика может быть лучше на 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 лучше для вас ? Кто знает. Это очень способная и очень настраиваемая система. Если вы дадите ему шанс и измените свой рабочий процесс, чтобы он помог вам, вы должны быть в состоянии заставить его придерживаться.
источник
even PowerShell scripts lack the power of Bash
- Я бы сказал, что вы не очень хорошо знаете PS; это невероятно мощно, и я не встречал ничего такого, что вы могли бы сделать в Bash, чего нельзя делать в PSЯ хотел бы добавить еще одну важную причину; Ubuntu отлично подходит для экспериментов с новыми библиотеками, языками, IDE и компиляторами. Все очень хорошо.
Итак, вы слышали о необычном языке Haskell :
О, вы слышали необычный редактор для Haskell:
То же самое и с библиотеками C / C ++ : вы только
apt-get install
их, двоичные файлы и заголовки переходите в нужные папки, и вы можете просто добавить#include
их в свои исходные файлы, даже не проверяя, где они находятся!По сути, речь идет не о том, как быстро вы можете настроить свою повседневную рабочую среду. Это также о том, насколько быстро вы можете настроить экспериментальную среду. Я верю, что это ускоряет процесс обучения в Linux.
источник
apt-get
и менталитет, что все должно быть установлено таким образом, возможно, лучшая вещь в Linux. Ни OSX, ни Windows не сравниваются здесь.The MacPorts Project currently distributes 17699 ports
, Разница лишь в том, что он всегда компилируется.yum
,pacman
,emerge
,petget
,pkgadd
...Вот мнение в первую очередь разработчика платформы 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.
источник
Я использую оба инструмента, Иды и текстовые редакторы с C ommand- L ине I nterface (ниже упоминается как CLI ), чтобы писать программы.
Linux предлагает полезный интерфейс командной строки, начиная с установки по умолчанию. Если вам это не нужно, и вы все равно используете IDE, то разницы больше не будет (ИМХО).
Иды
Текстовые редакторы и инструменты CLI
Я часто делаю свои прототипы с помощью текстовых инструментов. Позже, когда есть еще файлы для управления, я ценю инструменты рефакторинга, которые предлагает мне IDE.
источник
grep
не будет CLI, у него нет интерфейса (это будет просто инструмент командной строки)grep
аргументов, stdin и stdout - слово не подразумевает ничего графического или псевдографического. Другие типы интерфейсов включают веб-API, последовательные протоколы и так далее.Я брошу свой ответ на ринг (хотя я верю, что все они тоже хорошие).
Самый простой ответ, который вы можете получить, заключается в том, что все дело в философии.
В мире 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, вероятно, для вас.
источник
Я хотел бы высказать более общие соображения по этому вопросу:
«Почему Linux - лучшая среда для программирования?»
Я думаю, что наиболее важной причиной для разработки под Linux является то, что у вас есть полное представление о большинстве программных компонентов. Вы можете узнать, как все работает на самом деле, если вы заинтересованы. Это позволяет вам учиться и адаптировать хорошие или плохие практики, видя их в действии. Это позволяет больше разнообразия для ваших идей.
источник
Почему 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, но в настоящее время это своего рода нишевый рынок труда для программистов.
источник
Это не так, я могу утверждать, что это совсем наоборот. Обычно люди предпочитают инструменты, в которых они лучше. Тип используемых вами инструментов может помочь в написании программ. Так, например, я могу писать Java-программы просто отлично с vim, но это действительно контрпродуктивно, в отличие от полноценной IDE, такой как Eclipse или IntelliJ. Джон Скит дал отличный ответ на вопрос, зачем использовать IDE .
Возвращаясь к вашему первоначальному вопросу, единственное, в чем Linux лучше всего - это программирование на Си. Все остальное, что вы можете делать в Linux, вы можете делать и в Windows, и наоборот (программирование). Программирование на C лучше для Linux по историческим причинам, оно предлагает отличный набор инструментов (которые вы можете получить в Windows BTW, но гораздо проще настроить Linux для него). Аналогично, если вы пишете на C # и любите .NET, то Windows по лучшим причинам является лучшим выбором. Все остальное абсолютно субъективно, и вы услышите за и против обеих сторон.
источник
apt-get
замечательно, когда речь заходит о разработке на C. Вы можете быстро получить инструменты, библиотеки и отладочные символы , напримерsudo apt-get install libcurl4-openssl-dev
,sudo apt-get install valgrind
,sudo apt-get install libz-dbg
и попробовать то легко.Какие инструменты (текстовый редактор или IDE) вы используете для программирования - вопрос выбора. Вообще говоря, вы можете сказать: начинающие и очень маленькие проекты, как правило, используют лучшие текстовые редакторы, такие как возвышенный текст или модифицированная версия gedit. Просто потому, что вы узнаете больше при использовании текстовых редакторов. Среды IDE могут испортить ваш процесс обучения за счет автоматизации вещей (как это делает Visual Studio;)).
Когда дело доходит до профессионалов, использующих множество инструментов и языков, IDE пригодятся, потому что они могут сделать гораздо больше для вас, если вы позволите им. В зависимости от языка, на котором вы хотите программировать, вы можете выбирать из множества IDE. Есть и лучшие, и менее удобные.
По моему личному опыту, ОС Ubuntu намного быстрее и проще в настройке для разработки, чем Windows. Я предполагаю, что это потому, что большинство инструментов и программ, которые я использую, основаны на Linux, и потому что мне не нужно искать в интернете ссылки на скачивание моих любимых программ. Это просто «apt-get install program1 program2 program3». Для сравнения: мне нужно 3 рабочих дня, чтобы установить и настроить новую установку Windows со всем, что мне нужно для программирования (компания, а не частная, это было бы быстрее), но это всего один день для той же задачи в Ubuntu.
Мой опыт показывает, что программисты, которые переключаются на Linux для программирования, имеют (большую часть времени) более глубокое понимание технического контекста и того, как работают основы. Пользователи Mac и Windows, как правило, не знают, почему что-то работает так или нет. Я не уверен, сможете ли вы чему-то научиться, работая с Linux, или просто научитесь переключаться на Linux.
Надеюсь, мой "блафасел" немного поможет ...
источник
Я бы сказал, что дистрибутив Linux - это IDE.
Для начала Unix с самого начала была разработана как среда разработки. Это было написано программистами для программистов. Большинство Unixes и Linux все еще поставляются с инструментами разработки в конфигурации по умолчанию. И недостающие части только
apt-get
(или эквивалент) прочь. Windows, с другой стороны, является ужасной средой разработки до тех пор, пока вы не установите IDE, что не дешево, или тривиальный процесс.IDE более интегрирован в том смысле, что IDE более тесно связаны, чем, например, GCC, Git и Vi. Тесная связь позволяет вещам вроде intellisense работать лучше. Но с другой стороны, слабая связь имеет много преимуществ (например, гибкость, взаимозаменяемость, отсутствие блокировки).
И достижения в разработке компиляторов (компиляторы с легко разделяемыми внешними интерфейсами, такими как LLVM) могут в конечном итоге означать лучшую поддержку таких функций, как подсветка синтаксических ошибок даже в слабосвязанных средах.
источник
Что касается философии: Ubuntu / Linux позволяет программисту иметь прямой доступ к внутренним компонентам и аппаратному обеспечению, тогда как Windows является своего рода привратником. Это важный философский вопрос, когда дело доходит до программирования. Таким образом, с философской точки зрения, эта особенность, являющаяся преимуществом, будет зависеть от того, достаточно ли хорошо осведомлен пользователь или технически осведомлен о его важности.
Что касается программирования: вся системная архитектура Ubuntu / Linux основана на традиции Unix, заключающейся в том, что небольшие простые программы выполняют одно, а затем соединяют их вместе для выполнения более сложных задач. Для программиста эта архитектура невероятно мощная, и, на мой взгляд, это причина, по которой Unix в долгосрочной перспективе будет преобладать над любой другой программной архитектурой на любой платформе. Одним из немногих мест, где Unix в настоящее время не является доминирующим, является рабочий стол, но со временем это изменится. Такие дистрибутивы, как Ubuntu, помогают увидеть эту эволюцию до конца.
Однако я не оспариваю, что в Windows есть несколько очень хороших сред программирования. Для программирования в корпоративной среде они часто доминируют.
источник
Скорость - это своего рода ответ.
Я обнаружил, что в графической среде 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?!?!?
источник
Я думаю, что ваш реальный вопрос может быть: «Существуют ли какие-либо альтернативы Visual Studio, которые будут работать в Ubuntu, поскольку это не так?»
MonoDevelop.
Это выполнимо, но вы будете ненавидеть его, если вы привыкли к VS и всем функциям.
Нет никакого преимущества в использовании текстового редактора. Помните ту замечательную вещь под названием Intellisense? Не происходит (но в MonoDevelop есть что-то подобное). Надеюсь это поможет.
источник