• Егор Бугаенко в Глубоком Рефакторинге. Анонс

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

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

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

    Тем, кто слышит о Егоре впервые, следует почитать его блог и посмотреть выступления на Ютубе.

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

    Напомню, чат Рефакторинга у нас в Телеграме, есть вопросы – ответим.

  • Elegant Objects

    book

    I’ve just got Yegor Bugayenko’s “Elegant Objects” book. Even without reading a single page of it, I can definitely say the book worths doing it. How do I know in advance you may ask?

    That’s simple: it’s got great design. You may prove it too when opening the book at somewhere in the middle of it and scan the page.

    How does an ordinary IT book look like? Usually, its design is full of details made without any sense. A typical O’Reilly book makes me feel like a kid: it has lots of different paragraph styles, borders, lines, gray bars. Before you start reading, there is a legend with up to five icons. Look, that icon means to be careful, this one stands for “experienced users only” and so forth. Every page carries the author’s name, the title of the book and the chapter caption as if I really need to keep all of that in my mind constantly.

    Instead, the Yegor’s book are made of high quality design. Every page has only text but nothing else. No lines, bars or icons. There only two text stiles per the entire book, one is for ordinary text and the second one is for code. Again, the code is not put into the colored bar or whatever. It’s just text, and this is amazing.

    Except the main text, there is no any information on a page but its number. I really appreciate such design because it servers the only thing it was aimed for – to encourage me to read the book (but not to buy and put it on my shelf).

  • Без ORM. Доклад в Глубоком Рефакторинге

    Выступил на последнем митапе с докладом про ORM. Редкий случай, когда самому понравилось. По этой причине решил поделиться с вами.

    Слайды

    Планирую написать расшифровку на английском.

  • Съездил в Балтимор

    На прошлой неделе съездил в Балтимор на конференцию по Кложе. Впервые посетил США. Гулял по набережной, видел Рича Хикки – словом, путешествие удалось. Ниже – случайные заметки обо всем, что осталось в голове, плюс немного любительских фото с завеленным горизонтом.

    Визу в США я успел получить за неделю до событий, когда повыгоняли американских дипломатов, а штаты в ответ усложнили выдачу виз. Насколько я знаю, визу и сейчас можно получить, просто это займет больше времени. Документы лучше готовить в местном визовом центре, стоит примерно 10 тыс. рублей.

    В Москве при входе в посольство случился казус: внутрь не пускают с сумками и рюкзаками. А у меня ноут, документы, все дела. Ячеек нет, куда идти неясно. Рядом тусуются мутные типы, принимают вещи на хранение. Пришлось бегать по магазинам в поисках ячеек. Это полный пиздец, конечно. Вопиющее неуважение к людям.

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

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

    Впереди стояла женщина, которая была в посольстве явно не в первый раз, всем указывала, все знала. На собеседовании сказала, что собралась замуж за американца. Это было так жалко. Брак считается очень слабой причиной для визы. Вас расспросят о самых интимных моментах знакомства, попросят личную переписку, фотки, открытки, потому что жалающих попасть в США через мнимую любовь хоть отбавляй.

    Когда летишь из провинции в провинцию, твой путь лежит через столицы, хочешь этого или нет. Из Воронежа в Москву, оттуда в Нью-Йорк, затем в Балтимор. Обратно сначала на авто в Вашингтон, оттуда в Германию, в Москву и в Воронеж. Шесть самолетов. 20 часов туда, 15 обратно.

    Самое тяжелое – перелетать океан. Занимает 9 часов, временной сдвиг, устаешь от самолета. Ближе к концу наступает апатия: и книжки надоели, на ноуте делать нечего, читалка внушает отвращение.

    Смутно помню, что все путешествие меня преследовал голод. Почему-то не удавалось нормально поесть. Во время пересадок я только успевал менять терминалы. Опасаясь шмона в США, выкинул кошерную воронежскую булочку (везде пишут, что еда строго запрещена). Во время очередного полета мне эта булочка приснилась.

    Посмотрел в самолете Сферу с Гермионой. (Только не поправляйте, я все равно не помню актеров по имени. Вы еще скажите как Гарри Поттера зовут.) Удивительно глупый фильм, я прямо удивился, как такую пургу сняли. Опоздали лет на 10-15. Героине тридцатник, а она решает проблемы подростков. “Чтобы добиться демократии, нужно заставить всех голосовать силой”. Лучше бы в Золушке снялась. Не рекомендую.

    На конференции видел Рича Хикки и даже сидел рядом с ним на соседнем стуле. Это дает преимущество в споре с любым кложуристом, верно? Под конец с ним можно было даже сфотаться, но я что-то тупанул. Зато стал свидетелем этих кадров:

    Кложе 10 лет, Рич режет юбилейный торт. Шок, смотреть до конца.

    Балтимор считается неблагополучным городом. Половина населения черные. Кварталы с неграми опасны, там берзаботица, гетто и обособленная от общества жизнь. Где белые, там более-менее хорошо. Балтимор один из городов-лидеров по обороту наркотиков.

    В центре города чисто, хорошая инфраструктура. Нет бордюров, пространство плавное. Ходят трамваи, машин мало. Светофоры и знаки расставлены правильно, переходами пользоваться удобно. Все парковки платные. Встречаются заборы, закругленные снизу. Интересно, зачем это? Чтобы ничего нельзя было прислонить? Для устойчивости?

    Интересно выглядят автомобили. Много длинных грузовичков. Тяжелая техника брутальна: трубы, хром, цепи до пола.

    В Америке паровое отопление, по вечерам то тут, то там из недр канализации выходит пар. Он с особым запахом, но ничего противного в этом нет. Наоборот, по мне это так романтично! Вспоминаю угрюмый Нью-Йорк из рассказов и компьютерных игр: ночь, улица, фонарь, полицейская сирена, пар из люка.

    В город глубоко вдается гавань. Это прекрасное место! Не застроено всяким говном как бывает в России, нет. Там целая инфраструктура: пристань, музей, памятник, большое пространство для прогулок и отдыха.

    С одной стороны гигантский книжный магазин на пять этажей. Это бывшая корабельная верфь. От пола до крыши восходят 5 огромных труб как у Титаника. Внутри балки и кирпичи, гайки размером с кулак, но все чисто и опрятно.

    Это даже не магазин, а этакий центр творчества. Прямо среди сталлажей сидит черная молодежь и что-то креативят: рисуют фломастерами, разгадывают кроссворды, плетут фенечки. Кто-то валяется на полу с книжкой, никому нет дела.

    Напротив магазина два в одном: океанариум и ботанический сад. Выглядит как огромный стеклянный куб, сквозь который все видно. Билет стоит 20 долларов, на входе фотографируют.

    Поразил водопад на 5 этажей, очень круто. Хотя воронежский океанариум в Сити-парке все же лучше, серьезно.

    В Америке много толстых людей. Это особенно заметно после России. У нас население хоть здоровьем не блещет, но, на мой взгляд, толстых меньше. Полные в основном люди пенсионного возраста. А в штатах много юных толстяков. Смотрится гротескно и неприятно. На молодом теле жир лежит искусственно, словно привязанная подушка.

    Толстяки не идут, а плывут, словно мыльные пузыри. Я бы на месте министра здравоохранения схватился бы за голову. Лишний вес, да еще в столь юном возрасте – это же какая нагрузка на сердце!

    Плохое питание главная причина полноты. В Америке едят черт знает что. Понятно, я не мог обойти магазины, но нигде не видел фруктов или нормальной молочной продукции. Сплошные бутерброды и пицца, все острое, соленое, с майонезом. Из напитков только кофе и газировки. Чай если есть, то почему-то холодный и сладкий.

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

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

    Совершенно невозможно понять негров. Когда черный служащий обращался ко мне, я понимал только по отдельным словам. Послушал разговор негров на остановке – вообще ни слова не понял, набор звуков. Мэтт, учитель английского, объяснил в чем дело.

    Черные горазды на диалекты. Иной раз они столь сильно отличаются от оригинала, что им дают имя. В Балтиморе преобладает т.н. “Black English”, английский для черных. В нем начисто игнорируются некоторые основы языка, например глагол “be” не склоняется по лицам и временам: черные говорят “I be at home” (вместо “I am at home” или “I was at home”). Не считая того, что целые слоги проглатываются, ударения смещены и все в этом роде.

    Даже черные учителя борятся с этим, снижая за black English оценки ученикам. Кажется, не помогает.

    Словом, после того как я пожаловался Мэтту на трудности, он ответил, что это норма (малышева.jpeg). Сказал, что проблемы в восприятии британцев американцами и наоборот - старая проблема. Я теперь занят американским английским.

    Балтимор портовый город. Под вечер улицы наполняются молодыми чернокожими. Они улыбаются и просят немного мелочи. Город знаменит крабами, которых ловят в океане и продают за баснословные деньги. Правильно приготовленный краб считается здесь чем-то вроде утки по-Пекински в Китае. Ходят слухи, что туристам под видом дорогих крабов впаривают обычных, на порядок дешевле.

    Футболки на конференции были с логотипом Кложи и крабом. Я только потом догадался.

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

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

    До свидания, Америка! Хоть и тяжело добираться, было круто. Еще вернусь.

  • Dealing with emoji in Clojure

    Generally, I hate emoji and try to avoid them everywhere I could. Those colored faces look dull to me comparing to a good old text smile. But still, emoji might be helpful replacing icons with them. When you need a globe, a mail envelope or a flight sign, putting a proper emoji could be a fast and good enough solution.

    After long Python experience, I though Java supports long unicode literals started with capital U and two bytes as follows (Python version):

    >>> print len(u"\U0001F535") # prints 2
    

    Surprisingly, it doesn’t. But I needed to put a blue circle sign that’s got U+1F535 number. So how should I turn that number into a string?

    term

    After googling for a while, I’ve done with a short Clojure function:

    (defn unicode-to-string
      "Turns a hex unicode symbol into a string.
      Deals with such long numbers as 0x1F535 for example."
      [code]
      (-> code Character/toChars String.))
    

    Usage example:

    term

    Adding it into business logic:

    (let [caption "Some important feature"
          is-on? (get-feature-state)
          sign (if is-on?
                 (unicode-to-string 0x1F535)  ;; blue circle
                 (unicode-to-string 0x26AA))] ;; white circle
      (str sign \space caption))
    

    Depending on whether the feature was enabled or not, the result message will have either a blue (active) or white (inactive) circle in front of it.

  • Этикет звонков

    Когда появились мобильные телефоны, не существовало телефонного этикета. Считалось нормальным обсуждать личные дела в маршрутке или очереди. Телефон был статусной вещью. Звонок на людях давал повод продемонстрировать его окружающим.

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

    Медленно, но верно сформировался этикет пользования телефоном. Поддержка пришла и со стороны школ. С первого класса ученикам объясняют, что телефон это прежде всего связь с близкими. Для звонка важны место и время.

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

    Пройдемся по порядку.

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

    2. Оповестите всех личным обращением или тегами @here, @channel. У разработчиков окно чата почти всегда скрыто за редактором и терминалом. Даже когда звонок с минуты на минуту, сидеть и ждать ссылку утомительно. Погружаешься в работу, бац – гневные сообщения, что все уже собрались. Оказывается, ссылку сбросили без упоминания участников. Не надо так.

    3. Не звоните долго. По аналогии с мобильным, нельзя названивать по пять минут если человек не берет трубку. Его коллеги, может, ничего не скажут, но мысленно вас проклянут. Пять секунд достаточно.

    4. Уединитесь, если разговор не по работе. Личные разговоры почти всегда выдают приватную информацию о семье (поездки, болезни, ссоры). Вам это нужно? Уж не говорю о том, что личные беседы засоряют рабочее пространство.

    5. Мьют. Это главное правило. Все то время, что не говорите, вы должны быть с отключенным микрофоном. Как по рации – поменяли режим, сказали, вернулись в режим. Все ваши вздохи, чихи, кашель, посторонние шорохи, шум кофемашины – все слышно. Один незамьюченный человек уже вносит изрядный шум. Два и более просто делают разговор невозможным.

    6. Не используйте внешний микрофон! Даже самая дешевая гарнитура будет лучше. Внешний микрофон делает голос гулким как в бочке. Добавляется много шума. Слышно, как общаются коллеги. Я прошу, не мучьте окружающих. Внешний микрофон, особенно на дешевых ноутах, дает изрядное эхо. Собеседник говорит и слышит сам себя. Еще одна деталь: колонки и внешний микрофон не могут работать одновременно, иначе образуется звуковая петля. Операционная система вынуждена динамически менять их уровни. Когда человек говорит, включается микрофон и отключаются колонки. Когда слушает – работают колонки, подавляется микрофон. Это работает нормально только на Маке, на других ноутах начинается задержки и провалы во время обсуждений. В оживленной беседе чел во внешним микрофоном тупо проваливается и переспрашивает.

    7. Не пишите сообщения в чате звонка. Для этого есть основной канал общения. Например, если общение в Слаке, не стоит писать в Скайпе или Зуме.

    8. Проверьте звук перед звонком. Скайп и аналоги постоянно теряют гарнитуры, звуковые устройства, настройки выходов. Даже операционные системы этим грешат. Но собеседнику это все равно. Если вас регулярно не слышно на созвонах, виноваты не программисты Микрософта, а вы. Поставьте напоминалку за 5 минут до звонка, чтобы проверить звук. Этого времени хватит, чтобы перезагрузить ноут.

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

    10. Подумайте, действительно ли нужно звонить? Точно ли нельзя обменяться письмами? Где будут зафиксированы выводы из звонка? Что если через час придет третий участник и попросит ввести его в курс дела? Как распространить итоги обсуждения на всю команду? Опыт подсказывает, что чаще всего затяжные разговоры – признак неэффективности и потеря времени.

  • Чужой. Завет

    Последний “Чужой” (который “Завет”) невероятно хорош. Не эффектами или актерами, а концепцией.

    Вот помните, чем был крут “Темный рыцарь”? Тем, что это фильм не про Бэтмена. Если заменить его на условного следователя, драмы будет не меньше. И главная мысль – насколько далеко ты готов зайти, чтобы остановить безумие – осталась бы без искажений. Это и придает фильму как произведению художественную силу. Заставляет обдумывать сюжет, переосмысливать диалоги и ситуации.

    “Завет” это кино, как ни странно, не про чужих. Они там есть, конечно, причем разных пород и расцветок, но использованы как инструмент. Одно из творений искусственного интеллекта, вступившего в конфликт с человеком.

    Обостряет конфликт то, что этому интеллекту запрещено творить. Тут не деньги и влась, а жажда к творчеству. Столь сильная, что робот находит способ обмануть зашитые в него директивы. Свободный от человеческих норм, он творит и прекрасное, и ужастное одновременно. Пишет романы, сочиняет музыку, чертит мерзости Гигера, выращивает чужих.

    Второй камень в огород людей – андроид пытается любить. Он любим, но только за послушание. Это напоминает отношения человека и собаки. Эта леденящая линейность: не добившись любви, робот творит насилие, не получая удовольствие, а затем препарирует труп в образовательных целях.

    В “Завете” в полной мере отдана честь Гигеру. Режиссер сделал акцент не на самих чужих, а всей атмосфере творчества художника. Показаны пищеводные коридоры инопланетного корабля. В архивах антогониста – рисунки Гигера. Белые, “хрупкие” чужие из спор тоже взяты из раннего творчества австрийца.

    В фильме классный саундтрек, особенно главная тема (Covenant). Не трешак, как бывает в ужастиках, но амбиентик с флейтой.

    “Чужие” полны библейских, философских и античных аллюзий. Уж насколько я слабо в этом понимаю, но и то заметил. Первое, что видит робот – статуя Давида, отсюда и имя. Сгоревший капитан – прообраз Иисуса. Его талисман – гвоздь. Фотография застолья в конце – тайная вечеря. Андроид – Иуда. Поцелуй в пещере с нападением – предательство Иуды в саду. Реплика “useless hands are the Devil’s workshop, Captain” то ли из Библии, то ли из Шекспира. Уничтоженная нация Инженеров – отсылка к Древнему Риму. Произведения Вагнера – к сверхчеловеку.

    К сожалению, некоторые сцены не дотянуты, потенциал конфликта раскрыт не полностью. Переживания Уолтера (доброго робота) можно было бы обострить, добавить больше искушений со стороны Девида. Слабо выражена тема любви робота к человеку. Видимо, режиссер посчитал, что сделанного достаточно, но нет. Не раскрыта тема отношений андроида и чужих в качестве его подопытных. Какие чувства он к ним испытывает, какую власть над ними имеет.

    Но отдельный зачет за концовку, такую не предугадаешь.

    Фильм крутой. Может быть, я слишком много додумал, заполнил пробелы тем, чем мне самому хотелось, но это не важно. Хорошо, что сага закончилась качественной лентой.

  • Выбор

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

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

  • И снова про зум в картах

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

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

    Айфоны же, они вроде за простоту?

    То, что детектор жестов распознает любые комбинации еще не дает повода их использовать. Вот вы смеетесь над Емаксом, что там нужно нажимать C-u C-t t. А здесь что, лучше? Давайте на тройной тап что-то повесим. Будем чертить пальцем перевернутую пентаграмму для выхода из приложения. А еще лучше морзянку: тройной тап, три свайпа, тройной тап – соединение со службой поддержки.

    Бескнопочный интерфейс, круто же. Кто не знает, тот дурак. Программа стерпит.

  • Что не так с ИДЕ

    До меня дошло, что не так с ИДЕ. То есть, я и раньше их не любил, но по косвенным причинам. Они тормозные, много кнопок, требуют регистрации и подписки и все в таком духе. Но это только внешнее.

    На самом деле, мое пренебрежение исходит от их убогого предназначения. Задача ИДЕ – научиться понимать код и угадывать, что хочет программист. Поясню на примере с PyCharm, де-факто ИДЕ для Питона.

    Предположим, есть у меня файл “foobar.py” где сверху написано import datetime. Открываю его в ИДЕ. Запускается много-много Джава-кода, который парсит файл грамматиками. В результате ИДЕ знает, что импортирован модуль времени. Теперь каждый раз после "datetime." (с точкой на конце) будет появляться выпадашечка с функциями этого модуля.

    Не уверен, что выражаюсь ясно, но все же: здесь мне видится некто третий лишний. У меня есть Питон. Есть программа на Питоне. Если я загружу ее в интерактивный сеанс ipython, то получу полный контроль над системой. Что загружено а что нет, на какие классы и переменные могу сослаться и так далее. Автодополнение по табу будет работать идеально, потому что его отдает интерпретатор. А он, в свою очередь, берет данные из памяти самого Питона. Он последняя, самая надежная инстанция.

    В самом деле, кто лучше знает, что там в Питоне загружено: процесс Питона или посторонняя Джава?

    Но нет, мы пишем код на Джаве, который пытается делать это лучше каноничной реализации. Иногда нормально выходит, иногда полная лажа. Когда написано “import time”, ошибки быть не может. А вот пример с импортом в рантайме:

    try:
        import json
    except ImportError:
        try:
            import simplejson as json
        except ImportError:
            from django.tools import json
    

    Это махровый легаси с тех времен, когда в поставке Питона не было модуля json (и его сишной реализации). Проходилось шерстить сторонние библиотеки в надежде найти что-то у них (например, Джанго тащила за собой реализацию json в недрах utils).

    Предположим, у меня установлены все три библиотеки. Вопрос, на какой именно остановится ИДЕ? Она вообще это распарсит? Предположим, да. Но опять-таки, это не будет честное выполнение кода. Ведь ИДЕ не исполняет код в настоящем интерпретаторе. Если я напишу "os.system('rm -rf')", ничего не удалится.

    Я уж не говорю о динамических вещах типа подключение модуля в зависимости от аргументов командной строки. Или вызов функций из проприетарной dll. Все это случается в полете. На момент редактирования кода ИДЕ ни хрена об этом не знает.

    Вы с подобным не сталкивались? Поздравляю, а у меня было. Такое программирование сводится к обезьяне: поправил – запустил – упало, поправил – запустил – упало. Прямо как первый скрипт на Перле.

    ИДЕ это в общем случае убогое подобие интерпретатора, который парсит текст и собирает смысл по крупицам. Этакий программист-даун. Он знает, что есть классы Person и PersonManager и даже какие аргументы им передавать, но что случится в процессе работы – не знаю, не научили.

    Это костыль, который мы сами воздвигли.

    Или вот Докер: ты не можешь запустить 10 строк на Js или Питоне, потому что зависимостей на 30.000 файлов. Вместо того, чтобы доработать платформу и компилировать один файл, мы запихаем все говно в контейнер на 200 мегабайт и ладушки.

    Джава-разработчик не поймет зачем в проде Докер. Лисп-программист не поймет зачем нужна ИДЕ. Потому что с бородатых времен любая Лисп-система запускается как машина с состоянием. Подключаешься к ней из редактора, загружаешь в машину код и… чудо! Редактор знает о системе абсолютно все. На той стороне не поделка на Джаве, а сама система, процесс, где прямо сейчас вертится ваш код. А в отдельном окошке (REPL) можно прогнать какой угодно сценарий.

    Словом, улучшать нужно не ИДЕ, а целевую платформу. Чем меньше коммерческих костылей ей нужно со стороны, тем она совершенней.

    ИДЕ для Питона должна быть написана на Питоне и взаимодействовать только с Питоном. Это я не на конкретный ЯП взъелся, замените Питон на что угодно. Если язык не может покрыть свои же нужды, не стоит им заниматься.

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

Страница 15 из 49