Мы же говорим про курс ossu?
Задачей изучения фундаментальных основ является:
1. Передача представления о различных парадигмах и их использования, где позже специалист на реальных примерах со своими инструментами этим знания точно найдет применение. Будь-то хаскелл или джава. Я не раз видел кадров, которые использовали классы как структуры данных, которые не понимали что класс определяется его поведением и тп. В нашей профессии до пизды долбоебов.
2. Если "все эти О-большое" это всё, чем, как ты думаешь, занимается раздел в CS про алгоритмы и структуры данных - то нет, асимптотический анализ это одна из составных этого предмета, подходит под любой ЯП. Я сильно удивлюсь если в твоей программе на языке X алгоритм со сложностью O(x^n) будет работать быстрее чем O(n). Сюда так же входит разработка алгоритмов под разные структуры данных. Ещё это олимпиадное программирование, которым я занимаюсь и планирую в дальнейшем. Кодерки, которые прошли курсы 3 месяца по пхп не будут брезговать вложенностью и стэк, к примеру, хранить в обычном массиве.
3. Даже банальный навык декомпозиции очень сильно поможет кодерку в разработке, лол. А дальше можно тупо изучить Software Architecture + Design на своём языке. К проектированию больших, распределенных и сложных сервисов так-же написано тучу книг.
4. О да, посмотрю архитектура x86 за последние 3 года 10 раз менялась, а linux input subsystem значительно за последний год целых 20? Если кодерок, даже высокоуровневый, понимает что такое сокеты и знает как работают poll, epoll, kqueue, select, iocp (в зависимости от платформы), то и понимание масштабирования своих поделий к ним придет. Ещё много примеров можно навести, вот только я пока не до конца всё знаю.
5. OSI модель критикуется во многих книгах, при этом в сетевую фундаментальщину входит не только osi, а ещё понятия про роутинг пакетов, про tcp/ip | udp, про сетевые маски, про вланы, etc. Бывает такое что люди не понимают что такое http запрос, при том что работают на оплачиваемой вакансии макаки на галере.
6. В ossu нет студентов, какие команды? Если говорить лично про мою шарагу, то у меня уже есть активных людей 8, с которыми я общаюсь, всячески помогаю и пытаюсь что-то делать используя современные подходы организации команды.
Наверняка забыл, в пунктах выше я постарался привести то, что ты забыл. А вообще твой псто выглядит как личные проекции опыта, однобокая позиция. Конструкции вида "кто? да никто. Всё сводится к". В своем ответе тоже аппелировал к личному опыту, так-что 1:1. Глупо полагать, что на одних фундаменталзах можно выехать, но я об это не говорил, хотя по твоему посту можно сказать, что ты оспаривал именно эту позицию.
Нет, я не проходил этот курс, но надо будет просмотреть, спасибо за наводку.
1. Мммм, как там быть с тем, что на некоторые языки эти ваши парадигмы не налазят? А еще с тем, что ряд очень полезных парадигм существует в узкой области, например, реактивное программирование. Но в целом согласен.
2. А зря. Я, конечно, не эксперт в анализе алгоримтов, но видя то, как работают современные языки программирования на современных платформах, я очень сомневаюсь, что применить анализ к чему-то более сложному чем "поиск элемента в масиве" представляется реально возможным на практике. Учитывая внутренние оптимизации языка, непрямое управление памятью, многопоточность, различные оптимизации платформ и так далее.
3. В этих книгах в 90% вода, в 10% "в идеале должно быть так, а по факту у всего есть trade-off так что живите с этим и тыкайте палкой".
4. А что сразу linux input subsystems? Переключение контекста, например, менялось и довольно сильно: https://habr.com/ru/post/438042/#7. Я уже не буду упоминать различные изоляционные механизмы, которые появились недавно или новые async-i/o операции для ядра, которые вышли в 5.0