Чому формат розширеного коду не зустрічається частіше?


29

Я читав Code Complete і в главі про макет і стиль він передбачив, що редактори коду використовуватимуть якесь форматування насиченого тексту. Це означає, що замість коду виглядає так

Procedure ResolveCollisions
{ Performs a posteriori collision resolution through spatial partitioning algoritm }
(
  CurrentMap : SpriteContext,
  PotentialColliders: SpriteList
)
var Collider  : Sprite, 
    Collidee  : Sprite, 
    Collision : SpriteCollision
begin
  DoStuff();
end.

це могло виглядати приблизно так:

Порядок ResolveCollisions

Виконує післястеріальну роздільну здатність зіткнення за допомогою алгоритму просторового розподілу

Параметри

  • CurrentMap : SpriteContext
  • PotentialColliders : SpriteList

Локальні змінні

  • Collider : Sprite
  • Collidee : Sprite
  • Collision : SpriteCollision
    DoStuff();

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

Чи бачив хто-небудь із вас раніше формат кодового формату, чи знаєте, чи ідея колись була розглянута та врешті-решт відхилена?


8
Ви бачили кнут Кнута? www-cs-staff.stanford.edu/~uno/cweb.html
greyfade



12
Отже, тепер ви хочете Word як редактор IDE?

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

Відповіді:


38

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

Однак одна річ - все, що вводиться, змінювати кольори, коли редактор визначає, що ви вводите. Якщо текст раптом змінить розміри і стрибне навколо, поки ви набираєте текст, це стане дуже неприємним.

Однак для "статичного" відображення коду ви можете легко прикрасити вихідний код. Наприклад, візьміть будь-який на півдорозі гідний конвертер джерел-> html та додайте до таблиць стилів будь-які розміри та стилі шрифту, які вам подобаються, і ви матимете багатий форматизований код.


14

Проста причина: незалежність редактора / інструменту.

Після того, як ви зробите код "багатим" - він буде прив'язаний до редактора, який ви використовували - або до тих, які можуть зрозуміти розширений код. Усі інші редактори, які не можуть впоратися з багатством, покажуть хитрість.

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

А як щодо контролю версій? Як би ви сказали йому ігнорувати всі зміни у форматуванні та бачити файли як змінені лише тоді, коли є якісь "реальні" зміни.

Нарешті я здогадуюсь, вся суть багатого коду - це читабельність - і для цього, я думаю, краще (і більше) коментарів, імен логічного ідентифікатора та послідовного відступу.

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


28
Це не обов'язково правда. Якщо редактори можуть робити підсвічування синтаксису, вони впевнені, що можуть робити синтаксис "жирне" або синтаксис "розмір шрифту" тощо
whatsisname

4
Для цього можна налаштувати Emacs, але зміна розміру шрифту IMO буде марною тратою на екрані.
кевін клайн

4
Якби автору довелося робити форматування вручну, це було б марною тратою часу. Зрозуміло, що текстовий редактор зробив це автоматично, або, можливо, ви могли б використовувати таблицю стилів.
Пітер Олсон

7
@greegit: редактори не залишають інформацію про кольори у вихідних файлах, коли вони закінчуються з ними, їм не потрібно залишати інші позначення форматування, вони можуть регенерувати їх на вимогу. Немає принципової різниці між виділенням синтаксису та форматуванням синтаксису. Якщо інструменти можуть автоматично робити спізні діаграми класів та діаграми UML з вихідного коду, певний інструмент час від часу може жирним шрифтом.
whatsisname

9
У цій відповіді напевно є багато підказок за неправильність.
Йорданія

11

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


11

Чому його не існує? Немає попиту / потреби в ньому.

Поточні редактори здатні задовольнити потреби програмістів за допомогою виділення синтаксису та деяких інших другорядних стилістичних варіантів. Це вже не "насичений текст"?


7
+1 Без попиту. Мені б не хотілося так кодувати. Схоже, я набираю цей звіт про TPS у Word, а не пишу код.

1
@Glenn Nelson: Я згоден. Я уникаю Word навіть для введення звичайних документів, якщо можу (замість цього використовую LaTeX). Мені подобається підсвічування синтаксису, але насичене форматування коду дійсно почувало б себе нав'язливим.
Джорджіо

5

Це вже існує для LaTeX в режимі AucTeX для Emacs. Заголовки розділів мають більший розмір, підрозділи та надписи змінюються належним чином, і навіть у вас може бути невеликий попередній перегляд математики (і, можливо, інших середовищ, таких як алгоритмічна).

Це добре для LaTeX, оскільки відображення від коду до виводу, як правило, набагато простіше, ніж в інших програмах; Я думаю, що мені взагалі не сподобалося б це для більш загальних мов.

Інша річ, яку може зробити Emacs - це замінити символи, такі як ->і forallна, і відповідно в Haskell. Існує мало причин, що подібні речі не можуть бути поширені на формати, як ви пропонуєте, за винятком того, що це зовсім не потрібно в Haskell.


2

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

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

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

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

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


2

Також у кількох мовах (Haskell, Ruby, Python, Erlang, CoffeeScript та кілька інших) важливі відступи. Тож якщо ви змінюєте розміри шрифту, це може бути важко зрозуміти.

