LINUX.ORG.RU
ФорумTalks

Почему олимпиадники создают такой кривой софт как IDEA?

 


0

2

Начал писать ответ в голосовалке про редакторы и осознал, что вопрос, на самом деле, межгалактической важности. Решил создать тему, а вдруг кто-то из Jetbrains увидит и раскроет загадку, волнующую меня многие годы.

Приходится пользоваться IDEA, так как богомерзкая Жаба. Но редактировать код в ней стало совершенно невозможно. Заметил, что в последнее время (года 2-3) ситуация страшно усугубилась. Кажется, раньше было получше. Вот пару примеров которые прям болят каждый день.

0. Выделяю кусок кода мышей, жму Сtrl-С чтобы скопировать текст. Казалось бы, ну что тут можно сломать то? Этот сценарий работает во всех программах ещё со времен как МакКузик Аллману предложение делал. Но это же IDEA — сразу после выделения куда там вылезло какое-то контекстное меню и Ctrl-C уже не работает! Теперь нужно перед Ctrl-C нажать ещё и Esc. Почти как в моём любимом Emacs.

1. Пишу я `foo()`, жму хоткей вызова меню, Enter — вуаля, заводится локальная переменная. Так как пункт создания локальной переменной самый первый во всплывшем меню. Но это же IDEA — мы сломаем и это! Если в коде есть ошибка то в меню добавляются ещё и другие пункты, и пункт «Создать локальную переменную» уже не на первом месте и Enter так просто не работает.

Ладно, про второй пункт кто-то скажет, что меню динамическое, используй, мол, спец. комбинацию для создания переменной. Но копированием то что не так? Неужели я не правильно текст копирую всю жизнь?

Вот как можно в редакторе для погромистов сломать копирование??? Как так получается, что компания основана очень умными людьми, набирающая толковых олимпиадников делает такой кривой софт? Они что сами ей не пользуются? Или они код не копируют?

P. S.
Еще она стала выглядеть как новогодняя ёлка — в интерфейсе с десяток цветов, каждый элемент отдельным цветом. Может это я сборку для детсада скачал?
А ещё эти дебильные элементы интерфейса, которые появляются только когда на них навести курсор. Раскин переворачивается в гробу наблюдая за таким интерфейсом.

★★★★★

Да в жабе вообще вся экосистема прогнила и скурвилась. Градль с мавеном видели? Это же жесть. А все эти котлины с ведроидами, в которых они бесконечно выкатывают новые современные апи?

Хотя это все началось конечно со спринга с его миллионами магических аннотаций.

Lrrr ★★★★★
()
Ответ на: комментарий от lenin386

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

urxvt ★★★★★
() автор топика
Ответ на: комментарий от Lrrr

Работая с Gradle-лапшой я плачу за Maven крокодильими слезами.

urxvt ★★★★★
() автор топика

Почему олимпиадники создают такой кривой софт как IDEA?

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

Так вот, IDEA они пишут так же.

Еще она стала выглядеть как новогодняя ёлка — в интерфейсе с десяток цветов, каждый элемент отдельным цветом. Может это я сборку для детсада скачал?

Они высрали плагин Classic UI или как-то так зовётся. Не на 100% возвращает старый интерфейс, но пользоваться можно.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

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

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

urxvt ★★★★★
() автор топика
Ответ на: комментарий от hateyoufeel

Они высрали плагин Classic UI или как-то так зовётся. Не на 100% возвращает старый интерфейс, но пользоваться можно.

Они так же сказали, что поддерживать Classic UI будут довольно ограниченное время, а дальше как хотите.

mono ★★★★★
()
Ответ на: комментарий от mono

Они высрали плагин Classic UI или как-то так зовётся. Не на 100% возвращает старый интерфейс, но пользоваться можно.

Они так же сказали, что поддерживать Classic UI будут довольно ограниченное время, а дальше как хотите.

Тут не скажу. Я код пишу в Emacs. IDEA у меня просто на потыкать иногда, ужаснуться и открыть Emacs обратно. И, честно говоря, в отличие от Emacs идея со временем лучше не становится.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)

Вы олимпиадный код видели когда-то? Там в 99% случаев страх и ужас, преследующий только одну цель – пройти автоматический тест на выполнение задания.

  1. Олимпиадник не привык писать качественно, он привык писать быстро.

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

  3. Олимпиаднику совершенно пофиг на ресурсы системы, если они вписываются в лимиты (как правило весьма просторные).

  4. То же самое со временем выполнения: олимпиаднику не нужен быстрый код, ему нужно только не превысить таймаут.

  5. Олимпиадник натаскан находить нетривиальные решения мозговыносящих задач, а не писать бизнес-логику на готовых функциях из фреймворка.

Короче, не путайте велогонщика и курьера. Инструмент (велосипед) у них может быть одинаковым, а вот решаемые задачи и условия работы – совершенно разные. Так что как по мне, то кичиться олимпиадниками программерской конторе совершенно не стоит.

