Интерфейсы периферийных устройств - как все устроено. Понятие интерфейса жесткого диска компьютера. Разрешение отключения - Enable Disconnection

30.04.2019

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

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

Понятие интерфейса жесткого диска компьютера

Для начала давайте дадим определение понятию "интерфейс". Говоря простым языком (а именно им я и буду по-возможности выражаться, ибо блог то на обычных людей рассчитан, таких как мы с Вами), интерфейс - способ взаимодействия устройств друг с другом и не только устройств. Например, многие из вас наверняка слышали про так называемый "дружественный" интерфейс какой-либо программы. Что это значит? Это значит, что взаимодействие человека и программы более легкое, не требующее со стороны пользователя большИх усилий, по сравнению с интерфейсом "не дружественным". В нашем же случае, интерфейс - это просто способ взаимодействия конкретно жесткого диска и материнской платы компьютера. Он представляет собой набор специальных линий и специального протокола (набора правил передачи данных). То есть чисто физически - это шлейф (кабель, провод), с двух сторон которого находятся входы, а на жестком диске и материнской плате есть специальные порты (места, куда присоединяется кабель). Таким образом, понятие интерфейс - включает в себя соединительный кабель и порты, находящиеся на соединяемых им устройствах.

Ну а теперь самый "сок" сегодняшней статьи, поехали!

Виды взаимодействия жестких дисков и материнской платы компьютера (виды интерфейсов)

Итак, первым на очереди у нас будет самый "древний" (80-е года) из всех, в современных HDD его уже не встретить, это интерфейс IDE (он же ATA, PATA).

IDE - в переводе с английского "Integrated Drive Electronics", что буквально означает - "встроенный контроллер". Это уже потом IDE стали называть интерфейсом для передачи данных, поскольку контроллер (находящийся в устройстве, обычно в жестких дисках и оптических приводах) и материнскую плату нужно было чем-то соединять. Его (IDE) еще называют ATA (Advanced Technology Attachment), получается что то вроде "Усовершенствованная технология подсоединения". Дело в том, что ATA - параллельный интерфейс передачи данных , за что вскоре (буквально сразу после выхода SATA, о котором речь пойдет чуть ниже) он был переименован в PATA (Parallel ATA).

Что тут сказать, IDE хоть и был очень медленный (пропускная способность канала передачи данных составляла от 100 до 133 мегабайта в секунду в разных версиях IDE - и то чисто теоретически, на практике гораздо меньше), однако позволял присоединять одновременно сразу два устройства к материнской плате, используя при этом один шлейф.

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

Следующим, не менее популярным, чем IDE в свое время, интерфейсом является SATA (Serial ATA) , характерной особенностью которого является последовательная передача данных. Стоит отметить, что на момент написания статьи - является самым массовым для применения в ПК.

Существуют 3 основных варианта (ревизии) SATA, отличающиеся друг от друга пропускной способностью: rev. 1 (SATA I) - 150 Мб/с, rev. 2 (SATA II) - 300 Мб/с, rev. 3 (SATA III) - 600 Мб/с. Но это только в теории. На практике же, скорость записи/чтения жестких дисков обычно не превышает 100-150 Мб/с, а оставшаяся скорость пока не востребована и влияет разве что на скорость взаимодействия контроллера и кэш-памяти HDD (повышает скорость доступа к диску).

Из нововведений можно отметить - обратную совместимость всех версий SATA (диск с разъемом SATA rev. 2 можно подключить к мат. плате с разъемом SATA rev. 3 и т.п.), улучшенный внешний вид и удобство подключения/отключения кабеля, увеличенная по сравнению с IDE длина кабеля (1 метр максимально, против 46 см на IDE интерфейсе), поддержка функции NCQ начиная уже с первой ревизии. Спешу обрадовать обладателей старых устройств, не поддерживающих SATA - существуют переходники с PATA на SATA , это реальный выход из ситуации, позволяющий избежать траты денег на покупку новой материнской платы или нового жесткого диска.

Так же, в отличии от PATA, интерфейсом SATA предусмотрена "горячая замена" жестких дисков, это значит, что при включенном питании системного блока компьютера, можно присоединять/отсоединять жесткие диски. Правда для ее реализации необходимо будет немного покопаться в настройках BIOS и включить режим AHCI.

Следующий на очереди - eSATA (External SATA) - был создан в 2004 году, слово "external" говорит о том, что он используется для подключения внешних жестких дисков. Поддерживает "горячую замену " дисков. Длина интерфейсного кабеля увеличена по сравнению с SATA - максимальная длина составляет теперь аж два метра. eSATA физически не совместим с SATA, но обладает той же пропускной способностью.

Но eSATA - далеко не единственный способ подключить внешние устройства к компьютеру. Например FireWire - последовательный высокоскоростной интерфейс для подключения внешних устройств, в том числе HDD.

