metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-09-14 08:17 am

Хаскельное

http://vit-r.livejournal.com/679524.html?thread=3691364#t3691364
решили на прошлой работе трое таки попробовать Хаскель, для неспешной задачи. генерация DDL, DML c скриптами SQL. Бились, бились, - но сделали, и был восторг! Потом, затянула обычная работа, через месяцок нужно было добавить кое-чего... и никто из троих не смог понять как оно работает, и как же добавить.

Звучит похоже на правду. Хотя у меня и F# и Clojure в подобных задачах живут и развиваются без проблем.

[identity profile] metaclass.livejournal.com 2013-09-15 03:57 pm (UTC)(link)
Я заебусь им задачи ставить и проверять. У меня даже с одним-двумя подчиненными проблемы в коммуникациях.
Вот, например, собираемся взять на работу человека еще одного. Я искренне не представляю, как совместить его обучение и выполнение текущих проектов.

[identity profile] berezovsky.livejournal.com 2013-09-15 04:07 pm (UTC)(link)
Сам пускай учится, хуле его учить.

[identity profile] vit-r.livejournal.com 2013-09-15 04:12 pm (UTC)(link)
Кроме веба и этого полно другого софта.

Гадаем дальше.

[identity profile] anonim-legion.livejournal.com 2013-09-15 04:19 pm (UTC)(link)
Вы уж лучше скажите сами.

[identity profile] metaclass.livejournal.com 2013-09-15 04:23 pm (UTC)(link)
Встраиваемый, промышленная автоматизация.

[identity profile] vit-r.livejournal.com 2013-09-15 04:29 pm (UTC)(link)
Если мы говорим о качестве, то начинать имеет смысл с того, что называется  mission critical software, то есть такой, где ошибки могут стоить мнониг миллионов или человеческих жизней.

Ну это так, для примера. Есть ещё много чего не менее интересного, не относящегося ни к вебу, ни к бухгалтерии. Впрочем, сейчас для госучреждений в Германии на веб требуется третий уровень  CMMI или аналоги.

[identity profile] thesz.livejournal.com 2013-09-15 04:32 pm (UTC)(link)
Не всегда. Хаскель, кстати, сильно помог, с Верилогом в частности.

[identity profile] anonim-legion.livejournal.com 2013-09-15 04:35 pm (UTC)(link)
А я-то думаю, что у нас с автоматизацией все так плохо.

Странно, что человек вообще чего-то спорит. Проверить программу на чем-то функциональном проще, чем на олдовых хардкорных сях. Сделать кодогенератор в си - тоже можно.

У vit-r в отрасли, как я понимаю, есть дедовские традиции разработки и потомственное байтоебство, вот поэтому и...

[identity profile] vit-r.livejournal.com 2013-09-15 07:04 pm (UTC)(link)
Я использую то, что использует клиеннт. Как правило, вся документация пришется нормально, руками.
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2013-09-15 08:23 pm (UTC)(link)
Прошу прощения, я запамятовал, что вы - варяг.

Так doxygen - это тоже руками. Т.е. как вы и хотели - формат комментов к каждой функции. Всё очень чётко - вот описание функции, вот параметры, вот комментарии. Местами, может быть, чересчур многословно, скажем \param я бы убрал, заменив на какой-нибудь символ вроде #.

А сам по себе инструмент doxygen прогонять абсолютно не обязательно, если нет желания иметь ворох html файлов.

[identity profile] berezovsky.livejournal.com 2013-09-15 08:27 pm (UTC)(link)
Что такое варяг? Который наш гордый, врагу не сдаётся или что?
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2013-09-15 08:36 pm (UTC)(link)
Варяг, это тот, кто, как Рюрик, пришёл порулить ненадолго. :-)

[identity profile] vit-r.livejournal.com 2013-09-15 08:42 pm (UTC)(link)
Ладно, мне сегодня влом говорить про уровни.

На прошлой неделе видел результат из этого замечательного doxygen. Три четверти параграфов содержали одно слово "None". Не надо путать бюрократию с организацией.

[identity profile] berezovsky.livejournal.com 2013-09-15 08:45 pm (UTC)(link)
А в фильме "Рюрик. Потерянная быль" говорят, что нам врут про Рюрика. :-(

[identity profile] kurilka.livejournal.com 2013-09-15 08:46 pm (UTC)(link)
Де-факто стандартом является
https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md

[identity profile] vit-r.livejournal.com 2013-09-15 08:59 pm (UTC)(link)
Maximum line length is 80 characters.

Why? Потому что перфокарты. :-D

Остальное в том же духе.

И опять же, вопрос ограничен только правилами на написание комментариев.

[identity profile] fraks-nsk.livejournal.com 2013-09-16 01:06 am (UTC)(link)
Человек способный сам быстро обучиться как правило быстро вырастает из текущего места работы и уходит дальше.

[identity profile] geniepro.livejournal.com 2013-09-16 10:19 am (UTC)(link)
библиотека SQLite, написанная на сях, имеет покрытие в 1084 строк тестов на каждую строку кода, но и это не спасает её от того, что время от времени в ней таки находятся баги...

[identity profile] geniepro.livejournal.com 2013-09-16 10:23 am (UTC)(link)
http://snapframework.com/docs/style-guide

весьма известный style-guide для хаскелла

[identity profile] geniepro.livejournal.com 2013-09-16 10:26 am (UTC)(link)
Вот на эту тему как раз:

"Running the Manual: An Approach to High-Assurance Microkernel Development"
http://www.cse.unsw.edu.au/~chak/papers/sel4-model.pdf

[identity profile] vit-r.livejournal.com 2013-09-16 11:05 am (UTC)(link)
Maximum line length is 78 characters.

Why?

[identity profile] vit-r.livejournal.com 2013-09-16 11:06 am (UTC)(link)
Тестами нелзя доказать отсутствие багов. По-моему, это азбука.

[identity profile] vit-r.livejournal.com 2013-09-16 11:08 am (UTC)(link)
Да, и "покрытие 100%" - это не соотношение строк тестов к строкам кода, а доказательство, что в тестах проверятся каждая строка кода.

[identity profile] vit-r.livejournal.com 2013-09-16 11:11 am (UTC)(link)
Опять же "We propose..."

Это научная работа. Достаточно посмотреть на литературу.

[identity profile] thedeemon.livejournal.com 2013-09-16 03:56 pm (UTC)(link)
Вот только это довольно бессмысленное занятие.
void f(bool x, bool y)
{
  Obj obj;
  if (x==y) obj = new Obj(); 
  else obj = null;
  if (y) obj.doSomthing();
}
//test:
f(true, true);
f(true, false);

100% покрытие тестами и явный баг с NPE при вызове f(false, true).

Page 4 of 6