Чому написання програми в текстових файлах або через термінал є кращим варіантом (як я читаю), ніж використання IDE, таких як Visual Studio для Windows? Чи існують функції, які IDE надає (наприклад, показують помилки компіляції) чи це ручний процес?
Чому написання програми в текстових файлах або через термінал є кращим варіантом (як я читаю), ніж використання IDE, таких як Visual Studio для Windows? Чи існують функції, які IDE надає (наприклад, показують помилки компіляції) чи це ручний процес?
Відповіді:
Цей гіпотетичний варіант може бути кращим для 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 ? Хто знає. Це дуже спроможна і дуже настроювана система. Якщо ви даєте йому шанс і змінити робочий процес, щоб він міг вам допомогти, ви повинні мати можливість приклеїти його.
even PowerShell scripts lack the power of Bash
- Я б заперечував, що ви тоді не дуже добре знаєте ПС; це надзвичайно потужно, і я не зустрічав нічого, що ти можеш зробити в Bash, чого не можеш зробити в PS
Хочеться додати ще одну важливу причину; 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.
apt-get
, а менталітет, що все має бути встановлено таким чином, - можливо, найкраще в Linux. Ні OSX, ні Windows тут не порівнюються.
The MacPorts Project currently distributes 17699 ports
. Одна відмінність полягає в тому, що вона завжди складається.
yum
, pacman
, emerge
, petget
, pkgadd
...
Ось думка головного розробника платформи 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.
Я використовую обидва інструменту, Іди і текстові редактори з C ommand- L НДІ I nterface (сильфонні називають CLI ), писати програми.
Що пропонує Linux, це корисний CLI, починаючи з установки за замовчуванням. Якщо вам це не потрібно, і ви все одно просто використовуєте IDE, різниці вже немає (IMHO).
Я часто роблю прототипування текстовими інструментами. Пізніше, коли є більше файлів для управління, я ціную інструменти рефакторингу , які мені пропонує IDE.
grep
не був би CLI, у нього немає інтерфейсу (це був би просто інструмент командного рядка)
grep
є аргументи, stdin та stdout - слово не означає нічого графічного чи псевдо графічного. Інші типи інтерфейсів включають веб-API, послідовні протоколи тощо.
Я кину свою відповідь на ринг (хоча я вважаю, що вони теж хороші).
Найголовніша відповідь, яку ви можете отримати, - це те, що справа у філософії.
У світі 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, ймовірно, для вас.
Я хотів би висловити свої більш загальні думки до питання:
"Чому Linux є кращим середовищем для програмування?"
Я думаю, що найважливіша причина, чому потрібно розвиватися в 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. Існує набагато менше неприємних сюрпризів, коли ви розробляєте таку ж ОС, що і ваша цільова машина.
Звичайно, ви можете розробляти настільний додаток для Windows, але в наш час це своєрідний ринок роботи для програмістів.
Чому написання програми в текстових файлах або через термінал є кращим варіантом (як я читаю), ніж використання IDE, таких як Visual Studio для Windows?
Це не так, я можу стверджувати, що це зовсім навпаки. Як правило, люди, як правило, віддають перевагу інструментам, у яких вони кращі. Тип інструментів, які ви використовуєте, може сприяти простоті написання програм. Так, наприклад, я можу писати програми Java просто з vim, але це насправді дуже продуктивно, на відміну від повноцінного IDE, як Eclipse або IntelliJ. Джон Скіт дав чудову відповідь на питання, чому використовувати IDE .
Повертаючись до свого первинного питання, єдине, в чому краще Linux - це програмування на C. Все інше, що ви можете зробити в Linux, ви також можете зробити в Windows і навпаки (програмування мудро). Програмування на C краще для історичних причин в Linux, воно пропонує чудовий набір інструментів (які можна отримати в Windows BTW, але налаштувати Linux на це набагато простіше). Так само, якщо ви пишете C # і подобається .NET, тоді Windows є кращим вибором з зрозумілих причин. Все інше є абсолютно суб'єктивним, і ви почуєте плюси і мінуси обох сторін.
apt-get
це чудово, коли мова йде про розвиток С. Ви можете швидко отримати інструменти, бібліотеки і налагоджувальні символи , наприклад sudo apt-get install libcurl4-openssl-dev
, sudo apt-get install valgrind
, sudo apt-get install libz-dbg
і спробувати то легко.
Які інструменти (текстовий редактор або IDE) ви використовуєте для програмування - це питання вибору. Взагалі можна сказати: Початківці та дуже малі проекти, як правило, використовують кращі текстові редактори, наприклад, піднесений текст або модифіковану версію gedit. Просто тому, що ви дізнаєтесь більше, використовуючи редактори простого тексту. ІДЕ можуть викрутити ваш навчальний процес за допомогою автоматизації речей (як це робить Visual Studio;)).
Що стосується професіоналів, то возитися з великою кількістю інструментів та мов, ІДЕ стане в нагоді, оскільки вони можуть зробити набагато більше для вас, якщо дозволите. Є багато IDE на вибір, залежно від мови, яку ви хочете запрограмувати. Є кращі, а також менш зручні.
Мій особистий досвід полягає в тому, що Ubuntu OS набагато швидше і простіше налаштувати для розвитку, ніж 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-посилання.
Візуальна форма розвитку вид смокче. Однією з переваг, яку ви можете поставити на ID GUI, є те, що ви можете малювати свої екрани та їх швидше. Однак, на мій досвід, штраф за прототип, але часто ви отримуєте кращі результати, роблячи це вручну в коді. Аналізатор коду VS2012 сьогодні вранці просто попередив мене про 200+ проблем із кодом, який автоматично генерував Visual Studio?!?!?
Я думаю, що вашим реальним запитанням може бути: "Чи існують альтернативи Visual Studio, які працюватимуть на Ubuntu, оскільки це не буде?"
MonoDevelop.
Це працездатно, але ви будете ненавидіти його, якщо звикли до VS та всіх функцій.
Немає переваги використовувати текстовий редактор. Пам'ятаєте ту приємну річ, яку називали Intellisense? Не відбувається (але MonoDevelop має щось подібне). Сподіваюся, це допомагає.
vim
на свій смак. Це дуже суб’єктивна область! Хоча багато людей використовують IDE в Linux, тому тут ви плутаєте кілька речей.