"Одной моей однокурснице пришлось даже выйти замуж за местного парня (Екатеринбург), чтобы закрепиться в этом городе (когда встала на ноги, развелась). "
Я думаю у вас не к месту использован термин «линейное программирование».
Как-то так получилось что линейное программирование не связано никак с программированием.
Вот Алексей сказал, что ему не понравилось бы работать в support, поэтому отдельного support-а нет. И ещё сказал что есть отдельная команда мониторинга. Как вы формируете команду мониторинга? Если ли люди, которым это нравится?
1) В генте самый гибкий и удобный пакетный менеджер из всех мейнстримных дистрибутивов (лучше только Nix, но он пока не мейнстрим).
Юзер-френдли управление опциями сборки всех программ это действительно киллер-фича.
Многие реальные задачи требуют поддержки опций, которые отключены в бинарных пакетах бинарных дистров, и приходится самому пересобирать пакеты с включенными опциями и поддерживать их.
А в генте переключение опций сборки это штатная фича, и очень удобная.
2) Простота создания ебилдов привела к тому, что практически весь существующий софт уже запакетирован.
3) Дерево портежей одно на весь дистрибутив, не нужно подключать левые репозитории и управлять ими.
Но.
1) Нет бинарных обновлений.
2) Нет релизов и поддержки обратной совместимости внутри релиза в течении нескольких лет.
3) Коммерческий и промышленный софт ориентируется на бинарные дистрибутивы (в частности, виртуализация).
Да, но если эти значения хранятся в питоне, то о возможных значениях знает только тот кто это сделал. Обо всех местах, где этот хак может что-нибудь сломать, не знает никто. А если отразить эту информацию в типах хаскеля, то этот epic fail станет контролируемым, предсказуемым и поддерживаемым. Когда хак сработает (принесёт быструю сиюминутную пользу), можно будет уже сделать по-нормальному, это будет очень просто сделать — правим тип данных и компилятор покажет все места где нужно что-то поменять из-за этого изменения.
А если этот epic fail живёт в какой-то внешней системе, которую мы не можем контролировать, с ним спокойно можно жить, зная о нём и явно его обрабатывая.
Отличный use case для хаскеля.
data MyBool = Zero | One | Two, при получении значения извне пишем функцию Int -> MyBool, и при каждом дальнейшем использовании мы будем знать все возможные варианты значений, а если где-то не учтём какой-то вариант в нашей логике, то компилятор выдаст предупреждение.
Пишем также функцию MyBool -> Int для взаимодействия с внешним миром, и в ней тоже нет шансов забыть о возможных вариантах.
Потом если кому то взбредёт в голову закодировать ещё один режим цифрой 3. Правим MyBool, и компилятор покажет все места, где MyBool используется в логике, и где это изменение может привести к ошибке. Вин!
Да она и CEO может стать!
Haskell?
От себя рекомендую вместо услышанных дилетантских мнений ориентироваться на официальную документацию и знающих людей: en.bitcoin.it/wiki/Scalability
Как-то так получилось что линейное программирование не связано никак с программированием.
neo900.org/
— Professor
Юзер-френдли управление опциями сборки всех программ это действительно киллер-фича.
Многие реальные задачи требуют поддержки опций, которые отключены в бинарных пакетах бинарных дистров, и приходится самому пересобирать пакеты с включенными опциями и поддерживать их.
А в генте переключение опций сборки это штатная фича, и очень удобная.
2) Простота создания ебилдов привела к тому, что практически весь существующий софт уже запакетирован.
3) Дерево портежей одно на весь дистрибутив, не нужно подключать левые репозитории и управлять ими.
Но.
1) Нет бинарных обновлений.
2) Нет релизов и поддержки обратной совместимости внутри релиза в течении нескольких лет.
3) Коммерческий и промышленный софт ориентируется на бинарные дистрибутивы (в частности, виртуализация).
Поэтому Centos.
С этой задачей вполне справляется и регистратор, он намного дешевле.
А если этот epic fail живёт в какой-то внешней системе, которую мы не можем контролировать, с ним спокойно можно жить, зная о нём и явно его обрабатывая.
data MyBool = Zero | One | Two, при получении значения извне пишем функцию Int -> MyBool, и при каждом дальнейшем использовании мы будем знать все возможные варианты значений, а если где-то не учтём какой-то вариант в нашей логике, то компилятор выдаст предупреждение.
Пишем также функцию MyBool -> Int для взаимодействия с внешним миром, и в ней тоже нет шансов забыть о возможных вариантах.
Потом если кому то взбредёт в голову закодировать ещё один режим цифрой 3. Правим MyBool, и компилятор покажет все места, где MyBool используется в логике, и где это изменение может привести к ошибке. Вин!