15 апреля в 22:13

Как сделать свою IDE уровня IDEA

Некоторое время назад я опубликовал пост, в котором поднял тему низкого уровня качества моего любимого инструмента — PyCharm, и спросил: что делать? Данная проблема видится мне совершенно обескураживающей: 21-й век на дворе, а единственная доступная мне профессиональная IDE развивается по принципу «лучше — больше, но хуже». Имеется около десятка багов, исправление которых я лично жду годами, не говоря уже о тех проблемах, которые мне стало лень зарепортить. Количество багов растёт каждый год с постоянной скоростью, а в качестве оправдания я слышу рассказ о зависимости количества багов от количества пользователей. Альтернатив нет, а пилить свою IDE — почти нереально. Так что же делать?

Среди потока эмоциональных комментариев меня особо заинтересовал один — никем не замеченный, в котором пользователь VISTALL скромно сообщил, как он решил эту проблему для себя. Он сделал свой форк IDEA для .NET и C# — Consulo IDE. Для меня лично такое заявление стало полной неожиданностью. Извините, если кто-то не разделяет моего удивления, но для меня это совершенно непостижимо так же, как вездесущие вечные баги в PyCharm. Ведь IDE разрабатывают большие команды разработчков, а он решил сделать свой форк, пусть даже и форк, но свой, который нужно поддерживать и развивать самому… Как??? Этот вопрос я решил задать лично автору форка — Валерию Семенчуку, а заодно и много других вопросов. Слово за слово, получилось небольшое интервью, надеюсь, интересное не только мне...

— Валерий, давно ты знаком с IDEA?

— Честно говоря, уже забыл, когда познакомился с IDEA (вроде бы с IDEA 7, но не факт). Плагины я начал писать с IDEA 8. После появления IDEA Community Edition началась новая ветка в истории. Медленно я начал изучать платформу, что позднее вылилось в пулл-реквесты и в диалоги на трекере (и не только там). Но были и неприятные истории. Например плагин к Play 1: после какой то очередной правки со стороны платформы плагин стал вести себя нестабильно (toolwindow не закрывался, а превращался в светло-зеленый прямоугольник). Фикса не было, плагин сам был закрыт (его код). И вот вместо того, чтобы ждать фикс, я попросту написал плагин с нуля, т.к накипело. И с того времени я быстрее напишу свой плагин (или фикс), чем буду ждать исправлений.

— Сколько плагинов ты написал на текущий момент? Можешь перечислить самые интересные?

— К IDEA были написаны плагины Play, Lombok, и несколько безымянных плагинов. Также я пытался восстановить C++ плагин к IDEA, но был огорчен тем, что анализ был написан на С++ (и не был открыт авторами). Позднее почти все мои плагины переросли в плагины к моему форку IDEA. Также я написал более 10 новых плагинов. Самые интересные — это, конечно, поддержка .NET и C#.

— Как так получилось, что ты решил форкнуть IDEA?

— Первый мой публичный форк IDEA был для поддержки фреймворка Lombok. Первая проблема состояла в том что IDEA имеет свой анализ java файлов, и не было возможности расширить анализ без изменения самой Java реализации. Вторая проблема — это то, что Java прибита гвоздями в IDEA: нельзя просто заменить Java реализацию на пропатченую версию. Было много спорных вопросов в моем решении проблемы — в итоге дальше форка оно не ушло.

— А были еще и непубличные?

— Да. Я игрался с компилятором Java (javac) и поддержкой мною созданных фич в IDEA. С тех пор я практически всегда сидел на своих билдах IDEA.

— Я так понимаю, ты на этом не остановился?

— Да. Как автор плагинов я видел проблемы, и старался их исправить через патчи либо через пулл-реквесты. Часть была принята, а часть до сих пор находится в подвешенном состоянии.

— Видимо, это были архитектурные исправления? Я могу себе представить, насколько сложно добиться принятия таких патчей. Ведь у проекта есть свои архитекторы со своим мнением, у проекта есть свои планы, и твои патчи могут быть для них как минимум сомнительными, а то и вовсе несовместимыми с их точкой зрения.

— Большинство моих патчей были маленькие и не задевали глобальных вещей. Насчет больших изменений я поднимал несколько задач в трекере и на форуме. Из самых глобальных — я хотел выровнять Java реализацию с другими плагинами. Суть в том — что IntelliJ IDEA позиционируется в основном как среда для разработки на Java, в итоге часть интерфейса прибита гвоздями к Java-фичам.

Это можно увидеть, например, когда открываешь Project Structure в Node.js проекте, или в том же Node.js проекте видны пункты меню для Java.

— Чем тебе это мешало?

— Банальный вопрос — зачем пользователю скачивать весь Java стек разработки для того, чтобы работать с C#, например.

— А Rider для C# они на тот момент не предлагали?

— Нет. На данный момент Rider — это гибрид Resharper и IntelliJ. Назвать её полноценной IDE на базе IntelliJ я не могу, ибо весь анализ (и не только) лежит на плечах Resharper, который запускается параллельно с Rider. Он отвечает за все фичи, которые касаются .NET платформы.

— Что он из себя представляет твой форк?

— Главная задумка — это сделать универсальную IDE подобную IDEA, но Java будет плагином, а не частью платформы.

Также хотелось исправлять (по возможности) баги, которые находил. Закрытость почти всех плагинов создавала ощущение “раба” ситуации. Зарепортил баг — и ждешь. Даже если бага исправлена, нужно ждать либо EAP, либо релиз. В итоге было решено сделать полностью открытый проект.

— Над IntelliJ IDEA работает целая компания, а ты — один. Неужели реально одному пилить свою IDE, пусть даже и на готовой платформе?

— На деле я не сам. По технической части мне помогает знакомый, как и с тестами. А вот с разработкой плагинов тяжело. Приходится выбирать самое главное из того, что нужно сделать, и не распыляться. А желания сделать что-то новое — есть, например язык F#.
Также периодически переношу изменения из IDEA в Консулу, но не все. Очень много спорных фич, или мешает Kotlin, который сейчас они стараются принести в платформу.

— Чем тебе мешает Kotlin? Его зашивают так же жёстко, как и Java?

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

— Когда-нибудь они полностью переведут свои IDE на Kotlin — что тогда? Как ты считаешь вообще, всё идёт к этому?

— На деле — код конвертируем. Конечно, большие кучки чего либо на Котлине я не переделываю. Да — рано или поздно так и будет. Если учесть, что Rider написан на Котлине, и не только он. Когда это наступит — это будет новая эра Консулы. Эра возрождения или вымирания — покажет время :)

— В прошлом своём посте я поднимал тему забагованности IDEA. Вот и ты говоришь, что отчасти баги и скорость их исправления натолкнули на создание форка. С чем пришлось столкнуться по мере исправления багов? Много ли их там? Как тебе вообще код IDEA в целом?

— Я унаследовал почти все баги IDEA, также я имею немного своих. Код IDEA, славящийся своей “документацией” (сарказм), вполне понятен. Но встречаются внутренние вещи, которые не понять, если ты не работаешь в JetBrains.

— Я вот замечал, что в некоторых меню первый знак подчёркивания не отображается. А вместо этого местами подчёркнутым отображается символ, идущий за потерянным знаком подчёркивания. Такое есть в разных местах: “File -> Open Recent”, “Run -> Prifle”, “Run -> Concurrency Diagram”. Только в последней версии это починили в “Open Recent”, но проблема остаётся в “Run”.

— Судя по проблеме — это лишняя обработка Mnemonic в тексте меню. Просто нужно запретить обработку mnemonic. Видимо, кто-то забыл, когда в очередной раз правил этот код. Не понимаю почему такие баги должны висеть долго. Беглым поиском проблемы находится вот такой коммит.

— Честно говоря, такие ошибки смотрятся ужасно непрофессионально. Интересно, насколько стары эти баги. Ты их успел зацепить в Consulo?

— Беглым тестом — немного. В Recent Projects я не вижу проблемы. А вот в Run Configurations я вижу эту багу. Фикс на эту багу займет где то 10 минут.

— Когда я открываю эти меню, я долго всматриваюсь, чтобы найти нужный элемент. Я мучался с “Open Recent” очень долго — не знаю сколько. Найденный мною тикет висел полтора года. А ты показываешь коммит, в котором добавлен всего один параметр. И неизвестно, сколько еще провисит ошибка в “Run”. Какие тикеты, по твоим наблюдениям, в JetBrains закрывают быстрее? Добавление поддержки имодзи? :)

— Имодзи — часто запрашиваемая фича. И для ее реализации нужно править JRE. Я за то, что бы добавить, но не в ущерб другим.

— Поскольку ты переносишь изменения из IDEA, то, наверное, следишь за тем, какие фичи там добавляются. Есть ли такие фичи, которые ты не стал переносить из-за их принципиальной ненадобности в IDE?

