34.7
Karma
44.5
Rating

Программист

Разбор задачи с собеседования Google: поиск соотношения

+6

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

О новых стандартах C++

+1

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


Я не могу привести примера с каррингом, но лично мне при написании плюсового кода очень не хватает optional и variant, которые появились только с С++17.


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


Пример для variant — если функция возвращает результат или причину ошибки, то на Си это решается довольно некрасиво — что-нибудь типа "передать указатель на структуру в функцию, она туда запишет результат, если захочет" и потом проверить, что функция вернула 0, а не код ошибки. В таких случаях хочется писать что-то типа func (int) -> Ok(value) | Fail(error_code).


P.S. к сожалению, и optional и variant в С++ довольно ограничены, но без них ещё хуже.

Пиксельный Lo-fi в Unity

0

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

Не обзор ASUS ZenBook Pro 15 UX580GE — почти год с почти топом

0

А я за два года к osx так и не смог привыкнуть. Регулярно вылазят всякие неудобные мелочи, да и интерфейс всё ещё кажется неудобным.
Например, в разработке под андроид были траблы со сборкой so библиотечки — оказалось, всякие утилиты типа objdump, nm и т.п. в osx по-своему работают и было проще их в виртуалке с линуксом запускать. brew не умеет ставить софт нужной версии, только самой последней. Софт-линки в finder почему-то не всегда работают как надо, и путь "на папку вверх" может привести совсем не туда. Finder зачем-то создаёт скрытые файлики .DS_store, и мой код типа "обработать все файлики из папки" начинает обрастать костылями с проверкой имени. При работе с smb иногда появляются файлики с именем, начинающимся с ".~" Таких мелочей много, они субьективны, вполне возможно, что они фиксятся или не относятся к самой ОС, но на впечатления от работы сильно влияют.


Из плюсов osx — она хорошо работает при недостатке памяти, мак с 8гб RAM вполне отзывчиво работает, даже если я запущу одновременно кучу софта, а убунта в аналогичных случаях начинает подвисать.


Про виртуалку — я думал полностью перейти на неё, но упёрся в недостаток памяти. например если выделить 4гб под убунту (из восьми) и в ней собирать андроид проект, то тормозить начинает всё — и osx, и убунта, памяти не хватает нигде и всё плохо. Для экономии нужны приседания с закрыванием браузера и всякого фонового софта типа скайпа. Пробовал выделять 6гб виртуалке и в osx вообще ничего не запускать — но линукс не так стоически переносит недостаток оперативки, как osx, и 6гб мне сильно не хватает.

Представлен моноблок «Эльбрус 801М» в «новом современном дизайне»

+12

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


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


Оценка в 2.9 в винде для процессора — это позор, даже у нетбучного intel Atom из 2010 года было лучше.


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

Как менялись зарплаты и популярность языков программирования за последние 2 года

Валютный рынок и финансовая инженерия в Средние века

0

В Праге арабские обменники — разница в курсах минимальная (точные цифры не помню, но я был очень сильно удивлён), зато у них регулярный поток клиентов и в сумме они неплохо зарабатывают.

В ВМС США отказываются от использования сенсорных экранов в системах управления боевых кораблей

+27

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

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

+6

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


  1. Студент не ходит на пары, так как уже знает предмет. (Лично знаю случай, когда у человека, выросшего в США, были проблемы со здачей английского языка, т.к. он на него не ходил)
  2. Студент не ходит на пары, т.к. качество преподавания отвратительное и эффективнее готовиться самому.
  3. Входы в систему управления обучением или просмотр онлайн-курсов очень легко автоматизируются, в принципе бесполезная идея, впрочем как и отнимать время студентов. Если упороться и задавать студентам тесты прям посредине курса- один студент будет готовить ответы, остальные-прокручивать видео и отвечать.
  4. Переписку с преподавателями и активность на форумах можно вообще без проблем повысить, но лучше от однострочных малоосмысленных сообщений не станет никому. Понизить тоже можно — группы/чаты становятся закрытыми и переписка ведётся там.
  5. Оценивать поведение — ну хз, если человек учится и не творит чего-то совсем ненормального, то какая разница?

