37.2
Karma
44.4
Rating

Программист

Сравнение одинакового проекта в 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

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

Российский электромобиль Zetta появится в продаже с декабря по 450 000 рублей

+4

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

Изучаем английский: Пять неочевидных письменных ошибок, и как их избежать

0
Неверно: He's got a beautiful house, that is located in a good neighborhood.
Верно: He's got a beautiful house, which is located in a good neighborhood.

А можно ли короче? "He's got a beautiful house located in a good neighborhood."

Арифметика fixed-point на C++

+3
для каждой переменной и для каждой операции приходилось писать комментарий — сколько тут знаков до запятой и после:)

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

Теперь хороших разрабов меряют по просмотрам и подписчикам — и это плохо

+7

Это не только к F# относится, те же scala/rust/haskell реально круты и удобны, но из-за инерции мышления большинства людей они используются намного реже, чем заслуживают.

«ВКонтакте» запускает самую дешёвую в РФ подписку на аудиокниги

+1

Самая дешёвая — это бесплатная — и она как раз была. Нет никакого достижения в том, чтобы начать за то же самое брать дееьги с пользователей.

Справочная: как работают водородные автомобили и когда они появятся на дорогах

0

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

Издательство «Эксмо» подало в суд на «Вконтакте» за пиратство, но не требует блокировки сайта

+7

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

Вейвлет – анализ. Основы

0

Для вейвлетов получится немного другая картинка:
Одно значение для волны самого мелкого масштаба (волна накрывает весь трек), два значения для масштаба покрупнее, 4, 8, 16… и т.д. значений для каждого следующего масштаба.


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

Хакаем CAN шину авто. Виртуальная панель приборов

+1

На википедии пишут, что Raspberri Pi поддерживает OpenGL ES 2.0 — т.е., есть и текстуры и пискльные/вершинные шейдеры. Про производительность можно почитать здесь: https://www.raspberrypi.org/forums/viewtopic.php?t=88058, якобы без текстур и освещения можно рисовать 19миллионов треугольников в секунду.

Как начать применять R в Enterprise. Пример практического подхода

0

Только начал читать введение, как статья закончилась. Я ожидал как минимум примеров/сравнений, а не просто утверждений типа "R быстрее, выше, сильнее"

Samsung Galaxy Fold начнут продавать в России с мая за 150–200 тыс. рублей

+1

С такой разницей в цене можно на выходных за границу слетать и там купить.

Язык Bosque — новый язык программирования от Microsoft

+1

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

Как в Android'е передать переменную из фрагмента в активность?

+1

На самом деле примерно так и надо (ну не именно так, а чуть хитрее). Я вообще не понимаю, почему большинство примеров начинаются с хранения состояния в активити и попыток его сохранить/передать при повороте экрана, сворачивании приложения и переходе на другую активити.
Всей этой боли можно избежать, если сделать иначе: хранить состояние отдельно от активити в более стабильном месте: например, в статическом поле, в поле application, а что-то долговременное вообще сохранять в preferences.


Есть некоторые моменты, связанные с многопоточностью и activity lifecycle (оно может создаваться заново, поэтому ссылку на него хранить нельзя, но при этом его надо как-то уведомлять об изменения состояния). В androidx появились стандартные классы, которые делают это адекватным образом:


  1. Класс для хранения состояния, который может уведомлять подписавшихся, причем состояние можно изменять и из UI потока, и из другого.
  2. У activity появился lifecycleOwner, благодаря чему активити при завершении работы будет отписано от уведомлений.
    Я не использовал этот подход для чего-то сложного, но на простых примерах очень понравилось — код намного проще и короче.

Ищем утечки памяти в приложениях на Python

+1

Я нашёл забавный способ — форкать и производить действия в дочеренем процессе.


(минутка машинного обучения) У меня утекала память где-то в keras, причём не обычная, а та что на GPU. Скрипт одну за другой обучал много различных сеточек, и в какой-то момент всё падало из-за нехватки свободной памяти на видеокарте. Рабочим решением оказалось форкать процесс, обучать сеточку и сохранять результаты в дочернем, а в родительском ждать совершения дочернего и снова так делать для каждой следующей сетки. У меня были некоторые сомнения относительно того, как это будет сочетаться с использованием cuda (keras импортировалась раньше, чем я форкал процесс, и tensorflow сразу занимала почти всю память на GPU), но это всё нормально работало.