Editor Background Image. Я вовсе не понимаю смысл этой фичи. Из архитектурных соображений я не перенес реализацию External Compiler (jps внутри IDEA). Ибо спорная реализация, которая порождает дубликаты. Возможно, я верну эту подсистему, если решу архитектурные проблемы. К этому списку присоединяется прозрачный скролл. В редакторе это смотрится слишком ужасно. Со времен IDEA 8 я видел смены UI для скроллов в редакторе, пока что они ищут золотую середину. Но тестить на пользователях без возможности вернуться на старый UI — это плохо (у меня есть задача 2010 года где я жаловался на юзабилити скролла).

— А ты в своей Consulo как-то улучшаешь UI, помимо поддержки HiDPI?

— Да. Как известно, в IDEA нету возможности нормальной смены UI Theme (Laf), ибо много компонентов имеют “захардкоденную” отрисовку, а также цвета.

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

— Когда-то “захаркоденная” отрисовка была одной из основных проблем на пути к появлению темной темы в IDEA. Но сделать хорошее решения у них не получилось, в итоге в IDEA есть два режима Light / Dark. И для каждого режима есть свой набор цветов которые никак не изменить (адекватно конечно). Хочется сделать нормальное решения чтобы дать юзерам возможность кастомизации интерфейса под себя. Есть несколько IDEA плагинов которые это делают. Но все же они встречают непреодолимые преграды для этого — очередной хардкод.

— Много там ещё такого неприятного хардкода встречается? В смысле, не в темах, а в чём-то ещё, что приходится переделывать.

— Да, приходится встречать призрак прошлого с тех времен, когда IDEA имела только Java реализацию. В платформе есть проверки на java language / java file например.

— На что ты делаешь упор при выборе новых фич? Каким фичам отдаешь предпочтение? Развитие какого функционала ты считаешь самым важным в Consulo, а какой приходится откладывать за недостатком ресурсов?

— В свое время я отложил все проблемы касаемые веб сервисов. И больше был занят поддержкой C# / Mono / Unity. Четыре месяца(сентябрь 2016) назад я решил переделать всю веб часть. Перешёл на Jenkins, написал сервис для пользователей и новый репозиторий для плагинов и платформы (в свою очередь это добавило возможность автоапдейта).

После закрытия беты второй Консулы я хочу сделать поддержку .NET Core.

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

— Первая разница — в том, что всё, что доступно для юзера, можно увидеть на гитхабе в виде исходников. Также можно влиять на саму разработку.

Второе — это более быстрые релизы. В текущий момент в канал “release” поступают билды каждый месяц (beta — каждую неделю, alpha — каждый день).

Я хочу добится более агрессивной смены API. Также активно поддерживать разработчиков сторонних плагинов. Сам помогаю разработчику Perl плагина к IDEA (и не только) — играю роль ходячей энциклопедии по платформе.

Это — из самых основных отличий.

— Ты говоришь “можно влиять на разработку”. И никто не скажет юзеру “это наш бизнес”, да? Один человек жаловался, что ему так и ответили, когда он предлагал что-то поменять в IDEA.

— Мне никто не платит, такое я не скажу. Да, могут быть спорные реквесты, но всё решаемо. Я не планирую продавать ни один из компонентов Консулы.

— Ты пробовал посчитать хотя бы примерно, сколько времени уже потратил на работу над Consulo? Есть ли в этом смысл? Может быть эффективнее было бы потратить это время на работу, за которую платят?

— Работаю над Консулой я с 2013 года. Смысл очень простой: Консула — моя основная среда для разработки. Если я встречаю баг — я исправляю его в течении дня, а не жду по несколько месяцев (очередной релиз IDEA например).

— Сколько сейчас человек пользуются Консулой на постоянной основе? Это возможно как-то достоверно подсчитать?

— Достоверно — нет. Увы сервис статистики у меня написан на коленке, и не даёт точной информации. А так — до 2 тысяч на первой версии, и более 400 человек на второй (которая с недавних пор доступна для скачивания, но имеет статус беты). С февраля 2017 года, первая версия больше не доступна для загрузки.

— Как часто пользователи присылают пулл-реквесты?

