Среди потока эмоциональных комментариев меня особо заинтересовал один — никем не замеченный, в котором пользователь 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 — хороших и разных!
Комментарии (184)
symbix
16.04.2017 00:21+27Как сделать свою IDE уровня IDEA? Форкнуть IDEA :)
Не, автор форка молодец, разобраться в такой куче кода одному и поддерживать это ох как непросто.
Но заголовок несколько желтый :)
raacer
16.04.2017 00:34Ну, Вы всё верно поняли :) Проект получается как бы и твой (ты же им управляешь), но уровень уже сразу недетский. Это хорошо, что они выложили исходники. Каждый теперь имеет возможность творить. Хотя, всё равно я себе пока слабо представляю, как поддерживать такой проект силами одного-двух человек. Я бы, например, даже не взялся бы форкнуть какой-нибудь фреймвёрк наподобие Django, а у IDEA Community Edition архивчик исходников в несколько десятков раз тяжелее.
dmxrand
16.04.2017 12:18Немного не в тему, но мне кажется Django в наше время форкать уже поздно. Сейчас надо на базе aiohttp чтонибудь делать вменяемое. Лично у меня есть идеи, но нет времени и не уверен, что справлюсь один.
yurtaev
16.04.2017 12:31Всё что нужно это сделать django 3.0 где всё будет с
asyncio
… Ради интереса пробовал переделать core часть работы с http запросами на асинхронную модель и как мне показалось это возможно сделать. Самое сложно это переделать работу с базой, думал о том что бы оставить интерфейс api без изменений но только завернуть в корутины и тогда просто во всех местах нужно использоватьqs = await User.objects.all()
, ну и все остальные места которые подразумевают блокировку. Но опять же, это всё в теории...
VISTALL
16.04.2017 13:12По опыту скажу что форкнуть это оказалось самым простым. А вот все поднять — что бы работали плагины/обновления/репортинг и многое другое куда сложней (ибо я не юзаю ниодин из сервисов JB)
mwizard
16.04.2017 00:39+13Главное — это нескучные темы оформления. А то надоела эта скучная стандартная Darcula — кодишь, кодишь, все одно и то же… Неинтересно.
dmitry_ch
16.04.2017 14:19Еще немного, и будет уже не о том жалоба: скажете, что я голосовому интерфейсу говорю, какую программу написать, а он кнопки в программе ставит некрасивые.
"Окей, Гугл,Сири,Эй, Кортана,Уважаемый PyCharm, программа для подсчета звезд на небе..." упс, упал!
Alesh
16.04.2017 01:41-7Саблайм уже совсем не плох стал. Если есть время потратить на подгонку то получается уже сопоставимое с ПиЧармом и СиЛионом. И не такое прожорливое, вполне работающее даже на нетбуке.
raacer
16.04.2017 01:46+4Уже обсуждали, в т.ч. в моём прошлом посте, что Sublime — не IDE, и что многие вещи там вообще невозможны в виде плагинов из-за ограниченности API.
Alesh
16.04.2017 02:06-2Использую ее именно как IDE, единственное наверно что там не так и не хватает, это не возможность наворотить в сайдебаре и в диалоговых формах что-то типа браузера классов и модулей. Нормального отладчика нет, хотя я например представляю как его реализовать при существующих ограничениях API и думаю появится рано или поздно вменяемый плагин. А что еще? autocomplete, linting, build system настраивается вполне приемлемо.
raacer
16.04.2017 02:37+11Отсутствие нормально отладчика — это уже очень много (интеграция отладчика в среду). Структура классов — тоже нужная вещь, и поиск по тексту не заменит полноценной навигации по классам, тут важно автоматизировать отслеживание наследования, а не заставлять постоянно удерживать в голове всю иерархию классов целиком и ничего не забыть.
Что еще? Хм… Я люблю трёхколоночный мёрж со стандартным редактором внутри (интеграция VCS с редактором), мне нравится возможность открыть файл или diff из истории Git (интеграция Git со средой). Автодополнение и переход на объявление в интерактивной консоли Python довольно приятны (интеграция функций редактора с консолью) — нет ощущения, что уходишь из IDE в консоль, как это бывает в других «IDE». Представление результата выполнения тестов в виде сворачиваемого дерева вместо сплошного полотна текста, с возможностью перезапустить конкретный тест (интеграция тестов с IDE). В консоли запуска приложения в случае дампа ошибки можно кликнуть на файл прямо в даме и перейти на него (интеграция stdout со средой). Не уверен, что всё это есть в Sublime, может только какая-то часть — и то не в лучшем виде.
Это то, что я вспомнил, бегло глядя на интерфейс. В PyCharm большое количество связей между разными инструментами, которые позволяют использовать их одновременно, а не по отдельности. То, что это работает не всегда и не везде хорошо, а в каких-то случаях совершенно плохо или вообще не работает — это тема предыдущего поста. Но вся эта интеграция есть, так или иначе, и это называется IDE.
Кто-то советовал посмотреть в сторону WingIDE в качестве альтернативы. Ну, я скачал, запустил, тыкнул в меню git — и что я увидел? Он тупо запускает команды git в своём эмуляторе терминала, который не умеет ничего, кроме отображения текста. Даже подсветки нет. То же самое и с остальными инструментами: есть пункты меню и окна, куда выводится результат выполнения команд. В лучшем случае он вставит имя файла в команду — вот и вся интеграция. С таким же успехом можно прилепить планшет на дверь холодильника, и назвать это умным холодильником или как-то так. Это как пример того, что не является интеграцией в моём понимании.nikolay_karelin
16.04.2017 21:54С Visual Studio Code не пробовали работать? Там есть и поддержка Python с отладкой и git
raacer
16.04.2017 22:05Еще не пробовал. Но может быть и попробую. Просто у меня сформировалась жуткая аллергия на MS: как услышу — так сразу руки чешутся. Это связано с повсеместной закрытостью их технологий, исходных кодов, форматов, алгоритмов и т.д. Считаете, с Visual Studio Code они исправились, и стоит потратить время на изучение этого продукта?
nikolay_karelin
16.04.2017 22:16+1Я сам работал ещё очень мало, но первое впечатление — исправляются :)
Поддержка Python там сторонний плагин, но разрабатывался при финансовой поддержке Microsoft. Собственно, я заинтересовался после интервью с автором плагина на подкасте talkpythontome.
Первое впечатление от работы и просмотра документации — пробовать стоит.
exfizik
18.04.2017 02:51+2Я не против Visual Studio Code в принципе, но только вопрос — зачем его пробовать человеку, которые [полностью] доволен PyCharm? Там есть какие-то киллер фичи, которых нет в PyCharm?
raacer
18.04.2017 12:10Кто полностью доволен?
exfizik
18.04.2017 15:53Например, я :) Но вообще, думаю, что много кто им полностью доволен. Особенно в сравнении с альтернативами.
raacer
18.04.2017 16:38Ну замечательно, не пробуйте ничего больше, конечно.
exfizik
18.04.2017 17:55Редакторов и (недо)IDE для Питона — вагон и маленькая тележка; какие-то я пробовал, какие-то нет. Лично у меня отлажен рабочий процесс в PyCharm, поэтому и вопрос был конкретный — есть ли какие-то сильные преимущества у Visual Studio Code по сравнению с PyCharm?
raacer
18.04.2017 18:06Ясно. Но мне кажется, если Вас всё устраивает, то Вам преимущества не нужны. Вот если б Вы чем-то были неудовлетворены, тогла можно было бы пробовать. А так на любое предлодение новой фичи вы можете ответить: «Круто, но зачем? Меня и так всё устраивает»
exfizik
18.04.2017 19:05От фичи зависит. Одно дело —
новые «нескучные обои»какие-то мелкие удобства редактора, другое дело — что-то конкретное, повышающее производительность или хитрый анализ кода какой-нибудь или интеграция каких-нибудь инструментов, которых нет в Пайчарме. Во втором случае я как минимум готов попробовать. Хотя тяжело, конечно, такие гипотетические фичи обсуждать.
raacer
18.04.2017 18:26Я себе уже установил Code, следующую задачу буду пробовать сделать в нём. Первое, что взбрело в голову из недавнего — это поиск по git history конкретного файла. Я выбрал файл, открыл историю, и что Вы думаете? Оно открылось посредством Command Palette, вокруг которой, похоже, в этой IDE всё и крутится. То есть, там сразу можно вводить текст, и коммиты фильтруются по нему. Далее — Enter на нужном файле, и снова ввод нужной команды.
Отвечаю на ваш вопрос: есть ли преимущества? Да, есть:
1. Управление посредством набора команд, а не тыканья мышкой — этакий симбиоз командной строки и графического интерфейса. Это на самом деле круто, давно мечтал о чём-то подобном. Надо подольше поработать с этим, чтобы понять, насколько это хорошо.
2. Имеется поиск по истории отдельного файла.bano-notit
18.04.2017 20:13+1Ну так на секундочку, в PC можно совершенно спокойно поставить горячую клавишу на совершенно любое действие, которое есть в gui.
raacer
18.04.2017 20:22Я не могу их запомнить
bano-notit
18.04.2017 20:23А в vs можете? А почему у Вас такая избирательная память?
raacer
18.04.2017 20:38Не понимаю, о чём Вы…
bano-notit
18.04.2017 20:58есть ли какие-то сильные преимущества у Visual Studio Code по сравнению с PyCharm?
Управление посредством набора команд, а не тыканья мышкой — этакий симбиоз командной строки и графического интерфейса.Я говорю, что в PC можно совершенно спокойно поставить любой бинд на любой кусок графического интерфейса, то есть того первого превосходства VS над PC, который Вы показали, по факту нету, потому что в PC это тоже есть.
raacer
18.04.2017 21:15Я не показывал преимущество хоткеев. Набор команд текстом — это не хоткеи.
bano-notit
23.04.2017 20:50Ну да, согласен, иногда не все можно запомнить, тогда можно использовать специальную вещь, аналог command plate в сублайме, вызывается на
ctrl + shft + a
.
nikolay_karelin
19.04.2017 08:52+1Когда человек доволен полностью (или почти) какой-то технологией или решением, то скорее всего искать другие не нужно ;)
Что стало если не "киллер", то просто важными фичами Visual Studio Code для меня:
1) Гораздо меньший размер в памяти, по сравнению с PyCharm и Eclipse. Может и не слишком важно на современных компьютерах, но в моем случае бывает нужно иметь еще пару очень тяжелых процессов и полгигабайта PyCharm становятся неудобными.
2) Наличие отладки удаленных и встроенных (embedded) интерпретаторов Python без необходимости доплачивать. Опять таки, это может быть не проблемой если нужна версия Pro по каким-то еще причинам, но для меня и моих коллег кроме отладки хватает CE.
3) Возможность в отладчике указать что запустить и куда потом подключится (снова для embedded интерпретатора). Насколько я знаю, PyCharm так не умеет. Возможно вещь нишевая, но нам надо.
4) Более широкая поддержка других языков, включая экзотику, например Tcl — мало кому надо, но у нас в проекте есть.
5) По мелочам — нативная поддержка Jupyter. Достаточно шустрый — и стартует и работает (последнее — субъективно) быстрее PyCharm.
Повторюсь: это все достаточно субъективно, но меня заинтересовало.
ad1Dima
18.04.2017 09:48+1Если что, Visual Studio Code лежит тут
Редактор, который в нем используется лежит отдельно. Можно на сайты встраивать.
Ну и вообще, можете на GitHub`е полазитьShannon
19.04.2017 07:47Ого, не знал что редактор лежит отдельно и его можно легко встроить на страницу
raacer
16.04.2017 02:42+2Ещё в PyCharm очень удобный commit: там сразу и список файлов, и diff, и внести изменения можно, и отметить нужные файлы для коммита, и сообщение ввести, в т.ч. повторить, и параметры выбрать нужные.
spmbt
16.04.2017 04:07А никто не знает, как в этой IDE исправить такой «баг» (неуправляемость или странная фича) — когда нажиамешь при невыделенном тексте Ctrl-C, IDE считает, что я хочу выделить строку и скопировать её. Но я никогда не хочу копировать строку, а если надо, я бы её сначала выделил. Всегда этот Ctrl-C означает промахнувшийся Ctrl-V, и, следовательно, означет потерю буфера обмена. Как бы отключить эту чрезвычайно умную фичу?
a553
16.04.2017 04:30+1Этот ответ? В VS тоже это есть.
spmbt
16.04.2017 04:59+1Он самый. Спасибо, ну и мудрёно же было её найти. Все настройки облазил — нет такой. И как на stackoverflow найти — тоже не очевидно, как сформулировать: ).
a1111exe
16.04.2017 08:37+4Вне связи с IDE, сегодня не представляю себе работы с компьютером без clipboard-менеджера (запись и быстрый доступ к истории буфера). Сам использую clipit на Ubuntu. Знакомые на Windows пользуются Ditto.
Jodes
16.04.2017 09:32+1Что только люди не форкнут, лишь бы не юзать Eclipse :)
s-kozlov
16.04.2017 10:11+51Это многое говорит об Eclipse…
kloppspb
16.04.2017 16:02-13В 99% случаев это говорит о неумении готовить…
s-kozlov
17.04.2017 04:56+5Совершенно верно. Если блюдо в ресторане невозможно есть, то 99% это говорит о неумении готовить. Только не умеет готовить повар, а я просто пришел поесть, готов заплатить за это свои деньги и не обязан уметь готовить.
kloppspb
18.04.2017 19:31Шайтан!
Оно сегодня упало с ошибкой JRE :)
Впрочем, точно так же свалилась IDEA.
Но тут они равны.lany
21.04.2017 13:24+2Не, не равны. Эклипс всегда может отмазаться, что они тут ни при чём, это джава. А IDEA не может — у неё ж свой форк джавы и баги в джаве тоже можно фиксать :-)
kloppspb
23.04.2017 21:09Так грохнулись они одновременно, сразу после обновления openjdk :)
Впрочем, эти детали для меня только внешняя сторона вопроса. Который год уже честно пытаюсь поставить кадждую новую версию от JB, час-два трачу на попытки привести к юзабельному состоянию — не получается :( Возможно, дело просто в древнючем наборе, который никак не пролучается уложить в джетбрейн: C (а там valgrind уже появился?), Perl, PHP, XSLT (сам знаю что ужас), JS. В одном флаконе, само собой.
Время отклика — отдельный вопрос. В вопросе CLion vs CDT последний выигрывает офигенно, даже на древнючем Thinkpad t420 (дебиан, 12 Gb памяти).develop7
24.04.2017 17:27за вычетом C (CLion — отдельная IDE и поддерживает только CMake) всё есть (плагин для Perl видел краем уха, выглядело прилично)
Время отклика — отдельный вопрос
больше RAM > больше файлов (и индексов) оседает в кэше > меньше время отклика. на моих 32G оно вполне себе приемлемо (учитывая ещё и стопицот вкладок в браузере)
grossws
24.04.2017 21:09У меня хром жрёт ощутимо больше чем IDEA.
Но CLion 2017.1.1 как-то регулярно фризится на несколько секунд без видимой причины. Power save mode ничего существенно не меняет. И проект не экстремально большой (~10k файлов, ~4M строк в
.c
,.h
и.cpp
). На 16G RAM и SSD.
Jodes
16.04.2017 21:55DLTK и иже с ним от Eclipse, позволит написать вобщем то любую IDE. Было бы желание.
LionZXY
16.04.2017 09:36+1До сих пор тикет с профайлером для CLion висит с 2014 года…
lookid
16.04.2017 11:10-22И что дальше? Идите и сделайте. Или разработчики должны работать в 10 раз больше только из-за того, что у нас 75% егэ и дипломов покупают, а потом ничего ответить на собеседовании не могут?
impwx
16.04.2017 12:14Назвать её полноценной IDE на базе IntelliJ я не могу, ибо весь анализ (и не только) лежит на плечах Resharper, который запускается параллельно с Rider.
А как иначе? Переписать весь R# на Java и поддерживать две базы кода такого размера только ради идеи «полноценной IDE»?VISTALL
16.04.2017 12:30+1А кто сказал что нужно весь R#? R# — это Platform + реализация C# (и другие языки), вот как раз их и нужно. Даже силами одного человека, это неплохо получилось (но есть куда расти)
impwx
16.04.2017 12:51+3Не поймите неправильно. То, что вы делаете — это героический поступок, но странно ожидать такого от коммерческой компании. В чем практическое преимущество вашего решения — оно кардинально быстрее, или потребляет меньше памяти, или что-то еще?
raacer
16.04.2017 13:01-3странно ожидать такого от коммерческой компании
А кто от них чего-то ожидает? Мне кажется, это личные трудности компании. Не сделают они — сделает кто-то другой. Был бы смысл, а нишу заполнят. А чьи-то личные желания — это просто желания. Которые в итоге и становятся движущей силой конкурирующих продуктов.impwx
16.04.2017 15:02+1Вы мне так и не объяснили, какие «личные трудности компании» возникли у Jetbrains от выбранного ими подхода и почему описанный в статье подход кардинально лучше?
raacer
16.04.2017 15:13-5А разве я сказал, что эти трудности возникли? Может они наоборот решились :) Я понятия не имею. Трудность может быть в том, что проснутся конкуренты. Уже вот Consula есть, а завтра может быть я напишу IDE для Python чисто на Python. А может и не напишу. Принятие тех или иных решений — это их дело, их трудности. Если завтра выйдет новый серьёзный игрок и уведёт всех клиентов — это их трудности. Всегда есть риск, и никто не знает, что будет завтра.
VISTALL
16.04.2017 13:03Тоисть поддерживать зоопарк Mono + .NET на разных операционках лучше? Я бы не сказал что эти виртуалки стабильней и юзабельней чем JVM. Это дело вкуса и выбора.
impwx
16.04.2017 14:33Это замечательно, что вам нравится то, что и как вы делаете. Но я уверен, что Jetbrains выбрали такой подход не из вкусовых соображений, а руководствуясь многолетним опытом и экономической целесообразностью. Учитывая, что MS теперь активно развивает кроссплатформенные реализации .NET, проблема поддержки «зоопарка Mono» уже не выглядит такой страшной.
VISTALL
16.04.2017 14:55Увы .NET Core ещё не готов и думаю пройдет лет 5-10, что бы можно было использовать в замен .NET/Mono (нету UI, нету полноценного дебагера).
Увы2 Rider подгружает проект в той версии .NET для которого он написан (то есть что бы открыть Mono проект — там нужен полноценный Mono Runtime, и так далее)
kozzztik
16.04.2017 13:23+4Качество в последнее время действительно расстраивает, хотя лучше PyCharm для питона нет ничего. В последнем релизе перестали работать тесты на pytest. Как это возможно в релизе меня озадачило (они что, не тестируют релизы вообще что ли?) и я полез в код, благо мне вывалился стек трейс на какой то внутренний питон скрипт, который я могу прямо в PyCharm посмотреть. Код меня ужаснул, сам PyCharm подсвечивает его как новогоднюю елку. PEP-8? нет, не слышали от слова совсем. Прогнать код pylint? зачем? Судя по всему даже warnings PyCharmа для своего кода они не используют, потому что через него смотреть на этот код невозможно.
raacer
16.04.2017 13:35А у меня с тестами постоянная беда в том, что не могу перезапустить отдельно взятый тест. Всё вместе работает, а перезапускаю отдельный тест — ошибка, не может его найти.
kozzztik
16.04.2017 13:43Таже ерунда. Если запуск из списка тестов вроде поправили, то из кода не запускает ни в какую.
kozzztik
16.04.2017 13:53+2Только что мне выдало прекрасное: 1310 of 1157 tests passed. Прям Стахановское движение.
NLO
16.04.2017 14:45НЛО прилетело и опубликовало эту надпись здесь
raacer
16.04.2017 15:00+7Спасибо, что открыли мне глаза. Подумаю о переходе на Notepad++. И на Windows заодно, а то задолбал этот зоопарк DE и эта неудобная консоль.
mwizard
16.04.2017 15:36+9Notepad++ для позеров, переходите на чистый Notepad.
Lamaster
17.04.2017 12:58+1Зачем notepad, когда есть cat с выводом в файл?
bano-notit
16.04.2017 15:44+2Как ни странно, а я вот наоборот с него перешёл наоборот в IDE.
Не помню точно почему, но теперь меня на JB уже держит чисто привычка и удобства из коробочки. Да и ещё прикол в том, что перешёл с win, и возвращаться не собираюсь.
А есть там плагины для работы с diff в git, git, autocomplite нормальный, с учётом контекстов использования этого слова? Просто вспомнил как он делал, да и сублайм сейчас так делает: объявляешь где-то переменную и потом она тебя по всему проекту преследует, мешаясь при этом с словами, зарезервированными языком.
NLO
16.04.2017 16:01НЛО прилетело и опубликовало эту надпись здесь
bano-notit
16.04.2017 16:13+1Хм, отдельные клиенты для git — не моё, делать отдельные "макросы", вроде так они в n++ называются, для того, что может сработать не так, да и интеграции такой, как у JB не получится, ведь это нужно открывать отдельную прогу, отдельный интерфейс, отдельные клавиши. Нарушается эффект, как кто-то говорил вверху, "нахождения в ide". То есть когда я сижу в своём ws, я выхожу только в браузер, и то с неохотой. Специально настраиваю систему сборки так, чтобы даже в браузере ничего не приходилось нажимать. То есть теоретически, можно вообще на отдельный экран выкурить браузер, а другой полностью ws занять и не нажимать ничего, кроме горячих клавиш… Эх мечты, мечты...
raacer
16.04.2017 16:18Простите, какие ещё черепашки??? :-D
mwizard
16.04.2017 16:25+2TortoiseGit и TortoiseHg — графические клиенты под windows для тех, кто не осилил консоль.
NLO
16.04.2017 16:32НЛО прилетело и опубликовало эту надпись здесь
raacer
16.04.2017 16:50+3Хорошо. И что делать, если перед коммитом черепашка показывает Вам дифф (она ведь умеет это делать?), Вы проводите ревизию, и видите, что одно изменение следует доработать? Вы открываете Notepad++ и ищете этот файл там, либо пользуетесь редактором черепашки (если он там вообще есть), теряя весь функционал любимого редактора (если в нём вообще есть какой-то функционал, кроме редактирования текста). А я всё делаю сразу в окне коммита, таким образом имею прекрасную поддержку стратегии частых коммитов. Получить такой функционал от несвязанных инструментов практически невозможно. Черепашки может быть в чём-то и удобны сами по себе в сравнении с консолью, но они никогда не заменят интегрированные средства разработки. Самая суть любой IDE — в первой букве этой аббревиатуры.
NLO
16.04.2017 16:13НЛО прилетело и опубликовало эту надпись здесь
bano-notit
16.04.2017 16:16Я тоже вронтэндер в вебе. Бывает попишу что-нибудь на ноде, но по большей части сижу на React (JSX соответственно), Vue, Sass, то есть на вещах, которые в n++ скорее всего никто интегрировать, скорее всего, не будет, ибо это, так сказать, мимолётные моднявые технологии.
NLO
16.04.2017 16:20НЛО прилетело и опубликовало эту надпись здесь
bano-notit
16.04.2017 16:29Ну не знаю, проблем с ws у меня нету. Возможно из-за привычки, то есть я спокойно набираю текст, и, например, заставляю ws самого подгружать npm-модули и запихивать их в package.json, который, последнее время, стал нужным даже во фронте.
На счёт скорости реакции, мне кажется, что тут зависит уже от системы сборки, одно дело поставить её запуск на горячую клавишу, другое просто вбиватьnpm run build
в консоли каждый раз. И для исправления багов мне jb больше даёт возможностей. Например посмотреть откуда прилетели эти данные, или где это я использовал эту переменную, и где она могла перезаписаться. В n++ такой слежки над теми же переменными, скорее всего, нету. А это очень удобно.
kozzztik
16.04.2017 16:24-1простите, но чем IDE хуже notepad++? При том на столько сильно, что «просто нереально»?
NLO
16.04.2017 16:25НЛО прилетело и опубликовало эту надпись здесь
raacer
16.04.2017 16:53+1ide пользовать в таких проектах просто нереально
NLO
16.04.2017 17:08НЛО прилетело и опубликовало эту надпись здесь
kozzztik
16.04.2017 17:12+2это как то ответит на оригинальный вопрос?
NLO
16.04.2017 17:27НЛО прилетело и опубликовало эту надпись здесь
NLO
16.04.2017 17:33НЛО прилетело и опубликовало эту надпись здесь
NLO
16.04.2017 17:41НЛО прилетело и опубликовало эту надпись здесь
bano-notit
16.04.2017 17:46Что именно подразумевается под "сетапом"?
NLO
16.04.2017 17:54НЛО прилетело и опубликовало эту надпись здесь
bano-notit
16.04.2017 18:03+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 и этого мне хватает не только для работы, но и для повеселится.
kozzztik
16.04.2017 18:59Не очень понятно как мой кейс связан с вашим. Но ок, пусть будет.
Ubuntu+PyCharm+Docker. Внутри питон разных версий в зависимости от проекта, и зоопарк внешних сервисов в контейнерах. СI, покрытие тестами, pylint, все вполне заурядно.
По прежнему не понимаю как это поможет продемонстрировать кейс, в котором «ide использовать нереально»bano-notit
16.04.2017 19:08-1Блин, Вы меня конечно извините, но я до сих пор не понимаю слова "кейс". Можете прояснить?
raacer
16.04.2017 19:21case — случай; обстоятельство, положение; дело, история; факт
bano-notit
16.04.2017 19:25Даже с переводом не очень встраивается в русский язык… Особенно, когда у него столько много значений.
kozzztik
17.04.2017 13:24+1простите, сам ненавижу эту хурму, но когда пол дня говоришь по английски (а иногда и весь день), от англицизмов очень сложно отвязаться.
koldoon
16.04.2017 18:13+5"— Имодзи — часто запрашиваемая фича." Господи, кто эти люди? Зачем _это_ в IDE? Нет, вот правда, или я что-то не понимаю? Объясните кто-нибудь, прошу!
raacer
16.04.2017 18:18-2Говорят, сейчас популярно писать ботов, и это как-то связано. Как именно — я тоже не понимаю. Видимо, имодзи увеличивают продажи.
Сейчас, например, всё больше девушек идёт в программисты. А для многих девушек важно, чтобы их любимый ноут был розовым и пушистым, и чтобы фон сочетался с цветом клавиатуры. Так, возможно, и появилась возможность устанавливать фоновую картинку редактора.arcater
16.04.2017 19:56+3Что-бы символы в IDE отображались корректно, а не как квадратики.
Пример из бота:
https://habrastorage.org/getpro/habr/comment_images/ae3/2bb/aa7/ae32bbaa7143e6a736228b3179f49817.png
Теперь, без поддержки emoji
https://habrastorage.org/getpro/habr/comment_images/e46/299/c1d/e46299c1de43be3fb34a66ccac5f3f36.png
А в DataGrip от JetBrains все будет нормально отображаться. Надеюсь, теперь вам стало понятнее.raacer
16.04.2017 20:06+3Нет, мне решительно непонятно. Чтобы символы отображались корректно — есть эскейп-последовательности. В коде мне сто лет не нужно смотреть на эти картинки. Для меня будет даже лучше, если будет написано «EMOJI_SAD» или «IMOJI_PANDA». Так мне легче будет найти нужный текст поиском. При том, как в IDEA хромает поддержка их же фич в разных модулях, я бы предпочёл пользоваться старым добрым текстом, чем страдать из-за того, что они где-то забудут прикрутить имодзи, и я не смогу найти поиском нужный мне файл. И вообще, что в моей программистской практике это не решает ровным счетом ничего. Я недавно выводил красный текст в консоль, и представьте себе: я прекрасно обошёлся словом «red», без раскраски этого слова в красный цвет. Зачем мне эти картинки в коде?
arcater
16.04.2017 20:49+1Дело вкуса. Может кому то удобнее escape-последовательность, кому то, когда он видит в IDE тоже самое, что и в Discord'е, например. А также обычные пользователя любят редактировать этих ботов под себя, а теперь представьте, что вместо нормальных иконок была бы escape-последовательность, у них случиться конфуз. А так – никакой проблемы с заменой не возникает. С поиском по emoji проблем не будет, даже если какой-то textbox поиска не будет поддерживать emoji и вы будите видеть квардат, поиск все равно будет успешным.
Вообщем привыкайте, скоро увидим emoji в комментарий кода, на дворе 2к17.raacer
16.04.2017 21:16-2Дело вкуса.
Нет, это не дело вкуса, это вопрос качества программного кода. Вы показали код, где иконки вшиты хардкодом вместо того, чтобы использовать константы.
А также обычные пользователя любят редактировать этих ботов под себя, а теперь представьте, что вместо нормальных иконок была бы escape-последовательность, у них случиться конфуз.
А теперь представьте, что ваша любимая IDE будет затачиваться под домохозяек. Для домохозяек нужно делать простые редакторы с поддержкой иконок. Я буду одним из первых, кто удалит PyCharm, как только его станут делать проще, потому что обычные пользователи возмущаются, что не могут ничего понять.
С поиском по emoji проблем не будет, даже если какой-то textbox поиска не будет поддерживать emoji и вы будите видеть квардат, поиск все равно будет успешным.
Спасибо, всегда мечтал копипастить «квадратики», и пытаться понять, где у меня какой квадратик.
Вообщем привыкайте, скоро увидим emoji в комментарий кода, на дворе 2к17.
Да, мне доводилось видеть русский и итальянский юникод в комментариях. Зачем мне привыкать к непрофессионалам? Я их обхожу десятой дорогой — себе дешевле.
И, кстати, слова «вообщем» нет. От куда вы его все берёте? Вы так и произносите «вообщем»?Maccimo
17.04.2017 03:22+1Позволю себе заметить, что пробела в слове «откуда» тоже нет.
А теперь представьте, что ваша любимая IDE будет затачиваться под домохозяек. Для домохозяек нужно делать простые редакторы с поддержкой иконок.
Уже можно начинать подыскивать альтернативы, курс на регулярное добавление «красивеньких» свистоперделок виден невооружённым взглядом.
Я буду одним из первых, кто удалит PyCharm, как только его станут делать проще, потому что обычные пользователи возмущаются, что не могут ничего понять.
Это работает не так.
Не пользователи возмущаются, а специально обученные человеки за зряплату исследуют, что бы такого добавить/изменить/удалить для вау-эффекта в наиболее многочисленных категориях пользователей, побуждающего продлить лицензию.
Новые блёклые иконки, от которых через несколько минут начинают кровоточить глаза, тому пример.
raacer
17.04.2017 12:42Позволю себе заметить, что пробела в слове «откуда» тоже нет.
Точно!!! :-D Но хотя бы звучит также :)
Это работает не так. Не пользователи возмущаются, а специально обученные человеки за зряплату исследуют
Полагаю, что так и есть, по крайней мере в большинстве подобных случаев. Но всё равно удалю! :-D
raacer
17.04.2017 15:54+1Знаете, я скептически отношусь к тому, то моя персона или моя активность может заинтересовать компанию JetBrains. Но уже второй раз после публикации мною поста касательно их продуктов я наблюдаю активность сразу в нескольких моих тикетах: переназначение, закрытие дубликатов, и т.д. К тому же, в комментариях под прошлым постом мне ясно дали понять, что идентифицировали меня ) Первый раз я подумал, что это случайность. Второй раз — совпадение. Надо написать еще один подобный пост, чтобы проверить, есть ли здесь закономерность. :-D
asmrnv777
16.04.2017 21:15+2Я столкнулся на днях с очень даже реальным юзкейсом. Нужно было в строковые ресурсы Android-проекта (в Android Studio) запихнуть текст с кучей emoji (текст для шаринга в соц. сеточки), и простой копипастой нифига не получилось :(
raacer
16.04.2017 21:19А при чём тут отображение иконок? Просто редактор негодный, не поддерживает ввод неизвестных ему символов.
asmrnv777
16.04.2017 21:26Оно не только не отображалось, но еще и собираться отказывалось :) Уж не знаю, в чем конкретно проблема — в системе сборки ведроида или же в Android Studio, который на последней версии IDEA основан, так далеко не копал, но проблема с emoji реально есть, и не только (и даже не столько) с отображением в редакторе.
raacer
16.04.2017 21:30Вот и я говорю: не столько с отображением, сколько вообще с неожиданными символами. Получается, любой неожиданный символ в строке сразу же приведёт как невозможности собрать проект. Это проблема совсем другого уровня: качества IDE, а не поддержки emoji. Понятно, что всего не предусмотришь, но баги надо исправлять.
lgorSL
18.04.2017 23:22Уж не знаю, в чем конкретно проблема — в системе сборки ведроида или же в Android Studio.
Откройте консоль в папке с проектом и напишите что-нибудь типа "gradlew build".
raacer
16.04.2017 20:13-2А еще, такие вещи, как повторяющиеся «new RaceAnimal» в вашем примере, я обычно зашиваю в простой массив ключевых слов и простой цикл по этому списку. Например так:
animal_names = ['unicorn', 'ladibird', 'dolphin', 'koala', 'pengu', 'bear', 'panda', 'crab'] animals = [Animal(name, emoji[name]) for name in animal_names]
Две краткие строки вместо этого вашего тихого ужаса. И картинки здесь вообще не нужны.raacer
16.04.2017 21:25-2Быдлокодер, налетай — минуса выставляй! :-D
Ясное дело, все себя программистами мнят великими, а как понаделают простыней копипастами — другим потом полдня надо скролить, чтобы что-то в их коде найти и понять.artspb
16.04.2017 22:34+2Минус мой, за диагноз по фотографии — спасибо. А если по делу, то наглядность (читаемость) кода — очень важная характеристика, и на картинке код гораздо нагляднее, чем приведеннный Вами. Тем не менее, это не делает один из примеров абстрактно лучше или хуже. Все зависит от конкретной ситуации, в которой этот код используется. Однако раньше IDE позволяла писать только один способом, теперь обоими. И мне категорически не понятны Ваши страдания по этому поводу.
raacer
16.04.2017 22:57Спасибо за отклик.
Диагноз? Я высказал своё отношение к этому коду. Но кого-то это сразу зацепило, почему-то.
Наглядность в приведенном коде совершенно ненужная. На что там глядеть? В коде нужна наглядность логики, а не наглядность текста. Такой код с дублированием кода усложняет сопровождение. Но это приходит с опытом. Вы уж простите и не обижайтесь, но такова жизнь: опыт приобретается с годами практики. Меня тоже в своё время били по рукам за такие штуки, а я не понимал за что. Любая копипаста вредна для проекта, если это не одноразовый скрипт. Если Вам непривычно видеть list comprehension (не знаю как по-русски), можно вот так:
animal_names = ['unicorn', 'ladibird', 'dolphin', 'koala', 'pengu'] animals = [ Animal(name=name, icon=emoji[name]) for name in animal_names ]
Много способов сделать одну и ту же вещь — это большая проблема, так рождается зоопарк решений в одном проекте.
Страдания по поводу имодзи? Да что Вы, никаких страданий! :) Мне всё равно, поддерживает IDEA имодзи или нет. Мне хочется, чтобы баги исправили. Но разрабы говорят, что у них не хватает рук, и иконки более приоритетны.
bano-notit
16.04.2017 19:09+1Я тоже не понимаю этих людей, так же как и людей с фоновым рисунком в редакторе… Ну на кой это нужно программисту?
raacer
16.04.2017 19:32+6Как-то так, наверное…
bano-notit
16.04.2017 19:33+2Вроде отвлекаться не нужно наоборот. А тут такой фактор смещения внимания с начала строки на середину...
raacer
16.04.2017 19:47+3Можно поставить фотку жены в бигудях и со скалкой в руках. Для мотивации. Скриншот выкладывать не буду — боюсь, карму сольют за такое.
DenimTornado
17.04.2017 13:35+1боюсь, карму сольют за такое
Дома?))raacer
17.04.2017 13:42+1Нет, дома я скорее получу по карме той самой скалкой, отключу все эти свистоперделки — и арбайтен :)
lany
17.04.2017 10:14+4Я тоже сперва удивлялся. Можете комментарии полистать здесь и в дубликатах. Это правда один из популярнейших реквестов, закрытый в 2017.1.
raacer
17.04.2017 13:20+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.
И я с ними согласен. Как я писал уже выше, я считаю это проблемой поддержки «нестандартных» символов, а не отсутствия имодзи в коде. Багу до сих пор не исправили, в общем-то.
Мой скромное мнение таково, что для создания хорошего продукта у разработчика должен быть принцип. Нужно понимать, что всем сделать хорошо не получится, но если ты будешь следовать какому-то ясному представлению о том, каким должен быть хороший продукт, то он и будет хорошим. А когда стремишься за популярностью и следуешь всем запросам пользователей — получается винегрет из имодзи и багов.lany
17.04.2017 13:47Ну если бы следовали всем запросам пользователей, вы бы не ругались, что годами ждёте исправления десятка багов ;-) Вы правильно говорите: всем (например, линуксоидам) хорошо сделать не получится, но можно сделать хорошо маководам, и это уже хорошо.
raacer
17.04.2017 13:57А зачем распыляться тогда? Можно было пилить только под мак изначально. Я не говорю, что надо делать хорошо именно линуксоидам. Я говорю, что в проекте сейчас не видно четкой политки по поводу продукта, видна только четкая политика по поводу заработка денег. Это их личное дело, и в определённой ситуации это может быть хорошо для бизнеса, и может у них как раз такая ситуация. Но продукт превратится в… (здесь должен был быть «говорящий» юникод-символ, но Хабр эти символы зачем-то режет)
raacer
17.04.2017 14:00Под «всеми запросами пользователей» я имел в ввиду все в порядке количества голосов. Понятно, что все-все никто выполнять не будет.
lany
17.04.2017 18:40За эмодзи было больше ста голосов. Думаю, почти все из них от маководов.
raacer
18.04.2017 12:20Ну так а я о чём? Наверное, я плохо выразил свою мысль, или Вы невнимательно прочитали.
lany
18.04.2017 12:44+1Вы плохо выразили. Я может тоже плохо выразил. Я вам и отрытых багов трёхлетней давности с 100+ голосов легко найду. Я к тому, что утверждение "а когда стремишься за популярностью и следуешь всем запросам пользователей" совершенно не относится к IDEA. Вон из свежего — поддержка Language server protocol, стильно, модно, молодёжно, баззворд, все хотят. А JetBrains не делает.
raacer
18.04.2017 13:02-1Ну, Вы сравнили… Там — 100 голосов за добавление иконок, а здесь — 20 голосов за поддержку протокола. Это задачи совершенно разных весовых категорий. Грубо говоря, там потратил 10 дней и получил профит 100 рублей, а здесь потратишь 100 дней и получишь 20 рублей.
Вы как-то сильно цепляетесь к словам, искажая суть. Забудьте про голоса — это всего лишь показатель востребованности фичи. Я говорю о том, что компания, вероятно, отдаёт предпочтение более доходным фичам (100/10 > 20/100), чем тем, которые делают продукт качественным. Это впечатление о продукте и компании в целом, составленное по таким вещам, как имодзи для маков, фоновые картинки, постоянная смена иконок, красивое окошко About и т.д. и т.п., и всё это на фоне отсутствия элементарных вещей вроде поиска коммита в истории файла или обратного поиска по истории в консоли Python. Это моё личное мнение, что всё это плохо для продукта. Ваше мнение может не совпадать с моим, это нормально.lany
18.04.2017 13:18Грубо говоря, там потратил 10 дней и получил профит 100 рублей, а здесь потратишь 100 дней и получишь 20 рублей.
Вы совершенно не представляете, сколько на самом деле стоило добавить иконки. Не так-то очевидно, какая из этих задач сложнее. И иконки просили четыре года, а тут только полгода просят. Скорость набора голосов выше.
raacer
18.04.2017 13:31Главное, чтобы Вы себе представляли. Сложность задачи добавления имодзи не меняет моего убеждения: эту фичу делали ради бабла, и к качеству продукта она не имеет никакого отношения, равно как и к качеству продуктов, созданных с помощью этой фичи. Раз language server protocol не реализовывают, значит это либо не интересно с финансовой точки зрения по соотношению выхлопа к затратам, либо всему своё время.
raacer
18.04.2017 13:39-1И даже если маководы и прочие почитатели иконок и качественного кода с иконками будут неистово минусовать меня, это не отменяет того факта, что свистоперделки не влияют на качество :) Есть мнение, а есть факты, которые кому-то обидно признавать. Такова жизнь :)
ad1Dima
18.04.2017 10:00+1на самом деле, это даже не поддержка Emoji это поддержка UTF, с китайскими символами, например. Как верно заметили в комментах, читать реальный символ проще чем escape-последовательность.
В той же винде сейчас используются символьные шрифты. Еслиб Студия их не поддерживала (вместе с эмоджи) то было бы очень печально.lany
18.04.2017 12:47+1Китайские и раньше неплохо поддерживались, с ними проблемы не было. Эмодзи сложнее китайских, они там комбинируются, чтобы можно было сделать гомосексуальную семью негров. Кроме того, они ещё разноцветные на маке. Если сама идея, что текст+шрифт может навязывать информацию о своём цвете, никогда не была учтена в модели вывода текста, неудивительно, что с этим возникли сложности.
ad1Dima
18.04.2017 12:56Китайские и раньше неплохо поддерживались
Вопрос в том, как именно они поддерживались. Я тут недавно узнал, то Битрикс как-то так хитро поддержал китайский, что не может поддерживать эмоджи. Он тупо обрезал инфу когда встречал эмоджи(сейчас быстрый гуглинг не выдал мне этот баг)
Maccimo
18.04.2017 20:35+3читать реальный символ проще чем escape-последовательность.
Это верно только для того ничтожного подмножества символов, которые не выглядят для читающего как непонятная наскальная живопись.
Уверен, что любому человеку, не владеющему письменностью на основе китайской, оперировать escape-последовательностью
\u732B
будет намного проще, чем соответствующим ей иероглифом ?.
Особенно, если таких escape-последовательностей будет не одна, а сотни и тысячи.
Jofr
17.04.2017 13:54+2Время и комьюнити все равно расставят все по своим местам. Когда-то Consulo был единственной приличной возможностью писать нормально на C# на маке. Как только в Rider пофиксили некоторые критичные для нас вещи, мы всем отделом перелезли на него не задумываясь. По крайней мере за себя могу сказать — метрика WTF/sec в отношение IDE для меня при этом снизилась разительно.
raacer
17.04.2017 13:58Расскажите, пожалуйста, какие плюсы и минусы, и почему Вы перешли незадумываясь, и с чем связано изменение метрики WTF/sec.
Jofr
17.04.2017 14:14+1Это было полгода назад, могу не все помнить хорошо. Скажем так, чтобы подключить Unity-проект к Consulo, основные клиенты которого Unity-разработчики, я все время плясал с бубном, потому что надо было проставить некий тайный набор галочек, а руководства по этому набору галочек все время оказывались устаревшими. Автоформатирование не имело нормальных настроек. Автокомплит и всякие generate code оставляли желать лучшего. О да, и еще почему-то в солюшене было шесть разные проектов, и новый файл, созданный не через IDE, приходилось добавлять каким-то нечеловечески изощренным способом в во все шесть, я даже скрипт на питоне написал, fixconsulo, который сравнивал контент .csproj и файлы на диске, и вносил необходимые изменения.
А потом я открыл Юнити-проект в Райдере, и начал работать. WTF/sec не обнулилась, проблемы еще есть. Но однозначно снизилась.
Да, возможно мой ответ получился чересчур эмоциональным, но переход от Consulo к Rider был для меня не менее эмоциональным, так что для меня это наиболее честный способ ответить на ваш вопрос.VISTALL
17.04.2017 14:42+11. Дока бывает отстает — да грешен.
2. Насчет файлов — я так и не понял. Консула с самого начала не использует .csproj, ибо он хранит очень мало информации. Их юнити сам генерит, ничего не нужно делать. Консула хранит все в {root}/.consulo и все.
3. Насчет бубна — не знаю. Сейчас что бы открыть проект нужно ппросто выбрать действий «Open or Import Project».
4. Насчет генерации или комплишена можно написать в задачник и больше всего будет поправлено.
Спасибо, anyway, прийму к сведениюJofr
17.04.2017 15:122. Ошибся насчет файла, править приходилось .consulo/modules.xml. Там приходилось копаться в module-layer разных.
4. Поздно :)
Я перешел не потому что у меня был список замечаний. Меня не устраивало количество замечаний в секунду (минуту, час) работы. Сейчас я просто работаю.
Кстати, вы никогда не думали устроиться на работу в JB? Возможно, этот союз принес бы больше пользы сообществу, чем конкуренция.VISTALL
17.04.2017 15:272. Там есть действия Reimport project. Который доступ из проекта. Да синхронизация при external change пока хромает. (эта информация доступная в доке). Кстати да — layers были убиты, мы с одним юзером пришли к другой логики генерации проекта на разные платформы.
Длинная история. Сомневаюсь что проект тогда мой останется.
dzigoro
17.04.2017 16:06Насчет ИДЕ для питона смотреть сюда.
raacer
17.04.2017 23:20Это что-то экзотическое:
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 я не проживу.
nicity
17.04.2017 16:14Валерий Семенчук просто неизвестный Герой.
Я тоже бы хотел как он иметь свободного времени.
Даже для того, чтобы Consulo просто поддерживать относительно Intellij Community Edition (CE) нужно просматривать коммитов 60 штук в день. А ведь ещё есть JetBrains Runtime Environment, на котором CE выполяется…
VISTALL
17.04.2017 16:30+1У меня не так много времени как кажется. Все же у меня есть работа в СПб. Да я стараюсь иметь полное представления что Вы делаете в IDEA (что его говорить во всех ваших открытых проектах — что бы понимать на какие грабли мне придется наступить в будущем).
raacer
17.04.2017 22:11Валерий Семенчук просто неизвестный Герой.
К чему этот пафос? :) У него просто своего рода уникальный опыт, ведь мало кто берётся поддерживать такие проекты силами одного-двух человек. И он делает то, что некоторым (например, мне) кажется непосильным. Просто интересный опыт — форкнуть продукт такого уровня. При чем здесь героизм? :)
Я тоже бы хотел как он иметь свободного времени.
Вас заставляют работать? А Вы возьмите и увольтесь! Подрабатывайте один день в неделю фрилансером — уверен, на самое необходимое хватит. Вы за несколько часов легко заработаете столько, сколько многие получают в месяц. И будет у Вас вагон времени! :)
Нам всем не хватает времени, и каждый сам решает, на что его тратить. У Вас нет свободного времени? Значит оно занято чем-то важным для Вас. А свободное время есть только у бездельников.
nicity
18.04.2017 00:48+3Я Валерия знаю виртуально достаточно давно и про разработку ИДЕ тоже знаю достаточно давно. Тянуть одним свой форк для R# на чистом энтузиазме и свободном времени кажется мне в долгосрочной перспективе бесполезным героизмом. Мне его времени просто жалко. Всё же я искренне надеюсь, что он найдёт возможность вырасти в полноценную организацию/проект по разработке IDE.
VISTALL
18.04.2017 18:03+2Я Валерия знаю виртуально достаточно давно
Очень жаль что только виртуально.
Тянуть одним свой форк для R# на чистом энтузиазме и свободном времени кажется мне в долгосрочной перспективе бесполезным героизмом. Мне его времени просто жалко.
Это не только R#. За это время я много чего выучил, познакомился с кучей платформ и фреймворков. В свое время я помогал хорошим людям работать с IDEA API. Нельзя жалеть. Кто-то выиграл, кто-то проиграл (или все же выиграл?).
Когда то я пытался попасть к Вам, но видимо плохо старался (да и в тот момент не было оф. опыта работы).
gl
apro
Думаю идея microsoft под названием language-server-protocol,
позволит в будущем разрабатывать IDE небольшим командам.
raacer
Отлично, и пайтон есть! Пора запилить свою IDE для пайтона :)
VISTALL
Имхо это очень плохая идея. Пример плохих идей — это Roslyn в Unity. Там есть Boo + UnityScript о которых Roslyn ничего не знает. Значит прийдется писать это поддержку внутри Roslyn, и быть всегда в виде форка.
Следующий пример это IKVM.NET. Где Java + .NET. В идеально мире — это хорошое решение. Но мы же живем не в нем.
apro
А можете расшифровать? Не знаком с приведенными вами примерами, но если программный
код на разных языках лежит в разных файлах, то в существующем подходе нужно просто
запустить просто два сервера одни для условно
Java
, другой дляC#
.Когда языки смешиваются в рамках одного файла не вижу проблем добавить (если еще такого нет),
сообщения от сервера к IDE: этот кусок на языке X, позаботься о нем сам.
А проблема форка и поддержки большого проекта типа
Rolsyn
это по-моемустрого перпендикулярная проблема по отношению к language-server-protocol.
Например, если вы решите в IDE добавить поддержку
C++
при чем с расширениямиязык от Borland, а разработчики
libclang/clang
не захотят добавлять эти расширения,то вам придется форкнуть и поддеживать код
libclang/clang
в не зависимости оттого, встроите вы его в свою IDE или будете запускать его как сторонний сервис,
с обменов данными по каналам/разделяемой памяти.
VISTALL
Пример такой. Unity проект.
1. Файлик. Test.js
2. Файлик Test2.css
Roslyn не знает что такое JS. В рамках Unity — JS, это UnityScript. Так же есть Boo питоноский вариант под Unity
Вот нет. Это из той же оперы. Analysis server <-> IDE client
Сейчас external анализ не настолько крутой, что бы юзать его слепо.
Если посмотреть в сторону Roslyn — там где то 10% всех quick fixes & intentions & inspections которые есть в R#.
Например есть ситуация. Есть TypeScript / Java / C#. Их анализ написан на разных языках, на разных виртуалках (Node.js, JVM, .NET) — тоисть нужно поддерживать весь этот зоопарк.
Или писать на Java(или другой какой либо язык не важно) — при этом иметь какую ту общую базу, и использовать для других языков — что бы упростить реализация самого языка.
Вот что бы вы выбрали из этого?
Я выбрал второе, тоисть писать все на одном языку
apro
Честно говоря не вижу связи, вы можете inteliji разделить на две части, GUI и анализ,
и разнести их по разным процессам которые общаются с помощью language protocol,
и в той части где анализ реализовать сразу в одном сервере все языки. Концепции
language protocol это никак не противоречит, и ваш use case будет реализован,
и на одном языке обе части написать. И как бонус, часть занимающаяся анализом,
может быть не на вашей машине, если сеть достаточно быстрая.
Crandel
в емаксе например есть очень полезная фича — интеграция плагинов между собой. Например есть плагин projectile — для управления проектом и есть плагин helm, для быстрого поиска и перехода между файлами. Так вот, когда эти 2 плагина подключаются в конфиге, то projectile автоматически подхватывает helm и взаимодействует с ним. Не знаю или это возможно где то, кроме лиспа(елиспа) но это одно из возможных решений описанной вами проблемы.