Алексей Савватеев: Как бороться с коррупцией при помощи математики (Нобелевская премия по экономике за 2016 год)

0

Это будет узаконенная дискриминация (особенно если затрагивать детей и родственников — они-то в чём виноваты?). "В сша негров линчуют", а у нас без всяких исторических предпосылок получится своя социальная группа "негров" с запретом на пользование благами цивилизации типа самолетов, ресторанов, хорошего образования и т.п. Их дети так же будут с самого начала в таком невыгодном положении и скорее всего они останутся такими же. Вы хотите жить в мире с узаконенным социальным расслоением?


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

Изначально неработоспособен: как выжить с ноутом на Windows 10 и 32-гиговым накопителем

+20

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

История с продолжением: собственный компилятор Паскаля для Windows с чистого листа

+1

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


  1. допустим, мы разрешили объявлять переменные в произвольных местах.
  2. Было бы логично добавить автовывод типов, чтобы не писать лишнего конструкции вида var a := 2
  3. можно прикрутить константы (напимер, val a := 2), чтобы код стал более строгим.
  4. тогда захочется, чтобы конструкции типа if возвращали выражения, чтобы было удобно инициализировать константы: val sign := if (a>=0) then 1 else 0 end

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


Если остановиться на пол-пути и сделать только первое изменение, то возможность легко разложить переменные функции по регистрам/стеку пропадает (придётся анализировать все возможные пути исполнения, включая использование goto), а сам язык не станет сильно лучше.

ГИБДД, ЦОДД Москвы и РСА начали проверять наличие полиса ОСАГО с помощью дорожных камер

0

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

Учим функциональное программирование в Python за 10 минут

Linux, Microsoft и марксизм

+2

Могли. Я на ноутбуке со 128 мб и жёстким диском в 4гб нормально использовал win2000k и софт типа браузера/третьих героев/worms там тоже нормально работал. Телефоны в 2008 уже располагали аналогичными возможностями.


Конечно, новые софт/игры с PC на телефоне упирались бы в нехватку ресурсов, но буквально за несколько лет до этого сами компьютеры были тоже слабыми. Для примера, вторая цивилизация требовала 8 мб оперативки. Третья уже попрожорливее — аж 128 мб, но ничего криминального.


Для windows mobile не поленились и сделали версии word/excel, которые по интерфейсу были похожи на PC версию. (И я их использовал — вполне можно). Мне кажется, при желании microsoft смогли бы в десктопном ворде, да и в самой винде поотключать ресурсоёмкие фичи, чтобы хорошо работало на телефонном железе.

Разбираемся с латинскими сокращениями и фразами в английском языке

0

Ага, довольно долго ломал голову, что же значит "ad hoc polymorphism". Впрочем, сейчас не стало сильно понятнее.

ГИБДД, ЦОДД Москвы и РСА начали проверять наличие полиса ОСАГО с помощью дорожных камер

0

Не понятно, что мешает сразу по номеру авто говорить, есть ли страховка (как в этом помогут вин, номер кузова и т.п.?).


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

Телега для датасайентиста

+2

Да, оно. Тоже писал бота) Ещё через ssh можно интерфейс прокидывать — например, чтобы на сервере открывался редактор текста как окно на моём компе. (Линукс и там и там).
P.s. Ещё я регал двух ботов — один для отладки у себя, второй на сервере, а файлик с токеном для бота добавлял в .gitignore

Телега для датасайентиста

+2

Мне показалось удобным через sshfs файлы перекидывать. Монтируешь папку с проектом на сервере как папку на своём компе и спокойно редактируешь/добавляешь файлики.

Для мощных электросамокатов хотят скорректировать ПДД, но единого мнения нет