— Очень редко. Так как большинство пользователей у меня — это Unity (.NET платформа + C#), есть некие сложности в правке Java исходников. Также у меня хромает документация по всему проекту (более 100 репозиториев, и что в них — знаю только я), я очень медленно её дополняю. Но встречаются люди, которые делаю пулл-реквесты в несколько репозиториев одновременно (как общий фикс одной проблемы)

— А багрепорты и фича-реквесты? Как часто присылают, и как быстро ты на них реагируешь?

— Фичи — редко, баги — чаще. Сейчас я добился хорошей стабильности основного функционала, поэтому багов немного.

Реагирую я практически всегда в тот же день. Исправляю баги по мере приоритетности плагина, но если фикс простой — то исправляю в тот же день

— Как считаешь, по какой причине люди отдают предпочтения Consulo (те, кто отдают). Ты уже перечислил основные достоинства, но у меня ощущение, что это твоя точка зрения, то есть достоинства для тебя лично. А что нравится пользователям?

— Это просто. Консула была единственной нормальной средой C# для macOS. Хотя количество пользователей Windows + Linux догоняет macOS. Раньше была доступная только одна среда — это MonoDevelop (но это тихий ужас). Сейчас появились Visual Studio Code и Rider.

— Если пользователи продолжают прибывать, то, наверное, они находят в Consulo что-то такое, чего нет в других IDE? Что именно?

— Большая часть моей аудитории — это Unity разработчики, до сих пор нет хорошего аналога Консуле. Есть Rider который в статусе EAP, а в будущем будет платным.

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

— Не было, нет, и не будет. Это мое принципиальное решения по поводу закрытого функционала. Это одна из причин, почему я отошёл от IDEA. И возвращаться к этому я не собираюсь. Я хочу сделать открытый проект, а закрытый функционал будет мешать.

— А как на счёт пожертвований?

— Куда без них. У меня пока есть причины, которые мешают этому. В этом году постараюсь исправиться, и тогда наконец-то появится долгожданная кнопочка Donate.

— Каким бы ты хотел видеть будущее Консулы, и насколько, по-твоему, этого реально достичь?

— Вырасти в полноценную организацию/проект по разработке IDE (не только на Desktop). Реально ли? Да — но силами одного человека очень долго.

Большое спасибо, Валерий, что согласился рассказать о своём опыте и разрешил опубликовать этот диалог. Я надеюсь, этот пост поможет найти тебе новых пользователей и единомышленников, и желаю тебе удачи и много терпения.

Больше IDE — хороших и разных!
raacer @raacer
карма
113,0
рейтинг 4,0
Похожие публикации
Самое читаемое Разработка

Комментарии (189)

  • +9

    Думаю идея microsoft под названием language-server-protocol,
    позволит в будущем разрабатывать IDE небольшим командам.

    • 0
      Отлично, и пайтон есть! Пора запилить свою IDE для пайтона :)
    • 0
      Имхо это очень плохая идея. Пример плохих идей — это Roslyn в Unity. Там есть Boo + UnityScript о которых Roslyn ничего не знает. Значит прийдется писать это поддержку внутри Roslyn, и быть всегда в виде форка.

      Следующий пример это IKVM.NET. Где Java + .NET. В идеально мире — это хорошое решение. Но мы же живем не в нем.
      • 0
        Имхо это очень плохая идея. Пример плохих идей — это Roslyn в Unity. Там есть Boo + UnityScript о которых
        Roslyn ничего не знает.
        Следующий пример это IKVM.NET. Где Java + .NET. В идеально мире — это хорошое решение. Но мы же живем не в нем.

        А можете расшифровать? Не знаком с приведенными вами примерами, но если программный
        код на разных языках лежит в разных файлах, то в существующем подходе нужно просто
        запустить просто два сервера одни для условно Java, другой для C#.
        Когда языки смешиваются в рамках одного файла не вижу проблем добавить (если еще такого нет),
        сообщения от сервера к IDE: этот кусок на языке X, позаботься о нем сам.


        А проблема форка и поддержки большого проекта типа Rolsyn это по-моему
        строго перпендикулярная проблема по отношению к language-server-protocol.
        Например, если вы решите в IDE добавить поддержку C++ при чем с расширениями
        язык от Borland, а разработчики libclang/clang не захотят добавлять эти расширения,
        то вам придется форкнуть и поддеживать код libclang/clang в не зависимости от
        того, встроите вы его в свою IDE или будете запускать его как сторонний сервис,
        с обменов данными по каналам/разделяемой памяти.

        • 0
          А можете расшифровать? Не знаком с приведенными вами примерами, но если программный
          код на разных языках лежит в разных файлах, то в существующем подходе нужно просто
          запустить просто два сервера одни для условно Java, другой для C#.


          Пример такой. Unity проект.

          1. Файлик. Test.js
          function test() {}
          


          2. Файлик Test2.css
          public class Test2 {
           private Test test; // ссылка на Test.js
          }
          


          Roslyn не знает что такое JS. В рамках Unity — JS, это UnityScript. Так же есть Boo питоноский вариант под Unity

          А проблема форка и поддержки большого проекта типа Rolsyn это по-моему
          строго перпендикулярная проблема по отношению к language-server-protocol.


          Вот нет. Это из той же оперы. Analysis server <-> IDE client

          Сейчас external анализ не настолько крутой, что бы юзать его слепо.

          Если посмотреть в сторону Roslyn — там где то 10% всех quick fixes & intentions & inspections которые есть в R#.

          Например есть ситуация. Есть TypeScript / Java / C#. Их анализ написан на разных языках, на разных виртуалках (Node.js, JVM, .NET) — тоисть нужно поддерживать весь этот зоопарк.

          Или писать на Java(или другой какой либо язык не важно) — при этом иметь какую ту общую базу, и использовать для других языков — что бы упростить реализация самого языка.

          Вот что бы вы выбрали из этого?

          Я выбрал второе, тоисть писать все на одном языку
          • 0
            Вот нет. Это из той же оперы. Analysis server <-> IDE client
            Или писать на Java(или другой какой либо язык не важно) — при этом иметь какую ту общую базу, и
            использовать для других языков — что бы упростить реализация самого языка.

            Честно говоря не вижу связи, вы можете inteliji разделить на две части, GUI и анализ,
            и разнести их по разным процессам которые общаются с помощью language protocol,
            и в той части где анализ реализовать сразу в одном сервере все языки. Концепции
            language protocol это никак не противоречит, и ваш use case будет реализован,
            и на одном языке обе части написать. И как бонус, часть занимающаяся анализом,
            может быть не на вашей машине, если сеть достаточно быстрая.

      • +1

        в емаксе например есть очень полезная фича — интеграция плагинов между собой. Например есть плагин projectile — для управления проектом и есть плагин helm, для быстрого поиска и перехода между файлами. Так вот, когда эти 2 плагина подключаются в конфиге, то projectile автоматически подхватывает helm и взаимодействует с ним. Не знаю или это возможно где то, кроме лиспа(елиспа) но это одно из возможных решений описанной вами проблемы.

  • –10

    Я так понимаю по полезности проекта вы даже обошли ReactOS?


    А вообще, как говорит umputun, лишь бы мелочь по карманам не тырили.

  • +27

    Как сделать свою IDE уровня IDEA? Форкнуть IDEA :)


    Не, автор форка молодец, разобраться в такой куче кода одному и поддерживать это ох как непросто.


    Но заголовок несколько желтый :)

    • 0
      Ну, Вы всё верно поняли :) Проект получается как бы и твой (ты же им управляешь), но уровень уже сразу недетский. Это хорошо, что они выложили исходники. Каждый теперь имеет возможность творить. Хотя, всё равно я себе пока слабо представляю, как поддерживать такой проект силами одного-двух человек. Я бы, например, даже не взялся бы форкнуть какой-нибудь фреймвёрк наподобие Django, а у IDEA Community Edition архивчик исходников в несколько десятков раз тяжелее.
      • 0
        Немного не в тему, но мне кажется Django в наше время форкать уже поздно. Сейчас надо на базе aiohttp чтонибудь делать вменяемое. Лично у меня есть идеи, но нет времени и не уверен, что справлюсь один.
        • 0

          Всё что нужно это сделать django 3.0 где всё будет с asyncio… Ради интереса пробовал переделать core часть работы с http запросами на асинхронную модель и как мне показалось это возможно сделать. Самое сложно это переделать работу с базой, думал о том что бы оставить интерфейс api без изменений но только завернуть в корутины и тогда просто во всех местах нужно использовать qs = await User.objects.all(), ну и все остальные места которые подразумевают блокировку. Но опять же, это всё в теории...

    • 0
      По опыту скажу что форкнуть это оказалось самым простым. А вот все поднять — что бы работали плагины/обновления/репортинг и многое другое куда сложней (ибо я не юзаю ниодин из сервисов JB)
  • +13

    Главное — это нескучные темы оформления. А то надоела эта скучная стандартная Darcula — кодишь, кодишь, все одно и то же… Неинтересно.

    • 0
      Еще немного, и будет уже не о том жалоба: скажете, что я голосовому интерфейсу говорю, какую программу написать, а он кнопки в программе ставит некрасивые.

      "Окей, Гугл, Сири, Эй, Кортана, Уважаемый PyCharm, программа для подсчета звезд на небе..." упс, упал!
  • –7
    Саблайм уже совсем не плох стал. Если есть время потратить на подгонку то получается уже сопоставимое с ПиЧармом и СиЛионом. И не такое прожорливое, вполне работающее даже на нетбуке.
    • +4
      Уже обсуждали, в т.ч. в моём прошлом посте, что Sublime — не IDE, и что многие вещи там вообще невозможны в виде плагинов из-за ограниченности API.
      • –2
        Использую ее именно как IDE, единственное наверно что там не так и не хватает, это не возможность наворотить в сайдебаре и в диалоговых формах что-то типа браузера классов и модулей. Нормального отладчика нет, хотя я например представляю как его реализовать при существующих ограничениях API и думаю появится рано или поздно вменяемый плагин. А что еще? autocomplete, linting, build system настраивается вполне приемлемо.
        • +11
          Отсутствие нормально отладчика — это уже очень много (интеграция отладчика в среду). Структура классов — тоже нужная вещь, и поиск по тексту не заменит полноценной навигации по классам, тут важно автоматизировать отслеживание наследования, а не заставлять постоянно удерживать в голове всю иерархию классов целиком и ничего не забыть.

          Что еще? Хм… Я люблю трёхколоночный мёрж со стандартным редактором внутри (интеграция VCS с редактором), мне нравится возможность открыть файл или diff из истории Git (интеграция Git со средой). Автодополнение и переход на объявление в интерактивной консоли Python довольно приятны (интеграция функций редактора с консолью) — нет ощущения, что уходишь из IDE в консоль, как это бывает в других «IDE». Представление результата выполнения тестов в виде сворачиваемого дерева вместо сплошного полотна текста, с возможностью перезапустить конкретный тест (интеграция тестов с IDE). В консоли запуска приложения в случае дампа ошибки можно кликнуть на файл прямо в даме и перейти на него (интеграция stdout со средой). Не уверен, что всё это есть в Sublime, может только какая-то часть — и то не в лучшем виде.

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

          Кто-то советовал посмотреть в сторону WingIDE в качестве альтернативы. Ну, я скачал, запустил, тыкнул в меню git — и что я увидел? Он тупо запускает команды git в своём эмуляторе терминала, который не умеет ничего, кроме отображения текста. Даже подсветки нет. То же самое и с остальными инструментами: есть пункты меню и окна, куда выводится результат выполнения команд. В лучшем случае он вставит имя файла в команду — вот и вся интеграция. С таким же успехом можно прилепить планшет на дверь холодильника, и назвать это умным холодильником или как-то так. Это как пример того, что не является интеграцией в моём понимании.
          • 0

            С Visual Studio Code не пробовали работать? Там есть и поддержка Python с отладкой и git

            • 0
              Еще не пробовал. Но может быть и попробую. Просто у меня сформировалась жуткая аллергия на MS: как услышу — так сразу руки чешутся. Это связано с повсеместной закрытостью их технологий, исходных кодов, форматов, алгоритмов и т.д. Считаете, с Visual Studio Code они исправились, и стоит потратить время на изучение этого продукта?
              • +1

                Я сам работал ещё очень мало, но первое впечатление — исправляются :)


                Поддержка Python там сторонний плагин, но разрабатывался при финансовой поддержке Microsoft. Собственно, я заинтересовался после интервью с автором плагина на подкасте talkpythontome.


                Первое впечатление от работы и просмотра документации — пробовать стоит.

                • +2
                  Я не против Visual Studio Code в принципе, но только вопрос — зачем его пробовать человеку, которые [полностью] доволен PyCharm? Там есть какие-то киллер фичи, которых нет в PyCharm?
                  • 0
                    Кто полностью доволен?
                    • 0
                      Например, я :) Но вообще, думаю, что много кто им полностью доволен. Особенно в сравнении с альтернативами.
                      • 0
                        Ну замечательно, не пробуйте ничего больше, конечно.
                        • 0
                          Редакторов и (недо)IDE для Питона — вагон и маленькая тележка; какие-то я пробовал, какие-то нет. Лично у меня отлажен рабочий процесс в PyCharm, поэтому и вопрос был конкретный — есть ли какие-то сильные преимущества у Visual Studio Code по сравнению с PyCharm?
                          • 0
                            Ясно. Но мне кажется, если Вас всё устраивает, то Вам преимущества не нужны. Вот если б Вы чем-то были неудовлетворены, тогла можно было бы пробовать. А так на любое предлодение новой фичи вы можете ответить: «Круто, но зачем? Меня и так всё устраивает»
                            • 0
                              От фичи зависит. Одно дело — новые «нескучные обои» какие-то мелкие удобства редактора, другое дело — что-то конкретное, повышающее производительность или хитрый анализ кода какой-нибудь или интеграция каких-нибудь инструментов, которых нет в Пайчарме. Во втором случае я как минимум готов попробовать. Хотя тяжело, конечно, такие гипотетические фичи обсуждать.
                          • 0
                            Я себе уже установил Code, следующую задачу буду пробовать сделать в нём. Первое, что взбрело в голову из недавнего — это поиск по git history конкретного файла. Я выбрал файл, открыл историю, и что Вы думаете? Оно открылось посредством Command Palette, вокруг которой, похоже, в этой IDE всё и крутится. То есть, там сразу можно вводить текст, и коммиты фильтруются по нему. Далее — Enter на нужном файле, и снова ввод нужной команды.

                            Отвечаю на ваш вопрос: есть ли преимущества? Да, есть:
                            1. Управление посредством набора команд, а не тыканья мышкой — этакий симбиоз командной строки и графического интерфейса. Это на самом деле круто, давно мечтал о чём-то подобном. Надо подольше поработать с этим, чтобы понять, насколько это хорошо.
                            2. Имеется поиск по истории отдельного файла.
                            • 0
                              Но всё как-то слабо…
                            • +1

                              Ну так на секундочку, в PC можно совершенно спокойно поставить горячую клавишу на совершенно любое действие, которое есть в gui.

                              • 0
                                Я не могу их запомнить
                                • 0

                                  А в vs можете? А почему у Вас такая избирательная память?

                                  • 0
                                    Не понимаю, о чём Вы…
                                    • 0
                                      есть ли какие-то сильные преимущества у Visual Studio Code по сравнению с PyCharm?

                                      Управление посредством набора команд, а не тыканья мышкой — этакий симбиоз командной строки и графического интерфейса.

                                      Я говорю, что в PC можно совершенно спокойно поставить любой бинд на любой кусок графического интерфейса, то есть того первого превосходства VS над PC, который Вы показали, по факту нету, потому что в PC это тоже есть.

                                      • 0
                                        Я не показывал преимущество хоткеев. Набор команд текстом — это не хоткеи.
                                        • 0

                                          Ну да, согласен, иногда не все можно запомнить, тогда можно использовать специальную вещь, аналог command plate в сублайме, вызывается на ctrl + shft + a.

                            • 0
                              Оно открылось посредством Command Palette, вокруг которой, похоже, в этой IDE всё и крутится

                              Точно также sublime работает вот уже столько лет и без браузера обходится

                              • 0
                                Честно говоря, у меня складывается ощущение, что саблайм получше будет.
                  • +1

                    Когда человек доволен полностью (или почти) какой-то технологией или решением, то скорее всего искать другие не нужно ;)


                    Что стало если не "киллер", то просто важными фичами Visual Studio Code для меня:


                    1) Гораздо меньший размер в памяти, по сравнению с PyCharm и Eclipse. Может и не слишком важно на современных компьютерах, но в моем случае бывает нужно иметь еще пару очень тяжелых процессов и полгигабайта PyCharm становятся неудобными.


                    2) Наличие отладки удаленных и встроенных (embedded) интерпретаторов Python без необходимости доплачивать. Опять таки, это может быть не проблемой если нужна версия Pro по каким-то еще причинам, но для меня и моих коллег кроме отладки хватает CE.


                    3) Возможность в отладчике указать что запустить и куда потом подключится (снова для embedded интерпретатора). Насколько я знаю, PyCharm так не умеет. Возможно вещь нишевая, но нам надо.


                    4) Более широкая поддержка других языков, включая экзотику, например Tcl — мало кому надо, но у нас в проекте есть.


                    5) По мелочам — нативная поддержка Jupyter. Достаточно шустрый — и стартует и работает (последнее — субъективно) быстрее PyCharm.


                    Повторюсь: это все достаточно субъективно, но меня заинтересовало.

              • +1
                Если что, Visual Studio Code лежит тут

                Редактор, который в нем используется лежит отдельно. Можно на сайты встраивать.

                Ну и вообще, можете на GitHub`е полазить
                • 0
                  Ого, не знал что редактор лежит отдельно и его можно легко встроить на страницу
        • +2
          Ещё в PyCharm очень удобный commit: там сразу и список файлов, и diff, и внести изменения можно, и отметить нужные файлы для коммита, и сообщение ввести, в т.ч. повторить, и параметры выбрать нужные.
      • –1

        В Emacs нет ограничений в API… все ограничивается только вашей фантазией ;-)

        • +8
          Согласен. Всем известно, что Emacs — это отличная операционная система. Но какое отношение это имеет к обсуждению текстовых редакторов?
          • +3

            Пффф… в Emacs давно уже можно запустить и Vim (Evil Mode), т.ч. с редакторами там тоже все отлично ;-)

            • 0
              Это уже разговор про Vim, а не про Emacs )))
  • 0
    А никто не знает, как в этой IDE исправить такой «баг» (неуправляемость или странная фича) — когда нажиамешь при невыделенном тексте Ctrl-C, IDE считает, что я хочу выделить строку и скопировать её. Но я никогда не хочу копировать строку, а если надо, я бы её сначала выделил. Всегда этот Ctrl-C означает промахнувшийся Ctrl-V, и, следовательно, означет потерю буфера обмена. Как бы отключить эту чрезвычайно умную фичу?
    • +1
      • +1
        Он самый. Спасибо, ну и мудрёно же было её найти. Все настройки облазил — нет такой. И как на stackoverflow найти — тоже не очевидно, как сформулировать: ).
    • +4
      Вне связи с IDE, сегодня не представляю себе работы с компьютером без clipboard-менеджера (запись и быстрый доступ к истории буфера). Сам использую clipit на Ubuntu. Знакомые на Windows пользуются Ditto.
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Да, в курсе, но т.к. ошибки были всегда типичные, обходился откатом назад Ctrl-Z -Ctrl-Z и копированием того, что стёрлось Ctrl-C с последующим откатом вперёд Ctrl-Shift-Z — Ctrl-Shift-Z.
  • +1
    Что только люди не форкнут, лишь бы не юзать Eclipse :)
    • +51
      Это многое говорит об Eclipse…
      • –13
        В 99% случаев это говорит о неумении готовить…
        • +5
          Совершенно верно. Если блюдо в ресторане невозможно есть, то 99% это говорит о неумении готовить. Только не умеет готовить повар, а я просто пришел поесть, готов заплатить за это свои деньги и не обязан уметь готовить.
          • 0
            Шайтан!

            Оно сегодня упало с ошибкой JRE :)
            Впрочем, точно так же свалилась IDEA.

            Но тут они равны.
            • +2

              Не, не равны. Эклипс всегда может отмазаться, что они тут ни при чём, это джава. А IDEA не может — у неё ж свой форк джавы и баги в джаве тоже можно фиксать :-)

              • 0
                Так грохнулись они одновременно, сразу после обновления openjdk :)

                Впрочем, эти детали для меня только внешняя сторона вопроса. Который год уже честно пытаюсь поставить кадждую новую версию от JB, час-два трачу на попытки привести к юзабельному состоянию — не получается :( Возможно, дело просто в древнючем наборе, который никак не пролучается уложить в джетбрейн: C (а там valgrind уже появился?), Perl, PHP, XSLT (сам знаю что ужас), JS. В одном флаконе, само собой.

                Время отклика — отдельный вопрос. В вопросе CLion vs CDT последний выигрывает офигенно, даже на древнючем Thinkpad t420 (дебиан, 12 Gb памяти).
                • 0

                  за вычетом C (CLion — отдельная IDE и поддерживает только CMake) всё есть (плагин для Perl видел краем уха, выглядело прилично)


                  Время отклика — отдельный вопрос

                  больше RAM → больше файлов (и индексов) оседает в кэше → меньше время отклика. на моих 32G оно вполне себе приемлемо (учитывая ещё и стопицот вкладок в браузере)

                  • 0

                    У меня хром жрёт ощутимо больше чем IDEA.


                    Но CLion 2017.1.1 как-то регулярно фризится на несколько секунд без видимой причины. Power save mode ничего существенно не меняет. И проект не экстремально большой (~10k файлов, ~4M строк в .c, .h и .cpp). На 16G RAM и SSD.

                  • +1
                    всё есть

                    Но не в одном флаконе, а это важно. По крайней мере до 17, последние не смотрел. Плюс тот же valgrind прикручивался до недавнего времени к CLion только как External Tool, ну и куча других мелочей (ЕМНИП, с gcov, gprof etc те же сложности были). Перловый плагин неплох, но см. пункт 1.
                    на моих 32G

                    Эх, где Quick Basic, где броландовская IDE на турбовижне :) BTW, как-то даже пытался вот это приспособить, но терпения не хватило. Наверное, у меня случай на грани между IDE и редактором, когда 80% тяжестей просто не востребованы. А вот с действительно нужными плюшками в JB как-то не складывается.
                    • 0
                      не в одном флаконе, а это важно

                      Голосуйте за и шлите багрепорты, всё-таки проект молодой.


                      где Quick Basic, где броландовская IDE на турбовижне :)

                      в DosBox

                      • 0
                        Голосуйте за и шлите багрепорты
                        Этим давно все занимаются :)
                        всё-таки проект молодой.
                        Тем более, очевидно, что ничего даже приближающегося к Linux Tools в юзабельном виде скоро не появится. А работать-то надо сейчас :)

                        Что же касается одного флакона, это обсуждалось не раз. Вердикт: скрещивание любой пары из хотя бы C/Java/PHP нереально, by design. Каждому базовому языку своя IDE. Перлу повезло невероятно, не без помощи @hurricup, конечно.
                        в DosBox

                        Простой пример. Есть древний целерон с 12 Gb, есть 4-ядерник i5 с 16 Gb. На первом стоит полный эклипсо-фарш из CDT/JDT/PDT/EPIC с кучей обвесов. На втором голый CLion. ОС та же, 18 минт. Угадайте, кто тормозит больше?

                        • 0
                          А работать-то надо сейчас :)

                          ну так вы и именно это и делаете, да? :)


                          Каждому базовому языку своя IDE

                          У меня отдельные IDE только для чего-нибудь не поддерживаемого основной IDE.


                          Угадайте, кто тормозит больше?

                          Учитывая контекст — наверняка CLion ;)

                          • 0
                            У меня отдельные IDE только для чего-нибудь не поддерживаемого основной IDE.
                            Так об этом и речь. Простой пример: есть какие-то рабочие заметки, ссылки, таски из JIRA и прочий обвес, который хочется иметь под рукой всегда, независимо ни от чего. В Эклипсе это решается просто: в какую бы перспективу я не переключался, какие бы не были текущий контекст, workspace или project set, окно с плагином для этого всегда на одном и том же месте. То есть фактически речь про MDI vs SDI :-) Но это уже, наверное, дело личных предпочтений.
      • 0
        DLTK и иже с ним от Eclipse, позволит написать вобщем то любую IDE. Было бы желание.
        • +1

          Так-то блокнот и ассемблер позволят написать в общем-то любую IDE. Вопрос в том, какое количество желания потребуется.

          • 0
            Сравнивать ассемблер с фреймворком заточенным под написание IDE?
  • +1
    До сих пор тикет с профайлером для CLion висит с 2014 года…
    • –22

      И что дальше? Идите и сделайте. Или разработчики должны работать в 10 раз больше только из-за того, что у нас 75% егэ и дипломов покупают, а потом ничего ответить на собеседовании не могут?

      • +6
        Разработчики вообще-то за это деньги получают, мы тут вроде о не свободно распространяемом продукте говорим)
        • +5

          Посмотрите его остальные комментарии, это какой-то толстый тролль. Не кормите)

  • 0
    Назвать её полноценной IDE на базе IntelliJ я не могу, ибо весь анализ (и не только) лежит на плечах Resharper, который запускается параллельно с Rider.

    А как иначе? Переписать весь R# на Java и поддерживать две базы кода такого размера только ради идеи «полноценной IDE»?
    • +1
      А кто сказал что нужно весь R#? R# — это Platform + реализация C# (и другие языки), вот как раз их и нужно. Даже силами одного человека, это неплохо получилось (но есть куда расти)
      • +3
        Не поймите неправильно. То, что вы делаете — это героический поступок, но странно ожидать такого от коммерческой компании. В чем практическое преимущество вашего решения — оно кардинально быстрее, или потребляет меньше памяти, или что-то еще?
        • –3
          странно ожидать такого от коммерческой компании
          А кто от них чего-то ожидает? Мне кажется, это личные трудности компании. Не сделают они — сделает кто-то другой. Был бы смысл, а нишу заполнят. А чьи-то личные желания — это просто желания. Которые в итоге и становятся движущей силой конкурирующих продуктов.
          • +1
            Вы мне так и не объяснили, какие «личные трудности компании» возникли у Jetbrains от выбранного ими подхода и почему описанный в статье подход кардинально лучше?
            • –5
              А разве я сказал, что эти трудности возникли? Может они наоборот решились :) Я понятия не имею. Трудность может быть в том, что проснутся конкуренты. Уже вот Consula есть, а завтра может быть я напишу IDE для Python чисто на Python. А может и не напишу. Принятие тех или иных решений — это их дело, их трудности. Если завтра выйдет новый серьёзный игрок и уведёт всех клиентов — это их трудности. Всегда есть риск, и никто не знает, что будет завтра.
        • 0
          Тоисть поддерживать зоопарк Mono + .NET на разных операционках лучше? Я бы не сказал что эти виртуалки стабильней и юзабельней чем JVM. Это дело вкуса и выбора.
          • 0
            Это замечательно, что вам нравится то, что и как вы делаете. Но я уверен, что Jetbrains выбрали такой подход не из вкусовых соображений, а руководствуясь многолетним опытом и экономической целесообразностью. Учитывая, что MS теперь активно развивает кроссплатформенные реализации .NET, проблема поддержки «зоопарка Mono» уже не выглядит такой страшной.
            • 0
              Увы .NET Core ещё не готов и думаю пройдет лет 5-10, что бы можно было использовать в замен .NET/Mono (нету UI, нету полноценного дебагера).

              Увы2 Rider подгружает проект в той версии .NET для которого он написан (то есть что бы открыть Mono проект — там нужен полноценный Mono Runtime, и так далее)
              • 0
                А что не так с дебагером?
  • +4
    В теги: «фатальный недостаток».
  • +4
    Качество в последнее время действительно расстраивает, хотя лучше PyCharm для питона нет ничего. В последнем релизе перестали работать тесты на pytest. Как это возможно в релизе меня озадачило (они что, не тестируют релизы вообще что ли?) и я полез в код, благо мне вывалился стек трейс на какой то внутренний питон скрипт, который я могу прямо в PyCharm посмотреть. Код меня ужаснул, сам PyCharm подсвечивает его как новогоднюю елку. PEP-8? нет, не слышали от слова совсем. Прогнать код pylint? зачем? Судя по всему даже warnings PyCharmа для своего кода они не используют, потому что через него смотреть на этот код невозможно.
    • 0
      А у меня с тестами постоянная беда в том, что не могу перезапустить отдельно взятый тест. Всё вместе работает, а перезапускаю отдельный тест — ошибка, не может его найти.
      • 0
        Таже ерунда. Если запуск из списка тестов вроде поправили, то из кода не запускает ни в какую.
      • +2
        Только что мне выдало прекрасное: 1310 of 1157 tests passed. Прям Стахановское движение.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +7
      Спасибо, что открыли мне глаза. Подумаю о переходе на Notepad++. И на Windows заодно, а то задолбал этот зоопарк DE и эта неудобная консоль.
    • +9

      Notepad++ для позеров, переходите на чистый Notepad.

      • НЛО прилетело и опубликовало эту надпись здесь
        • +8

          Нет, просто доведение до абсурда. Глупость — это с молитвами использовать Notepad++ вместо IDE.

          • НЛО прилетело и опубликовало эту надпись здесь
            • +4
              В итоге Notepad++ и молюсь чтоб не заглох проект
              • НЛО прилетело и опубликовало эту надпись здесь
      • +1
        Зачем notepad, когда есть cat с выводом в файл?
        • +4

          Зачем cat, если есть намагниченная иголка и твердая рука?

          • +2
            Пффффф
    • +2

      Как ни странно, а я вот наоборот с него перешёл наоборот в IDE.
      Не помню точно почему, но теперь меня на JB уже держит чисто привычка и удобства из коробочки. Да и ещё прикол в том, что перешёл с win, и возвращаться не собираюсь.


      А есть там плагины для работы с diff в git, git, autocomplite нормальный, с учётом контекстов использования этого слова? Просто вспомнил как он делал, да и сублайм сейчас так делает: объявляешь где-то переменную и потом она тебя по всему проекту преследует, мешаясь при этом с словами, зарезервированными языком.

      • НЛО прилетело и опубликовало эту надпись здесь
        • +1

          Хм, отдельные клиенты для git — не моё, делать отдельные "макросы", вроде так они в n++ называются, для того, что может сработать не так, да и интеграции такой, как у JB не получится, ведь это нужно открывать отдельную прогу, отдельный интерфейс, отдельные клавиши. Нарушается эффект, как кто-то говорил вверху, "нахождения в ide". То есть когда я сижу в своём ws, я выхожу только в браузер, и то с неохотой. Специально настраиваю систему сборки так, чтобы даже в браузере ничего не приходилось нажимать. То есть теоретически, можно вообще на отдельный экран выкурить браузер, а другой полностью ws занять и не нажимать ничего, кроме горячих клавиш… Эх мечты, мечты...

        • 0
          Простите, какие ещё черепашки??? :-D
          • +2

            TortoiseGit и TortoiseHg — графические клиенты под windows для тех, кто не осилил консоль.

            • НЛО прилетело и опубликовало эту надпись здесь
              • +3
                Хорошо. И что делать, если перед коммитом черепашка показывает Вам дифф (она ведь умеет это делать?), Вы проводите ревизию, и видите, что одно изменение следует доработать? Вы открываете Notepad++ и ищете этот файл там, либо пользуетесь редактором черепашки (если он там вообще есть), теряя весь функционал любимого редактора (если в нём вообще есть какой-то функционал, кроме редактирования текста). А я всё делаю сразу в окне коммита, таким образом имею прекрасную поддержку стратегии частых коммитов. Получить такой функционал от несвязанных инструментов практически невозможно. Черепашки может быть в чём-то и удобны сами по себе в сравнении с консолью, но они никогда не заменят интегрированные средства разработки. Самая суть любой IDE — в первой букве этой аббревиатуры.
                • НЛО прилетело и опубликовало эту надпись здесь
          • 0

            Есть граф клиенты для десктопа, у них иконка с черепашкой)

      • НЛО прилетело и опубликовало эту надпись здесь
        • 0

          Я тоже вронтэндер в вебе. Бывает попишу что-нибудь на ноде, но по большей части сижу на React (JSX соответственно), Vue, Sass, то есть на вещах, которые в n++ скорее всего никто интегрировать, скорее всего, не будет, ибо это, так сказать, мимолётные моднявые технологии.

          • НЛО прилетело и опубликовало эту надпись здесь
            • 0

              Ну не знаю, проблем с ws у меня нету. Возможно из-за привычки, то есть я спокойно набираю текст, и, например, заставляю ws самого подгружать npm-модули и запихивать их в package.json, который, последнее время, стал нужным даже во фронте.
              На счёт скорости реакции, мне кажется, что тут зависит уже от системы сборки, одно дело поставить её запуск на горячую клавишу, другое просто вбивать npm run build в консоли каждый раз. И для исправления багов мне jb больше даёт возможностей. Например посмотреть откуда прилетели эти данные, или где это я использовал эту переменную, и где она могла перезаписаться. В n++ такой слежки над теми же переменными, скорее всего, нету. А это очень удобно.

              • НЛО прилетело и опубликовало эту надпись здесь
                • +4
                  Подписка PyCharm и WebStorm стоит менее 0.5% дохода большинства программистов. Это, конечно же, очень дорого за инструмент, увеличивающий скорость и качество разработки.
        • –1
          простите, но чем IDE хуже notepad++? При том на столько сильно, что «просто нереально»?
          • НЛО прилетело и опубликовало эту надпись здесь
            • +1
              ide пользовать в таких проектах просто нереально
              • НЛО прилетело и опубликовало эту надпись здесь
                • 0
                  да
                • +2
                  это как то ответит на оригинальный вопрос?
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • НЛО прилетело и опубликовало эту надпись здесь
                      • НЛО прилетело и опубликовало эту надпись здесь
                        • 0

                          Что именно подразумевается под "сетапом"?

                          • НЛО прилетело и опубликовало эту надпись здесь
                            • +1

                              Да запросто.
                              WebStrom (2017.1), nodejs (v7.8.0), { + к ноде npm (v4.2.0), webpack (global v1.13.1, localy ~v2) }, nginx (v1.10.3, для проверки работоспособности нодовский приложений за проксёй да проверки работоспособности SPA), mongodb (v2.6.10), git (v2.7.4), heroku-cli (v5.8.6). Ну и ssh конечно же)


                              Стоит у меня ubuntu 16.04.2 и этого мне хватает не только для работы, но и для повеселится.

                        • 0
                          Не очень понятно как мой кейс связан с вашим. Но ок, пусть будет.
                          Ubuntu+PyCharm+Docker. Внутри питон разных версий в зависимости от проекта, и зоопарк внешних сервисов в контейнерах. СI, покрытие тестами, pylint, все вполне заурядно.

                          По прежнему не понимаю как это поможет продемонстрировать кейс, в котором «ide использовать нереально»
                          • –1

                            Блин, Вы меня конечно извините, но я до сих пор не понимаю слова "кейс". Можете прояснить?

                            • 0
                              case — случай; обстоятельство, положение; дело, история; факт
                              • 0

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

                                • +1
                                  простите, сам ненавижу эту хурму, но когда пол дня говоришь по английски (а иногда и весь день), от англицизмов очень сложно отвязаться.
  • +5
    "— Имодзи — часто запрашиваемая фича." Господи, кто эти люди? Зачем _это_ в IDE? Нет, вот правда, или я что-то не понимаю? Объясните кто-нибудь, прошу!
    • –2
      Говорят, сейчас популярно писать ботов, и это как-то связано. Как именно — я тоже не понимаю. Видимо, имодзи увеличивают продажи.

      Сейчас, например, всё больше девушек идёт в программисты. А для многих девушек важно, чтобы их любимый ноут был розовым и пушистым, и чтобы фон сочетался с цветом клавиатуры. Так, возможно, и появилась возможность устанавливать фоновую картинку редактора.
      • +3
        Что-бы символы в IDE отображались корректно, а не как квадратики.
        Пример из бота:
        https://habrastorage.org/getpro/habr/comment_images/ae3/2bb/aa7/ae32bbaa7143e6a736228b3179f49817.png
        image
        Теперь, без поддержки emoji
        https://habrastorage.org/getpro/habr/comment_images/e46/299/c1d/e46299c1de43be3fb34a66ccac5f3f36.png
        image
        А в DataGrip от JetBrains все будет нормально отображаться. Надеюсь, теперь вам стало понятнее.
        • +3
          Нет, мне решительно непонятно. Чтобы символы отображались корректно — есть эскейп-последовательности. В коде мне сто лет не нужно смотреть на эти картинки. Для меня будет даже лучше, если будет написано «EMOJI_SAD» или «IMOJI_PANDA». Так мне легче будет найти нужный текст поиском. При том, как в IDEA хромает поддержка их же фич в разных модулях, я бы предпочёл пользоваться старым добрым текстом, чем страдать из-за того, что они где-то забудут прикрутить имодзи, и я не смогу найти поиском нужный мне файл. И вообще, что в моей программистской практике это не решает ровным счетом ничего. Я недавно выводил красный текст в консоль, и представьте себе: я прекрасно обошёлся словом «red», без раскраски этого слова в красный цвет. Зачем мне эти картинки в коде?
          • +1
            Дело вкуса. Может кому то удобнее escape-последовательность, кому то, когда он видит в IDE тоже самое, что и в Discord'е, например. А также обычные пользователя любят редактировать этих ботов под себя, а теперь представьте, что вместо нормальных иконок была бы escape-последовательность, у них случиться конфуз. А так – никакой проблемы с заменой не возникает. С поиском по emoji проблем не будет, даже если какой-то textbox поиска не будет поддерживать emoji и вы будите видеть квардат, поиск все равно будет успешным.
            Вообщем привыкайте, скоро увидим emoji в комментарий кода, на дворе 2к17.
            • –2
              Дело вкуса.
              Нет, это не дело вкуса, это вопрос качества программного кода. Вы показали код, где иконки вшиты хардкодом вместо того, чтобы использовать константы.
              А также обычные пользователя любят редактировать этих ботов под себя, а теперь представьте, что вместо нормальных иконок была бы escape-последовательность, у них случиться конфуз.
              А теперь представьте, что ваша любимая IDE будет затачиваться под домохозяек. Для домохозяек нужно делать простые редакторы с поддержкой иконок. Я буду одним из первых, кто удалит PyCharm, как только его станут делать проще, потому что обычные пользователи возмущаются, что не могут ничего понять.
              С поиском по emoji проблем не будет, даже если какой-то textbox поиска не будет поддерживать emoji и вы будите видеть квардат, поиск все равно будет успешным.
              Спасибо, всегда мечтал копипастить «квадратики», и пытаться понять, где у меня какой квадратик.
              Вообщем привыкайте, скоро увидим emoji в комментарий кода, на дворе 2к17.
              Да, мне доводилось видеть русский и итальянский юникод в комментариях. Зачем мне привыкать к непрофессионалам? Я их обхожу десятой дорогой — себе дешевле.

              И, кстати, слова «вообщем» нет. От куда вы его все берёте? Вы так и произносите «вообщем»?
              • +1

                Позволю себе заметить, что пробела в слове «откуда» тоже нет.


                А теперь представьте, что ваша любимая IDE будет затачиваться под домохозяек. Для домохозяек нужно делать простые редакторы с поддержкой иконок.

                Уже можно начинать подыскивать альтернативы, курс на регулярное добавление «красивеньких» свистоперделок виден невооружённым взглядом.


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

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


                Новые блёклые иконки, от которых через несколько минут начинают кровоточить глаза, тому пример.

                • 0
                  Позволю себе заметить, что пробела в слове «откуда» тоже нет.
                  Точно!!! :-D Но хотя бы звучит также :)
                  Это работает не так. Не пользователи возмущаются, а специально обученные человеки за зряплату исследуют
                  Полагаю, что так и есть, по крайней мере в большинстве подобных случаев. Но всё равно удалю! :-D
                • +1
                  Знаете, я скептически отношусь к тому, то моя персона или моя активность может заинтересовать компанию JetBrains. Но уже второй раз после публикации мною поста касательно их продуктов я наблюдаю активность сразу в нескольких моих тикетах: переназначение, закрытие дубликатов, и т.д. К тому же, в комментариях под прошлым постом мне ясно дали понять, что идентифицировали меня ) Первый раз я подумал, что это случайность. Второй раз — совпадение. Надо написать еще один подобный пост, чтобы проверить, есть ли здесь закономерность. :-D
          • +2
            Я столкнулся на днях с очень даже реальным юзкейсом. Нужно было в строковые ресурсы Android-проекта (в Android Studio) запихнуть текст с кучей emoji (текст для шаринга в соц. сеточки), и простой копипастой нифига не получилось :(
            • 0
              А при чём тут отображение иконок? Просто редактор негодный, не поддерживает ввод неизвестных ему символов.
              • 0
                Оно не только не отображалось, но еще и собираться отказывалось :) Уж не знаю, в чем конкретно проблема — в системе сборки ведроида или же в Android Studio, который на последней версии IDEA основан, так далеко не копал, но проблема с emoji реально есть, и не только (и даже не столько) с отображением в редакторе.
                • 0
                  Вот и я говорю: не столько с отображением, сколько вообще с неожиданными символами. Получается, любой неожиданный символ в строке сразу же приведёт как невозможности собрать проект. Это проблема совсем другого уровня: качества IDE, а не поддержки emoji. Понятно, что всего не предусмотришь, но баги надо исправлять.
                • 0
                  Уж не знаю, в чем конкретно проблема — в системе сборки ведроида или же в Android Studio.

                  Откройте консоль в папке с проектом и напишите что-нибудь типа "gradlew build".

        • –2
          А еще, такие вещи, как повторяющиеся «new RaceAnimal» в вашем примере, я обычно зашиваю в простой массив ключевых слов и простой цикл по этому списку. Например так:

          animal_names = ['unicorn', 'ladibird', 'dolphin', 'koala', 'pengu', 'bear', 'panda', 'crab']
          animals = [Animal(name, emoji[name]) for name in animal_names]
          

          Две краткие строки вместо этого вашего тихого ужаса. И картинки здесь вообще не нужны.
          • –2
            Быдлокодер, налетай — минуса выставляй! :-D
            Ясное дело, все себя программистами мнят великими, а как понаделают простыней копипастами — другим потом полдня надо скролить, чтобы что-то в их коде найти и понять.
            • +2

              Минус мой, за диагноз по фотографии — спасибо. А если по делу, то наглядность (читаемость) кода — очень важная характеристика, и на картинке код гораздо нагляднее, чем приведеннный Вами. Тем не менее, это не делает один из примеров абстрактно лучше или хуже. Все зависит от конкретной ситуации, в которой этот код используется. Однако раньше IDE позволяла писать только один способом, теперь обоими. И мне категорически не понятны Ваши страдания по этому поводу.

              • 0
                Спасибо за отклик.

                Диагноз? Я высказал своё отношение к этому коду. Но кого-то это сразу зацепило, почему-то.

                Наглядность в приведенном коде совершенно ненужная. На что там глядеть? В коде нужна наглядность логики, а не наглядность текста. Такой код с дублированием кода усложняет сопровождение. Но это приходит с опытом. Вы уж простите и не обижайтесь, но такова жизнь: опыт приобретается с годами практики. Меня тоже в своё время били по рукам за такие штуки, а я не понимал за что. Любая копипаста вредна для проекта, если это не одноразовый скрипт. Если Вам непривычно видеть list comprehension (не знаю как по-русски), можно вот так:

                animal_names = ['unicorn', 'ladibird', 'dolphin', 'koala', 'pengu']
                animals = [
                    Animal(name=name, icon=emoji[name])
                    for name in animal_names
                ]
                


                Много способов сделать одну и ту же вещь — это большая проблема, так рождается зоопарк решений в одном проекте.

                Страдания по поводу имодзи? Да что Вы, никаких страданий! :) Мне всё равно, поддерживает IDEA имодзи или нет. Мне хочется, чтобы баги исправили. Но разрабы говорят, что у них не хватает рук, и иконки более приоритетны.
    • +1
      видимо что бы в комментариях можно было поставить эмодзи «какашка» )
    • +1

      Я тоже не понимаю этих людей, так же как и людей с фоновым рисунком в редакторе… Ну на кой это нужно программисту?

      • +6
        Как-то так, наверное…


        • +2

          Вроде отвлекаться не нужно наоборот. А тут такой фактор смещения внимания с начала строки на середину...

          • +3
            Можно поставить фотку жены в бигудях и со скалкой в руках. Для мотивации. Скриншот выкладывать не буду — боюсь, карму сольют за такое.
            • +1
              боюсь, карму сольют за такое

              Дома?))
              • +1
                Нет, дома я скорее получу по карме той самой скалкой, отключу все эти свистоперделки — и арбайтен :)
        • +1
          «Я тут глянул на твоем экране в код… Там такаааая задница!»
    • +4

      Я тоже сперва удивлялся. Можете комментарии полистать здесь и в дубликатах. Это правда один из популярнейших реквестов, закрытый в 2017.1.

      • +4
        Если я правильно понял, все эти люди — пользователи macOS. Потому что у меня под Linux эта «Emoji & Symbols» не работает. У них там, видимо, есть системная палитра имодзи, и они привыкли вставлять их везде где нужно и ненужно, поэтому и требуют поддержки имодзи от IDEA.

        Я решил попробовать вставить какие-нибудь юникод-символы в свой код под Linux. Смотрите какая «красота»!



        1. Размер символа нестандартный, независимо от шрифта. Может быть дело в том, что в моей системе нет моноширинного юникод-шрифта, а с пайшармом он не поставляется.
        2. В режиме Insert курсор съезжает.
        3. Курсор почему-то в этой строке не двигается вправо с помощью клавиатуры. Только мышкой.

        Вот вам и имодзи… Картинки цветные добавили, а поддержку юникода так и не исправили.

        По ссылке есть упоротые комментарии вроде таких.
        Emojis will be very useful to have and AWESOME in our code comments!
        Emojis are great in logging output.

        Но есть и адекватные:
        I'd actually consider this a bug rather than a feature. We need to write specs to make sure that our system handles 4byte unicode characters properly and emoji's are perfect for that. Most other editors do support them properly.
        Not displaying anything for what are valid Unicode characters is really pretty broken.
        И я с ними согласен. Как я писал уже выше, я считаю это проблемой поддержки «нестандартных» символов, а не отсутствия имодзи в коде. Багу до сих пор не исправили, в общем-то.

        Мой скромное мнение таково, что для создания хорошего продукта у разработчика должен быть принцип. Нужно понимать, что всем сделать хорошо не получится, но если ты будешь следовать какому-то ясному представлению о том, каким должен быть хороший продукт, то он и будет хорошим. А когда стремишься за популярностью и следуешь всем запросам пользователей — получается винегрет из имодзи и багов.
        • 0

          Ну если бы следовали всем запросам пользователей, вы бы не ругались, что годами ждёте исправления десятка багов ;-) Вы правильно говорите: всем (например, линуксоидам) хорошо сделать не получится, но можно сделать хорошо маководам, и это уже хорошо.

          • 0
            А зачем распыляться тогда? Можно было пилить только под мак изначально. Я не говорю, что надо делать хорошо именно линуксоидам. Я говорю, что в проекте сейчас не видно четкой политки по поводу продукта, видна только четкая политика по поводу заработка денег. Это их личное дело, и в определённой ситуации это может быть хорошо для бизнеса, и может у них как раз такая ситуация. Но продукт превратится в… (здесь должен был быть «говорящий» юникод-символ, но Хабр эти символы зачем-то режет)
          • 0
            Под «всеми запросами пользователей» я имел в ввиду все в порядке количества голосов. Понятно, что все-все никто выполнять не будет.
            • 0

              За эмодзи было больше ста голосов. Думаю, почти все из них от маководов.

              • 0
                Ну так а я о чём? Наверное, я плохо выразил свою мысль, или Вы невнимательно прочитали.
                • +1

                  Вы плохо выразили. Я может тоже плохо выразил. Я вам и отрытых багов трёхлетней давности с 100+ голосов легко найду. Я к тому, что утверждение "а когда стремишься за популярностью и следуешь всем запросам пользователей" совершенно не относится к IDEA. Вон из свежего — поддержка Language server protocol, стильно, модно, молодёжно, баззворд, все хотят. А JetBrains не делает.

                  • –1
                    Ну, Вы сравнили… Там — 100 голосов за добавление иконок, а здесь — 20 голосов за поддержку протокола. Это задачи совершенно разных весовых категорий. Грубо говоря, там потратил 10 дней и получил профит 100 рублей, а здесь потратишь 100 дней и получишь 20 рублей.

                    Вы как-то сильно цепляетесь к словам, искажая суть. Забудьте про голоса — это всего лишь показатель востребованности фичи. Я говорю о том, что компания, вероятно, отдаёт предпочтение более доходным фичам (100/10 > 20/100), чем тем, которые делают продукт качественным. Это впечатление о продукте и компании в целом, составленное по таким вещам, как имодзи для маков, фоновые картинки, постоянная смена иконок, красивое окошко About и т.д. и т.п., и всё это на фоне отсутствия элементарных вещей вроде поиска коммита в истории файла или обратного поиска по истории в консоли Python. Это моё личное мнение, что всё это плохо для продукта. Ваше мнение может не совпадать с моим, это нормально.
                    • 0
                      Грубо говоря, там потратил 10 дней и получил профит 100 рублей, а здесь потратишь 100 дней и получишь 20 рублей.

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

                      • 0
                        Главное, чтобы Вы себе представляли. Сложность задачи добавления имодзи не меняет моего убеждения: эту фичу делали ради бабла, и к качеству продукта она не имеет никакого отношения, равно как и к качеству продуктов, созданных с помощью этой фичи. Раз language server protocol не реализовывают, значит это либо не интересно с финансовой точки зрения по соотношению выхлопа к затратам, либо всему своё время.
                        • –1
                          И даже если маководы и прочие почитатели иконок и качественного кода с иконками будут неистово минусовать меня, это не отменяет того факта, что свистоперделки не влияют на качество :) Есть мнение, а есть факты, которые кому-то обидно признавать. Такова жизнь :)
    • +1
      на самом деле, это даже не поддержка Emoji это поддержка UTF, с китайскими символами, например. Как верно заметили в комментах, читать реальный символ проще чем escape-последовательность.

      В той же винде сейчас используются символьные шрифты. Еслиб Студия их не поддерживала (вместе с эмоджи) то было бы очень печально.
      • +1

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

        • 0
          Китайские и раньше неплохо поддерживались

          Вопрос в том, как именно они поддерживались. Я тут недавно узнал, то Битрикс как-то так хитро поддержал китайский, что не может поддерживать эмоджи. Он тупо обрезал инфу когда встречал эмоджи(сейчас быстрый гуглинг не выдал мне этот баг)
      • +3
        читать реальный символ проще чем escape-последовательность.

        Это верно только для того ничтожного подмножества символов, которые не выглядят для читающего как непонятная наскальная живопись.


        Уверен, что любому человеку, не владеющему письменностью на основе китайской, оперировать escape-последовательностью \u732B будет намного проще, чем соответствующим ей иероглифом .
        Особенно, если таких escape-последовательностей будет не одна, а сотни и тысячи.

  • +2
    Время и комьюнити все равно расставят все по своим местам. Когда-то Consulo был единственной приличной возможностью писать нормально на C# на маке. Как только в Rider пофиксили некоторые критичные для нас вещи, мы всем отделом перелезли на него не задумываясь. По крайней мере за себя могу сказать — метрика WTF/sec в отношение IDE для меня при этом снизилась разительно.
    • 0
      Расскажите, пожалуйста, какие плюсы и минусы, и почему Вы перешли незадумываясь, и с чем связано изменение метрики WTF/sec.
      • +1
        Это было полгода назад, могу не все помнить хорошо. Скажем так, чтобы подключить Unity-проект к Consulo, основные клиенты которого Unity-разработчики, я все время плясал с бубном, потому что надо было проставить некий тайный набор галочек, а руководства по этому набору галочек все время оказывались устаревшими. Автоформатирование не имело нормальных настроек. Автокомплит и всякие generate code оставляли желать лучшего. О да, и еще почему-то в солюшене было шесть разные проектов, и новый файл, созданный не через IDE, приходилось добавлять каким-то нечеловечески изощренным способом в во все шесть, я даже скрипт на питоне написал, fixconsulo, который сравнивал контент .csproj и файлы на диске, и вносил необходимые изменения.

        А потом я открыл Юнити-проект в Райдере, и начал работать. WTF/sec не обнулилась, проблемы еще есть. Но однозначно снизилась.

        Да, возможно мой ответ получился чересчур эмоциональным, но переход от Consulo к Rider был для меня не менее эмоциональным, так что для меня это наиболее честный способ ответить на ваш вопрос.
        • +1
          1. Дока бывает отстает — да грешен.
          2. Насчет файлов — я так и не понял. Консула с самого начала не использует .csproj, ибо он хранит очень мало информации. Их юнити сам генерит, ничего не нужно делать. Консула хранит все в {root}/.consulo и все.
          3. Насчет бубна — не знаю. Сейчас что бы открыть проект нужно ппросто выбрать действий «Open or Import Project».
          4. Насчет генерации или комплишена можно написать в задачник и больше всего будет поправлено.

          Спасибо, anyway, прийму к сведению
          • 0
            2. Ошибся насчет файла, править приходилось .consulo/modules.xml. Там приходилось копаться в module-layer разных.
            4. Поздно :)

            Я перешел не потому что у меня был список замечаний. Меня не устраивало количество замечаний в секунду (минуту, час) работы. Сейчас я просто работаю.

            Кстати, вы никогда не думали устроиться на работу в JB? Возможно, этот союз принес бы больше пользы сообществу, чем конкуренция.
            • 0
              2. Там есть действия Reimport project. Который доступ из проекта. Да синхронизация при external change пока хромает. (эта информация доступная в доке). Кстати да — layers были убиты, мы с одним юзером пришли к другой логики генерации проекта на разные платформы.

              Длинная история. Сомневаюсь что проект тогда мой останется.
  • 0
    Насчет ИДЕ для питона смотреть сюда.

    • 0
      Это что-то экзотическое:
      Codimension is an experimental Python 2 IDE which focuses on smooth intergration of the traditional text base development process with a graphics involving one.

      http://codimension.org

      К тому же нет поддержки Git, а только SVN. И без vim mode я не проживу.
  • 0
    Валерий Семенчук просто неизвестный Герой.
    Я тоже бы хотел как он иметь свободного времени.

    Даже для того, чтобы Consulo просто поддерживать относительно Intellij Community Edition (CE) нужно просматривать коммитов 60 штук в день. А ведь ещё есть JetBrains Runtime Environment, на котором CE выполяется…

    • +1
      У меня не так много времени как кажется. Все же у меня есть работа в СПб. Да я стараюсь иметь полное представления что Вы делаете в IDEA (что его говорить во всех ваших открытых проектах — что бы понимать на какие грабли мне придется наступить в будущем).

    • 0
      Валерий Семенчук просто неизвестный Герой.
      К чему этот пафос? :) У него просто своего рода уникальный опыт, ведь мало кто берётся поддерживать такие проекты силами одного-двух человек. И он делает то, что некоторым (например, мне) кажется непосильным. Просто интересный опыт — форкнуть продукт такого уровня. При чем здесь героизм? :)

      Я тоже бы хотел как он иметь свободного времени.
      Вас заставляют работать? А Вы возьмите и увольтесь! Подрабатывайте один день в неделю фрилансером — уверен, на самое необходимое хватит. Вы за несколько часов легко заработаете столько, сколько многие получают в месяц. И будет у Вас вагон времени! :)
      Нам всем не хватает времени, и каждый сам решает, на что его тратить. У Вас нет свободного времени? Значит оно занято чем-то важным для Вас. А свободное время есть только у бездельников.
  • +3
    Я Валерия знаю виртуально достаточно давно и про разработку ИДЕ тоже знаю достаточно давно. Тянуть одним свой форк для R# на чистом энтузиазме и свободном времени кажется мне в долгосрочной перспективе бесполезным героизмом. Мне его времени просто жалко. Всё же я искренне надеюсь, что он найдёт возможность вырасти в полноценную организацию/проект по разработке IDE.
  • +2
    Я Валерия знаю виртуально достаточно давно


    Очень жаль что только виртуально.

    Тянуть одним свой форк для R# на чистом энтузиазме и свободном времени кажется мне в долгосрочной перспективе бесполезным героизмом. Мне его времени просто жалко.


    Это не только R#. За это время я много чего выучил, познакомился с кучей платформ и фреймворков. В свое время я помогал хорошим людям работать с IDEA API. Нельзя жалеть. Кто-то выиграл, кто-то проиграл (или все же выиграл?).

    Когда то я пытался попасть к Вам, но видимо плохо старался (да и в тот момент не было оф. опыта работы).

    gl

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.