@max10110

Какие области computer science нужно знать full stack веб разработчику?

Привет всем! Изучаю веб разработку, знаю html, css, учу react хочу учить Python Django. Недавно наткнулся на статьи о computer science, но в основном эти статьи нацелены на java, c, c++ разработчиков. Нужно ли знать computer science, веб разработчику и если да то какие области? Какие книги или лекции, статьи посоветуете?
  • Вопрос задан
  • 456 просмотров
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
В подавляющем большинстве случаев деятельность программистов далека от науки, тем более деятельность web-разработчиков.
Ответ написан
Комментировать
bingo347
@bingo347
Crazy on performance...
Веб-разработчику знание computer science не обязательно, но полезно. Помимо общего развития оно позволит писать более производительный и менее ресурсоемкий код.

Что стоит изучить:
1. базовое устройство и принцип работы ЦП и ОЗУ, как выполняются команды, как происходит чтение и запись памяти, как работают процессорные кэши, как работают прерывания и для чего они нужны.
2. базовое понимание ассемблера хотя бы для одной архитектуры (наиболее актуально x86_64)
3. базовое понимание как работает ОС - системные вызовы, отличие user space от kernel space, отличие микроядерной и монолитной архитектур. Что такое виртуальная память

Помимо общих тем полезно будет знать более прикладные вещи:
1. Структуры данных, какие есть, какая для чего нужна и где ее более оптимально использовать
2. Алгоритмы, алгоритмическая сложность (о-нотация и омега-нотация), знание о наличии распространенных решений и понимание, какое решение будет наиболее оптимально в конкретном случае
3. Архитектура программного обеспечения
4. Паттерны проектирования
5. ООП (наследование, инкапсуляция, полиморфизм подтипов (на наследовании и на интерфейсах), композиция, абстракция)
6. ФП (функции высшего порядка, замыкания, параметрический полиморфизм, композиция, ассоциативность, контроль побочных эффектов, монады и функторы)

А еще есть закон протекающих абстракций, согласно которому не лишним будет знать, что и как у нас работает под капотом:
1. как работает интерпретатор python
2. как работают интерпретаторы js (на примере v8 хотя бы)
3. как работают JIT компиляторы, и как это вообще возможно если executable память read-only, а writable память не executable в большинстве популярных ОС
4. как работает сборка мусора, какие есть алгоритмы, почему большинство сборщиков мусора используют поколения. А конкретно к v8 еще можно задать актуальный для react вопрос: почему иммутабельность и постоянное создание коротко-живущих объектов в js относительно дешево, если аллокация памяти - это дорого?
5. как работает браузер, как он рисует страницу, как обрабатывает event-loop js

P.S. большинству работодателей предлагающих работу связанную с разработкой в вебе это все нафик не сдалось от нанимаемого разработчика... большинству работодателей нужно тупое формошлепство на фронте и создание тупых проксей от БД до фронта на бэке... но те немногие работодатели, кому эти знания стоят острой необходимостью, готовы платить практически любые деньги разработчику, который все это знает и умеет применять на практике.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы