SannySanoff

В CLion мейк и gdb отладчик делают программу компиляться-запускаться 23 секунд до выполнения кода (1 c++ файл поменялся). Хочется открыть reddit и читать туда, покуда оно чухается.

в Qt Creator ninja и gdb отладчик делают это за 11 секунд. Можно только почесать бок и поковыряться в носу, и снова работа.

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

janPona

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

Ruby — то понятно. Такая же хуета, как и JS, только с меньшим количеством скобочек и без фронтэнда.

Java — не так уж сильно отличается от привычного мне TypeScript, во всяком случае, те простейшие вещи, которые на ней довелось делать. Но удручает другое. Казалось бы, язык строжайше типизированный, все дела. Но даже здесь наши доблестные шестиконечные девелоперы умудрились налажать. Набор обязательных параметров передается в метод, выполняющий платёжную транзакцию, не через объект какого-то класса, а через Map<String, Object>, а потом уже нужные параметры вытягиваются в самом методе из этого мапа через get() и кастуются к строке или к целому. Ебать, пиздец, да? Платёжная транзакция, если чо. Причём, мне даже понятно, как они к этому пришли. Сначала было два платёжных шлюза. Создали базовый класс и по наследнику на каждый... скажем так, драйвер конкретного шлюза. Окей. Но потом, когда проект вырос, добавилось ещё пять платёжных шлюзов, а сигнатуры абстрактного метода confirmPayment() стало явно не хватать. Ну они и не стали заморачиваться, добавили параметр metadata — эдакую помойку параметров, в которую можно невозбранно пихать всё, что угодно. Я варюся, капец. Текучая абстракция, как есть, бля буду.

janPona

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

Linda-chan

Люблю условную компиляцию в VB6. Казалось бы, если какой-то блок выкидывается по условию, то IDE и компилятор должно меньше всего беспокоить, что там происходит. Ан нет. Очепятаешься в таком блоке – ошибка. Объявишь переменную не с тем типом – снова ошибка. Последнее особенно досадно, ибо условная компиляция может использоваться для выкидывания кода, который, скажем, использует хитрую библиотеку. Типа, если на машине зарегистрирована библиотека X, то подключаем её к проекту, ставим нужное условие, скажем, в свойствах проекта и компилируем с ней. Если нет – обходимся своими силами. А не работает – дай библиотку, IDE не узнаёт тип данных, который в екзешник всё равно не попадёт. Единственная польза от такого поведения – хак с именами элементов перечислений, которые любят терять регистр символов, но и тот – борьба с багом самой IDE.

justonemore

.NET
Решил написать копию Tasque на VB.NET и WPF и полез в код программы чтобы скопировать. Во первых, мало что понятно и сложна. Во вторых, код, скорее всего, говно. В третьих, программа сильно недоделана чего я раньше не замечал.

justonemore

— Неужели нет никаких сфер, где уже случился прогресс благодаря искусственному интеллекту?

Ну, скажем, среди врачей есть куча не очень способных, и мы уже точно знаем, что благодаря AI можем лучше, чем врачи, определять некоторые виды рака, например. Вопрос в том (для людей, которые готовы за это платить, страховы компаний и медицинских компаний), что им все равно, у тебя там достоверность ответа 88% или 94%. Их интересуют только бюрократические сертификации и их собственная прибыль. Весь оптимизм людей, которые говорят, что выяснили, как лечить рак кожи, сталкивается с нежеланием системы как-то это учитывать. Потому что для того, чтобы иметь AI, который дает 94%, надо вкладывать деньги в исследования. А что там будет с людьми, грубо говоря, никого не интересует, потому что их премия от этого не зависит.