Поддерживает "горячу замену" винчестеров. По пропускной способности сравним с USB 2.0, а с появлением USB 3.0 - даже проигрывает в скорости. Однако у него все же есть преимущество - FireWire способен обеспечить изохронную передачу данных, что способствует его применению в цифровом видео, так как он позволяет передавать данные в режиме реального времени. Несомненно, FireWire популярен, но не настолько, как например USB или eSATA. Для подключения жестких дисков он используется довольно редко, в большинстве случаев с помощью FireWire подключают различные мультимедийные устройства.

USB (Universal Serial Bus) , пожалуй самый распространенный интерфейс, используемый для подключения внешних жестких дисков, флешек и твердотельных накопителей (SSD). Как и в предыдущем случае - есть поддержка "горячей замены", довольно большая максимальная длина соединительного кабеля - до 5 метров в случае использования USB 2.0, и до 3 метров - если используется USB 3.0. Наверное можно сделать и бОльшую длину кабеля, но в этом случае стабильная работа устройств будет под вопросом.

Скорость передачи данных USB 2.0 составляет порядка 40 Мб/с, что в общем-то является низким показателем. Да, конечно, для обыкновенной повседневной работы с файлами пропускной способности канала в 40 Мб/с хватит за глаза, но как только речь пойдет о работе с большими файлами, поневоле начнешь смотреть в сторону чего-то более скоростного. Но оказывается выход есть, и имя ему - USB 3.0, пропускная способность которого, по сравнению с предшественником, возросла в 10 раз и составляет порядка 380 Мб/с, то есть практически как у SATA II, даже чуть больше.

Есть две разновидности контактов кабеля USB, это тип "A" и тип "B", расположенные на противоположных концах кабеля. Тип "A" - контроллер (материнская плата), тип "B" - подключаемое устройство.

USB 3.0 (тип "A") совместим с USB 2.0 (тип "A"). Типы "B" не совместимы между собой, как видно из рисунка.

Thunderbolt (Light Peak). В 2010 году компанией Intel был продемонстрирован первый компьютер с данным интерфейсом, а чуть позже в поддержку Thunderbolt к Intel присоединилась не менее известная компания Apple. Thunderbolt достаточно крут (ну а как иначе то, Apple знает во что стоит вкладывать деньги), стоит ли говорить о поддержке им таких фич, как: пресловутая "горячая замена", одновременное соединение сразу с несколькими устройствами, действительно "огромная" скорость передачи данных (в 20 раз быстрее USB 2.0).

Максимальная длина кабеля составляет только 3 метра (видимо больше и не надо). Тем не менее, несмотря на все перечисленные преимущества, Thunderbolt пока что не является "массовым" и применяется преимущественно в дорогих устройствах.

Идем дальше. На очереди у нас пара из очень похожих друг на друга интерфейсов - это SAS и SCSI. Похожесть их заключается в том, что они оба применяются преимущественно в серверах, где требуется высокая производительность и как можно меньшее время доступа к жесткому диску. Однако, существует и обратная сторона медали - все преимущества данных интерфейсов компенсируются ценой устройств, поддерживающих их. Жесткие диски, поддерживающие SCSI или SAS стоят на порядок дороже.

SCSI (Small Computer System Interface) - параллельный интерфейс для подключения различных внешних устройств (не только жестких дисков).

Был разработан и стандартизирован даже несколько раньше, чем первая версия SATA. В свежих версия SCSI есть поддержка "горячей замены".

SAS (Serial Attached SCSI) пришедший на смену SCSI, должен был решить ряд недостатков последнего. И надо сказать - ему это удалось. Дело в том, что из-за своей "параллельности" SCSI использовал общую шину, поэтому с контроллером одновременно могло работать только лишь одно из устройств, SAS - лишен этого недостатка.

Кроме того, он обратно совместим с SATA, что несомненно является большим плюсом. К сожалению стоимость винчестеров с интерфейсом SAS близка к стоимости SCSI-винчестеров, но от этого никак не избавиться, за скорость приходится платить.

Если вы еще не устали, предлагаю рассмотреть еще один интересный способ подключения HDD - NAS (Network Attached Storage). В настоящее время сетевые системы хранения данных (NAS) имеют большую популярность. По сути, это отдельный компьютер, этакий мини-сервер, отвечающий за хранение данных. Он подключается к другому компьютеру через сетевой кабель и управляется с другого компьютера через обычный браузер. Это все нужно в тех случаях, когда требуется большое дисковое пространство, которым пользуются сразу несколько людей (в семье, на работе). Данные от сетевого хранилища передаются к компьютерам пользователей либо по обычному кабелю (Ethernet), либо при помощи Wi-Fi. На мой взгляд, очень удобная штука.