quwy
()
Ответ на: комментарий от quwy

Набор штампов. По всем параметрам не так. Олимпиадник это в первую очередь человек, который на порядок умней и сообразительней окружающих. Он может писать качественно, он может писать быстро, он может писать поддерживаемый код, и всё это в нужных пропорциях.

И считать, что велогонщик не сможет работать курьером (хотя сравнение идиотское) - это прям верх глупости.

Разница между олимпиадником и не олимпиадником только в том, что первый может решать сложные алгоритмические задачи за небольшое время, а второй - не может. Вот и всё.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от quwy

Абсолютно согласен с vbr. У меня такое же видение вопроса.
Даже, если допустить, что человек приучился с детства писать «олипиадный» (в смысле readonly код, лишь бы работало) то его спортивные достижения свидетельствуют о наличии достаточного интеллекта, чтобы переучиться на любой стиль в кратчайшее время.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от vbr

Можно целиком буфер на исполнение отправить или range/regex области.

Буфер:

echo "Привет из vim"
pwd

команда в Ex:

:write !bash

Результат:

Привет из vim
/home/necromant
necromant ★★
()

А разве нельхя все эти нюансы перенастроить?

У них вроде даже опции были раскладок Visual Studio, etc.

sanyo1234
()

Выделяю кусок кода мышей

Уже провал.

bread
()
Ответ на: комментарий от vbr

Олимпиадник это в первую очередь человек, который на порядок умней и сообразительней окружающих.

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

bread
()
Ответ на: комментарий от luke

какого научпопа? я саму философию читаю. и сами философы говорят, что это не наука. они полагают, что, возможно, некоторые её разновидности соответствуют критерию научности, но большинство остальных - нет. и это никакое не открытие Америки.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от vbr

Разница между олимпиадником и не олимпиадником

В том что один натренировался на олимпиады, а другой - нет.

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

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

Leupold_cat ★★★★★
()
Последнее исправление: Leupold_cat (всего исправлений: 3)
Ответ на: комментарий от luke

так они и не занимаются. они именно что говорят :) и это не наука.

ты что-то там придумал, сам ничего не читал. и умничаешь тут. возьми и почитай.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

так они и не занимаются. они именно что говорят

Так и зачем их слушать тогда?

luke ★★★★★
()
Ответ на: комментарий от sanyo1234

Может и можно. Но там таких мелочей миллион. Разве оно из коробки не должно быть нормальным?
А ещё жалуются, что Emacs нужно годами допиливать.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от bread

этот скилл можно почти кому угодно прокачать

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

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

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

Но даже в этом случае нужно пинками заставлять нормально комментировать код и не писать в стиле «int i, j, k, l, m, n, o, p;».

quwy
()

Они что сами ей не пользуются? Или они код не копируют?

Бро, всё намного проще - они больше код не пишут, за них это делает AI Coding Agent.
Качество итогового продукта ты можешь лицезреть сам.

goodwin ★★
()
Ответ на: комментарий от quwy

не писать в стиле «int i, j, k, l, m, n, o, p;».

А как надо? int counterOne, counterTwo, counterThree, counterFour, counterFive, counterSix, counterSeven, counterEight;?

luke ★★★★★
()
Ответ на: комментарий от goodwin

В m очевидно сохраняется масса, а так как в фортране по дефолту m определено как целое число, то и записывать надо am :)

luke ★★★★★
()

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

Syncro ★★★★★
()
Последнее исправление: Syncro (всего исправлений: 3)

JB например вполне открыто любит мелкософт технологии, типа потому что решарпер кормит

Syncro ★★★★★
()
Последнее исправление: Syncro (всего исправлений: 1)
Ответ на: комментарий от luke

У меня пару раз на работах возникали претензии/споры, когда я делал функции вроде `List<Integer> joinLists(List<Integer> a, List<Integer> b)`. На мой вопрос о том а как по их мнению должны быть названы аргументы рожали лишь listA & listB.

И да, я ни разу не олимпиадник.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от luke

Во-первых речь не обязательно про каунтеры, а вообще про любые переменные. А во-вторых, даже каунтеры во вложенных циклах желательно называть в соответствии с перечисляемыми ими сущностями:

for(net = 0, ...) {
  for(host = 0, ...) {
    for(port = 0, ...) {
      networks[net].hosts[host].ports[port] = ...;
    }
  }
}

Сколько времени было потрачено на ошибки, когда не тот каунтер использовали. А ошибка в строке networks[net].hosts[host].ports[host] сразу в глаза бросается.

quwy
()
Ответ на: комментарий от quwy

Есть отличное правило от дидов — длина идентификатора пропорциональна размеру окружения, в котором он живет. Если он живет две строки то одна буква для него самое то.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от vbr

