Замечаете ли вы странности в следующем ряду?
'127'
'238'
'301'
'11Z'
'281'
'109'
'118'
Да, среди цифр затесалась буква 'Z', очень похожая на двойку.
Это из сегодняшнего. И, судя по всему, двойка там и должна была быть. Причём, разных значений там не семь, а больше сотни.
Каждый раз читая посты
ivan_gandhi,
orleanz и других восхищённых проповедников функционального программирования, думаю: «Выглядит-то оно замечательно. Но что останется от этой красоты, после того, как туда вставить хотя бы банальную трассировку?»
Потому что правильная программа - это не та, которая падает, дрыгая ножками, получив на входе значение, не входящее в область определения изящной функции.
Это не та, которая сообщает пользователю «Вася, ты дурак! А ну-ка быстро исправь бяку!»
Вася может быть в другой стране, в другом часовом поясе и вообще не понимать, о чём идёт речь.
Это также и не та программа, что тихо пишет какие-нибудь умные размышления в потаённые логи, который никто никогда не смотрит.
И, естественно, не та, которая думает, что неправильные входные данные - правильные, в на выходе производит горы мусора.
Правильная программа пережёвывает всё это дерьмо и выдаёт результаты, которые конечный пользователь может применять в своей деятельности. Это, кстати, относится и к сообщениям об ошибках.
Welcome to the real world, товарищи математики!
'127'
'238'
'301'
'11Z'
'281'
'109'
'118'
Да, среди цифр затесалась буква 'Z', очень похожая на двойку.
Это из сегодняшнего. И, судя по всему, двойка там и должна была быть. Причём, разных значений там не семь, а больше сотни.
Каждый раз читая посты
Потому что правильная программа - это не та, которая падает, дрыгая ножками, получив на входе значение, не входящее в область определения изящной функции.
Это не та, которая сообщает пользователю «Вася, ты дурак! А ну-ка быстро исправь бяку!»
Вася может быть в другой стране, в другом часовом поясе и вообще не понимать, о чём идёт речь.
Это также и не та программа, что тихо пишет какие-нибудь умные размышления в потаённые логи, который никто никогда не смотрит.
И, естественно, не та, которая думает, что неправильные входные данные - правильные, в на выходе производит горы мусора.
Правильная программа пережёвывает всё это дерьмо и выдаёт результаты, которые конечный пользователь может применять в своей деятельности. Это, кстати, относится и к сообщениям об ошибках.
Welcome to the real world, товарищи математики!
no subject
Date: 2014-12-11 01:33 pm (UTC)Одна из фич ФП - это алгебраические типы данных.
С их помощью можно обыграть ситуацию с Z и другими "левыми" символами с лёгкостью, ещё даже легче, чем мейнстримные технологии (субъективно легче).
Некоторые так и делают. И если это делают не все, то из этого не следует, что ФП не подходит для решения задач реального мира.
Для примера, в офисе приходится генерировать 560 LoC в ходе реализации какой-то фичи. Дома идентичный функционал обыгрывается с помощью ФП (Haskell) в 25 LoC. Код ФП пишется тяжелее, но читается легче. Пространственно-временнные замеры показывают, что ФП не уступает по времени/ресурсам мейнстриму.
no subject
Date: 2014-12-11 01:38 pm (UTC)Нет такого "всего", чего бы нельзя было сделать теоретически. А на практике получается жопа.
И какие там данные, никто не узнает, пока не поймаешь ошибки. Потому что доверять нельзя никому. Даже себе.
no subject
Date: 2014-12-11 01:45 pm (UTC)Субъективный опыт показывает следующее:
* Java, Perl, C++, PHP, C#: быстрая реализация -> баги, каверзные баги, race condition, многочасовая отладка.
* J, Haskell: тяжелая реализация -> ни одного падения, ни одного зависания, ни одной ошибки, все сообщения о невалидных входных данных читаемы, понятны.
Конечно, понимаю, что опыта - шишек набито - мало для суждения.
Возможно, через пять лет буду рассуждать иначе. Но сейчас так.
no subject
Date: 2014-12-11 03:10 pm (UTC)Кстати, у меня на Perl и C++ не выполняется условие "баги, каверзные баги, race condition, многочасовая отладка". Что я делаю не так?
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:Re: о 10 индусов Бангалора и влиянии индуизма на продакшн
From:Re: о 10 индусов Бангалора и влиянии индуизма на продакшн
From:Re: о 10 индусов Бангалора и влиянии индуизма на продакшн
From:Re: о 10 индусов Бангалора и влиянии индуизма на продакшн
From:Re: о 10 индусов Бангалора и влиянии индуизма на продакшн
From:Re: о 10 индусов Бангалора и влиянии индуизма на продакшн
From:о различных требованиях к технологиям
From:Re: о различных требованиях к технологиям
From:Re: о различных требованиях к технологиям
From:Re: о различных требованиях к технологиям
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:Re: что я делаю не так?
From:no subject
Date: 2014-12-11 06:20 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-12-11 01:47 pm (UTC)Заворачиваем в тип
"ХорошиеДанные(int) | ПлохиеДанные (строка)" и протаскиваем его до того места, где есть хоть что-нибудь или кто-нибудь, способное разобраться и сконвертировать это в настоящий int
no subject
Date: 2014-12-11 03:07 pm (UTC)Это не мелкая обозримая компания, это энтерпрайз, где маленький отдел где-то по размерам с такую компанию.
Правильная тактика - это установка заплатки. Временной, чтобы ошибка не мешалась другим процессам, а потом постоянной, потому что "Мир так устроен".
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-12-11 01:38 pm (UTC)no subject
Date: 2014-12-11 03:13 pm (UTC)Сообщения об ошибках в процессе работы приводят только к бесполезному общению и попыткам объяснения того, что софт делает только то, что нужно, а не то, что хочется.
Логи - это просто из серии "забыть"
no subject
Date: 2014-12-11 09:23 pm (UTC)А вообще для пользователей любая программа должна представлять собой одну большую кнопку "Пуск" и больше ничего. Даже маленькая кнопка "Дополнительно" в уголке окошка – уже большой вопрос, поскольку кто-нибудь туда обязательно залезет и что-нибудь поломает.
(no subject)
From:no subject
Date: 2014-12-11 02:53 pm (UTC)Если это можно сформулировать четко и непротиворечиво, получится все та же математика. Не вижу противоречия с реальным миром.
Больше логики и непротиворечивости - больше математики, меньше багов.
Меньше логики и непротиворечивости - меньше математики, больше багов.
no subject
Date: 2014-12-11 03:04 pm (UTC)Речь не идёт о результатах хитрых идей. Есть ошибки, с которыми приходится сосуществовать. Причём, производить из ошибочного правильное.
Больше логики и непротиворечивости - больше математики, меньше багов.
Меньше логики и непротиворечивости - меньше математики, больше багов.
Этак можно тысячу багов заменить одним: "Программа не работает"
no subject
Date: 2014-12-11 03:25 pm (UTC)Математика тут добавляет возможность внятно рассуждать о происходящем и решать задачу наиболее правильным методом, минимизируя количество заплаток на частные случаи.
(no subject)
From:no subject
Date: 2014-12-11 04:14 pm (UTC)-------
Есть технологии из разряда "Берешь и делаешь", а есть технологии из разряда "Человечество осуществило посадку зонда на комету, но так и не научилось выравнивать блоки с помощью CSS".
-------
no subject
Date: 2014-12-11 04:36 pm (UTC)Так что с зондами тоже всё в порядке.
no subject
Date: 2014-12-11 04:19 pm (UTC)Трассировка как раз монадами и реализуется.
Логи люди таки читают. Умение читать журнал системых событий винды сильно облегчает жизнь.
И так далее...
no subject
Date: 2014-12-11 04:50 pm (UTC)Тем более, что в больших системах данные приходят откуда угодно, хоть из Ексел-таблицы секретарши.
То, что я видел как попытки трассировки на монадах, критики не выдерживает. Теоретически может и проще, практически пока что функциональные люди работают в мире без ошибок.
Пользователи не читают ничего, даже инструкции. Сажать рядом с ними бакалавра компьютерных наук, чтобы лазил по логам, занятие слишком дорогое и вряд ли реализуемое.
no subject
Date: 2014-12-11 05:09 pm (UTC)Поэтому, неправильно говорить о том, что люди-де не читают и это нормально. Не нормально. Я согласен с тем, что программы пишутся для облегчения работы, а не для создания проблем. НО ваши предложения в комментариях - вешать временные заплатки, которые станут постоянными - это создание еще бОльших проблем на будущее.
(no subject)
From:no subject
Date: 2014-12-11 04:28 pm (UTC)То, что где-то по организационным причинам нельзя использовать языки А и Б, а можно только COBOL, скажем, не мешает другим людям в других ситуациях те языки использовать с успехом.
no subject
Date: 2014-12-11 04:40 pm (UTC)Я знаю языки, где процентов 80 красивых штучек просто не используется. В большинстве серьёзных контор есть стандарты, где стоит "За попытки вот такие красивости изобразить - вызов на ковёр с докладом, почему не получается с делать по-человечески, а вот за такое - канделябром по башке сразу"
И бьют. Причём, больно.
Не потому, что "старые закостенелые ретрограды", а потому, что знают, во что это выливается в реальных условиях.
no subject
Date: 2014-12-11 04:51 pm (UTC)(no subject)
From:no subject
Date: 2014-12-11 06:19 pm (UTC)no subject
Date: 2014-12-11 06:42 pm (UTC)В принципе, в телекоммуникациях достаточно хорошая область данных и Эрланг прекрасно работает. Только там в программировании больше инженеров чем информатиков.
no subject
Date: 2014-12-11 07:29 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:Промежуточные итоги дискуссии о ФП и реальном мире
Date: 2014-12-13 03:01 pm (UTC)