Я считаю, что на текущем уровне наших вычислительных возможностей нет никакой вероятности, что в области искусственного интеллекта произойдет какая-нибудь важная революция. Например, инженер Nvidia на какой-то конференции сказал мне в личной беседе, что надо в 10 раз увеличить компьютинг, мощность, чтобы примерно справляться с self-driving car. В 10 раз они не увеличатся в ближайшие годы, да и он, наверное, оптимист. Но это, вероятно, решаемая проблема, есть более сложные. С пониманием текста все очень плохо, с генерацией текста еще хуже. Кошек от собак мы отличаем, и породы собак тоже. Вот ребенку надо одну кошку показать, и он уже будет знать всех кошек. С конволюционными сетями все сложнее. Мы не знаем точно почему, возможно, просто потому, что у нас в мозгу огромное количество нейронов. Я думаю, что рано или поздно мы научимся делать эти нейроны в hardware, и тогда, может, что-то улучшится. Но большая часть капитализма не о том, чтобы понять тебя, для чего и служит artificial intelligence, а для того, чтобы впарить тебе что-то, что не нужно. Для этого не надо особо думать, как тебя обмануть, подбирать что-то. Главное, просто сделать много рекламы, развесить много флагов, заставить всех говорить о чем-то. А для рекламы никакой искусственный интеллект не нужен. Ну и опять с учетом того, что планета горит, рекламу надо запретить, давайте будем честными. Вот сейчас у нас в Париже +42 °C, и нет никакого желания что-то покупать.

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

Или вот в прошлом году 5 миллиардов было вложено в блокчейн, а это примерно половина того, что Франция тратит на высшее образование. О результатах все в курсе. Вместо того чтобы ученые думали, как улучшить нашу жизнь, как бороться с реальными проблемами, мне, например, предлагают в два раза больше зарплату за то, чтобы делать Facebook-бота, который будет суммаризировать новости. И вот все эти люди, которые продались и ушли делать ботов, могли бы думать о чем-то большем. Я не могу их обвинять, потому что понимаю: государство нас поставило в такую ситуацию, что я тоже облизываюсь на другие зарплаты. Но мне приятно знать: то, что я делаю, хоть как-то полезно.

dou.ua

SannySanoff

Я вот думал раньше, что Java — она toolable, потому что у ей type-aware автокомплит можно легко сделать, ну типа

string.| // <- autocomplete here

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

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

data Point = Point Int Int deriving Show

let distance (Point x y ) (Point x1 y1) = sqrt $ fromIntegral $ abs(x-x1)+abs(y-y1)

let move (Point x y ) dx dy = Point (x+dx) (y + dy)

let somePoint = Point 10 20

Нажимаешь автокомплит, а оно тебе комплитит не после, а до:

move (Point 3 3) 4 5 | <-- this is cursor

autocomplete:

distance _ $ move (Point 3 3) 4 5 причем выражение твое покоцано, но ясно что оно.

show $ move (Point 3 3) 4 5

— ...... и посортировано значит с умом, по статистике, и позволяет стало быть

нажимаешь distance, и тебе тут же:

distance | $ move (Point 3 3) 4 5 и $ добавлен, и курсор поставлен.

нажимаешь потом еще раз автокомплит, а оно тебе:

somePoint

(Point )

Сложно форматировать псто, но чото легче стало, ибо будущее отчотливо (мне). Вон некий известный хаскельный крендель устроился в jetbrains, не иначе как они задумали что-то.

SannySanoff

Внезапно сообщаю, что грустная тема из псто #2944954 (как писать на плюсах под вендой если ты основательно сидишь на jetbrains IDE) имеет продолжение.

Clion + MS Compiler — нету отладчика
Во-первых в последней бете отладчик завезли, отлаживается через lldb, да вроде основные функции работают, всякие ушлые условные брекпойнты итп еще не допилили.

Во-вторых, нашел параллельный билд для CL (ms c++ compiler) (раньше не было), называется он jom, и притворяется nmake, и написан отчего-то на qt core, да пусть хоть на питоне.

Короче, проделал бенчмарки как конпелится мой проект, активный кусок который я пилю (36 compilation units, сильно не без templates), thirdparty и холодные куски не перекомпиляются, debug build:

28 sec = msvc 2019, jom instead of cmake, win
19.3 sec = cl /mp, visual studio 2019 (msbuild?), win
11.5 sec = zapcc(implements clang-7), linux
18.904 = clang8, linux
23.785 = gcc9, linux