Думаю, это все на сегодня. Надеюсь вам понравился материал, предлагаю подписаться на обновления блога, чтобы ничего не пропустить (форма в верхнем правом углу) и встретимся с вами уже в следующих статьях блога.


Удобство и скорость разработки.

Александр Макарчук , qb
Повышение скорости и удобства разработки.

Александр Смирнов , Greensight
Ускорение разработки, уменьшение ошибок, просто удобство.

2. Важно ли обучать разработчиков использованию IDE? Почему?

Алексей Федоров , Одноклассники
Это интересная идея. Наверняка есть компании, которые готовы в это вложиться.

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

Александр Макарчук , qb
Нет, не нужно. Обучать - это навязывать свое. Каждый разработчик работает на том, что ему удобно. При этом всегда можно показывать преимущества своего IDE.

Александр Смирнов , Greensight
Это скорее вопрос к каждому разработчику отдельно - что ему удобнее. Но на ранних этапах умное автодополнение и подсветка ошибок практически незаменимы.

3. Большинство качественных IDE платные. Стоит ли тратиться на лицензии?

Алексей Федоров , Одноклассники
Стоит. Текущая ситуация на рынке такова, что платные IDE, как правило, сильно лучше бесплатных.

Алексей Персианов, Михаил Парфенюк , ADV
Если хотите качественную IDE, то стоит потратиться. Если не поддерживать разработчиков качественных IDE «рублем», то они не будут делать качественные IDE

Александр Макарчук , qb
Если целесообразно, то, конечно, нужно. Время - деньги.

Александр Смирнов , Greensight
В зависимости от потребностей и средств. Кому-то хватает Sublime, кто-то хочет использовать продукты Jetbrains, кому-то неизбежно приходится покупать Xcode.

4. Чего не хватает современным IDE? Может ли на этом рынке появиться гигант, подобный JetBrains?

Алексей Федоров , Одноклассники
Может. Но конкурировать с ними будет трудно: разработка IDE - это сотни человеко-лет работы и десятки миллионов долларов.

Алексей Персианов, Михаил Парфенюк , ADV
В данный момент JetBrains захватила данный рынок, и в ближайшее время вряд ли появится что-то лучше.

Александр Макарчук , qb
Всегда будет появляться что-то новое, и IDE не исключение. Преимущество новых проектов всегда в том, что они учитывают недостатки старых.

Александр Смирнов , Greensight
Если появится что-то лучше, то почему бы и нет.

5. Какие еще существуют или могут появиться инструменты, ускоряющие разработку и облегчающие жизнь разработчикам?

Алексей Федоров , Одноклассники
Сборщики проектов, баг-трекеры, системы контроля версий, системы непрерывной сборки и интеграции и многие-многие другие.

Алексей Персианов, Михаил Парфенюк , ADV
Например, CI системы.

Александр Смирнов , Greensight
Сложно сказать. Все больше сторонних инструментов интегрируется в IDE, нежели существуют отдельно.

6. Какие тренды в развитии функционала IDE вы бы могли отметить в последние годы?

Алексей Федоров , Одноклассники
Интеграция с другими системами, такими как баг-трекеры, сервера VCS или CI. И конечно, скорость - тормозят современные IDE сильно меньше, чем 10 лет назад.

Алексей Персианов, Михаил Парфенюк , ADV
Переход всех платных IDE к распространению по подписке.

Александр Макарчук , qb
Подписки. Всегда проще заплатить меньшую сумму, особенно если есть сомнения в выборе или еще не привык к инструменту.

Александр Смирнов , Greensight
Развитие плагинов, интеграций со сторонними утилитами и софтом, улучшение автодополнения.

Максимальная производительность достигается при использовании механизма AHCI. Поэтому во всех новых ПК, которые работают под управлением операционной системы Windows 7 или более старших версий ОС от Microsoft, используется именно этот вариант. Если же речь идет о старых системах, то здесь нужно еще подумать, использовать AHCI или IDE. Что лучше? Ответ на этот вопрос зависит от многих факторов.

AHCI или IDE - что лучше? Как выбрать нужный режим?

Несмотря на популярность операционных систем Windows 7, 8, 10 многие владельцы персональных компьютеров и ноутбуков продолжают использовать Win XP. ОС отличается стабильностью. Людям комфортно с ней работать. Однако у системы Windows XP есть и ряд существенных недостатков:

  • официальная поддержка Microsoft данной ОС полностью прекращена;
  • технологически устаревшая операционная система;
  • не поддерживает новые версии DirectX (версии 10-12);
  • проблемы с безопасностью;
  • нет поддержки наиболее актуальных технологий;
  • на XP невозможно установить многие современные программы;
  • отсутствуют драйверы на новое оборудование.

