Любая программа состоит из данных и алгоритмов их обработки. Для написания программ на C++ в начале 90-х годов прошлого века Александр Степанов с коллегами разработал библиотеку STL. Я, Михаил Полукаров из команды разработки VK Teams, заглянул под капот этой библиотеки чтобы разобраться, как правильно ей пользоваться, в каких случаях лучше использовать другие библиотеки, а в каких стоит написать что-то своё.
Рубрика «Программирование» - 91
Особенности реализации STL в Clang, GCC и Microsoft С++
2022-04-13 в 10:01, admin, рубрики: c++, stl, Блог компании VK, Программирование, С++Как врать с помощью статистики
2022-04-12 в 6:32, admin, рубрики: python, анализ данных, визуализация данных, Программирование, статистика"Существуют три вида лжи:
-
ложь;
-
наглая ложь;
-
пропагандастатистика; -
источник цитаты в интернете".
Марк Твен(ну или не он).
В данной статье на рассмотрим, как можно быстро доказать следующие утверждения, смотря на один и тот же источник данных:
-
Лошади бегают по часовой стрелке быстрее чем по часовой.
-
Лошади бегают против часовой стрелки быстрее чем по часовой.
Мои главные принципы работы после 20 лет опыта в программировании
2022-04-10 в 20:25, admin, рубрики: skillfactory, Блог компании SkillFactory, индустрия, карьера, Карьера в IT-индустрии, опыт, ошибки, приоритеты, Программирование, работа, размышления, рекомендации, Учебный процесс в IT
Начиная новый проект, хорошо вспомнить полезные принципы программирования, которые помогут правильно расставить приоритеты и избежать многих ошибок. Рекомендациями от автора с опытом программирования в 20 лет делимся к старту курса по Читать полностью »
Передача руководителя центра затрат из SAP ERP CO в Employee Central
2022-04-10 в 18:55, admin, рубрики: ASS_MGR_EE_TEXT, Cost Centers, costCenterManager, employee central, ERP-системы, ODTFINCC, PERSON_RESP_TARGET_FIELD, Sap Cloud Integration, sap co, SAP HCM, successfactors, ПрограммированиеВведение
Программа ODTF_REPL_CC используется для передачи центров затрат из SAP ERP CO в Employee Central, что включает следующие данные: уникальный код центра затрат (т.е. с кодом контроллинговой единицы), краткий код центра затрат, дата начала действия, статус, имя, описание, юридическое лицо (т.н. балансовая единица) и руководитель центра затрат. [1] [2]
В этой статье мы детально опишем возможности по передаче поля «Руководитель центра затрат».
Но прежде чем мы перейдем к статье, я хочу поблагодарить Ольгу Беляеву за помощь с ABAP на проекте и проверку программного кода, которым мы делимся в этой статье.
Читать полностью »
Дженерики могут замедлить ваш код на Go
2022-04-09 в 20:52, admin, рубрики: api, Go, высокая производительность, дженерики, ПрограммированиеВстречайте, вот и Go 1.18, а с ней – первый релиз долгожданной реализации дженериков, наконец-то готовых к реальному использованию в продакшене. Дженерики – это весьма востребованная возможность, давно вызывающая жаркие споры в сообществе Go. С одной стороны, самые голосистые беспокоятся по поводу сложности, которую привносят дженерики. Их страшит неизбежная эволюция Go, которая доведет его либо до многословия как в энтерпрайз-версии Java, со своими обобщенными фабриками, либо, самое страшное, превратит Go в вырожденный HaskellScript, где ifЧитать полностью »
Кто тебя за Цанцзе тянул
2022-04-09 в 10:21, admin, рубрики: Блог компании М.Видео-Эльдорадо, изучение языков, ит, китай, М.Видео, Новости, Программирование, Промышленное программирование, Читальный зал, Эльдорадо, языки
В прошлом году в СМИ начали активно говорить о том, что совсем скоро у Huawei появится собственный язык программирования Cangjie (читается как «Цанцзе»). Так вот, кажется, ждать его появления осталось совсем недолго.
Почему мьютексы в Rust реализованы именно так
2022-04-08 в 7:34, admin, рубрики: Mutex, Rust, многопоточное программирование, многопоточность, мьютексы, параллельное программирование, Программирование
Я часто слышу от пробующих работать с Rust системных программистов жалобы на мьютексы и особенно на Rust Mutex API. Жалобы обычно выглядят так:
- Они не хотят, чтобы мьютекс содержал данные, только блокировку.
- Они не хотят управлять «защитным» значением, разблокирующим мьютекс при сбросе, в частности, они просто хотят вызывать операцию
unlock, потому что им кажется, что это более явное действие.
Такие изменения превратили бы Rust mutex API в эквивалент C/Posix mutex API. Однажды я даже видел, как один разработчик пытался использовать Mutex<()> и разные хитрости, чтобы его имитировать.
Однако у такого стремления есть проблема: эти два аспекта Mutex неразрывно связаны друг с другом, а также с гарантиями безопасности Rust в целом — изменение одного из них или обоих откроет возможности для возникновения незаметных багов и повреждений из-за гонок данных.
Использование API мьютексов в стиле C, состоящего из набора косвенно защищаемых данных и из функций lock и unlock было бы опрометчивым в Rust, потому что это позволяет безопасному коду легко вносить ошибки, нарушающие безопасность памяти и вызывающие гонки данных.
Прозвучит спорно, но я утверждаю, что это справедливо и для C. Просто в Rust это более очевидно, поскольку Rust тщательно разделяет понятия «безопасного» кода, в который невозможно внести подобные ошибки, и «небезопасного» кода, в который можно вносить такие ошибки. В C такого разделения нет, и в результате этого использующий мьютексы код на C может тривиальным образом создавать серьёзные баги, которые потенциально можно подвергать эксплойтам.
В этом посте я разберу типичный C mutex API, сравню его с типичным Rust mutex API, и расскажу о том, что произойдёт, если мы изменим Rust API так, чтобы он напоминал C.
Читать полностью »
Как я учился скоростной печати, но что-то пошло не так
2022-04-07 в 8:20, admin, рубрики: Карьера в IT-индустрии, клавиатурный тренажер, Лайфхаки для гиков, Программирование, скоростная печать, слепая печатьОсознание
В конце прошлого года на просторах ютюба смотрел какой-то ролик про программирование, и парень упомянул, что он умеет очень быстро печатать. Настолько быстро, что никогда не видел человека, кто бы печатал также быстро как он. И он показал цифры - 170 WPM.
WPM - это Words Per Minute, в английском принята эта единица измерения, считается что одно слово это 5 букв, т.е. это 850 символов в минуту. В других языках слова обычно длиннее и используется единица CPM (Characters Per Minute).
Запуск фоновых задач в asp.net core
2022-04-03 в 15:50, admin, рубрики: .net, .net 6.0, ASP, asp.net core, background jobs, C#, ПрограммированиеНебольшой обзор стандартных средств запуска бэкграунд-задач в аспнет приложениях — что есть, чем отличается, как пользоваться. Встроенный механизм запуска таких задач строится вокруг интерфейса IHostedService и метода-расширения для IServiceCollection — AddHostedService. Но есть несколько способов реализовать фоновые задачи через этот механизм (и ещё несколько неочевидных моментов поведения этого механизма).
Удивительное приключение в стране оптимизирующих компиляторов
2022-04-03 в 12:53, admin, рубрики: C, c++, chez scheme, clang, gcc, PyPy, python, Программирование, производительностьПриглашаю вас в небольшое приключение выходного дня, в котором никто никому ничего не будет доказывать. Мы просто будем реализовывать один и тот же несложный алгоритм, разыскивающий простые числа в некотором диапазоне, на нескольких языках программирования: C, C++, Scheme и Python - и смотреть, что с этим кодом могут сделать современные оптимизирующие компиляторы. В процессе приключения мы увидим, что «динамический» не означает «совсем уж медленный», и посмотрим на приёмы программирования на Scheme, что, как мне кажется, можно сравнить с путешествием на экзотический остров.