такие дела. Говорят, clang умеет притворяться CL, осталось собрать zapcc под вендой и проверить его в этой роли.

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

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

janPona

1) Проблема позднего внедрения.

FE dev: Давай заюзаем модный фреймворк Ф. На нём же так просто делать штуки Ш1, Ш2 и Ш3!
Lead: Нет! Он слишком молод. Мы не можем так рисковать. Давайте пилить свой велосипед.

... прошло 1.5 года

Lead: Бля, пора это говно порефакторить. Давай что ли перепишем Ш1, Ш2 и Ш3 на фреймворке Ф?
FE dev: Пиздно. Там столько кода, что хуй его знает, как оно вообще работает. код Ш2 содержит 15000 строк. А от Ш1 вообще зависит сторонний сервис, который нельзя трогать, иначе пиздец. К тому же стили для Ш3 используются ещё и на другом скрине, а в случае рефакторинга, стилей там вообще не будет.

2) Проблема раннего внедрения

FE Dev: Давай заюзаем модный фреймворк Ф. На нём же так просто делать штуки Ш1, Ш2 и Ш3!
Lead: О, ништяк! Давай!

... прошло 1.5 года

Lead: давай обновим фреймворк Ф1 с версии 0.1.1 до версии 9.14.0. Там залатали 10миллионов уязвимостей и сделали API совместимый с Zend Framework, который сейчас использует команда К5.
FE Dev: Пиздно. API фреймворка Ф1 последней версии поменялся. А в наших фичах столько кода, что хуй его знает, как оно вообще работает. Код Ш2 содержит 15000 строк. А от Ш1 вообще зависит сторонний сервис, который нельзя трогать, иначе пиздец. К тому же стили для Ш3 используются ещё и на другом скрине, а в случае апдейта версии, стилей там вообще не будет.

janPona
· Edited

Программисты — унылые говнюки.

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

Но с годами я понял, как я ошибался. Программисты — такие же несчастные конвейерные рабочие, как и тестеры. Как и уборщики мусора.

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

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

Это, кстати, и объясняет, почему у программистов (да и вообще, у инженеров) доходы практически не растут (ну, скажем, не в десятки же раз) — в отличие от бизнесменов.

И объясняет, почему я не просто в жопе, не просто в сраке, я тот созидающий глист, который строит полную сраку вокруг себя и в ней же и живёт. А из сраки мозга не видно.

SannySanoff

А вот готовлюсь к ICFPC. А вот в этом году будем на плюсах. Готовлю заготовку CMake проекта, чтобы он запускался на трех платформах, тк участники будут разные. Qt у меня внутре, в Qt есть QOpenGLWidget, в нем рисую через QPainter (2d graphics). Взял с 2018 года модельку, налабал рендерер (на 2d canvas, сам делаю перспективные проекцыи и сортирую по z-index ерунда короче)

MSVC/Windows: Отрисовка 140мсек, математика 4 сек
Clang/Linux: Отрисовка 115мсек, математика 2.5 сек.

Оба — релиз билды на одном железе, время — на 1 frame в анимации. Знаю, шо отрисовка медленно, не в этом суть.

Главное беспокоящее, что что-то чахнет колосс.

O01eg