Список можно было бы продолжать еще долго. Если рассматривать вопрос о том, какой лучше режим работы - AHCI или IDE - то здесь стоит принимать во внимание тот факт, что Windows XP просто не поддерживает первый вариант. Это, разумеется, касается и более старых версий ОС от Microsoft. Поэтому здесь выбор очевиден - только IDE. Но если человек относится к категории продвинутых пользователей, он может загрузить в систему специальные драйверы, которые позволяют использовать механизм AHCI. По умолчанию же этот режим не поддерживается.

Как работает режим IDE

Комплектующие, которым для подключения необходим интерфейс ATA, используют для работы механизм IDE. Данная технология является устаревшей, однако она широко применялась в девяностых годах прошлого столетия и в начале нулевых. Стандарт был внедрен в IBM PC - первых массовых популярных компьютерах.

Механизм IDE (параллельный интерфейс подключения накопителей) обеспечивал передачу данных со скоростью 150 Мбит/сек. Он не позволял использовать некоторые актуальные на тот момент технологические решения. Так, нельзя было произвести горячее извлечение из системы жесткого диска или CD-привода без выключения или перезагрузки системы. Подобные возможности были добавлены инженерами спустя некоторое время, однако лишь часть компьютеров получила их поддержку. Зная предысторию развития интерфейсов, можно легко ответить на ряд вопросов: AHCI или IDE - что лучше для конкретной операционной системы, какая схема обеспечивает более быструю работу?

Активное использование интерфейсов Parallel ATA закончилось примерно в 2006 году, когда главную роль стал играть новый стандарт SATA. Однако даже спустя 10 лет IDE все еще в строю, хотя и используется гораздо реже. Механизм применяется практически во всех старых компьютерах и ноутбуках, активен даже в системах, поддерживающих работу с AHCI.

Особенности режима AHCI

Появление нового интерфейса SATA, который обладал более мощными возможностями в сравнении с предшествующей технологией PATA, создало потребность в новом механизме работы с системой. Так появился режим AHCI. Он позволил использовать ресурсы недавно появившегося интерфейса на полную мощность. Сегодня данный механизм поддерживается всеми современными системными платами.

Использование режима AHCI позволяет обеспечить передачу информации на максимально возможной скорости и использовать любые актуальные технологические решения. Все актуальные на сегодняшний день операционные системы имеют драйверы устройств, эксплуатирующие данный протокол. Так что же выбрать сейчас, IDE или AHCI? Что лучше для современного компьютера? В большинстве случаев выбор стоит делать в пользу второго варианта.

Преимущества механизма AHCI

Современные приводы с интерфейсом SATA полностью совместимы с новым режимом. Какие же преимущества есть у этого механизма? Все-таки, выбрать IDE или AHCI - что лучше? Windows 7 и более новые версии ОС от Microsoft способны работать с двумя вышеназванными протоколами. Но второй из них лучше использовать для новых систем.

Выгоды, которые получает пользователь при использовании AHCI:

  • большая скорость передачи данных;
  • отличная производительность;
  • полная совместимость с современными операционными системами;
  • возможность осуществлять «горячую» замену жестких дисков;
  • поддержка технологии NCQ (улучшает работу HDD).

Зная обо всех плюсах и минусах решения, легко сделать выбор, ставить в настройках AHCI или IDE. Что лучше будет для современного компьютера? Если он не оснащен приводами PATA, лучше установить новый режим.

Какой режим задать в настройках BIOS

Несмотря на то что режим IDE давно устарел, его поддержка все еще осуществляется производителями материнских плат. Даже в самых новых моделях присутствует возможность использовать этот интерфейс. В настройках BIOS в соответствующем разделе можно сменить один режим на другой. По умолчанию обычно устанавливается механизм AHCI. Можно нарваться на исключение, однако это бывает крайне редко.

Если взять типичную ситуацию, когда пользователь пытается установить на компьютер операционную систему Windows 7, то ему даже не придется вносить никаких изменений в BIOS, чтобы использовать новую схему. Возможно, кому-то покажется привычным работать со старым интерфейсом. Так все же, IDE или AHCI - что лучше? Windows 7 ведь позволяет использовать оба режима.

Если жесткий диск или другой накопитель подключен к материнской плате через интерфейс SATA, то следует оставить режим AHCI, заданный по умолчанию. Полная поддержка данного механизма обеспечивается в операционных системах Windows 7, 8, 10, Ubuntu 16.04 и других. Только с новым режимом возможна стабильная работа данных ОС.

Что делать, если после включения режима AHCI перестает загружаться система

Такая ситуация может возникнуть, если у пользователя установлена ОС Windows XP или старая версия Linux. Здесь не стоит вопрос, предпочесть AHCI или IDE. Что лучше будет для старой ОС? Пожалуй, предпочтительнее задать режим IDE. Можно попытаться установить в систему дополнительные драйверы, которые обеспечивают поддержку нового стандарта. Однако нет гарантии, что после данной процедуры ОС будет корректно работать.

