?

Log in

No account? Create an account

Заповедник репрессивной психиатрии

Сложность языков программирования
metaclass
Power and Complexity in a Programming Language

Похоже, что чем больше мощности и выразительности добавляется в язык программирования, тем более сложным он становится. Чем более сложным становится язык, тем труднее программистам понимать, читать и поддерживать его. И чем более сложный язык, тем более вероятно, что он будет сведен к его подмножеству, что уменьшит переносимость его между программистами. Один програмист может знать одно подмножество языка и другой - другое. Хорошим примером этого видимо является С++.

Я бы еще добавил, что сложность вносит стандартная библиотека и API к операционной системе. Вот, например, C# весьма простой и понятый язык. Но .NET фреймворк, особенно в новых версиях - это же ад, его в голове удержать невозможно, особенно с учетом тысяч мелких классов и интерфейсов с одним-двумя методами.
Жаба с ее фреймворками на каждый случай жизни - туда же.

Интересно, как в этом плане пришелся бы Haskell? Сам язык вроде не сильно сложный, а вот используемые в нем концепции - кошмарный ад, а мощность и лаконичность языка порождают вот такие алгоритмы. Хотя насчет последнего - интересно было бы взглянуть на аналогичный алгоритм на другом языке, может там окажется на две страницы еще менее понятного трэша.

Перегрузка мозга
metaclass
Как известно, в любой системе нужно оставлять примерно 25% процентов запаса по ресурсам, на случай обработки пиковых нагрузок. Но нагрузка на мой мозг от работы уже давно находится где-то на уровне 90% а иногда и выше, что в некотором роде задалбывает и вообще делает невозможным выделение дополнительных ресурсов в случае надобности.

Вот интересно, что с этим делать? Когда лишняя нагрузка, условно говоря "интересная" - т.е. там хаскель(и прочее около того) вкуривать, линукс настраивать или там дома делать серверную инфраструктуру - оно мозг задалбывает гораздо меньше. Но на это сейчас времени нет - тут бы основные работы делать успевать.

Так вот я думаю, что было бы лучше - можно выпилить из руководства ресурсы на еще одного-двух работников, чтобы передать им часть занятий. Но, оставляя побоку самоочевидную жаббу руководства, есть еще один аспект - ни один "хороший" программист на эту работу не пойдет. Потому что сплошная "опердень", общение с клиентами, постоянное дергание, итд. Нахрена такое кому-то надо?
Еще проблема в том, что 80% кода - на дельфи. Это сразу означает, что на собеседования придут в основном недоученные долбоебы, умеющие только кнопки на формы ложить. А обязательно нужно, чтобы знали ООП, как минимум. Не говоря уже о реляционных БД и функциональщине.

Второй вариант - положить хер на бессмысленные дела и переделать часть кода на более гуманные языки и платформы. Тут возникает другая проблема: писать всякую "опердень" на чем-либо кроме дельфи - объективно сложнее. Либо это я отупел вконец, либо просто ни у кого из дизайнеров других языков и платформ мысли о том, что надо бы и под разработчиков опердени в стиле "нужно вчера" оптимизироваться. Но в общем, это пофиг. Тем более, что на нормальном языке, который не позволяет истеричную разработку, хочешь-не хочешь, придется разрабатывать нормально.

Третий вариант - сразу взять опытных разработчиков на другом языке, обучить его предметной области, помогать проектировать архитектуру, но дальше пусть работает сам. Мне работы по общению с клиентами и прочим организационным моментам в любом случае хватит. Но жабба руководства вырастет до небес.

Пока я склоняюсь ко второму варианту, т.к. он не требует ежедневного капания на мозг руководству "дайте денег на девелоперов". А то, что в результате получится ад, израиль и пурпурная вша с AI на хаскеле - это проблемы руководства :)