Переважно його традиція. Я займаюся професійним програмуванням майже 20 років, і я підозрюю, що це призведе до мене. Я пишу книги в Emacs або VI з docbook, тому я не шанувальник WYSIWIG


2

CWEB Knuth робить це, але це працює лише для C / C ++ та Pascal. - Ви хоч погляньте на це, хоча ... це дуже акуратно. Є дві програми: ctangleі cweaveякі об'єднують / розділяють файли CWEB в TeX і C відповідно.


1
nowebпрацює майже з будь-якою можливою мовою. І є численні спеціалізовані грамотні системи програмування, доступні і для багатьох інших мов (lhs і подібні). Деякі мови мали можливість набору тексту нестандартно з початку 1960-х - див. En.wikipedia.org/wiki/Stropping_(programming)
SK-логіка

3
@ SK-логіка - Аррх, будь ласка, не нагадуй мені про жах, який викликає грамотне програмування . Перетворення кожного швидкого перегляду коду на виснажливий і тривалий огляд документа , критикуючи кожен останній вираз фрази та неправильну кому. Чому деякі частини оборонної промисловості вважали це гарною ідеєю, я ніколи не дізнаюся. Я не думаю, що редактори WYSIWYG зробили б це краще.
Марк Бут

@ Марк Бут, будь-що може обернутися жахом, якщо зробити це неправильно. Грамотне програмування - чудовий інструмент у поєднанні з належною дисципліною. Я поняття не маю, як мені вдалося б анотувати свій код за допомогою складних формул, графіків та графіків, форматованих TeX, без грамотного інструмента програмування. І без таких анотацій код більше не буде читабельним та доступним.
SK-логіка

2

Чи бачив хто-небудь із вас раніше формат кодового формату, чи знаєте, чи ідея колись була розглянута та врешті-решт відхилена?

Звичайно. Xcode підтримує стилі, що перевищують просте забарвлення для різних синтаксисів:

вихідний код зі стильовим текстом

З давніх пір я його використав, але я думаю, що Metrowerks CodeWarrior теж підтримував стильовий текст, і це було 10+ років тому.

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

Інше питання полягає в тому, чи слід використовувати стилізований текст як частину самого синтаксису мови. Наприклад, чи повинен компілятор використовувати той факт, що деякий текст визначений певним чином, щоб визначити, що текст є декларацією функції? Спочатку це може здатися божевільним, але такі мови як Python та Fortran вже використовують відступи як синтаксис. Тим не менш, я думаю, що більш ймовірно, що ми продовжуватимемо бачити стиль, керований синтаксисом, а не навпаки. Існує велика кількість переваг, які спричинені можливістю використання простого тексту (більш прості компілятори, незалежність платформи, налаштування програмістів) та інші традиції розвинулися, щоб зробити код читабельним за відсутності стилів (відступ, порожні рядки, символи маркера та такі функції редактора, як складання коду та меню навігації).


1

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

Ніколи не закінчується вогненна війна з однією і тією ж темою в наборі світу між тими, хто віддає перевагу редакторам WYSIWYG (як MS Word), та системами, такими як TeX (LaTeX).

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


1

Інструменти, такі як Doxygen або JavaDoc, вже бездоганно форматують багатий текстовий код. Вони додають код гіпертексту, а також з метою перегляду. Не потрібно вставляти спеціальні теги для основного форматування.

Це не WYSIWYG, хоча.


0

Боюся сказати, що це існує.

Раніше я працював над деякими Centura (також відомими як Gupta або SQL / Windows - старий " 4GL" ") код. Насправді редагувати код Centura в стандартному редакторі, як це зробити блокнот, не вдалось до крайнього рівня необхідного форматування.

Хоча може здатися, що було б гарною ідеєю форматувати вихідний файл таким чином, я вважав, що розробляється досить обмежуючим та болісним.

Крім того, форматування часто спричиняло проблеми при об'єднанні в керуванні джерелами.


0

На додаток до інших відповідей, я хотів би зазначити, що крім технічних труднощів у використанні насиченого форматування, він також є об'єктом особистої переваги.

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


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

@PeterOlson тоді ви не зможете читати програми без таблиці стилів, оскільки ви просто не розпізнаєте позначення текстових рядків. Це означає, що ніхто не міг нічого показати або написати при зустрічі особисто. Навпаки, нині шрифти та кольори є абсолютно необов’язковими та взаємозамінними без будь-якої шкоди для сенсу.
corvinus

0

Я думаю, це тому, що ще ніхто не відокремив читання коду та написання коду. Принаймні, вона не стає мейнстрімом. Іноді доводиться читати код, який ви давно торкнулися, або код, створений іншими розробниками. Ймовірно, вам доведеться витратити багато часу, поки не будете готові змінити один байт у цьому джерелі. Це може бути режим "читання", який може робити все необхідне для легшого розуміння (розмір шрифту, переформатування, підкрипт, супер-скрипт тощо). Коли ви будете готові, редактор може переключитися в режим "запис" і бути менш обмежувальним і більше підкорятися "правилу щонайменшого здивування"

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