+2

Москва: ботанический сад. Для пешеходов выделена широченная дорога и сбоку нарисована велодорожка в метр-полтора шириной. Ехать по ней нормально невозможно, регулярно приходится оттормаживаться из-за людей, которые не смотрят по сторонам и хаотично меняют направление движения, не говоря уж о том, что они без всякой нужды идут по велодорожке. Для родителей, которые отпускают на "велодорожку" ребёнка на самокате, чтобы он там непредсказуемо двигался с околопешеходной скоростью, вообще нужен отдельный котел в аду, приходится их чадо за несколько метров объезжать.

«Мой офис» и ICQ. Эксперты составили список российского ПО для обязательной предустановки на смартфоны

+2

Список выглядит как издевательство (а особенно комментарии про "не уступает аналогам"). Притащили свои средневековые представления в интернет и начали его делить на "своё" и "чужое", не приложив ни капли усилий для его развития.

Депутат Горелкин объяснил, зачем он внёс законопроект о национализации «Яндекса»

+10

А потом программисты увольняются и от компании остаётся одно название.

Как мы сделали движок и игру на нем за полтора года

0

Технически это очень просто делается: рендерим в FHD текстуру, выбираем для неё интерполяцию "ближайший пиксель" (как в майнкрафте) и из неё рендерим на экран.


Не знаю, есть ли это в движке, но добавить будет несложно.

Мир трехмерной гиперсферы. Геодезическая трассировка лучей в замкнутой вселенной со сферической геометрией

+1

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

Как мы сделали движок и игру на нем за полтора года

0
Зачем тратить столько времени на создание своего языка программирования, когда можно писать на готовом (С++, Java, etc).

Правда, звучит как бред?

Угадайте, на чём написана внутриигровая логика в третьем ведьмаке?

Модели дженериков и метапрограммирования: Go, Rust, Swift, D и другие

+1

Не очень понятен момент про Swift. Чем witness-таблица отличается от тайп-классов? Witness-таблица это как vtable, но указатель на неё не хранится в объекте, а передаётся?
Если так, то что делать с типами более высокого порядка, например:


zip(a: Pair<List<T>, List<U>>) -> List<Pair<U, V>>

Создавать witness-таблицы на лету?

Microsoft увеличила годовую прибыль более чем вдвое

-1

Тем не менее, статьи в их блоге не блистают популярностью: у многих рейтинг ниже десяти, просмотров 2-3 тысячи или даже меньше тысячи, комментариев практически нет.
Из более-менее удачных недавних статей я бы назвал только статью про spaceship оператор в с++.

Эксперимент Instagram по скрытию счетчика лайков расширяется еще на 6 стран

+3

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

Издевательски точный, быстрый и легковесный поиск баркодов через семантическую сегментацию

0

Маленький вопрос: насколько это распознавание устойчиво к повороту баркода? Например, на 20 или 45 градусов.

Генерация подземелий в Diablo 1

+1

Но тем не менее minecraft остаётся всё таким же квадратным. Я думал, что иначе нельзя, пока не увидел графику в portal knights:


картинка

image


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


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

Функциональный подход обработки ошибок в Dart

+2

Я не пишу на Dart, но почему бы добавить метод, который будет принимать две лямбды (для left и right частей) и вызывать одну из них?
Чтобы выглядело не так:


if (either.isRight) {
    final contact = either.right;
    yield ContactIsShowingState(contact);
} else {
    final failure = either.left;
    if (failure is NetworkFailure) yield NetworkFailureState(failure);
    if (failure is UnknownFailure) yield UnknownFailureState(failure);
}

А как-то так:


either.foreach(
    contact => { yield ContactIsShowingState(contact) },
    failure => {
        if (failure is NetworkFailure) yield NetworkFailureState(failure);
        if (failure is UnknownFailure) yield UnknownFailureState(failure);
    }
)

