Почему я полюбил динамическую типизацию?
Я очень часто встречал мнение, что для очень больших проектов безусловно нужны языки со статической типизацией. Что 1 млн строк кода можно написать только на Java.
Однако я заметил, что на JS я должен писать свой код настолько простым, чтобы всегда было его очень легко понимать и использовать. И писать его как можно более модульно и лаконично. Потому что это единственный шанс не утонуть в сложности, которую обычно со временем очень наращивается.
Когда у тебя прописаны все интерфейсы, и автодополнение в IDE позволяет писать код, который еще не до конца осмыслен, тогда рефакторинг, приведение кодовой базы в порядок оттягивается до того момента, когда это уже слишком сложно.
Под рефакторингом я понимаю не то, когда большой метод бьется на пару-тройку других методов; и не переиспользование вместо дублирования в паре мест, а исправление архитектуры на более высоком уровне с учетом новых знаний.
В итоге вместо безумного проекта в 1млн строк на Java можно написать несколько модулей и подпроектов в сумме на 100т. строк JS. Хотя вообще это какие-то безумные числа.
В мире JS я никогда не встречал таких запутанных неповоротливых классов, как иногда в C#.
Мастерство программирования ведь заключается в том, чтобы делать программы очень простыми.
А для простых программ не нужны сложные языки.
Определенно мне стоит попробовать LISP (Clojure, cljs).