В некоторых случаях компьютер, успешно проработавший долгое время под управлением системы Windows XP, однажды перестает загружаться. При этом пользователь не менял в BIOS режим работы накопителей. Такая ситуация может возникнуть из-за ошибок в работе базовой системы ввода-вывода. В этом случае происходит сброс настроек, активируется режим AHCI.Пользователю необходимосамостоятельно установить в настройках BIOS поддержку механизма IDE.

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

Чем IDE отличается от текстового редактора?

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

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

Ознакомьтесь с приведенным ниже списком функций и недостатков каждой из 10 лучших IDE .

1. Microsoft Visual Studio


Microsoft Visual Studio — это интегрированная среда разработки , цена которой варьируется от $699 до $2900 . Множество версий этой IDE способны создавать все типы программ, начиная от веб-приложений и заканчивая мобильными приложениями, видеоиграми. Эта линейка программного обеспечения включает в себя множество инструментов для тестирования совместимости. Благодаря своей гибкости Visual Studio является отличным инструментом для студентов и профессионалов.

Поддерживаемые языки: Ajax, ASP.NET, DHTML, JavaScript, JScript, Visual Basic, Visual C#, Visual C++, Visual F#, XAML и другие .

Особенности:

  • Огромная библиотека расширений, которая постоянно увеличивается;
  • IntelliSense ;
  • Настраиваемая панель и закрепляемые окна;
  • Простой рабочий процесс и файловая иерархия;
  • Статистика мониторинга производительности в режиме реального времени;
  • Инструменты автоматизации;
  • Легкий рефакторинг и вставка фрагментов кода;
  • Поддержка разделенного экрана;
  • Список ошибок, который упрощает отладку;
  • Проверка утверждения при развертывании приложений с помощью ClickOnce , Windows Installer или Publish Wizard.

Недостатки : поскольку Visual Studio является супертяжелой IDE , для открытия и запуска приложений требуются значительные ресурсы. Поэтому на некоторых устройствах внесение простых изменений может занять много времени. Для простых задач целесообразно использовать компактный редактор или средство разработки PHP .

2. NetBeans


Бесплатная среда разработки с открытым исходным кодом. Подходит для редактирования существующих проектов или создания новых. NetBeans предлагает простой drag-and-drop интерфейс, который поставляется с большим количеством удобных шаблонов проектов. Среда в основном используется для разработки Java приложений, но можно устанавливать пакеты, поддерживающие другие языки.

Поддерживаемые языки программирования: C, C++, C++ 11, Fortan, HTML 5, Java, PHP и другие .

Особенности:

  • Интуитивный drag-and-drop интерфейс;
  • Динамические и статические библиотеки;
  • Интеграция нескольких сессий GNU-отладчика с поддержкой кода;
  • Возможность осуществлять удаленное развертывание;
  • Совместимость с платформами Windows, Linux, OS X и Solaris;
  • Поддержка Qt Toolkit;
  • Поддержка Fortan и Assembler;
  • Поддержка целого ряда компиляторов, включая CLang / LLVM, Cygwin, GNU, MinGW и Oracle Solaris Studio.

Недостатки: эта бесплатная среда разработки потребляет много памяти, поэтому может работать медленно на некоторых ПК.

3. PyCharm


PyCharm разработан командой Jet Brains . Пользователям предоставляется бесплатная версия Community Edition , 30-дневная бесплатная ознакомительная версия Professional Edition и годовая подписка за $213 — $690 на версию Professional Edition . Комплексная поддержка кода и анализ делают PyCharm лучшей IDE для Python-программистов .

Поддерживаемые языки: AngularJS, Coffee Script, CSS, Cython, HTML, JavaScript, Node.js, Python, TypeScript.

Особенности:

  • Совместимость с операционными системами Windows, Linux и Mac OS;
  • Поставляется с Django IDE;
  • Легко интегрируется с Git, Mercurial и SVN;
  • Настраиваемый интерфейс с эмуляцией VIM;
  • Отладчики JavaScript, Python и Django;
  • Поддержка Google App Engine.

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

4. IntelliJ IDEA


Еще одна IDE , разработанная Jet Brains . Она предлагает пользователям бесплатную версию Community Edition , 30-дневную бесплатную ознакомительную версию Ultimate Edition и годовую подписку на версию Ultimate Edition за $533 — $693 . IntelliJ IDEA поддерживает Java 8 и Java EE 7 , обладает обширным инструментарием для разработки мобильных приложений и корпоративных технологий для различных платформ. Если говорить о цене, IntelliJ является прекрасным вариантом из-за огромного списка функций.

Поддерживаемые языки программирования: AngularJS, CoffeeScript, HTML, JavaScript, LESS, Node JS, PHP, Python, Ruby, Sass, TypeScript и другие.

