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


59

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


16
Деякі люди займаються програмуванням протягом тривалого часу, і вони отримали високу ефективність у тому, що роблять із текстового командного рядка. Вони також можуть знайти редакторів vimна свій смак. Це дуже суб’єктивна область! Хоча багато людей використовують IDE в Linux, тому тут ви плутаєте кілька речей.
Warren P

3
Я вважаю, що IDE не є головним моментом у цьому питанні. Існує безліч IDE для ОС Linux. Наприклад, усі IDE 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такі інструменти, як Лялька , Шеф-кухар , Джуджу , Тканина та простий сценарій.

  • Деякі речі не потребують складних ІДЕ. Я сьогодні розробник Python і дуже задоволений власними вбудованими інструментами та налагоджувачем. Я використовую текстовий редактор, командний рядок і тканину ... І я набагато більше контролюю, ніж під .NET. Я можу створювати, перевіряти, виконувати та розгортати свої веб-сторінки за допомогою однієї команди Fabric.

    Це не означає, що немає монолітних ІДЕ. Затьмарення і Netbeans. MonoDevelop. KDevelop4 і QT Creator. Усі вони мають своїх користувачів, які присягають ними.

Чи краще для вас Ubuntu ? Хто знає. Це дуже спроможна і дуже настроювана система. Якщо ви даєте йому шанс і змінити робочий процес, щоб він міг вам допомогти, ви повинні мати можливість приклеїти його.


18
"Безкоштовно" - це і вартість, і клопоти. Я використовую Mac, але такий інструмент, як Vagrant, дозволяє легко налаштувати чистий VM Linux для будь-якого проекту та відкинути його, коли проект буде виконано. "Що я хочу?" Єдине врахування, а не "чи маю я ліцензійний ключ для цієї ОС і як я можу її розпізнати ...?"
Натан Лонг

14
+1 Для того, щоб залишатись об'єктивними, коли так багато людей вважають, що легко поводитись на колінах "Windoze смокче на все".
Філ

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

6
even PowerShell scripts lack the power of Bash- Я б заперечував, що ви тоді не дуже добре знаєте ПС; це надзвичайно потужно, і я не зустрічав нічого, що ти можеш зробити в Bash, чого не можеш зробити в PS
Марк Хендерсон

4
@MarkHenderson Так, це майже напевно через недостатнє його використання. Він був представлений саме тоді, коли я залишав Windows і .NET за собою. Я думаю, що Bash (а під "Bash" я справді маю на увазі GNU) взяв із собою, тому що ти використовуєш його скрізь і на все . PS потрібно так багато погуглити кожен раз , тому що все було просто завжди супер-спеціалізованим. Це чесно важко сказати після такого довгого часу з Башем.
Олі

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 встановив 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.

Цінність інструментальної мережі Майкрософт полягає в тому, що вона високо інтегрована. Від IDE до управління джерелами, управління проектами, збирання, розгортання, база даних, хмарна інфраструктура, ad nauseum . Microsoft робить ДУЖЕ легким, якщо ви збираєтесь у повному обсязі зі своєю платформою.

Як зазначали деякі, відхилення від Microsoft Way може бути болем. Використання .NET для коду та Oracle для вашої бази даних ... так, це буде біль.

Хочете створити веб-додаток .NET і розгорнути його в веб-службах Amazon ... не дуже прямо.

Але якщо ви залишитеся в межах екосистеми Microsoft ..., ця дитина буде співати, як глузуючий птах для вас. У руках грамотного розробника програмного забезпечення платформа Microsoft - це як PED для талановитого спортсмена. Це не дозволить програмісту-любителю створити наступний Facebook. Але це дасть перевагу талановитому розробнику, який розуміє, як шматки поєднуються між собою.

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

Якщо говорити, якщо ви хочете вивчати та вивчати нові мови та платформи, ви знайдете кращі інструменти для початку роботи з Ubuntu, і якщо ви шукаєте роботу поза екосистемою Microsoft, вам потрібно буде ознайомитися з Ubuntu.


7
Так, я згоден. Написавши на низькому рівні код C / Unix на середовищі Linux, я вирішив зробити перерву і зайнятись деякою розробкою графіки C #, запустив новий VS, і, щонайменше, це було визвольним. Це не так гнучко, але це, звичайно, полегшує справи, якщо ви не проти продати свою душу Micr .. ну, я маю на увазі, розширюючи свій кругозір!
Томас

3
Так, +1 за вітальний антидот для напівінформованого снайперства проти МС.
Алан Б

15

Я використовую обидва інструменту, Іди і текстові редактори з C ommand- L НДІ I nterface (сильфонні називають CLI ), писати програми.

Що пропонує Linux, це корисний CLI, починаючи з установки за замовчуванням. Якщо вам це не потрібно, і ви все одно просто використовуєте IDE, різниці вже немає (IMHO).

ІДЕ

  • IDE дуже хороші, коли мова йде про інтеграцію багатьох функцій та представлення їх у графічному графічному інтерфейсі.
  • Мінус у тому, що це може переповнити когось нового. Тепер вам доведеться вивчити дві речі: IDE та мову програмування.

Текстові редактори та засоби CLI

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

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


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

Однозначність - це добре. Виходячи з фону програмування Windows, CLI може означати загальну мовну інфраструктуру .
jltrem

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

@ minerz029 CLI - це програми в стилі греп (одна команда [рядок] за один раз). Ви думаєте про "консольні програми", що є придатністю / vim-стилем.
Ізката

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

12

Я кину свою відповідь на ринг (хоча я вважаю, що вони теж хороші).

Найголовніша відповідь, яку ви можете отримати, - це те, що справа у філософії.


