Стас Выщепан @gandjustas
Умею оптимизировать программы
Information
- Rating
- 333-rd
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Software Architect, Delivery Manager
Lead
C#
.NET Core
Entity Framework
ASP.Net
Database
High-loaded systems
Designing application architecture
Git
PostgreSQL
Docker
В типизированном языке требуется определение типов деревьев. В некоторых языках это требует еще знания классов и наследования.
Чтобы учиться программировать не надо изучать все тонкости. Более того, некоторые вещи лучше даже не знать на начальном этапе.
Ну и как обычно нужен кеш для «тяжелых» запросов.
Код выполняется без ошибок, но любой статически типизированный язык на нем ломается или предлагает вводить кучу дополнительных конструкций.
Поэтому и предлагаю учить на динамически типизированном языке, чтобы не забивать голову студентам лишними для начального обучения сведениями.
Это делалось еще 20 лет назад, до изобретения термина NoSQL.
Но это касается только аналитики по всему объему данных, а мелкие агрегаты можно и в materialized view хранить.
Да, такое поведение неудобно, заставляет проверять что значение не NaN, или писать тесты, или проверять аргументы, или ревьювить код.
Тем не менее избежать таких ошибок легко. Я вот сколько писал JS ни разу на это не наталкивался.
Код валидный. Теперь попробуй портировать его на язык с выводом типов. Какой тип будет у x?
blogs.msdn.com/b/ericlippert/archive/2012/10/15/is-c-a-strongly-typed-or-a-weakly-typed-language.aspx
Я 7 лет уже пишу на C# и 3 года на JS и в обоих можно написать 1+«2». В C++ при желании также можно переопределить оператор + для строк и чисел, чтобы можно было так писать.
Кстати правило приведения к строке довольно простое чтобы из-за него так париться.
«Строгость» типизации определяется только вашими ожиданиями от системы типов.
Но все это для начального обучения лишнее.