How to become an author
.NET Knowledge Base
  • All streams
  • Development
  • Administrating
  • Design
  • Management
  • Marketing
  • PopSci
Log in Sign up
11.2
Karma
0.0
Rating
9
Followers
3
Following

Данил Яранцев Yardanico

Пользователь

Profile

Posts 2

Comments 58

Bookmarks 3

  • Интереснейшее влияние Cyclone
    10
    Yardanico
    October 22, 2020 at 06:21 AM
    0

    Да, вы правы, в 1.4 есть ARC в котором реализованы семантики перемещений + счётчик ссылок, ну и ORC, как надстройка над ARC, но именно семантик владения нет — планируется реализовать https://github.com/nim-lang/RFCs/issues/144 в Nim 2.0 (https://github.com/nim-lang/RFCs/issues/177 — "#144 is not dead but scheduled for Nim version 2 which is a couple of years away. "), но не сейчас (много кода нужно изменять и так далее).

  • Введение в ARC/ORC в Nim
    15
    Yardanico
    October 18, 2020 at 02:19 PM
    +1

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


    Ещё почитайте https://news.ycombinator.com/item?id=16443688, коротко говоря — в Rust довольно сложно делать циклические структуры по сравнению с большинством других языков.


    Ещё вот — https://rcoh.me/posts/rust-linked-list-basically-impossible/

  • Введение в ARC/ORC в Nim
    15
    Yardanico
    October 17, 2020 at 09:33 PM
    0
    Как по мне, для Borrowing & Owning нужно изменять весь язык, что далеко не является лучшим решением :) С ARC/ORC изменений в код вообще вносить не нужно (кроме редких случаев, например порядка финализаторов, которые использовались с refc)
  • Введение в ARC/ORC в Nim
    15
    Yardanico
    October 16, 2020 at 05:25 PM
    +1
    У него нет никакой расшифровки, ORC просто подразумевает под собой работу с циклами (O обозначает замкнутый цикл)
  • Введение в ARC/ORC в Nim
    15
    Yardanico
    October 16, 2020 at 04:02 PM
    0
    Обновление — вышел Nim 1.4 с ARC и ORC, которые я описал в статье.
    nim-lang.org/blog/2020/10/16/version-140-released.html
  • Введение в ARC/ORC в Nim
    15
    Yardanico
    October 16, 2020 at 07:35 AM
    0
    Для информации — данная статья является переводом моей собственной статьи, опубликованной в nim-lang.org/blog/2020/10/15/introduction-to-arc-orc-in-nim.html, при этом я немного дополнил некоторые моменты.

    Об оригинале на английском проводились обсуждения на:
    Reddit: reddit.com/r/programming/comments/jbkerv/introduction_to_arcorc_in_nim
    Hacker News: news.ycombinator.com/item?id=24786649
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 11:22 PM
    0
    github.com/pragmagic/godot-nim — Nim биндинги для GDNative
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 08:49 PM
    0
    Нативные бинарники, нативная производительность, не нужно никакого дополнительного рантайма/VM, всё портабельно (если под платформу есть Си компилятор — там вполне возможно использовать Nim).

    А так есть все фичи для «удобства» написания программ — и автоматическое управление памятью, и исключения, и так далее, и всё быстро и удобно :)
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 08:46 PM
    0
    Я в habr.com/ru/post/462577/#comment_21841990 выделил несколько хороших ссылок, чтобы почитать о ARC, и ещё недавно пост с новыми изменениями в ARC был опубликован — forum.nim-lang.org/t/6549
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 07:40 PM
    0

    Есть when defined (gcDestructors) — но это мало где нужно, в большинстве случаев никаких изменений не нужно, только если оптимизации именно для ARC (я про вещи типа sink/lent). И да, ARC — это automatic reference counting (ну и move semantics), это не atomic reference counting (некоторые путают с ARC в Swift)

  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 04:01 PM
    0

    Насчёт GC хотелось бы уточнить — конечно проводится много работы в сторону ARC/ORC, но дефолтным GC в будущем будем скорее всего ORC (ARC со сборщиком циклов). ARC сам по себе не является полноценным GC, это так. Просто немного неправильно звучит "избавиться от GC" :)

  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 01:04 PM
    +1
    Ну --gc:arc уже можно использовать на 1.2, а он как раз может использоваться в hard realtime :) Конечно да, ещё не полностью стабильно, но не так уж и много времени осталось до того, как этот пункт станет реальностью
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 12:33 PM
    0
    Просто говорит о том, что возможно С компилятор скомпиленный Си код Nim'а понял лучше, чем чистый Си :)
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 11:52 AM
    +1
    Как я уже написал в другом комментарии — в статье автор компилит и C, и Nim без оптимизации — если с полными оптимизациями, то скорость примерно равна.
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 11:51 AM
    +1
    Если честно — оригинальная статья очень плохая, просто идёт описание основного синтаксиса и т.д. Автор даже бенчмарк не смог нормально провести (!) — результаты Nim тут в полном отладочном режиме.
    См. github.com/yakkomajuri/fibonacci-benchmark/issues/1 насчёт бенчмарка и forum.nim-lang.org/t/6577 для мнения от другого человека :)
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 11:37 AM
    0
    Ещё есть -d:danger для выключения всех рантайм проверок (таким был -d:release до 0.20, сейчас этот define безопаснее) :)
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 11:35 AM
    0
    refc годами работал и он очень стабилен, но уже долгое время вся работа идёт на ARC, и уже много прогресса — habr.com/ru/post/462577/#comment_21841990 для дополнительной информации :)
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 11:35 AM
    0
    А где враньё на главной странице?) Там ничего не говорится про то, что у Nim'а нет GC.
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 10:56 AM
    +1
    Что вы имеете ввиду под «отсутствие Объектов»? В Nim новые типы для хранения данных в основном определяются через «object»/«ref object». Конечно они не классы, но вполне себе объекты. При желании есть и наследование (единичное), и runtime dispatch (методы и мультиметоды). Правда всё-таки в основном предпочитается композиция и использование object variant'ов (что-то типа union структур в Си, но удобнее)
  • Стоит ли переходить с Python на Nim ради производительности?
    214
    Yardanico
    July 23, 2020 at 10:53 AM
    +4
    Таки хочется заметить — есть github.com/yglukhov/nimpy который позволяет использовать библиотеки Python'а в Nim, и наоборот — писать питоновские модули на Nim, всё через C API Python'а, обёрнуто в высокоуровневые макросы и типы.
  • Мой опыт разработки на языке Nim
    51
    Yardanico
    July 13, 2020 at 08:07 PM
    0
    Извиняюсь за бамп старого треда, но таки с LTO (который по сути можно «бесплатно» использовать с Nim, так как он компилируется в С) и статической линковкой с musl можно получить бинарники меньше 40-30кб, а так ещё если использовать LTO, ARC и --panics:on -d:noSignalHandler --opt:size при статической линковке с musl, то у меня от echo «Hello, world!» выходил статический бинарник <10кб размером :)
  • Мой опыт разработки на языке Nim
    51
    Yardanico
    July 13, 2020 at 08:03 PM
    0
    Извиняюсь, что отвечаю на комментарий полугодовой давности, но ARC это таки очень полезная вещь — ARC это по сути вставка компилятором различных хуков типа =destroy, = и так далее (всё это происходит благодаря compile-time data flow analysis и компилятор создаёт CFG), и reference counting. ARC и не будет дефолтным, т.к. он не может работать с циклами — для этого есть ORC (это ARC с добавленным собирателем циклов).

    В ARC есть shared-heap, не нужно каких-то setupForeignThreadGc или похожих для работы с C библиотеками (или наоборот, если нужно писать shared библиотеку на Nim), ARC намного лучше для embedded.

    Пока что планируется, что в 1.4 (может и позже, не знаю) ORC станет дефолтным GC (но это произойдёт как минимум тогда, когда сам компилятор будет работать с ARC/ORC и все популярные библиотеки).

    Ещё с ARC возможно больше потенциальных оптимизаций благодаря анализу использования данных, к примеру вот самый недавний PR насчёт создания оптимизатора для ARC — github.com/nim-lang/Nim/pull/14962

    Больше информации — www.youtube.com/watch?v=aUJcYTnPWCg (презентация Andreas'а с NimConf об ARC/ORC), forum.nim-lang.org/t/5734 (там в постах много интересного), nim-lang.org/docs/destructors.html про деструкторы (они являются важной частью ARC)
  • Заводим Git for Windows под ReactOS
    40
    Yardanico
    June 25, 2018 at 11:19 AM
    –1
    Насчёт IRC — ему пока что нет ни одного аналога с таким же количеством разных клиентов и серверов. И да, он до сих пор используется большей частью разработчиков
  • Немного закулисья VK
    46
    Yardanico
    June 22, 2018 at 06:14 PM
    0
    Может имеется ввиду https://github.com/vk-com/kphp-kdb?
  • Я сделал API для скриншотов сайтов, а какой-то парень начал майнить через него криптовалюту
    111
    Yardanico
    May 3, 2018 at 07:49 PM
    +5
    Вы же знаете, что уже существуют программы для автоматического решения рекапчи? Не считая многих сервисов для решения капч с помощью других людей.
  • Проброс портов или как попасть в сеть за NAT используя Node.JS
    13
    Yardanico
    April 24, 2018 at 12:39 AM
    0
    Есть ещё https://github.com/fatedier/frp, вроде бы похожая вещь
  • JavaScript превзошел всех
    223
    Yardanico
    January 16, 2018 at 06:40 PM
    +5
    Так почему же тогда Electron приложения жрут по 500мб, в то время как нативные кушают раз в 10 меньше? Я понимаю, что это из-за постоянного повышения производительности компьютеров, но не нужно выходить за рамки
  • История создания Age of Empires: «Это была лучшая из худших среди наших идей»
    34
    Yardanico
    January 10, 2018 at 06:21 PM
    0
    Кстати, для AoE Online имеется сделанный фанами сервер (вместе с некоторыми патчами клиента) — projectceleste.com
  • Почему дизайн Go плох для умных программистов
    364
    Yardanico
    December 11, 2017 at 09:24 AM
    0

    Можете попробовать Nim, там тоже нативный код с опциональным GC, к тому же ведётся работа над деструкторами, кросс-компиляция как в Си (Nim компилируется в Си), никаких виртуальных машин и максимальная производительность (на уровне близком к чистому Си при правильном использовании языка)

  • Путешествие из Node в Crystal
    56
    Yardanico
    October 17, 2017 at 11:54 PM
    0
    Nim уже не очень сырой, багов всё меньше, и все фичи в языке смотрятся с друг другом нормально (например дженерики с концептами)
  • Путешествие из Node в Crystal
    56
    Yardanico
    October 17, 2017 at 11:50 PM
    +1
    Можно сделать импорты как в питоне:
    from sequtils import nil
    echo sequtils.repeat('h', 15)
    
  • Путешествие из Node в Crystal
    56
    Yardanico
    October 17, 2017 at 07:27 PM
    0
    К тому же там как раз планируется большое кол-во изменений в отношении к GC — деструкторы, которым не нужен GC (в компилятор добавился новый проход «destroyer», в котором в код будут вставляться вызовы деструкторов в нужных местах), к тому же строки и последовательности станут свободными от GC (уже есть эксперименты с этим).
    В IRC/Gitter можете пообщаться на эту тему с Araq (создателем языка).
  • Счетчик копий программы или сбор статистики об использовании
    31
    Yardanico
    October 8, 2017 at 04:32 PM
    0
    Уже давно есть декомпиляторы и деобфускаторы, с которыми можно смотреть С# (конечно код далеко не всегда идентичен оригиналу). Посмотрите на ILSpy, dnSpy (мне больше всего он нравится), dotPeek.
    Из деобфускаторов наверное de4dot
  • Путешествие из Node в Crystal
    56
    Yardanico
    September 15, 2017 at 11:23 PM
    0
    Int64 | String — это же обычные дженерики, нет?
  • Технологические компании-единороги переоценены в среднем на 48%: исследование ученых из Стэнфорда
    13
    Yardanico
    September 14, 2017 at 04:37 PM
    0
    Только эта соковыжималка стоила $400, а не $40 :)
  • О-о-очень долгожданный релиз Sublime Text 3.0
    207
    Yardanico
    September 14, 2017 at 04:08 PM
    +2
    intellisense часто употребляют именно в смысле «автодополнение», а не «автодополнение Microsoft»
  • Лекция Виталия Харисова «10k»
    23
    Yardanico
    September 3, 2017 at 02:28 AM
    0
    Ваше понятие красоты субъективно :)
  • Как Яндекс научил искусственный интеллект понимать смысл документов
    405
    Yardanico
    August 24, 2017 at 06:42 PM
    0
    Тоже самое происходит :( Постоянно нужно картинки разгадывать
  • Как Яндекс научил искусственный интеллект понимать смысл документов
    405
    Yardanico
    August 24, 2017 at 04:00 PM
    0
    Тоже относится к рекапче:
    У меня месяца три назад рекапча ВСЕГДА начала спрашивать полную проверку (выбрать картинки и т.д), и с тех пор я не могу от этого избавиться.
    Не зависит от моего браузера/ос/гугл аккаунта, просто постоянно требуется полное подтверждение.
  • Как Яндекс научил искусственный интеллект понимать смысл документов
    405
    Yardanico
    August 24, 2017 at 03:55 PM
    +1
    Инкогнито — это совсем другое, нужно в обычном браузере тестить
  • ← here
  • there →
  • 1
  • 2

Info

  • Rating 6,128–th
  • Date of birth April 17, 2000
  • Activity 2/23/21, 6:11 PM
  • Registered October 22, 2014

Contribution to hubs

  • Programming 35

Your account

  • Log in
  • Sign up

Sections

  • Posts
  • Hubs
  • Companies
  • Users
  • Sandbox

Info

  • How it works
  • For Authors
  • For Companies
  • Documents
  • Agreement
  • Terms of service

Services

  • Ads
  • Subscription plans
  • Content
  • Seminars
  • Megaprojects
© 2006 – 2021 «Habr»
Language settings
About
Support
Mobile version
Language settings
Interface
Content