У світі Microsoft це трохи релігійно - у вас є боги на Mt. Редмонд, якого потрібно клопотати, якщо ви хочете, щоб щось було реалізовано. Іноді вони прислухаються, інший раз ваші жертви та благання потраплять на глухі вуха. Можливо, вони були на полюванні. 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.
Warren P

9

Я хотів би висловити свої більш загальні думки до питання:

"Чому Linux є кращим середовищем для програмування?"

Я думаю, що найважливіша причина, чому потрібно розвиватися в Linux, полягає в тому, що ви маєте повне розуміння більшості програмних засобів. Ви можете дізнатися, як насправді все працює, якщо вас цікавить. Це дозволяє вам навчитися та адаптувати добрі чи погані практики, бачачи їх у дії. Це дозволяє більше різноманітності ваших ідей.


2
Влучне зауваження. Відкритий код - природна користь для всіх розробників, які мають будь-яку цікавість. На вікнах це черепахи аж донизу!
Warren P

Це хороший момент. Ви маєте уявлення про внутрішні програми цього програмного забезпечення
Anwar

Багато розробників Windows будуть працювати весь свій термін роботи на платформі Windows, програмуючи проти API, вони ніколи не побачать іншого боку. Вигляд тюрми для розуму, ти не думаєш?
Warren P

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

8

Чому Linux краще для програмування

ІДЕ

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

Укладач

GCC дуже стала галузевим стандартом. Поза всяким сумнівом, його основною платформою є Linux, де вона найкраще підтримується. І це безкоштовно і безоплатно.

Додаткові інструменти

Linux надає унікальні інструменти, недоступні на інших платформах, як, наприклад, Valgrind (інструмент для налагодження пам'яті, виявлення витоку пам'яті та профілювання). Linux також поставляється з інструментами налагодження, такими як strace та ltrace , які можна використовувати для налагодження навіть виробничого коду (тобто не компілюється з символами налагодження). Еквівалентні інструменти для Windows або відсутні, або дуже дорогі і не забезпечують однакової функціональності.

Простота встановлення ОС

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

З іншого боку, в Windows вам доведеться завантажувати та встановлювати пакунки вручну, і якщо вони потребують деяких інших пакетів, вам доведеться це робити і вручну. Також немає системного оновлення, кожен програмний пакет або реалізує власний набридлий оновник, або не оновлюється взагалі.

Виробничі машини, швидше за все, будуть Linux

Якщо ви робите будь-яке програмування для бек-енду, для Інтернету, для хмари тощо, велика ймовірність, що цільовими машинами є Linux. Існує набагато менше неприємних сюрпризів, коли ви розробляєте таку ж ОС, що і ваша цільова машина.

Звичайно, ви можете розробляти настільний додаток для Windows, але в наш час це своєрідний ринок роботи для програмістів.


Настільні програми для Windows - це ринок ніші? Що?
Алан Б

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 - це програмування на C. Все інше, що ви можете зробити в Linux, ви також можете зробити в Windows і навпаки (програмування мудро). Програмування на C краще для історичних причин в Linux, воно пропонує чудовий набір інструментів (які можна отримати в Windows BTW, але налаштувати Linux на це набагато простіше). Так само, якщо ви пишете C # і подобається .NET, тоді Windows є кращим вибором з зрозумілих причин. Все інше є абсолютно суб'єктивним, і ви почуєте плюси і мінуси обох сторін.


5
Будь ласка, спробуйте створити середовище <поставити іншу мову програмування, окрім MS тут>, у Windows, щоб побачити, як далеко вона йде.
Брайам

1
@Braiam Я зробив, Java: P.
Даніель

6
Linux краще запускати все, що схоже на Unix. Ланцюжок інструментів GCC (який включає компілятор C і C ++ та інші речі) має давнє надбання Unix / Posix. Але, якщо ви думаєте, що всі програми, схожі на Unix, - це програмування на С, ви, на жаль, недостатньо піддані великій різноманітності спадщини та інструментів Unix / Posix / Linux.
Warren P

2
Java - це особливий випадок, оскільки ви швидко генеруєте глибоко вкладені папки та багато файлів. І як тільки ви перейменовуєте класи або пакети, вам потрібно синхронізувати назви файлів або папки відповідно. Fun fun fun :)
MadMike

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

6

Які інструменти (текстовий редактор або IDE) ви використовуєте для програмування - це питання вибору. Взагалі можна сказати: Початківці та дуже малі проекти, як правило, використовують кращі текстові редактори, наприклад, піднесений текст або модифіковану версію gedit. Просто тому, що ви дізнаєтесь більше, використовуючи редактори простого тексту. ІДЕ можуть викрутити ваш навчальний процес за допомогою автоматизації речей (як це робить Visual Studio;)).

Що стосується професіоналів, то возитися з великою кількістю інструментів та мов, ІДЕ стане в нагоді, оскільки вони можуть зробити набагато більше для вас, якщо дозволите. Є багато IDE на вибір, залежно від мови, яку ви хочете запрограмувати. Є кращі, а також менш зручні.

Мій особистий досвід полягає в тому, що Ubuntu OS набагато швидше і простіше налаштувати для розвитку, ніж 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-посилання.

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


0

Я думаю, що вашим реальним запитанням може бути: "Чи існують альтернативи Visual Studio, які працюватимуть на Ubuntu, оскільки це не буде?"

MonoDevelop.

Це працездатно, але ви будете ненавидіти його, якщо звикли до VS та всіх функцій.

Немає переваги використовувати текстовий редактор. Пам'ятаєте ту приємну річ, яку називали Intellisense? Не відбувається (але MonoDevelop має щось подібне). Сподіваюся, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.