Также для создания структурных систем зависимых типов может использоваться математический аппарат теории категорий.
https://gist.github.com/andrcmdr/e31ba4c9bf881fbff595cd799620ca72#algebras
Ссылки:
https://t.me/technologique/1054
https://t.me/technologique/1052
https://t.me/technologique/1051
https://gist.github.com/andrcmdr/e31ba4c9bf881fbff595cd799620ca72#algebras
Ссылки:
https://t.me/technologique/1054
https://t.me/technologique/1052
https://t.me/technologique/1051
Gist
Advanced-FP-with-Scala.md
GitHub Gist: instantly share code, notes, and snippets.
Дорогие читатели, сегодня хочу порекомендовать вам один очень классный канал системного администратора Linux - "Записки админа" (@SysadminNotes).
Канал для тех кто любит поднимать всю инфраструктуру проекта самостоятельно и хочет познать многие тонкости процессов администрирования глубже, использовать DevOps практики и инструментарий для автоматизации процессов командной разработки, формирования поставки, развёртывания в облачных инфраструктурах и интеграции с существующими системами своего программного продукта, и считает данные навыки критически необходимыми для продвинутого разработчика.
Я сам (как и вы, надеюсь) использую Linux (Debian, Arch), открытый софт и инструменты FLOSS, DevOps практики в своей профессиональной (и не только) деятельности и проектах ежедневно.
Канал меня лично очень заинтересовал, в нём я нашёл достаточно много полезной для себя информации, например удобный консольный мониторинг серверов, думаю и вы также найдёте много полезной информации в данном канале для себя.
Очень рекомендую! 👍
#channels
Канал для тех кто любит поднимать всю инфраструктуру проекта самостоятельно и хочет познать многие тонкости процессов администрирования глубже, использовать DevOps практики и инструментарий для автоматизации процессов командной разработки, формирования поставки, развёртывания в облачных инфраструктурах и интеграции с существующими системами своего программного продукта, и считает данные навыки критически необходимыми для продвинутого разработчика.
Я сам (как и вы, надеюсь) использую Linux (Debian, Arch), открытый софт и инструменты FLOSS, DevOps практики в своей профессиональной (и не только) деятельности и проектах ежедневно.
Канал меня лично очень заинтересовал, в нём я нашёл достаточно много полезной для себя информации, например удобный консольный мониторинг серверов, думаю и вы также найдёте много полезной информации в данном канале для себя.
Очень рекомендую! 👍
#channels
Telegram
Записки админа
Пишу о Linux и администрировании серверов.
Связаться с автором: @servers
Заметки в браузере: https://sysadmin.pm/
Буст канала: https://t.me/sysadminnotes?boost
Связаться с автором: @servers
Заметки в браузере: https://sysadmin.pm/
Буст канала: https://t.me/sysadminnotes?boost
Трансляция из главного зала конференции HighLoad++ 2017 в Москве, Сколково.
https://www.youtube.com/watch?v=BlDK2KKKYc8
http://www.highload.ru/2017/news/643.html
Резервный канал:
http://play.ngenix.net/highload
Расписание конференции:
http://www.highload.ru/2017/schedule.html
http://www.highload.ru/pdf-hl-2017/hl.pdf
Тезисы докладов конференции:
http://www.highload.ru/2017/abstracts
http://www.highload.ru/2017/meetups
Ссылки:
https://t.me/technologique/583
https://t.me/SysadminNotes/530
https://t.me/HighLoadConfChannel
https://t.me/HighLoadConf
https://www.youtube.com/watch?v=BlDK2KKKYc8
http://www.highload.ru/2017/news/643.html
Резервный канал:
http://play.ngenix.net/highload
Расписание конференции:
http://www.highload.ru/2017/schedule.html
http://www.highload.ru/pdf-hl-2017/hl.pdf
Тезисы докладов конференции:
http://www.highload.ru/2017/abstracts
http://www.highload.ru/2017/meetups
Ссылки:
https://t.me/technologique/583
https://t.me/SysadminNotes/530
https://t.me/HighLoadConfChannel
https://t.me/HighLoadConf
YouTube
Главный зал HighLoad++ 2017, 7 ноября
Приглашаем на конференцию Saint HighLoad++ 2024, которая пройдет 24 и 25 июня в Санкт-Петербурге!
Программа, подробности и билеты по ссылке: https://vk.cc/cuyIqx
--------
--------
Бесплатная трансляция главного зала конференции HighLoad++ 2017.
Расписание…
Программа, подробности и билеты по ссылке: https://vk.cc/cuyIqx
--------
--------
Бесплатная трансляция главного зала конференции HighLoad++ 2017.
Расписание…
Technologique
Трансляция из главного зала конференции HighLoad++ 2017 в Москве, Сколково. https://www.youtube.com/watch?v=BlDK2KKKYc8 http://www.highload.ru/2017/news/643.html Резервный канал: http://play.ngenix.net/highload Расписание конференции: http://www.highl…
Трансляция из главного зала конференции HighLoad++ 2017 в Москве, Сколково. День второй.
https://youtu.be/Ygfwwd490mk
https://youtu.be/Ygfwwd490mk
YouTube
Главный зал HighLoad++ 2017. 8 ноября
Друзья, бесплатная трансляция главного зала конференции HighLoad++ 2017 (в расписании указан как Конгресс-холл) 8 ноября 10:00 / Как выбирать тимлидов на раз...
Rock solid kernel - previous max uptime has beaten!
Какое ядро самое стабильное? Linux, BSD? Nope!
Sun Solaris (Sun OS), IBM AIX, HP-UX, SGI IRIX и прочих коммерческих Unix систем.
Буквально вчера товарищ в Твиттере показал сервер Solaris с uptime в 6519 дней - чуть меньше 18 лет аптайма! 😱 Сервер решили перезагрузить в связи с проблемой системного времени Y2K - с 2000-го года система не получала никаких патчей и апдейтов!
https://twitter.com/lworonowicz/status/927507006138839045
https://twitter.com/lworonowicz/status/927900714038329344
Но меня больше всего удивляет какое стабильное и качественное питание обеспечивается в серверных комнатах для таких серверов и насколько качественное их оборудование (аппаратное обеспечение, железо), чтобы проработать без сбоев столько лет!
"How do you power off this machine?" — Linus Torvalds
Какое ядро самое стабильное? Linux, BSD? Nope!
Sun Solaris (Sun OS), IBM AIX, HP-UX, SGI IRIX и прочих коммерческих Unix систем.
Буквально вчера товарищ в Твиттере показал сервер Solaris с uptime в 6519 дней - чуть меньше 18 лет аптайма! 😱 Сервер решили перезагрузить в связи с проблемой системного времени Y2K - с 2000-го года система не получала никаких патчей и апдейтов!
https://twitter.com/lworonowicz/status/927507006138839045
https://twitter.com/lworonowicz/status/927900714038329344
Но меня больше всего удивляет какое стабильное и качественное питание обеспечивается в серверных комнатах для таких серверов и насколько качественное их оборудование (аппаратное обеспечение, железо), чтобы проработать без сбоев столько лет!
"How do you power off this machine?" — Linus Torvalds
Technologique
Rock solid kernel - previous max uptime has beaten! Какое ядро самое стабильное? Linux, BSD? Nope! Sun Solaris (Sun OS), IBM AIX, HP-UX, SGI IRIX и прочих коммерческих Unix систем. Буквально вчера товарищ в Твиттере показал сервер Solaris с uptime в 6519…
Прежний "рекорд" был опубликован на форуме онлайн журнала ArsTechnica и описан в статье в нём же, и принадлежал файловому серверу с ОС NetWare от Novell, аптайм которого был равен 6039 дней.
https://twitter.com/andrcmdr/status/576267130045337600
https://arstechnica.com/information-technology/2013/03/epic-uptime-achievement-can-you-beat-16-years/
https://arstechnica.com/civis/viewtopic.php?f=23&t=1199529
https://twitter.com/andrcmdr/status/576267130045337600
https://arstechnica.com/information-technology/2013/03/epic-uptime-achievement-can-you-beat-16-years/
https://arstechnica.com/civis/viewtopic.php?f=23&t=1199529
Twitter
Andrew Bednoff
Can you beat this #uptime? http://t.co/LVkDc84zN3 http://t.co/RRnFQ5fqxZ
Шаблоны проектирования в динамических языках программирования.
Design patterns exist to compensate for a programming language's lack of expressiveness.
Петер Норвиг, один из основоположников в программировании систем искусственного интеллекта, ныне Director of Research at Google, о паттернах/шаблонах проектирования в динамических языках (с динамическим выводом, диспетчеризацией и связыванием типов во время исполнения, in run-time), главным образом Dylan и Lisp. Презентация 1996-го года, но сегодня актуальна как никогда ранее! Просто почитайте!
http://norvig.com/design-patterns/
http://norvig.com/design-patterns/design-patterns.pdf
http://norvig.com/design-patterns/design-patterns.pdf#page=67
Смысл презентации в том, что в динамических языках выразительность конструкций выше, благодаря структурному выводу типов и поэтому более высокоуровневой реализации абстрактных и алгебраических типов данных, меньше шума и не нужны шаблоны проектирования, компенсирующие слабую выразительность конструкций языка и порождающие boilerplate code.
Думаю самая первостепенная характеристика любого языка, в т.ч. языка программирования - это его выразительность, т.е. информационная ёмкость его синтаксических конструкций и выражений (что также порождает сложность грамматики, лексем и сематики языка).
Есть даже такая характеристика в формальной теории языков (formal language theory) - сила выразительности языка (expressive power).
https://en.wikipedia.org/wiki/Expressive_power_(computer_science)
Links:
https://en.wikipedia.org/wiki/Peter_Norvig
Design patterns exist to compensate for a programming language's lack of expressiveness.
Петер Норвиг, один из основоположников в программировании систем искусственного интеллекта, ныне Director of Research at Google, о паттернах/шаблонах проектирования в динамических языках (с динамическим выводом, диспетчеризацией и связыванием типов во время исполнения, in run-time), главным образом Dylan и Lisp. Презентация 1996-го года, но сегодня актуальна как никогда ранее! Просто почитайте!
http://norvig.com/design-patterns/
http://norvig.com/design-patterns/design-patterns.pdf
http://norvig.com/design-patterns/design-patterns.pdf#page=67
Смысл презентации в том, что в динамических языках выразительность конструкций выше, благодаря структурному выводу типов и поэтому более высокоуровневой реализации абстрактных и алгебраических типов данных, меньше шума и не нужны шаблоны проектирования, компенсирующие слабую выразительность конструкций языка и порождающие boilerplate code.
Думаю самая первостепенная характеристика любого языка, в т.ч. языка программирования - это его выразительность, т.е. информационная ёмкость его синтаксических конструкций и выражений (что также порождает сложность грамматики, лексем и сематики языка).
Есть даже такая характеристика в формальной теории языков (formal language theory) - сила выразительности языка (expressive power).
https://en.wikipedia.org/wiki/Expressive_power_(computer_science)
Links:
https://en.wikipedia.org/wiki/Peter_Norvig
Technologique
Эффективное программирование на #Go с Gogland IDE от JetBrains https://youtu.be/o3igXAE9eDo https://t.me/technologique/651 https://t.me/technologique/663
Gogland теперь GoLand... для GoLang.
Теперь уже официальное название IDE для #Golang от JetBrains получила в выпуске EAP 18.
https://twitter.com/GoLandIDE/status/926157642158034945
С первого раза и неуловишь разницу! Забавная игра букв - с таким названием возникает много аллюзий. 😆😂
Links:
https://t.me/technologique/651
https://t.me/technologique/663
https://t.me/technologique/915
Теперь уже официальное название IDE для #Golang от JetBrains получила в выпуске EAP 18.
https://twitter.com/GoLandIDE/status/926157642158034945
С первого раза и неуловишь разницу! Забавная игра букв - с таким названием возникает много аллюзий. 😆😂
Links:
https://t.me/technologique/651
https://t.me/technologique/663
https://t.me/technologique/915
Twitter
GoLand IDE
Announcing GoLand (former Gogland) EAP 18! Read about the final name choice, new features & upcoming release https://t.co/Z9jncbLAho #golang https://t.co/E5i6pMfdQw
Technologique
https://diary.braniecki.net/2017/09/01/all-hands-on-deck-how-you-can-use-your-skills-to-contribute-to-firefox-57-success/
New Firefox: Firefox Quantum. Fast. For good.
Mozilla выпустили релиз браузера Firefox 57 на новом движке рендеринга макетов страниц Quantum.
https://www.youtube.com/watch?v=n6wiRyKkmKc
https://www.mozilla.org/en-US/firefox/quantum/
О том какие компоненты входят в состав движка Quantum - https://t.me/technologique/1079
https://blog.mozilla.org/firefox/get-ready-firefox-quantum/
https://blog.mozilla.org/blog/2017/11/14/introducing-firefox-quantum/
https://blog.mozilla.org/blog/2017/11/14/fast-for-good-launching-the-new-firefox-into-the-world/
https://hacks.mozilla.org/2017/11/entering-the-quantum-era-how-firefox-got-fast-again-and-where-its-going-to-get-faster/
Во всех основных браузерах внедрена поддержка WebAssembly (WASM модулей) - теперь клиентские приложения можно писать не только на JavaScript, но и, например, на Rust 😉:
https://blog.mozilla.org/blog/2017/11/13/webassembly-in-browsers/
Ссылки:
https://www.youtube.com/watch?v=YIywpvHewc0
https://www.webpagetest.org
https://github.com/WPO-Foundation/webpagetest
Mozilla выпустили релиз браузера Firefox 57 на новом движке рендеринга макетов страниц Quantum.
https://www.youtube.com/watch?v=n6wiRyKkmKc
https://www.mozilla.org/en-US/firefox/quantum/
О том какие компоненты входят в состав движка Quantum - https://t.me/technologique/1079
https://blog.mozilla.org/firefox/get-ready-firefox-quantum/
https://blog.mozilla.org/blog/2017/11/14/introducing-firefox-quantum/
https://blog.mozilla.org/blog/2017/11/14/fast-for-good-launching-the-new-firefox-into-the-world/
https://hacks.mozilla.org/2017/11/entering-the-quantum-era-how-firefox-got-fast-again-and-where-its-going-to-get-faster/
Во всех основных браузерах внедрена поддержка WebAssembly (WASM модулей) - теперь клиентские приложения можно писать не только на JavaScript, но и, например, на Rust 😉:
https://blog.mozilla.org/blog/2017/11/13/webassembly-in-browsers/
Ссылки:
https://www.youtube.com/watch?v=YIywpvHewc0
https://www.webpagetest.org
https://github.com/WPO-Foundation/webpagetest
YouTube
The New Firefox is Here: Firefox Quantum
Check out the new Firefox, which is first of several releases called Firefox Quantum, getting you to the things you love and the stuff you need faster than ever before, along with a fresh new look.
https://mzl.la/FirefoxQuantum
https://mzl.la/FirefoxQuantum
Mozilla makes HolyJit!
Помимо компонентного движка Servo для проекта нового браузера Firefox Quanum, ребята из Mozilla работают над meta-JIT компилятором Rust (вернее пока это расширение пропатченного стандартного компилятора rustc в виде библиотеки) с забавным названием HolyJit. Сам проект написан полностью на Rust.
https://blog.mozilla.org/javascript/2017/10/20/holyjit-a-new-hope/
https://github.com/nbp/holyjit
Чтобы использовать HolyJit нужно скомпилировать специальную пропатченную версию компилятора rustc:
https://github.com/nbp/rust/tree/register_opt_mir_pass
Данный пропатченный фронт-энд компилятор rustc изменяет семантику байт-кода и порождает MIR/IR код потребный для оптимизации и динамической компиляции бэк-энд JIT компилятором стэковой виртуальной машины LLVM.
На языковом уровне добавлен макрос
Для реализации рефлексивной гомоиконности (метапрограммирования, интроспекции байт-кода) промежуточного представления кода и интеграции с байт кодом MIR (фаза оптимизации) и ассемблером IR (финальная стадия компиляции) стэковой машины LLVM и управления процессом динамической JIT компиляции добавлен тип-класс (класс типов, type class) JitContext в виде имплементора трейта.
https://github.com/nbp/holyjit/blob/master/lib/src/context.rs
Проект пока ещё на самых ранних стадиях своего развития и у него ещё многое впереди, но перспективы весьма интересны - посмотрим что из этого выйдет.
Пока HolyJit это meta-JIT компилятор Rust, но со временем можно будет провернуть бутстрап бэк-энд компилятора и полностью отказаться от LLVM - сам проект HolyJit это экспериментальная кодовая база для создания нового JIT компилятора JavaScript для Firefox, с улучшенной безопасностью памяти и возможностями оптимизации, и (возможно), используя модульную архитектуру движка Servo/Quantum, для создания JIT компиляторов других языков программирования, подключаемых в виде WASM (WebAssembly) модулей. И тогда нас всех ждёт более увлекательное мультиязыковое будущее клиент-сайд приложений.
#Rust
Помимо компонентного движка Servo для проекта нового браузера Firefox Quanum, ребята из Mozilla работают над meta-JIT компилятором Rust (вернее пока это расширение пропатченного стандартного компилятора rustc в виде библиотеки) с забавным названием HolyJit. Сам проект написан полностью на Rust.
https://blog.mozilla.org/javascript/2017/10/20/holyjit-a-new-hope/
https://github.com/nbp/holyjit
Чтобы использовать HolyJit нужно скомпилировать специальную пропатченную версию компилятора rustc:
https://github.com/nbp/rust/tree/register_opt_mir_pass
Данный пропатченный фронт-энд компилятор rustc изменяет семантику байт-кода и порождает MIR/IR код потребный для оптимизации и динамической компиляции бэк-энд JIT компилятором стэковой виртуальной машины LLVM.
На языковом уровне добавлен макрос
jit! {} для объявления функции или имплементора impl трейта динамически компилируемым.Для реализации рефлексивной гомоиконности (метапрограммирования, интроспекции байт-кода) промежуточного представления кода и интеграции с байт кодом MIR (фаза оптимизации) и ассемблером IR (финальная стадия компиляции) стэковой машины LLVM и управления процессом динамической JIT компиляции добавлен тип-класс (класс типов, type class) JitContext в виде имплементора трейта.
https://github.com/nbp/holyjit/blob/master/lib/src/context.rs
Проект пока ещё на самых ранних стадиях своего развития и у него ещё многое впереди, но перспективы весьма интересны - посмотрим что из этого выйдет.
Пока HolyJit это meta-JIT компилятор Rust, но со временем можно будет провернуть бутстрап бэк-энд компилятора и полностью отказаться от LLVM - сам проект HolyJit это экспериментальная кодовая база для создания нового JIT компилятора JavaScript для Firefox, с улучшенной безопасностью памяти и возможностями оптимизации, и (возможно), используя модульную архитектуру движка Servo/Quantum, для создания JIT компиляторов других языков программирования, подключаемых в виде WASM (WebAssembly) модулей. И тогда нас всех ждёт более увлекательное мультиязыковое будущее клиент-сайд приложений.
#Rust
JavaScript
HolyJit: A New Hope
tl;dr: We believe there is a safer and easier way of writing a Jit. Current State Today, all browsers’ Jits share a similar design. This ...
Technologique
New Firefox: Firefox Quantum. Fast. For good. Mozilla выпустили релиз браузера Firefox 57 на новом движке рендеринга макетов страниц Quantum. https://www.youtube.com/watch?v=n6wiRyKkmKc https://www.mozilla.org/en-US/firefox/quantum/ О том какие компоненты…
Fearless concurrency in Rust, Servo Engine & Firefox Quantum.
Про безопасность и целостность памяти (thread safety, lock-free, race-free), контроль указателей через механизм владений и заимствований памяти (borrow and ownership checking), которую обеспечивает система типов (субструктурная система уникальных типов, sub-structural uniqueness types system) языка Rust при создании браузерного движка Servo/Quantum и любых других многопоточных приложений.
https://blog.rust-lang.org/2017/11/14/Fearless-Concurrency-In-Firefox-Quantum.html
https://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html
Про библиотеку параллельнных структур данных и параллельной обработки данных Rayon - https://t.me/technologique/1041
#Rust
Ссылки:
https://doc.rust-lang.org/book/first-edition/concurrency.html
https://doc.rust-lang.org/book/second-edition/ch16-00-concurrency.html
https://doc.rust-lang.org/book/second-edition/ch16-01-threads.html
https://doc.rust-lang.org/book/second-edition/ch16-02-message-passing.html
https://doc.rust-lang.org/book/second-edition/ch16-03-shared-state.html
https://doc.rust-lang.org/book/second-edition/ch16-04-extensible-concurrency-sync-and-send.html
https://github.com/nikomatsakis/concurrency-tutorial
Про безопасность и целостность памяти (thread safety, lock-free, race-free), контроль указателей через механизм владений и заимствований памяти (borrow and ownership checking), которую обеспечивает система типов (субструктурная система уникальных типов, sub-structural uniqueness types system) языка Rust при создании браузерного движка Servo/Quantum и любых других многопоточных приложений.
https://blog.rust-lang.org/2017/11/14/Fearless-Concurrency-In-Firefox-Quantum.html
https://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html
Про библиотеку параллельнных структур данных и параллельной обработки данных Rayon - https://t.me/technologique/1041
#Rust
Ссылки:
https://doc.rust-lang.org/book/first-edition/concurrency.html
https://doc.rust-lang.org/book/second-edition/ch16-00-concurrency.html
https://doc.rust-lang.org/book/second-edition/ch16-01-threads.html
https://doc.rust-lang.org/book/second-edition/ch16-02-message-passing.html
https://doc.rust-lang.org/book/second-edition/ch16-03-shared-state.html
https://doc.rust-lang.org/book/second-edition/ch16-04-extensible-concurrency-sync-and-send.html
https://github.com/nikomatsakis/concurrency-tutorial
blog.rust-lang.org
Fearless Concurrency in Firefox Quantum | Rust Blog
Empowering everyone to build reliable and efficient software.
Коротко о последнем апдейте клиентов до версии 4.5 и глобального поиска в Telegram:
https://telegram.org/blog/albums-saved-messages#improved-search
24 октября я предложил улучшить глобальный поиск каналов, потому что через клиентские приложения поиск не искал нормально, только через Google или другой поисковик можно было находить каналы по описанию:
https://twitter.com/andrcmdr/status/922594877568901120
Павел @durov услышал и всё правильно сделал!
И месяца не прошло!
Здорово, что можно вот так просто предлагать идеи в Twitter команде и быть услышанным - обратная связь работает!
Любая мелочь может улучшить юзабилити, поэтому будьте активнее и предлагайте ваши идеи улучшения Telegram! ✌️
Links:
https://t.me/telegram/79
https://telegram.org/blog/albums-saved-messages#improved-search
24 октября я предложил улучшить глобальный поиск каналов, потому что через клиентские приложения поиск не искал нормально, только через Google или другой поисковик можно было находить каналы по описанию:
https://twitter.com/andrcmdr/status/922594877568901120
Павел @durov услышал и всё правильно сделал!
И месяца не прошло!
Здорово, что можно вот так просто предлагать идеи в Twitter команде и быть услышанным - обратная связь работает!
Любая мелочь может улучшить юзабилити, поэтому будьте активнее и предлагайте ваши идеи улучшения Telegram! ✌️
Links:
https://t.me/telegram/79
Telegram
Albums, Saved Messages and Better Search
Telegram 4.5 brings grouped photos & videos, saved messages, better search, multiple profile pics and iPhone X support.
Интересная история о том, как пожилой программист воссоздал древний системный язык программирования SPITBOL, диалект языка SNOBOL, и сохранил его для истории благодаря GitHub.
Сам автор говорит о программировании на системном машинном уровне, как о потерянном искусстве (sad, but true), поэтому столь важно было сохранить разработанный им много лет назад и давно потерянный язык и его компилятор для истории на современных облачных носителях данных.
https://motherboard.vice.com/en_us/article/78x5ba/this-70-year-old-programmer-is-preserving-an-ancient-coding-language-on-github
Сам автор говорит о программировании на системном машинном уровне, как о потерянном искусстве (sad, but true), поэтому столь важно было сохранить разработанный им много лет назад и давно потерянный язык и его компилятор для истории на современных облачных носителях данных.
https://motherboard.vice.com/en_us/article/78x5ba/this-70-year-old-programmer-is-preserving-an-ancient-coding-language-on-github
SPITBOL is written at the assembly language level—low-level code that interfaces almost directly with hardware itself. Since most coding is now done at a higher level, Shields refers to SPITBOL as an important part of software history. "What's special about it is that it's the most elegant surviving example of coding at the machine level," Shields said. "The art of writing at the machine level is a lost art."
Motherboard
This 70-Year-Old Programmer Is Preserving an Ancient Coding Language on GitHub
"Everything else I’ve written, those were all on magnetic tapes and are lost to history.”
Янн ЛеКун, знаменитый исследователь методов разработки искусстенного интеллекта, разработавший модели свёрточных нейронных сетей (convolutional neural networks) для распознавания образов, ныне работающий директором по исследованиям проблем искусстенного интеллекта в Facebook AI Lab, с лекцией о возможностях, ограничениях и пределах границ в применении методов глубокого машинного обучения для анализа данных.
https://www.youtube.com/watch?v=0tEhw5t6rhc
https://www.youtube.com/watch?v=0tEhw5t6rhc
YouTube
Yann LeCun - Power & Limits of Deep Learning
Yann LeCun is Director of AI Research at Facebook, and Silver Professor of Dara Science, Computer Science, Neural Science, and Electrical Engineering at New York University, affiliated with the NYU Center for Data Science, the Courant Institute of Mathematical…
Technologique
Embedding Rust in Python. Статья годичной давности, но при этом не менее актуальная, об интересном опыте процесса оптимизации проекта Sentry на Rust. Критические части Python приложений можно переписывать на Си и С++ - но это давно всем известно, со времён…
Embedding Rust in Python. Next step.
Дело оптимизации и встраивания Rust в проекты написанные на Python развивается!
Недавно Армин Ронахер опубликовал библиотеку Milksnake для автоматизации встраивания бинарных блобов и автоматизации создания сборок подобных комбинированных проектов на Python, содержащих бинарные модули написанные на Rust (и используемые через CFFI) а также на других системных языках (C/C++) совместимых по ABI, при помощи инфраструктуры систем сборки пакетов PIP (Python Wheels) и EasyInstall/SetupTools (Python Eggs).
Для Python проектов не нужно сильно заботиться о кросс-платформенной переносимости программ, если вы не используете специфичные для платформы API интерфейсы (например библиотеки GLib в GNU/Linux или интерфейс WinAPI в Windows, хотя и они сейчас переносимы в большинстве случаев - GLib кросс-платформенная библиотека проекта GNOME, а для WinAPI под Linux есть WINE) - в идеале если вы полагаетесь на стандартную библиотеку, то межплатформенная переносимость будет зависеть только от наличия сборки интерпретатора CPython для целевой платформы и её особенностей, например полноты стандартной библиотеки (сборки CPython есть для большинства платформ, даже экзотических).
Но что если в проекте есть оптимизации критических участков кода при помощи модулей, написанных на системных статически компилируемых языках (таких как C, C++ и Rust, который начал входить в область оптимизации существующих проектов), как в проекте Sentry, и такие зависимости тоже нужно контролировать, и создавать воспроизводимые сборки (reproducible builds) таких проектов при непрерывном интеграционном тестировании, формировании поставки и развёртывании таких проектов в облачной инфраструктуре (continuous delivery, deployment, continuous integration).
Со статически компилируемыми языками дело обстоит иначе - для каждой целевой платформы/ОС и процессорной архитектуры нужна своя сборка/билд зависимых системных библиотек и компиляция исполняемых образов файлов под целевую платформу.
Идея состоит в том, чтобы из скриптов сборщиков пакетов Python вызывать сторонние системы сборки для внешних зависимостей проекта (в данном случае Cargo для сборки crate пакета/модуля, написанного на Rust) и статической компиляции бинарных исполняемых образов для целевой платформы — всё для создания переносимых кросс-платформенных сборок таких комбинированных компонентных проектов и их зависимостей.
Для этого и была создана библиотека Milksnake, для расширения функциональности систем сборки пакетов для Python. Она подходит для подключения не только Cargo в качестве внешнего сборщика, но и билд-систем сборки для других языков,
https://blog.sentry.io/2017/11/14/evolving-our-rust-with-milksnake
https://github.com/getsentry/milksnake
Дело оптимизации и встраивания Rust в проекты написанные на Python развивается!
Недавно Армин Ронахер опубликовал библиотеку Milksnake для автоматизации встраивания бинарных блобов и автоматизации создания сборок подобных комбинированных проектов на Python, содержащих бинарные модули написанные на Rust (и используемые через CFFI) а также на других системных языках (C/C++) совместимых по ABI, при помощи инфраструктуры систем сборки пакетов PIP (Python Wheels) и EasyInstall/SetupTools (Python Eggs).
Для Python проектов не нужно сильно заботиться о кросс-платформенной переносимости программ, если вы не используете специфичные для платформы API интерфейсы (например библиотеки GLib в GNU/Linux или интерфейс WinAPI в Windows, хотя и они сейчас переносимы в большинстве случаев - GLib кросс-платформенная библиотека проекта GNOME, а для WinAPI под Linux есть WINE) - в идеале если вы полагаетесь на стандартную библиотеку, то межплатформенная переносимость будет зависеть только от наличия сборки интерпретатора CPython для целевой платформы и её особенностей, например полноты стандартной библиотеки (сборки CPython есть для большинства платформ, даже экзотических).
Но что если в проекте есть оптимизации критических участков кода при помощи модулей, написанных на системных статически компилируемых языках (таких как C, C++ и Rust, который начал входить в область оптимизации существующих проектов), как в проекте Sentry, и такие зависимости тоже нужно контролировать, и создавать воспроизводимые сборки (reproducible builds) таких проектов при непрерывном интеграционном тестировании, формировании поставки и развёртывании таких проектов в облачной инфраструктуре (continuous delivery, deployment, continuous integration).
Со статически компилируемыми языками дело обстоит иначе - для каждой целевой платформы/ОС и процессорной архитектуры нужна своя сборка/билд зависимых системных библиотек и компиляция исполняемых образов файлов под целевую платформу.
Идея состоит в том, чтобы из скриптов сборщиков пакетов Python вызывать сторонние системы сборки для внешних зависимостей проекта (в данном случае Cargo для сборки crate пакета/модуля, написанного на Rust) и статической компиляции бинарных исполняемых образов для целевой платформы — всё для создания переносимых кросс-платформенных сборок таких комбинированных компонентных проектов и их зависимостей.
Для этого и была создана библиотека Milksnake, для расширения функциональности систем сборки пакетов для Python. Она подходит для подключения не только Cargo в качестве внешнего сборщика, но и билд-систем сборки для других языков,
https://blog.sentry.io/2017/11/14/evolving-our-rust-with-milksnake
https://github.com/getsentry/milksnake
Product Blog • Sentry
Evolving Our Rust With Milksnake
Sharing our new approach to using Rust in Python.
Technologique
Embedding Rust in Python. Next step. Дело оптимизации и встраивания Rust в проекты написанные на Python развивается! Недавно Армин Ронахер опубликовал библиотеку Milksnake для автоматизации встраивания бинарных блобов и автоматизации создания сборок подобных…
Так же для тех, кто интересуется темой воспроизводимых сборок (reproducible builds), в комбинированных проектах на скриптовых и статически компилируемых языках, советую посмотреть на билд-систему Meson, которая используется в проекте дистрибутива Debian, проекте GNOME, написана на Python и позволяет делать сборки проектов на Python, Rust, Vala, Genie, D, Си и C++.
http://mesonbuild.com
https://github.com/mesonbuild/meson
https://reproducible-builds.org
http://mesonbuild.com
https://github.com/mesonbuild/meson
https://reproducible-builds.org
GitHub
GitHub - mesonbuild/meson: The Meson Build System
The Meson Build System. Contribute to mesonbuild/meson development by creating an account on GitHub.
Technologique
Embedding Rust in Python. Next step. Дело оптимизации и встраивания Rust в проекты написанные на Python развивается! Недавно Армин Ронахер опубликовал библиотеку Milksnake для автоматизации встраивания бинарных блобов и автоматизации создания сборок подобных…
Ещё одна интересная статья из блога для разработчиков RedHat по этой же теме оптимизации критических участков программ на Python при помощи Rust и сборке таких проектов.
https://developers.redhat.com/blog/2017/11/16/speed-python-using-rust/
https://developers.redhat.com/blog/2017/11/16/speed-python-using-rust/
Red Hat Developer
Speed up your Python using Rust | Red Hat Developer
What is Rust? Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety. Featuring zero-cost abstractions move semantics guaranteed memory