Реализация свойств в С++

0

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


Я так не пробовал, просто пришедшая в голову идея:


struct Person{
    Property<std::string> name("");
    Property<int, private_setter=true> id(0, setter=[](int value){ assert(value >= 0); return value;});
}

Структура данных B-дерево

+6

Самое важное не написали: фишка B-дерева в том, что жёсткий диск читает/пишет данные большими кусочками зараз (например, по 4кб), и количество потомков в вершине подбирается под это ограничение. Получается очень "невысокое" дерево, хорошо подходящее для хранения на диске. Диск сильно медленнее процессора, поэтому мы можем себе позволить хранить потомков в массиве и поддерживать их упорядоченность при вставке/удалении — всё равно перезапись делается кусками по 4кб (или сколько там в новых)

Шпаргалка по Gradle

0

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

В России запускают систему наблюдения за всеми автомобилями

+1

Мне вообще кажется, что предпочитаемая скорость движения и безопасность вождения очень слабо связаны друг с другом. Достаточно посмотреть, как некоторые "аккуратные, медленные" водители резко дёргают руль прямо в повороте/при перестроении/объезде маленькой кочки или резко жмут на тормоз без причины, как начинаешь сомневаться в безопасности.
Да, я привык в тот же поворот заходить на условных 80 вместо 60, но если я окажусь там в дождь/гололёд/ночью, то сбавлю скорость и пройду его так же плавно, как и на большой скорости, только потихоньку. Если в гололёд начнёт заносить машину, я опять же без проблем выйду из заноса (возможно, это заслуга электроники, а не меня, но суть в том, что я привык чувствовать грань сноса и знаю, что делать дальше). Неторопливые водители, которым небольшая скорость прощает кривое управление, просто не привыкли к таким ситуациям и в сложных условиях оказываются не способны правильно среагировать.

Почему Swift может стать большим событием в глубинном обучении

+3

Прочитал их аргументы, почему выбрали swift. Убедительным не показалось. Динамическая типизация — ну ок, не подходит (хотя спорно, для каких-то применений это и плюс, python не просто так популярен). JVM языки — ну ок, не все хотят зависеть от JVM и особенностей реализации.
Но аргументы против С++ и Раста какие-то неубедительные. Tensorflow сама по себе написана на плюсах, было бы логично их и дальше использовать, предоставляя сишное api для желающих использовать из какого угодно языка.

Сравнение одинакового проекта в Rust, Haskell, C++, Python, Scala и OCaml

0
современный С++ разделить вообще почти нельзя.

Я думаю, имелись ввиду inline, constexpr и шаблонные функции/классы.

Сравнение одинакового проекта в Rust, Haskell, C++, Python, Scala и OCaml

+12

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


И я почему-то уверен, что если бы такой курс был, мало кто из наших студентов использовал бы немейнстримные языки типа Haskell/Rust/Okaml/Scala.


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


  • В шаде на курсе по С++ писал интерпретатор лиспа. Как мне показалось, для подобных штук плюсы не очень удобно использовать, код получается довольно громоздким. Если бы я писал код на скале, было бы в 2-3 раза короче. Меня удивляет, что в статье выше код на плюсах получился не таким уж и большим — видимо, кто-то познал дзен и очень хорошо выбрал уровень абстракций.
  • Ещё (там же в шаде) на курсе по питону была домашка с интерпретатором питоновского байт-кода, написанном на питоне. Но, видимо, мой мозг слишком привык к статической типизации, т.к. динамическими фишками питона я почти не пользуюсь и в большинстве задач код получается таким же или дальше длинее, чем в скале.

P.S. А где вообще есть хорошие хардкорные курсы по классическому CS с построением компиляторов, алгоритмами и прочим? Интересуют как онлайн курсы, так и аспирантура в России/за границей.

Нужна ли людям математика?

0

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

Мировая война с личными автомобилями: MaaS шагает по планете

-1

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

1 There