9 удивительно простых способов сделать так, чтобы люди отвечали на ваши сообщения

0

В России прямо рядом с Москвой есть места, где кроме как по полосе больше негде херачить — ни обочины, ни тем более тротуара. Велодоржки местами попадаются, но планировал их какой-то Сусанин, так что толку от них немного.

Как я организовал хранение фотографий

0

Там сильно зависит от задач.


  • Допустим, мы хотим обучить сетку, которая правдобоподбно увеличивает фотографии — нужны только сами фотографии.
  • Вместе с фотографией иногда хранятся метаданные типа размера объектива, времени съемки, и, возможно, даже gps-координат места. Эти данные можно использовать для обучения вида "отличить зимнее фото от летнего" или "угадать страну/город/место по фотографии"
  • Можно обучить автоэнкодер, который будет сжимать фотографию в промежуточное представление (например, вектор на 128 или на 1024 компоненты). Потом можно будет запустить энкодер на размеченных данных и поверх него обучить какой-нибудь хитрый декодер — например, тот, который сможет из этого вектора сделать текстовое описание фотографии. Фишка в том, что для обучения автоэнкодера может потребоваться намного больше данных (и их размечать не надо), чем для хитрого декодера (где размечать уже придётся).
  • Ещё вариант: у гугла есть какое-то работающее решение, которое что-то хорошо распознаёт, но по каким-то причинам они его использовать не хотят. Например, медленно работает. Тогда можно взять эти фотки, разметить их тем решением и потом обучить сетку.

Исследование связности мировых валют через корреляцию абсолютных курсов

+1

Было бы интересно найти для корреляционной матрицы собственные вектора.

Как я организовал хранение фотографий

0

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

Если есть в кармане пачка сигарет…

+2

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

Решение проблем с ПДД

+1

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

Решение проблем с ПДД

0

Соблюдение ПДД != безопасное движение.
Если все обвешаются камерами и начнут строжайше следить и штрафовать друг друга за малейшее нарушение, то получится как в анекдоте с двумя ковбоями и повышением ввп:


  1. Правила придётся сильно усложнить, чтобы накрыть все пограничные случаи и при этом избежать противоречий. Что-то мне подсказывает, что усложнить- усложнят, а с остальным получится как всегда.
  2. Так как правила скорее всего будут содержать противоречия, особо хитрые будут провоцировать нарушения и наживаться на этом. (Правила большие, можно кучу сценариев придумать)
  3. На камеры, системы хранения и распознавания происходящего будет регулярно тратиться куча ресурсов, не принося экономике страны ничего полезного.
  4. Нет никаких гарантий, что движение станет безопаснее: например, медленно ехать по пустой ровной дороге сложно — ничего не происходит, концентрация внимания пропадает, реакция замедляется.
  5. Ограничителем должны быть не знаки, а текущая обстановка и возможности ТС. Если я ночью в гололед и снегопад буду ехать разрешённые 20 перед пешеходным переходом, то это ни разу не значит, что я успею затормозить. Скоростные ограничения в текущем виде мешают ехать в сухую погоду при хорошей видимости и при этом не обеспечивают безопасности в сложных условиях. Если вместо текущих знаков навешать их целую кучу под каждый случай или придумать модификаторов к правилам, то это будет опять же усложнение и простор для злоупотреблений (типа -10% к максимальной скорости зимой, -25% за то, что на дороге есть снег, +10% за шипованные шины на снегу, -10% за тёмное время суток) — бедный водитель замучается за этим всем следить.
  6. Определенные категории людей с мигалками или статусом всё равно будут нарушать, и им за это ничего не будет. Нагрузка по выплате штрафов достанется обычным водителям.
  7. Если сделать штрафы реально большими (чтобы человек потом несколько недель эти деньги зарабатывал), то люди будут просто бояться ездить и водитель будет испытывать постоянный стресс, что безопасности не прибавит. Вдобавок, большие штрафы приведут к коррупции.

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

Решение проблем с ПДД

0