Особенности:

  • Расширенный редактор баз данных и дизайнер UML ;
  • Поддержка нескольких систем сборки;
  • Пользовательский интерфейс тестового запуска приложений;
  • Интеграция с Git ;
  • Поддержка Google App Engine , Grails , GWT , Hibernate , Java EE , OSGi , Play , Spring , Struts и других;
  • Встроенные средства развертывания и отладки для большинства серверов приложений;
  • Интеллектуальные текстовые редакторы для HTML , CSS и Java ;
  • Интегрированный контроль версий;
  • AIR Mobile с поддержкой Android и iOS .

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

5. Eclipse


Бесплатный и гибкий редактор с открытым исходным кодом. Он может оказаться полезен, как для новичков, так и для профессионалов. Первоначально создаваемый как среда для Java-разработки сегодня Eclipse имеет широкий диапазон возможностей благодаря большому количеству плагинов и расширений. Помимо средств отладки и поддержки Git / CVS , стандартная версия Eclipse поставляется с инструментами Java и Plugin Development Tooling . Если вам этого недостаточно, доступно много других пакетов: инструменты для построения диаграмм, моделирования, составления отчетов, тестирования и создания графических интерфейсов. Клиент Marketplace Eclipse открывает пользователям доступ к хранилищу плагинов и информации.

Поддерживаемые языки: C, C++, Java, Perl, PHP, Python, Ruby и другие.

Особенности:

  • Множество пакетных решений, обеспечивающих многоязычную поддержку;
  • Улучшения Java IDE , такие как иерархические представления вложенных проектов;
  • Интерфейс, ориентированный на задачи, включая уведомления в системном трее;
  • Автоматическое создание отчетов об ошибках;
  • Параметры инструментария для проектов JEE ;
  • Интеграция с JUnit .

Недостатки: многие параметры этой среды разработки могут запугать новичков. Eclipse не обладает всеми теми функциями, что и IntelliJ IDEA , но является IDE с открытым исходным кодом.

6. Code::Blocks


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

Поддерживаемые языки: C, C++, Fortran .

Особенности:

  • Простой интерфейс с вкладками открытых файлов;
  • Совместимость с Linux , Mac и Windows ;
  • Написана на C++ ;
  • Не требует интерпретируемых или проприетарных языков программирования;
  • Множество встроенных и настраиваемых плагинов;
  • Поддерживает несколько компиляторов, включая GCC, MSVC ++ , clang и другие;
  • Отладчик с поддержкой контрольных точек;
  • Текстовый редактор с подсветкой синтаксиса и функцией автоматического заполнения;
  • Настраиваемые внешние инструменты;
  • Простые средства управления задачами, идеально подходящие для совместной работы.

Недостатки: относительно компактная среда разработки Си , поэтому она не подходит для крупных проектов. Это отличный инструмент для новичков, но продвинутые программисты могут быть разочарованы ее ограничениями.

7. Aptana Studio 3


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

Поддерживаемые языки: HTML5, CSS3, JavaScript, Ruby, Rails, PHP и Python .

Особенности:

  • Подсказки для CSS , HTML , JavaScript , PHP и Ruby ;
  • Мастер развертывания с простой настройкой и несколькими протоколами, включая Capistrano , FTP , FTPS и SFTP ;
  • Возможность автоматической установки созданных приложений Ruby и Rails на серверы хостинга;
  • Интегрированные отладчики для Ruby и Rails и JavaScript ;
  • Интеграция с Git ;
  • Простой доступ к терминалу командной строки с сотнями команд;
  • Строковые пользовательские команды для расширения возможностей.

Недостатки: есть проблемы со стабильностью, и она работает медленно. Поэтому профессиональные разработчики могут предпочесть более мощную HTML среду разработки.

8. Komodo


Предлагает бесплатную 21-дневную ознакомительную версию, полная версия стоит $99 – $1615 в зависимости от редакции и лицензии. Komodo поддерживает большинство основных языков программирования. Удобный интерфейс позволяет осуществлять расширенное редактирование, а небольшие полезные функции, такие как проверка синтаксиса и одноступенчатая отладка, делают Komodo одной из самых популярных IDE для веб и мобильной разработки.

Поддерживаемые языки: CSS, Go, JavaScript, HTML, NodeJS, Perl, PHP, Python, Ruby, Tcl и другие.

Особенности:

  • Настраиваемый многооконный интерфейс;
  • Интеграция контроля версий для Bazaar , CVS , Git , Mercurial , Perforce и Subversion ;
  • Профилирование кода Python и PHP ;
  • Возможность развертывания в облаке благодаря Stackato PaaS ;
  • Графическая отладка для NodeJS , Perl , PHP , Python , Ruby и Tcl ;
  • Автоматическое заполнение и рефакторинг;
  • Стабильная производительность на платформах Mac , Linux и Windows

Недостатки: бесплатная версия среды разработки программного обеспечения не включает в себя все функции. В то же время премиум версия явно стоит своих денег.

