gavr_sas – Telegram
gavr_sas
216 subscribers
2.68K photos
185 videos
29 files
789 links
JB пропаганда
Download Telegram
Forwarded from Alexander Chichigin
Операционная семантика (большого шага) — это по сути прямой интерпретатор языка (definitional interpreter). При наличии такого интерпретатора есть с чем сравнивать компилятор. Особенно оптимизации. Потому что оптимизации не должны менять семантику программы — но для этого у программы должна быть семантика.
Forwarded from Alexander Chichigin
Денотационная семантика полезна для доказательства корректности. Но при наличии операционной (интерпретатора) — можно тестировать.
GNOME
👍1
Записали вчера подкаст по ниму, выйдет уже сегодня, оч торопили в конце, думаю нужно было делить на 3 части конечно. Первая часть тут
👍3
gavr_sas
Записали вчера подкаст по ниму, выйдет уже сегодня, оч торопили в конце, думаю нужно было делить на 3 части конечно. Первая часть тут
Список ссылей который будет под выпуском
— — —
Введение в ARC/ORC: https://habr.com/ru/post/523674/

Список компаний использующих ним:
https://github.com/nim-lang/Nim/wiki/Organizations-using-Nim

Отзыв разраба из Beadog об использовании nim в проде Neverwinter Nights: Enhanced Edition: https://news.ycombinator.com/item?id=24802836


Успешный стартап игры про песеля на геймбои(£203,929 of £18,000 goal, в gameboy 256КБ): https://www.kickstarter.com/projects/penguinrik/goodboy-galaxy-exploration-platform-game-gba-pc-and-switch


Анонс нанимания двух разработчиков чтобы исправить LS:
Библиотеки
httpbeast - Реализация http на nim занявшее 6 место в топ бенчмарков(до него 1 Cи и 5 Rust’ов)
Karax - фреймворк для разработки SPA(без html js, все на nim)
Jester - sinatra-like веб-фреймворк
Prologue - мой любимый веб-фреймворк
Arraymancer - tensor library использующий GPU(CUDA, OpenMP, OpenCL)
NimGL - качественный обертки над популярными графическими библиотеками(GLFW, Vulkan, OpenGL, ImGUI)
zero-functional- zero-cost chaining for functional abstractions, map zip split, такое будет очень сложно реализовать на других яп, все благодаря макросам.
weave - state-of-the-art multithreading runtime(автор был нанят в Status и теперь работает над nim-taskpools)
nim-taskpools - еще один мультитред рантайм, но больше направленный на надежность(так как используется в Status), формально верифицированные алгоритмы!
nico - фреймворк для создания пиксельных игр(аналог PICO-8)(пример игры https://impbox.itch.io/vektor2089)

Тулинг(который я не успел упомянуть):
Hot code reloading
Documentation generator
niminst - генератор установщиков для ним программ под все платформы(особенно актуально для Windows)
nimpretty: бьютифаер кода, ставится вместе с компилятором.
Testament - раннер тестов
Choosenim - аналог nvm, позволяет ставить разные версии компилятора одновременно и между ними переключаться(в том числе devel), например на старых дистрах можно получить новые версии, не собирая из исходников
nimsuggest - Nim IDE Integration tool
koch - The koch program is Nim's maintenance noscript. Это замена make и shell скриптов с тем преимуществом, что она намного более переносима

Крутые толки:
Next generation micro-controller programming: https://archive.fosdem.org/2022/schedule/event/nim_ngmicrocontrollers/
Кастомная прошивка для клавиатуры на nim https://youtu.be/dcHEhO4J29U
3d майнкрафт hot code reload с вокселями для обучения программированию с 6 лет: https://youtu.be/3l6tsKM1cY8, https://archive.fosdem.org/2022/schedule/event/nim_potatozombies/
Nim внутри выключателя https://youtu.be/eCCrkZI0rVU
Nim - первый нативный язык с HCR: https://youtu.be/7WgCt0Wooeo
Pixie 2021 аналог skia написанный на nim - https://youtu.be/8acDfUIwLnk
Опыт использования Nim компанией Status https://youtu.be/5wljNaPkU7M
Designing an ultra low-overhead multithreading runtime for Nim Exposing fine-grained parallelism for 32+ cores hardware via message passing by Mamy Ratsimbazafy https://youtu.be/b26d1Qq-ass (потом его наняли Status и сейчас он пишет для них )

Книги:
Nim in Action
Примеры из книги Nim in Action
Mastering Nim
NimProgrammingBook - Dr. Stefan Salewski книга которая рассматривает ним как первый яп.
1👍1🔥1
обожаю Ice-Pick Lodge
Podlodka #288 – Nim, часть 2 ​

Efficient as C, Expressive as Python, Elegant as Lisp. В этом выпуске вместе с Гавром продолжаем разбираемся с лучшим языком программирования – Nim. В этой части мы разбираем ключевые фичи языка, его недостатки, обозреваем экосистему и обсуждаем самые громкие кейсы применения в продакшене.

Разверните отказоустойчивую инфраструктуру на 9 дата-центров Selectel в России и за рубежом
Реклама, ООО «Селектел»

🎧Слушать выпуск
1
Мощь тайпскрипта
Вот имеем ситуацию, либа для показа табличек, нужно ей передать массив данных и массив колонок.

Колонкам разумеется нужно чтото знать про данные.
Данные могут иметь вложенность, то бишь name: {first, second: string}

Вопрос, как указать для колонок вложенность данных в объектах, не десериализовать же дтошки каждый раз в плоскую структуру.

Ну допустим через точки "name.firstname"
Но это же не типо-безопасно!
TS и литеральные типы, вывело все варианты вместе с вложенностями
gavr_sas
Мощь тайпскрипта Вот имеем ситуацию, либа для показа табличек, нужно ей передать массив данных и массив колонок. Колонкам разумеется нужно чтото знать про данные. Данные могут иметь вложенность, то бишь name: {first, second: string} Вопрос, как указать для…
Тип выглядит так

По факту это просто перебор вариантов, тут явно видно что типам не хватает switchа

never & 'Dynamic length array indexing is not supported' — найс способ сообщить пользователю человекочитаемую ошибку!
type DeepKeys<T> = unknown extends T 
? keyof T
: object extends T
? string
: T extends readonly any[] & IsTuple<T>
? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>>
: T extends any[]
? never & 'Dynamic length array indexing is not supported'
: T extends Date
? never
: T extends object
? (keyof T & string) | DeepKeysPrefix<T, keyof T>
: never;
😢1
Штош подкасты по ниму записал, время возвращаться к ниве(це мой язык), ловите работающий баблсорт
#niva
шутка про питон
1
gavr_sas
Штош подкасты по ниму записал, время возвращаться к ниве(це мой язык), ловите работающий баблсорт #niva
Мя спрашивают, если нет пробелов, то как будут работать экспрешоны внутри массивов?
x = {(1 - 1 - 2) 2 3 - 2 - 1 2 sas}
нормально
- А як вставити значення з унарними минусами?
- А для этого у меня есть необязательные запятые
x = { -5, -5 5 5 5} иначе оно будет считаться как (- 5 - 5), а делать пробелы между операторами в бинарных сообщениях я не хочу
извинити
Просто хочу сказать что это валидная строчка на Java 17
public abstract sealed class Shape permits Circle, Rectangle, Square {...}
👍1
У меня возникла замечательная идея, собрать rust
Играли в Yume Nikki?
Anonymous Poll
40%
да
40%
нет
20%
даже не слышал