Программирование {BookFlow}
16.2K subscribers
1.58K photos
468 videos
145 files
2.1K links
Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций, новости технологий.

Группа в https://vk.com/bookflow.

По всем вопросам @evgenycarter

РКН https://clck.ru/3KoAbH
Download Telegram
Поговорим об оптимизирующих компиляторах. Сказ четвёртый: Циклы

Так получилось, что в теории компиляторов различают понятия cycle (цикл) и loop (петля). Если мы говорим о CFG, то cycle -- это любая последовательность блоков, такая, что начав с некоторого блока и двигаясь по рёбрам, вы можете вернуться в исходный блок. А loop -- это цикл, обладающий некоторыми дополнительными свойствами (о них мы поговорим ниже), и это именно та конструкция, которая появляется, когда мы пишем цикл на языке программирования высокого уровня (например, на С++). Любой loop -- это cycle, но не любой cycle -- это loop.

При этом компиляторы (в большинстве своём) умеют оптимизировать только loop'ы, а циклы, не являющиеся loop'ами, чаще всего игнорируют или ведут себя с ними крайне осторожно. Сказать по правде, они их зачастую даже и не видят. При этом такие конструкции языков программирования, как for, while, do-while, foreach и т.п. порождают именно loop.

Поэтому в этой статье и дальше в этой серии мы слегка надругаемся над английским языком. Словом "цикл" я буду называть именно loop (правильно было бы говорить "петля", а не "цикл", но это плохо согласуется с русскоязычной традицией), а когда речь пойдёт о чём-то другом, я буду явно называть их cycle или non-loop cycle. На практике, если вы пишете программу и специально не ищете себе приключений на одно место, вы в 99% случаев будете иметь дело именно с loop'ами.

https://habr.com/ru/articles/742062/

👉 @bookflow
👍2
Поговорим об оптимизирующих компиляторах. Сказ пятый: удаление общих подвыражений

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

https://habr.com/ru/articles/754298/

👉 @bookflow
👍5👎1
Коллекция библиотек C++ HTTP, включающая простой в использовании HTTP-сервер.

https://cpp.libhunt.com/proxygen-alternatives

#cpp #programming

👉 @cpp_lib
👍3
Отладка C при помощи пакета Cosmopolitan Libc

Cosmopolitan Libc предоставляет набор отладочных возможностей, повышающих удобство разработки на C: трассировка вызовов функций, интеграция с gdb, среда выполнения ASAN/UBSAN и многое другое! На C написано много быстрого и критически важного кода. Если вы пользуетесь программами, написанными на C, если вам приходится предусматривать интерфейсы для работы с библиотеками на C, исправлять баги в коде на C, либо даже переписывать имеющуюся на С программу на каком-то другом языке, то именно этот инструмент помогает понять, что делается в вашем коде на C. Отладка – это не просто россыпь инструкций printf. В этом посте будет рассмотрено, как Cosmopolitan Libc помогает наверняка и как следует отлаживать код C. Все примеры находятся в этом репозитории.

https://ahgamut.github.io/2022/10/23/debugging-c-with-cosmo/

👉 @bookflow
👍3
Поговорим об оптимизирующих компиляторах. Сказ шестой: цикловые инварианты

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

https://habr.com/ru/articles/764636/

👉 @bookflow
👍1
Изучаем веб-сервисы ChatGPT и пробуем программировать

Прямого доступа к сервисам OpenAI в РФ, как известно, нет. Для работы с ChatGPT многие пользуются телеграм-ботами, чаще всего бесплатными. В основном, запросы к ним — непритязательные. Пользователи практикуются в английском и, не раздражая никого пробелами в орфографии, получают списком все свои ошибки. Можно задавать ботам относительно простые вопросы.

https://habr.com/ru/articles/768004/

👉 @bookflow
👍2
C# 9 и .NET 5. Разработка и оптимизация
Марк Прайс (2021)