9. RubyMine


Еще одна премиум IDE , разработанная компанией Jet Brains . Предлагается 30-дневная бесплатная ознакомительная версия, полная версия стоит $210 — $687 в год. Удобная навигация, логичная организация рабочего процесса и совместимость с большинством платформ делают RubyMine одним из популярных инструментов для разработчиков.

Поддерживаемые языки: CoffeeScript, CSS, HAML, HTML, JavaScript, LESS, Ruby и Rails, Ruby и SASS.

Особенности:

  • Сниппеты кода, автоматическое заполнение и автоматический рефакторинг;
  • Дерево проектов, которое позволяет быстро анализировать код;
  • Схема модели Rails ;
  • Просмотр проекта Rails ;
  • RubyMotion поддерживает разработку под iOS ;
  • Поддержка стека включает в себя Bundler , pik , rbenv , RVM и другие;
  • Отладчики JavaScript , CoffeeScript и Ruby ;
  • Интеграция с CVS , Git , Mercurial , Perforce и Subversion .

Недостатки среды разработки: чтобы RubyMine работала бесперебойно, компьютеру требуется не менее 4 ГБ оперативной памяти. Некоторые пользователи также жалуются на отсутствие опций настройки GUI .

Хотелось бы в очередной раз поднять эту довольно спорную тему.

С тех пор, как я начал заниматься программированием, этот вопрос не даёт мне покоя, а многочисленные темы на форумах и хабре ясности не внесли. Плюс к этому, мне кажется, некоторые аргументы как за одну, так и за другую сторону не были приведены. А у тех, что приведены, неверно расставлены приоритеты и упущен контекст.

В статье я постараюсь исправить это упущение и расставить ещё немного точек над «ё».

Приглашаю всех поучавствовать в поисках идеального инструмента.

О моём опыте

Программировать я начинал ещё в ДОС. на Turbo Pascal-е. Причём, почему-то, IDE мы тогда использовали только для отладки, и то достаточно редко. Для писания кода предпочитали использовать некий безымянный edit.exe без всякой подсветки синтаксиса в связке с Volkov Commander. И этого хватало. Этим же способом я позже занимался ассемблером и, частично, C++.

Продолжая изучать C++ я перешел на Windows и, соответственно, Visual Studio - куда же без него. Застал версии, если не ошибаюсь, с 5 до 7. После простенького редактора это было нечто - кодогенерация и автодополнение вызывали восторг. Правда, во всём этом сгенерированном добре разобраться было практически невозможно, но это казалось неважным.

Через некоторое время я пересел на Linux и занялся веб-разработкой на php. Здесь параллельно изучал vim и для разработки использовал ZendStudio. В какой-то момент начал использовать только Vim для всего - превратил его, в соответствии с многочисленными руководствами в маленькую ide. В нём же написал свою первую велосипедную CMS на php.

Замечу, что до этого программирование не было основным видом моей деятельности. Да, я и для работы писал различные мелкие утилитки, делал темы для для WordPress, но основным родом деятельности было администрирование.

Как только я занялся разработкой профессионально - возможностей vim мне перестало хватать. Был сначала eclipse, потом netbeans, сейчас - phpstorm.

Последние пол-года героически пытаюсь освоить emacs, в т.ч. в качестве основной рабочей среды.

Так что у меня есть с чем сравнивать и, надеюсь, моё мнение будет достаточно обоснованным и агрументированным.

IDE? IDE...

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

Начну, пожалуй, с одного из бесспорных преимуществ редактора - его богатых возможностей по работе с текстом и возможности всё делать не отрывая рук от клавиатуры. Cреды в большинстве своём так не умеют. Только вот нужны ли такие возможности при написании кода? При написании статьи или письма, думаю, удобно одним нажатием клавиши поменять местами 2 слова или передвинуть абзац вверх страницы. Но в тексте программы это, в большинстве случаев бессмысленно и требует рефакторинга. А платить за это приходится либо пальцедробительными сочетаниями клавиш emacs, либо не менее мозгодробительными командами в vim. А ведь это всё нужно поминать! То, что просто решается одним движением мыши, вроде перемещения окна или изменения их размеров, превращается в целый квест. Да даже выделить текст проще мышкой - точнее, быстрее, и на надо считать сколько там слов до нужнго места в тексте. Нет, программисту тоже могут быть полезны эти функции, но дело в том, что его временные затраты на собственно редактирование кода ничтожны, так что выгоды во времени не будет практически никакой. А вот значительное усложнение инструмента - налицо.