Олимпиадник это в первую очередь человек, который на порядок умней и сообразительней окружающих. Он может писать качественно, он может писать быстро, он может писать поддерживаемый код, и всё это в нужных пропорциях.

А херли они этого не делают-то?

hateyoufeel ★★★★★
()
Ответ на: комментарий от Syncro

JB например вполне открыто любит мелкософт технологии, типа потому что решарпер кормит

Решарпер их не особо кормит, а они его не особо пилят (по словам знакомых шарпистов, поддержку свежего .net в решарпере можно ждать месяцами). JB живут во многом за счёт контрактов с гугелом на Kotlin и Android Studio.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

ну так не только в жб, вообще тут первична культура бандитизма обслуживающая работорговлю, а эти подколки - это просто методичка

Syncro ★★★★★
()
Последнее исправление: Syncro (всего исправлений: 1)
Ответ на: комментарий от quwy

Сколько времени было потрачено на ошибки, когда не тот каунтер использовали

думаю всё-таки меньше чем ошибка на единицу.

Ну и в твоём примере длина переменных в целом удобоваримая. Впрочем,

networks[n].hosts[h].ports[p]

вполне себе работает.

luke ★★★★★
()

В копилку «олимпиадных решений»: в firefox сделали клёвый пункт меню «Копировать очищенную ссылку». Но пользоваться им нормально нельзя, потому что он то активен, то неактивен (когда нечего очищать). Не понимаю, зачем так сделали. Пусть бы он был всегда активен, и, если нечего «очищать», копировал бы ссылку как есть. А сейчас прям очень неудобно получается - давишь правую кнопку мыши, приглядываешься, какой пункт выбрать - «Копировать» или «Копировать очищенную ссылку», и выбираешь.

(Хотя я не думаю, что здесь есть кто-то, кто это придумал, тут же все очень крутые в плане UI, и не сделали бы такого :-))

Beewek ★★★
()
Последнее исправление: Beewek (всего исправлений: 1)
Ответ на: комментарий от wandrien

Тоже пользуюсь этими хоткеями. Еще с DOS-овых времён.

Аналогично. По-моему, это из борландовских IDE пошло (турбопаскаль/турбоси).

Beewek ★★★
()
Ответ на: комментарий от quwy

Даже если нескольких строках живет полтора десятка идентификаторов?

Это как? Перепиши эти строчки во вменяемый вид.

Всегда бывают исключения. Ты подгоняешь это правило под требование. Но суть в том, что `cu` ничем не хуже чем `currentUser`. А только лучше, так как глазу проще его распознать а мозгу обработать.
У меня сейчас проект настолько гавно в этом плане, что половину идентификаторов я просто не читаю, так как прочитать их или написать вручную (даже с автодополнением) очень сложно. Длинна в 4-5 слов там рядовая ситуация.

Длинный идентификатор нужен только тогда, когда из контекста не понятно, что `cu` это `currentUser`. Ну или это публичный метод для широкого пользования. Для локальных же переменных это в 95% ситуаций перебор.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от quwy

Видишь, только со второй попытки придумал пример.

luke ★★★★★
()

Почему олимпиадники создают такой кривой софт как IDEA?

Потому что задача олимпиадника — на(ш)кодить, чтобы программа проходила тесты. Юзабилити, поддерживаемость кода и прочие ремесленные атрибуты его не сильно волнуют. А манагеры, которым подавай сколь угодно кривые фичи в сжатые сроки, тоже довольны.

kawaii_neko ★★★★
()
Последнее исправление: kawaii_neko (всего исправлений: 1)
Ответ на: комментарий от MoldAndLimeHoney

наука, гугли мои ответы. недавно тут обсасывали.

Iron_Bug ★★★★★
()
Ответ на: комментарий от urxvt

Даже, если допустить, что человек приучился с детства писать «олипиадный» (в смысле readonly код, лишь бы работало) то его спортивные достижения свидетельствуют о наличии достаточного интеллекта, чтобы переучиться на любой стиль в кратчайшее время.

Вам не кажется, что вы сами себе противоречите?

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

Ничего в голове не щелкает?

quwy
()

Они что сами ей не пользуются?

Нет. Они просто работают за ЗП. Я в скольких конторах работал, и никогда не пользовался собственным ПО.

Все претензии к отделу QA.

anonmyous ★★
()
Ответ на: комментарий от quwy

Не щёлкает. Я грешу на «руку рынка», и клятых продажников (маркетологов). :) Делай ЖБ какой-то фотошоп я бы и не сильно удивился. Меня удивляет, как это может быть с продуктом для программистов.
Вот тот же Дуров показал, что олимпиадники умеют творить, в нужных условиях и руководстве. Его ВК был (есть?) лучше ФБ, его Телегрм лучше всех конкурентов на рынке.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

Вот тот же Дуров показал, что олимпиадники умеют творить, в нужных условиях и руководстве

Вы не поверите, но существует уйма качественного софта, написанного НЕ олимпиадниками.

quwy
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.