В этой книге опытный преподаватель Марк Прайс дает все необходимое для разработки приложений на C#. В пятом издании для работы со всеми основными операционными системами используется популярный редактор кода Visual Studio Code. Издание полностью обновлено и дополнено новой главой, касающейся Microsoft Blazor.

Скачать книгу

👉 @cpp_knigi
👍2
Forwarded from React
React with TypeScript

Возможности TypeScript и опыт разработчиков отлично сочетаются с React, но начало работы может оказаться запутанным.

Как лучше всего типизировать реквизиты компонентов? Что это за странные ошибки useRef?
Именно для этого и предназначен данный учебник по React с TypeScript!
Начиная с самого начала внедрения поддержки TS в проект React, вы вскоре научитесь правильно вводить хуки и осваивать компоненты. Вы узнаете все, что нужно для продуктивной работы с React и TypeScript.

Темы учебника включают:

Чтение определений типов React для отладки ошибок и обеспечения правильного использования
Определение реквизитов для пользовательских компонентов и компонентов функций React.FC.
Использование умозаключений TypeScript в своей работе
Поддержка дочерних компонентов
Типизация и переопределение обработчиков событий
Использование ComponentProps для извлечения свойств из импортированных компонентов или элементов HTML DOM
Понимание API и типизация useState, useCallback, useEffect и других крючков React Hooks. К концу семинара вы будете уверенно использовать React с TypeScript в своих собственных проектах!

https://www.totaltypescript.com/tutorials/react-with-typescript


✍️ @React_lib
🔥2
Ряды Фурье

Ряд Фурье поможет найти сумму ряда с функцией Бесселя
Ряд Фурье для cos(at) ведет к разложению котангенса на простые дроби
Ряд Фурье для функции x^2 и нахождение суммы трех числовых рядов.
Cумма ряда 1/n^2. Базельская проблема: решение через разложения в ряд Фурье.
Разложим функцию в ряд Фурье и получим суммы 4 числовых рядов

источник

👉 @bookflow
👍2🔥1
Я мыслю MOV EAX, 1

Чем больше усилий ты прикладываешь, тем лучше это у тебя получается. Программирование не исключение, и чтобы с уверенностью сказать: "Я могу написать это" нужно много работать. Эта статья о том с какого языка начать путь в программировании и о том как понять принципы работы компьютера на низком уровне.

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

https://habr.com/ru/articles/721420/

👉 @bookflow
👍3
3.png
561.6 KB
Шпаргалка по нейронным сетям

👉 @bookflow
👍2
Программирование — это про общение

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

https://habr.com/ru/post/684282/

👉 @bookflow
👍4
Как потратить дни, чтобы сэкономить секунды: продвинутые коммиты в GitLab

Коммит изменения в GitLab — фоновый и рутинный процесс, на который никто не закладывает рабочего времени. Но в нем есть действия, которые съедают 18 секунд при каждом коммите. 10 коммитов — уже 3 минуты за день и 15 — за неделю. Да, немного, но на это тратится внимание. К тому же, за эти 15 минут можно сделать что-то полезное или просто выпить кофе и дать мозгу отдохнуть.

https://habr.com/ru/companies/selectel/articles/763086/

👉 @bookflow
👍3
Умные программисты пишут STUPID-код

Умные программисты пишут STUPID-код, ведь они понимают, что неожиданно возникшая сложность может привести к провалу проекта.

На момент написания этой статьи на моих часах 21:30.

Этим утром я проснулся в хорошем, оптимистичном настроении, рассчитывая на прекрасный день, но теперь вымотан.

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

Если конкретнее, при написании или поддержке кода мы склонны постоянно попадать в ловушку случайной сложности. Я наблюдал это с первого дня попадания в эту отрасль, и эта тема стала основной темой моей презентации, посвящённой техническому долгу (Purging the Technical Debt by Using Static Code Analysis Tools на YouTube).

На появление во мне любви к разработке ПО чрезвычайно сильно повлиял Фредерик Брукс, написавший сборник эссе под названием Мифический человеко-месяц.

https://habr.com/ru/companies/ruvds/articles/768298/

👉 @bookflow
👍4👎1