vk.com "ОБОСНОВЫВАЕМ ЛИБЕРТАРИАНСТВО С ПОМОЩЬЮ ПИТОНА
На протяжении десятилетий, пока модель Тьебу оставалась на ближайшей периферии академического дискурса в public choice, её применяли для двух случаев.
Первый — сугубо пространственный экономический анализ. Двухмерный случай, где «центры», к которым присоединяются агенты – это локальные общественные блага (бассейны или публичные библиотеки), финансируемые из местных бюджетов.
Второй —анализ формирования партий в идеологическом пространстве политических взглядов. Метод главных компонент показал, что в большинстве стран и культур этих измерений два, поэтому в следующий раз, когда будете делать мемы о политических координатах, знайте, что этот ваш выбор научно обоснован.
В какой-то момент времени дискурсу понадобился сумасшедший либертарианец, который взглянул на модель Тьебу и сказал – «А что если соединить пространственные и идеологические размерности и сделать наши центры предоставления локальных общественных благ центрами предоставления ВСЕХ общественных благ, включая законотворчество и обеспечение правопорядка? Тогда у нас получится система, очень похожая на то, что мы называем контрактными юрисдикциями.»
Предположим, что у есть четыре измерения (два географических и два идеологических), нормирующихся к единичному отрезку. И есть две контрактные юрисдикции, обе базирующиеся в географических координатах (0,5; 0,5), только первая имеет координаты (0;0), а вторая – (1;1). Грубо говоря, первая – это авторитарный левый гулаг, а вторая – капиталистический рай, но конторы зарегистрированы через дорогу. И жители окрестностей смогут подписываться как к первой, так и ко второй, в зависимости от своих предпочтений и движимые мотивом минимизации общих издержек. Транспортные издержки, таким образом, переопределяются как преференциальные и суммируются из географических и идеологических издержек. Это выражается в желании потребителей ходить в общественный бассейн поближе к дому, но при этом потребитель готов пройти пару кварталов, только чтобы не плавать в одной луже с коммунистами.
В чем же смысл системы контрактных юрисдикций с точки зрения модели Тьебу? В чем ее потенциал с точки зрения увеличения потребительской полезности по сравнению с альтернативами? Все очень просто: в текущих реалиях, система «территориальных юрисдикций» присоединяет агентов к себе, по дефолту учитывая лишь два измерения – пространственные. Экстерриториальные контрактные юрисдикции позволят принимать во внимание не только «географические», но и «идеологические» преференцинальные издержки, приводя к более эффективному равновесию, с точки зрения минимизации издержек её агентов.
Для иллюстрации модели и для свидетельства тому, что авторы – не простые пустозвоны, я написал несколько программ на Питоне, которые по сути являются агентскими моделями контрактных юрисдикций в духе Тьебу. Для более чёткой формализации код написан для ряда систем изначальных допущений, и файлы в формате .ipynb выложены в открытый доступ с подробнейшими комментариями, чтобы каждый мог в своем Джупитере поиграться с переменными и полюбоваться своими собственными графиками территориального разбиения агентов на контрактные юрисдикции. Всего создано несколько моделей:..."

janPona
· Edited

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

На душе как-то депрессивно из-за мгнозапно навалившегося отвращения к коду, программированию и it отрасли в целом. Вавилон, мегатонны информационного шума, толпа незнакомых фреймворков, чуждых мне предметных областей. Слишком сильно ощутил себя песчинкой на дне мирового океана. Тревожный звонок: пропало желание программировать для себя. Это пройдёт, послезавтра на работу, втянусь. Другим не советую так блюзовать, выше нос!

Linda-chan

Как хранить конфиги скриптов? Использовать отдельные файлы или системные средства (текстовые конфиги или реестр в Windows, например)? Использовать отдельные скрипты на том же языке с инициализацией переменных и вызывать их из главного скрипта? Или прямо в самом скрипте писать инициализацию переменных и пометки: «Настраивать здесь»? Кто как делает?

SannySanoff

Постепенно я начинаю догонять, отчего люди не уважают клавишу Ctrl и ремапят ее куда попало. Я в последнее время слишком часто нажимаю, например, Ctrl+F2 (Stop debugged process), и мой большой палец (Ctrl) начинает прямо таки болеть от слишком большой подвернутости.

Гейбук с его шорткатами меня не подвиг, я его прогнул под себя, а один этот момент — и я уже задумываюсь поменять шорткат на Alt+F2. А на подходе Ctrl+C.

Так приходит старость.

SannySanoff

Тот случай, когда приходит новый чувак и спрашивает "а фигли тут сервис [производительный — примечание мое] начали писать на питоне?" И ты такой отвечаешь: "да, я тоже так считаю, шо можо было бы что-то и получше взять", и радуешься что нормальный чел. А он такой: "вот я, например, писал бы на ноде.жс".

Тьху!