Текстові редактори vs IDE

Останнім часом спостерігається тенденція безглуздих, з моєї точки зору, дискусій щодо того, що краще, - текстовий редактор або IDE. При цьому, в темах, де обговорюється дане питання, часто 400 і більше коментарів. Значить, людей це питання цікавить. Значить, треба писати статтю.

Отже, які цілі статті?

1. Що ж краще для програмування: текстовий редактор або IDE

2. Vim і Emacs - не текстові редактори

1. Що ж краще для програмування: текстовий редактор або IDE

Почнемо з того, чим є програмування. Програмування - процес написання лексичних, синтаксичних, семантичних правил, обумовлених у специфікації мови програмування (далі ЯП) з подальшим її тестуванням та отриманням задовільного кінцевого результату.

Отже, програмування - це:

1. Написання правил, обумовлених у специфікації ЯП

2. Тестування написаних правил

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

1. Написання правил, обумовлених у специфікації ЯП

Говорячи простішою мовою, програмування - це написання тексту. Що означає ввід, редагування та навігацію, а також підсвічування синтаксису (останнє і відокремлює простий набір і редагування тексту, від програмування). Є ще один пункт, але він буде розглянутий нижче. Ці дії є достатніми для того, щоб реалізувати цей пункт. Всі ці найпростіші дії є в будь-якому текстовому редакторі або IDE. Питання тільки в

тому, які методи застосовуються і наскільки велика їх ефективність. На поточний момент є всього три основних варіанти реалізації:

а) класичний універальний

б) модальний

в) класичний вдосконалений

Класичний метод вводу застосовується практично у всіх IDE і деяких редакторах базового рівня (яскравим представником якого можна назвати mcedit, nano), так і текстових редакторах, які є IDE базового рівня (які маскуються під визначення текстовий редактор для програмування). Яскравим представником якого є kate, geany.

Модальний метод вводу передбачає зміну поведінки редактора залежно від режимів. Одним з найяскравіших представників є Vim. І форки цього однойменного продукту.

Класичний удосконалений метод введення в тій чи іншій мірі представлені у всіх IDE і текстовим редактором для програміста, яким є Emacs.

І тут відразу починаються суперечки від того, який метод введення, редагування та навігації краще в контексті програмування. І суперечки зазвичай керуються всього двома пунктами:

1. Метод вводу, редагування та навігації не є принциповим

2. Метод введення, редагування та навігації є принциповим

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

У кожного є своя правда, а істина - одна. І істина в даному випадку полягає в тому, що другий тип людей має рацію на 99.9 (9)%. Ефективність важлива в будь-якому ремеслі або його складовому. Будь то в'язання віників або написання тексту. Чому? Тому, що підвищення ефективності будь-якого складового, неминуче призводить до збільшення ефективності всього процесу в цілому. Хто цього не розуміє - той не розуміє і пояснити чому навряд чи вийде. На жаль або на радість, залежить від цілей і прагнень опонента\ов.

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

а) класичний універальний

Особливо сказати нічого. Цей спосіб є достатнім для «Написання правил обумовлених у специфікації ЯП». Більше сказати про цей метод управління текстом нічого. Всі його переваги і недоліки пояснювати сенсу немає т. к якби недоліків було менше, ніж переваг, тоді б не з'явилися два альтернативних варіанти управління текстом.

б) модальний

Уведення тексту здійснюється в одному з режимів. Редагування і навігація - в іншому\їх режимах. Прийомом цього способу є те, що при цих двох режимах не витрачається час на переміщення рук програміста за межі блоку символів. Це означає, що програмісту не потрібно пересувати руку на мишу або на стрілки вліво\право\вгору\вниз і блок вище (insert\delete\home\end\page up\page down). З одного боку - це збільшує продуктивність, з іншого, - позбавляє від захворювань суглобів кистей.

в) класичний вдосконалений

Цей вид керування текстом з'явився через брак класичного керування текстом. Далі викладаю свій, суб'єктивний, погляд на цей спосіб управління. Прийнятності даного способу в тому, що деякі операції редагування та навігації винесені на певні гарячі клавіші. З одного боку - це підвищує продуктивність, з іншого, при невдалому виборі гарячих клавіш призводить до перевтоми м'язів і\або до невластивого положення рук або пензлів і невластивого рухів пальців, що в свою чергу призводить до появи такої хвороби, як тунельний синдром.

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

2. Тестування написаних правил

Тестування написаних правил здійснюється за допомогою двох методів:

1. Вбудовані в ЯП

2. Зовнішні інструменти (скрипти, cli інструменти)

І перший і другий пункт з реалізується як в текстових редакторах, так і в IDE. Питання лише в компетентності, трудомісткості і доцільності витрачених годин на їх реалізацію. При цьому в продуктах Vim і Emacs, які НЕ є текстовими редакторами, в базовій поставці реалізованих методів чи ні або вони знаходяться в жалюгідному стані.

2. Vim і Emacs - не текстові редактори

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

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

Питання: І все ж, що краще, IDE або текстові редактори?

Відповідь: Програмовані фрейморки, для побудови високоефективних IDE! З одним застереженням: якщо це необхідно.

logo