Очень размытые критерии подстроенности. Допустим, есть дорога с ограничением 90, а человек катится по ней 60 или вообще 40. Формально он ничего не нарушает (и у него могут быть реальные причины так ехать), но возможность собирать деньги с обгоняющих может сподвигнуть некоторых особо хитрых ездить так специально в самых неподходящих местах, сильно замедляя движение.
Еще вариант — в городе на двухполосной дороге со сплошной посередине припарковать авто/ поставить на аварийку / изобразить поломку. Представляете, сколько штрафов можно будет собрать? А самое печальное, что наши правила никак не разрешают объехать в такой ситуации. В итоге получится целая итальянская забастовка с финансированием самых ярых саботеров за счет остальных.

«Пятнашка» на Java — как разработать полноценную игру

0

Я, кстати, несколько лет назад написал на libgdx игру "жизнь" на шейдерах. Видеокарта поле в 1к*1к ячеек по десять тысяч раз в секунду успевала обновлять. Хотел написать об этом на хабр, но подумал, что это будет недостаточно серьёзно)

Логична ли математика или почему парадоксальны аксиоматические теории

+1

Мне кажется, тема не раскрыта.


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

Этот ваш хаскель (не) только для факториалов и годен

+1

scala:
i7 — 6500U


object Main extends App {
  val start = System.currentTimeMillis()
  val n = 100000000
  val arr = new Array[Int](n + 1)

  for (k1 <- 1 to math.sqrt(n).toInt) {
    for (k2 <- k1 to (n / k1)) {
      arr(k1 * k2) += (if (k1 != k2) k1 + k2 else k1)
    }
  }

  val finish = System.currentTimeMillis()
  println((finish - start) * 0.001)
}

Код такой же, читабельность чуть получше. Время около 10 секунд для 10^8. Замена массива Int на массив Long производительность вроде бы не снижает.

Разработка ракеты, способной достичь Луны, обойдется РФ в 740 млрд рублей

+1

740.000.000.000 рублей это примерно по 5000 рублей с каждого гражданина РФ. Очень некисло.

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

+7

Я бы отказался от такой работы из моральных принципов: это вредительство в чистом виде.

Снижает ли скорость снижение скорости?

+1

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

Автомобили «катамараны»

0

При взгляде на некоторые катамараны возникает мысль, что если выкинуть вторую часть, то можно снизить сопротивление воздуха ещё в два раза и получить мотоцикл. Только тогда под солнечные батареи меньше места останется.
P.S. Спасибо за подборку, читать и смотреть было интересно)

Kotlin как будущее разработки приложений на Android

0

На скале можно и под андроид писать. Единственная проблема — скала 2.12 требует java 8, поэтому приходится 2.11 использовать.

Kotlin как будущее разработки приложений на Android

+2

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

Выбор авто для айтишника, или советы чайникам от чайника

0
Ну т.е. я прав — это делается не для того, чтобы ехать, а чтобы рвануть пошустрее. Зачем?

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

Выбор авто для айтишника, или советы чайникам от чайника

0

Не минусовал, но вы не правы.


Количества аварий недостаточно для оценки опасности — надо ещё смотреть долю ездящих спортбайков. А то так можно сделать вывод, что опаснее всего ездить на японских мотоциклах, т.к. на них более 80% аварий.


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

Выбор авто для айтишника, или советы чайникам от чайника

+1

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

Снижает ли скорость снижение скорости?

0

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

Снижает ли скорость снижение скорости?

0
Разброс скоростей — это уж полный ад на дороге, кто-то еле еле, кто-то на пределе законных возможностей, а кто-то гонит.

Да нет, если люди адекватно располагаются по полосам и более быстрые едут левее, то проблем нет. Устаканивается, что слева, например, едут 110, справа 90 и все более-менее довольны. Ад начинается, когда медленно едущие начинают занимать все полосы. Даже если полос 5, как на Мкаде, компания их трёх тошнотов может устроить парад в трёх левых полосах и ехать там 80 км/ч. Особенно доставляют персонажи, которые пристраиваются рядышком с авто из другой полосы и едут в его темпе. Формально они вроде бы могут так делать, а реально из-за них вместо стабильно движущегося потока начинаются перестроения и хаос.

1 There