вашем опыте за последние года два?
константы != иммутабельные символы
я не смогу спонтанно перечислить конкретные случаи за последние пару лет, надо вспоминать. Но я могу с уверенно сказать что эти проблемы были самыми грязными и стабильно портили настроение, потому-что дебажить их то ещё удовольствие! я вам дам аналогию для более простого понимания: зачем нам в Go int32 и int64? Если Go это про простоту, то зачем усложнять и просто не оставить int а там пускай компилятор решает где это 32 а где 64 bit. Причина на то имеется, и она называется integer overflow и все вы её прекрасно знаете. так вот если бы мы не смогли предсказать, где 64 а где 32, то очень легко можно бы было придти к неверным вычислениям, и сразу этого не заметить, а потом потерять из-за этого кучу бабла, реального, зелёного, когда 2,147,483,647 вдруг превратится в 4200, хотя код компилируется и работает. С pointer aliasing’ом проблема такая-же. Код компилируется, а программа выдаёт бредовые результаты и хер пойми почему, особенно когда не ты один работал над кодом да ещё и возможно со сторонними библиотеками. зачем нам типизация? да для того чтоб работать в команде было легче, чтоб кто-нибудь по невнимательности не передал слона в жирафа. А иммутабельность это всё эщё про систему типов, она просто ещё более конкретизирут типы раздeляя их на мутабельные и немутабельные, для того, чтоб кто нибидь случайно не оторвал нашему слону хобот, там, где ожидается полноценый слон
Обсуждают сегодня