Comments 42
ваш синтаксис подсвечен безграмотно
Тут отдельно нужно вспомнить, что в большинстве случаев когда говорят про подсветку синтаксиса, то подсвечена всего лишь лексика. Раскрашивание ключевых слов и пунктуации даже не требует синтаксического разбора. То есть эта фича глупее, чем называется. Ну и проблемы с этим соответствующие.
В последние годы, правда, наметился сдвиг в IDEшках, которые теперь таки парсят код чтобы раскрасить его поумнее. Даже семантической подсветкой это называют.
Вроде было
А не помогло. Люди все равно подсвечивают неправильно. Поэтому вышла статья с новым названием - "Увы, ваш синтаксис (все еще) подсвечен безграмотно."
Пардон, лопухнулся, не отследил. :(
И ради бога, не выделяйте
class,function,if,elseи т.п. — вы все равно обычно на них не смотрите. Да, вы возможно правильно задаетесь вопросом - где же этотif? - но в реальности вас интересует условие после него. Именно оно - важная, отличительная часть, а неif.
Я не согласен.
Это - визуальные якоря, за которые глаз цепляется, как за выступы на склодроме.
Или, если хотите, как буллеты в списке, которые меня тоже не интересуют сами по себе - но они выпирают из текста и помогают ориентироваться.
Согласен (с вами, не с автором). Оно, конечно, отступы - но что там, перед отступом? Это if, это then, это else, это try, это пуля, это самолёт? И вот уже надо вчитываться, чтобы понять, что там за Супермен. А зачем вчитываться, когда можно не вчитываться - по цвету сразу понимаешь, о чём будет следующий блок.
Есть у нас подозрение, что писать о грамотных читаемых интерфейсах и показывать все это на примере темы с выворткой шрифта, использование чего и по санпину считается некорректным и по исследованиям делает текст более трудно воспринимаемым, это какой-то тонкий троллинг. Да, мы видели что пара слов о светлой теме тоже сказана, но в основном в контексте "ее никто не любит и этому есть причины".
Цветов должно быть столько, сколько сможете запомнить.
Сколько можете различить...
И вы еще забыли про bold (алгол!!!), italics, underscoring ;)
Сколько можете различить...
Нет, именно запомнить, и автоматически реагировать на любое несоответствие. Он дает пример. Операторы у него подсвечены фиолетовым, а другой тип красным. Он сделал опечатку - напечатал retunr вместо return (оператор). И цвет поменялся с фиолетового на красный. Если четко помнить что нормальный return должен быть фиолетовым, а не красным, тогда даже при беглом взгляде опечатка сразу будет замечена.
Нет, именно запомнить, и автоматически реагировать на любое несоответствие.
Так это разные вещи. Попроси меня назвать цвет чего-нибудь относительно редко используемого в палитре, так не назову, а на экране увижу.
Операторы у него подсвечены фиолетовым, а другой тип красным.
А вот пример из статьи я даже обсуждать не хочу. Красно-фиолетово-синяя палитра мне резко некомфортна.
Если четко помнить что нормальный return должен быть фиолетовым, а не красным, тогда даже при беглом взгляде опечатка сразу будет замечена.
Да недо помнить, Мне PyCharm поможет, отметив ошибку красным справа и подчеркнув eё в коде.
Тут ещё во многом дело привычки, особенно с моментами вроде "светлая тема vs. тёмная тема": пересаживаешься по каким-то причинам с тёмной на светлую - осспади, как можно это терпеть; пересаживаешься спустя какое-то время обратно на тёмную - божэ, ужос, глаза вытекают; пользуешься какое-то время тёмной темой в одном редакторе, а светлой - в другом - уже кажется, что и там, и там нормально, зачем что-то менять. Bold вместо цвета - в моей теме для Питона так выделены class и def, нормально. Когда вместо "return" написал "retrun" - в языках с объявлением переменных подчеркнёт, как ошибку, да даже и в Питоне с настроенным LSP выдаст предупреждение, что "переменная нигде не используется", так что есть там цвет, нет там цвета - какая разница (хотя выделять отдельным цветом ключевые слова языка, по-моему, надо). Из объективного в статье, разве что, про избегание пестроты. Но это неточно. Ну и шрифт ещё выбрать правильный, чтобы строчную L с заглавной i не путать, хотя это уже не про подсветку синтаксиса.
как-то непонятно написано про светлую и тёмную темы. Автор вроде как ратует за цветовую палитру светлой темы, а на картинках цвета для чёрной плашки смотрятся лучше.
Я за миллисекунду нахожу там где подсветка есть.
Т.к я за 7 лет работы научил мозг.
Правда у меня и подсветка другая, не вырвиглазная
Я тоже приходил к такому выводу, что новогодняя елка -- это не лучшая стратегия подсветки синтаксиса. Что-то даже пытался делать у себя. В Vscode наиболее близка к этому тема Visual Studio, но и она не идеальна, кое-что приходится менять.
Вообще, тут может быть две стратегии подсветки:
Ограниченное кол-во цветов -- я точно знаю за что отвечает каждый цвет.
Новогодняя елка, но смысл не в том, чтобы знать для чего каждый цвет, а просто визуально отделять один токен от другого и неважно за что они отвечают, это уже определяется по контексту.
Какая правильней -- не знаю. Наверное, если бы какая-то из них была сильно эффективней, ее бы все и использовали, и споров не было. Мне больше нравится первая.
Спокойно помню все цвета своей темы, при том что подсвечено большинство элементов. Объявления и вызовы функций одним цветом; названия типов, классов, перечислений, и ключевые слова с ними за компанию, другим; третьим цветом строки; по отдельному цвету для членов классов, локальных переменных, параметров и глобальных переменных; и ещё пара-тройка цветов на всё остальное. Отлично могу понять что из себя представляет элемент просто посмотрев на его цвет. Просто пробежавшись взглядом по коду можно спокойно оценить какие функции вызываются, к каким членам класса идёт обращение, есть ли доступ к глобальным переменным и много ещё чего подобного. Так что это исключительно вопрос привычки, как по мне.
Слушайте, а давайте вы не будете мне указывать каким цветом и в какой теме я буду набирать буковки в коде? Это моё дело каким IDE пользоваться, если я делаю работу нормально.
Возьмите мой код, откройте в своём любимом VSCode и со своей подсветкой - и спокойно делайте ревью. Если я пишу плохо или медленно - это я могу обсудить. Если я пишу не с тем цветом кода - я могу показать где я крутил это ваше мнение.
Что значит "неправильно"? Что за ерунда? Я уже 25 лет пишу код, я могу для себя сам решить как мне удобно это делать?
У меня файл-браузер (Double Commander) со странной цветовой схемой - белый шрифт на зеленом фоне. Я знаю что человека со стороны может стошнить с непривычки. Я не помню почему я когда-то поставил такие цвета - скорее всего это был старый CRT-монитор и стандартные выжигали глаза. Но мне теперь это привычнее и после переустановки софта я ставлю эти цвета опять.
Есть миллиард цветовых недоразумений в стиле «я так вижу», и есть Nord. https://www.nordtheme.com/
Как только увидел светлую тему, у меня аж глаза заболели. Сразу прокрутил в другое место и уменьшил яркость экрана.
Белый цвет на экране монитора - это тысячи искусственных лампочек, поэтому я стараюсь сделать так, чтобы его было как можно меньше. Если тема светлая, то это ок, у меня такие тоже используются. Но если цвет фона - белый, то там уже никакие цвета не спасут, потому что смотреть на это надо внимательно.
Кажется, что светлую тему выбирают из-за того, что в большинстве веба цвета светлые. Если постоянно переключаться между кодом и страницей, то всё будет очень контрастно. Светлая страница будет слишком яркой - надо будет уменьшать яркость, тёмный код будет слишком тусклым - придётся увеличивать яркость. То есть или терпеть, или постоянно крутить яркость.
Использую Mariana-Gray и кастомизированный Monokai.
в большинстве веба цвета светлые
Не знаю ни одного адекватного сайта, который бы не заглядывал в дефолтные системные настройки и не использовал тему, предпочитаемую пользователем. Поставьте темную системную тему — и все нормальные сайты (кроме банков, да) подстроятся.
вот наверное, в том-то и дело, что нет универсального решения, которое всегда бы работало на 100%. я иногда посещаю архивные сайты и "неадекватные", где не то, что есть тёмная тема, там вообще может быть всё плохо со стилями.
есть сайты, с которыми я работаю - их я давно себе перекрасил, где было необходимо, и белого цвета нет.
но для большинства мне хватает стандартных настроек (только шрифты покрупнее сделал). браузер у меня не развёрнут на весь экран. вокруг него есть обои или другие программы, у которых другой цвет. так что соблюдается "баланс белого", на фоне других цветов его не слишком много.
насчёт тёмной темы не думал. моё текущее решение было сделано ещё до того, как тёмная тема стала популярной и её вообще воспринимали всерьёз.
а вот на телефоне в браузерах у меня исключительно тёмная тема, потому что читать текст на белом фоне считаю неприемлемым. опять же "баланс белого", на телефоне кроме браузера больше одновременно ничего не открыто, поэтому тёмная тема задаётся системно даже для сайтов, которые не поддерживают её.
Если постоянно переключаться между кодом и страницей, то всё будет очень контрастно. Светлая страница будет слишком яркой - надо будет уменьшать яркость
Если есть качественная веб-камера, то можно попробовать записать видео, и посмотреть как изменяются зрачки при переключении окон с разной яркостью.
Наверно даже есть программы, которые в помощью вебки позволяют вести мониторинг состояния глаз при работе за компьютером. Отслеживать покраснение, частоту моргания, признаки спазма аккомодации.
мне не хватало ещё автоматического подстраивания яркости. это первое, что я отключаю на телефонах, которыми начинаю пользоваться.
мне не хватало ещё автоматического подстраивания яркости. это первое, что я отключаю
Автоматическая регулировка по состоянию зрачков? Об этом речь не шла. Такое прям сейчас вряд ли кто предложит. Насколько я знаю такое только для VR существует, и только в прототипе. Технология NeuralDisplay от компании Kopin.
Ещё светлую тему начинают выбирать с возрастом (у меня, например, прошел спазм в левом глазу)
Конечный результат выглядит так, как будто IDE загрузила проект, но не успела его проиндексировать.
Делать одним цветом числа и строки для меня непонятно и может только сбить.
С моим мнением конечно можно быть несогласным, но подсветка кода и тема IDE в первую очередь составляется так, чтобы уменьшить нагрузку на глаза. Да и не думаю, что разработчики сред разработки не консультируются ни с кем касаемо того, как лучше сделать базовую тему подсветки синтаксиса.
https://monokai.pro/
Что-то на скринах отсутствуют вертикальные линии для структурных блоков. Полезная вещь.
Каэш на вкус и цвет все фломастеры разные, но совершенно не понимаю как так у автора сложилось, что объявление переменной и её использование стали разного цвета. Красить одинаково числа и строки зло, примерно также как не иметь разницы между 0 и о.
Вопрос про класс не понял - у многих языков его просто может не быть, у других аналогичных объявлений может быть несколько вариантов, да ещё и с параметризацией (генерики, датакалассы, всякие сум-типы).
К исходной подсветке тоже есть вопросы - почему объявление переменной желтое, а обращение к ней красное, почему тогда аргумент не жёлтый?
Отдельно момент возможностей подсветки - многие IDE просто не могут поддержать всё множество классов токенов для всех языков. Тот же С/С++ имеет варианты с вызовами макросов, функций и конструированием классов. Там с одной только индентацией проблем не оберёшься, не говоря уже о корректной подсветке всех этих вариантов. TreeSitter многое умеет, но в опредеённые моменты придётся учить IDE как-то принимать дополнительные правила, которые не просто структурировать, особенного когда в файле используется несколько языков - html + css + js или скажем python + sql, а то и вовсе какой-нибудь отдельный DSL - возьмите те же токены документирующих комментариев: всякие @brief, @param, и прочие. А уж если тестов в комментарий завернули или пример кода.
Ну, и отдельно стоит заметить, что на мой вкус белый слишком яркий и ключевой слово должно отличаться от переменной.
Для поддержки семантики и подсветки как раз придумали Language Server Protocol. Сейчас даже почти любой редактор или имеет встроенную поддержку, или имеет плагин. Для большинства вещей в C++ работает отлично, возможно даже лучше чем для многих более простых языков. Поэтому поддержка со стороны IDE можно считать вопрос решенный.
VS Code - самый популярный и хуже всех поддерживает LSP, например. Попробуйте эксперимента ради взять Lapse, Zed, Neovim, Sublime text, Emacs, Eclipse и что-нибудь из IDEA и посмотрите как устроены их темы для разных языков. Берём для сравнения скажем C++, JS, TS, какой-нибудь Lua и миксованый файл html + css + js. Все дружно умеют работать с LSP, но идентичную подстветку для каждого из редакторов без серьёзного допиливания напильником вы наверняка сделать не сможете, даже если вы будете шарить один и тот же LSP для всех редакторов. Так что решённым вопросом можно считать только то, что какая-то подсветка в редакторе будет. А вот насколько детализирована/управляема подсветка - вопрос открытый.
уже было же
Автор, может быть ты собаку съел в области подсветки, подскажите пож-ста, есть редактор vim, есть поиск по тэгам в нём, база данных тегов обновляется при каждом открытие файла и при каждом сохранение файла, так что эта БД обновляется в фоновом режиме, вопрос: как-то можно на лету генерировать файл синтаксиса, чтобы вим подсвечивал мои собственные типы на равне с uint8-t например? Gutentags называется плагин для вим, который на лету обновляет базу тегов
Да, я опоздал с ответом. Всё верно, я не автор, я переводчик.
Увы, ваш синтаксис подсвечен безграмотно