nsu-programming / nsu-programming.github.io Goto Github PK
View Code? Open in Web Editor NEWHome Page: https://nsu-programming.github.io/
Home Page: https://nsu-programming.github.io/
Стоит добавить в лекцию что-то про мощь std::accumulate
, например с наивным копированием:
#include <iostream>
#include <vector>
#include <numeric>
int main() {
std::vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> v1 = std::accumulate(v.begin(), v.end(), std::vector<int>(),
[](std::vector<int> xs, int x){ xs.push_back(x); return xs; });
std::cout << "copy:";
for (auto& x : v1) std::cout << " " << x;
std::cout << std::endl;
std::vector<int> v2 = std::accumulate(v.begin(), v.end(), std::vector<int>(),
[](std::vector<int> xs, int x){ xs.insert(xs.begin(), x); return xs; });
std::cout << "reversed:";
for (auto& x : v2) std::cout << " " << x;
std::cout << std::endl;
return 0;
}
Или на ссылках, хотя там функциональная чистота теряется.
Определение нормы Лоренц-вектора на сайте с заданиями не совпадает с тем, что реально требуется в задании.
На сайте написано, что норма - это скалярное произведения вектора самого на себя, и она может быть отрицательной.
Тесты в исходном коде требуют, чтобы норма определялась как корень из модуля скалярного произведения вектора на себя.
То, как норма определена в тестах - математический волюнтаризм. Лучше попросить реализовать norm2 - скалярное произведение на себя.
В test_exercises.py:
from fractions import gcd
не работает начиная с Python 3.9
. При использовании Python 3.9++
нужно поменять строку на
from math import gcd
Сейчас:
имеют независимые списки глав textbook. Это нехорошо.
Сейчас открытая страница ника не виделена в боковом меню
В ветке master репозитория matrix пара тестов работает неправильно. Это тесты, которые проверяют сумму матриц из заранее подготовленных файлов. Сумма матриц из файлов .in не равна матрице из файла .out. Проверил на питоне с numpy - это действительно так. Суммарная ошибка sum(m1 + m2 - m3) = 3.e-6 для лейбла small, sum(m1 + m2 - m3) = 3.7e-4 для лейбла long. Предполагаемая причина проблеммы - округление при записи в файлы .out. Сгенерировал с использованием numpy свои фаллы custom1.in, custom2.in, custom.out - тесты с этим лейблом успешно прошлись (для больших и маленьких размерностей)
Лоренц-вектор является сетевым интерфейсом. В конструкторе соединяется с сетью, в деструкторе разъединяется.
Например, был константный вектор, а потом наука решила его значения уточнять. Каждый месяц/минуту значение улучшается и доступно по веб-апи. Объект символизирует некоторый вектор, который берёт состояние из сети каждый раз при обращении к геттерам.
Тут и про наследование можно сказать, и про инкапсуляцию. Был обычный вектор, стал веб-вектор, а пользователям до лампочки, главное в одном месте изменили тип, ну и тормозить стало из-за веба.
Или синхронизация с файлом: в конструкторе вектор читается из файла, в деструкторе - пишется в файл.
Рассказать про
Кусок текста про статические поля, который можно куда-нибудь вставить:
Использовать статические поля следует с опаской. Во-первых, на них распространяются все проблемы глобальных переменных, кроме глобальной видимости. Во-вторых, порядок их инициализации не определён. Если необходимо сделать статическим обьект некоторого класса (например, `std::vector<int>`). Такой указатель обычно инициализируют нулём, а выделение памяти и инициализацию объекта производят позже в программе.
Может быть кто-нибудь умеет рисовать? Придумать бы нам простой логотип :)
Может быть имеет смысл создать раздел, внутри которого будут находиться несколько (~7) тематических подразделов, каждый на своей странице. Сейчас получается два длинных раздела, в каждом из которых обсуждается много тем.
В textbook могут иметься ссылки на разные версии одного и того же пакета, а также на implicit latest версию. Стоит их как-то причесать (решив, что лучше - latest или explicit версия).
cpp/inheritance:
необходимость диспетчеризации
Вероятно, стоит в скобках пояснить термин.
продолжает вызываться метод базового класса. Дело в том, что мы (якобы) случайно изменили сигнатуру виртуального метода в базовом классе, сделав его неконстантным
Великолепно!
Жаль, что это затеяно ради override, а так идея писать код сначала с ошибками, а потом приводить код в порядок - крайне полезна в случае нетривиальных языков программирования
cpp/dynamic-memory:
Программе на C++ доступны два вида памяти: стек и куча (heap).
А как же статическая память?
std::list<std::unique_ptr>
Где-то стоило приписать комментарий о том, как этой штукой пользоваться (по ссылке или перемещать), и как избежать ошибок компиляции из-за попыток копирования.
python/basics:
Объекты list - изменяемые (в отличие от str и tuple):
Где-то надо показать разницу между a += (1,2) и a = (1,2), что в C++ второе бы не сработало для const объекта, а в python переменная изменяема, хотя её значение может быть неизменяемым.
arr[::-3]
неудачный пример, т.к. вышло, что это равно развёрнутому arr[::3]
К коментарию функции можно обратиться
Вот тут опасно. Потом люди могут считать, что """ - признак комментария, а не строки.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.