Программист 80% своего времени тратит на понимание написанного кода и перемещению по нему. Причём перемещению именно по коду, а не по тексту! И здесь ему редактор не может помочь абсолютно ничем. Список параметров метода во всплывающей подсказке не покажет, перейти к определению метода не позволит, синтаксис не проконтролирует. А IDE, даже самые простые, с этим справляются просто и элегантно. Я недавно потратил минут 10 на поиск определения одного метода в проекте при помощи silversearcher из emacs. Оказалось, класс был определён в другом модуле и т.п. 10 минут, вместо одного клика мышкой! Я в emacs, конечно, недостаточно опытен, поэтому пусть будет 5 минут, даже минута. Но всё равно соотношение впечатляет.

И вот здесь IDE показывает свой, пожалуй, единственный, но очень жирный плюс - это наличие синтаксического анализатор языка программирования. Среда «понимает» что она редактирует код. Редактор - нет. А это и автодополнение, и навигация, и подсветка синтаксических, а, иногда, и семантических ошибок. Кажется, излишество, приятная мелочь, баловство. Но оно, превращается в необходимость после того, как размер проекта привысит некоторый предел. А с учётом объемных современных фреймворков - этот предел наступает практически сразу.

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

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

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

Кто-то может возразить, что в современных редакторах многие из этих функций уже реализованы и ничем не уступают самым навороченным IDE. Не соглашусь. Во-первых, полноценных реализаций нет. Не работают они, как должны. Во-вторых, установка всего этого уже достаточно сложная задача. Да даже конфигурация внутренних функций редактора уже нетривиальна. Попробуйте, скажем, включить нумерацию строк в том же emacs! Плюс ко всему, часто нужный функционал реализуется десятком плагинов непонятно как между собой взаимодействующих. А часто ещё и имеющих десяток версий и веток, не всегда совместимых, странно настраиваюхся и т.п. Можно, конечно, потратить месяц, всё настроить и установить (что тоже удел энтузиастов), но это всего лишь приблизит редактор к уровню IDE. К примеру, вернёмся к тем же проектам - я пробовал и Project под vim и projectile под emacs и ещё некоторые плагины. Если Project ещё более-менее отвечает моим требованиям (хотя в последней версии мне вообще не удалось создать проект из-за багов), то projectile оставил исключительно негативные впечатления.

И тем не менее, у редакторов есть несколько областей применения, где они, как минимум, составляют достойную конкуренцию средам разработки.

Во-первых, они себя лучше показывают на мелких проектах. Нет смысла загружать IDE-комбайн для работы с проектом в 10-20 файлов. Проще в редакторе подправить 3-4 строки.

Во-вторых, в некоторых специфических областях все преимущества IDE нивелируются. Например, низкоуровневая разработка для linux. Я этим не занимался, но, судя по структуре кода и предпочтениям разрабочиков (около 70% - emacs и клоны, 25% - vim, 5% - какая-то экзотика вроде jed), IDE там делать нечего. Весь нужный код, с которым происходит работа, собран, как правило в одном-двух файлах, и не нужно прыгать в пределах всего проекта. Да и не сильно поможет автодополнение при выборе из десятка-двух функций с почти одинаковыми названиями.

В-третьих, редакторы могут работать не только с кодом. Всю их мощь можно задействовать при работе с csv или xml файлами. Либо чего-то другого, в чём иногда возникает необходимость, вроде статьи или письма. И не нужно переучиваться, искать удобную программу или запоминать горячие клавиши - всё под рукой, всё одинаковое.

В-четвёртых, возможность работы с языками, для которых нет вменяемой IDE. Скажем, с тем же ruby мне среда не сильно помогла. SublimeText-а оказалось достаточно. Хотя с большим ruby проектом я не работал, возможно, там бы IDE себя показала.

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

Итого

Я не очень люблю IDE, хотя так могло показаться по предыдущему тексту. Считаю их довольно монструозными, с кучей ненужных функций, медленными и требовательными к ресурсам. Да и лучшие из них довольно дорогие. Кроме того, я считаю, использование IDE расслабляет, и привязывает к себе. У редакторов, соответственно, всё наоборот. Плюс доступность и возможности тонкой доводки под себя. По крайней мере vim и emacs. В конце концов, они мне просто нравятся. Эту статью, например, я пишу в Emacs.

Но индустрия (и начальство) диктует свои требования. Если не использовать IDE, производительность значительно упадёт. Но никто не даст вам пол-часа на поиск пропущенной запятой в 10 тыс строках кода. Это всё должно выполняться автоматически и автоматически же исправляться. Мне тоже иногда нравится покопаться в коде без всяких инструментов - но на работе это непозволительная трата времени.

После всех своих проб и ошибок я сделал такой вывод - редактор можно использовать для разработки, но с IDE, после определённого предела он не сравнится и использование редактора для чего-то, за что вам платят - непозволительная роскошь. Да, если использовать правильные практики разработки, правильно проектировать/документировать код, следовать стандартам - можно сгладить врождённые недостатки редакторов. Но мы живём далеко не в идеальном мире, поэтому использование IDE - необходимость, независимо от нашего желания.

Похожие статьи