?

Log in

No account? Create an account
November 2016   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
cartoon

TypeScript: Static or Dynamic?

Posted on 2016.06.15 at 21:49

Comments:


Трещиноватые коллекторы. Инструкция.
maksenov at 2016-06-17 02:37 (UTC) (Link)
TypeScript уже взлетел, и ради интереса просто стоит посмотреть какие библиотеки на нем написаны.

А не могли бы вы пояснить что значит математически полное покрытие тестами, и какой цели оно служит? Потому что если оно только гарантирует корректность использования всех типов, то это бессмысленно, потому что программа может быть некорректной, но все типы совпадают.
Владимир Макайда
byyj at 2016-06-17 05:49 (UTC) (Link)
То, что это приятнее и качественнее, мне кажется очевидно. Критика была в том, что поскольку люди исходили "из возможного", то и получилось "то, что возможно". Поэтому и приходится "объяснять себя" вот в таких статьях.


Как говорил Дейкстра, отладка программы - это сведение количества ошибок к приемлемому минимуму. Так и живём:)
Alexander  Mikhalev
alexander_mikh at 2016-06-18 20:34 (UTC) (Link)
>TypeScript уже взлетел, и ради интереса просто стоит посмотреть какие библиотеки на нем написаны.

погуглил, нашел мало. Приведите пример?
Трещиноватые коллекторы. Инструкция.
maksenov at 2016-06-19 03:19 (UTC) (Link)
Из крупных: angular, angular2, dojo2, immutable.js.

К большому количествую уже готовых библиотек есть внятные описания типов для использования с TS: https://github.com/DefinitelyTyped/DefinitelyTyped
Gaperton
gaperton at 2016-06-19 05:11 (UTC) (Link)
На нем Angular 2 сделан. Хотя бы поэтому TypeScript-у никак не избежать "взлета".

Ну и потому, что его система типов весьма неплоха, если ее сравнивать не с эзотерикой, а с популярными языками, на которых реально пишут. С Java, например.

Edited at 2016-06-19 05:20 am (UTC)
Gaperton
gaperton at 2016-06-19 05:32 (UTC) (Link)
> А не могли бы вы пояснить что значит математически полное покрытие тестами, и какой цели оно служит?

Cyclomatic Complexity, например. Дает оценку этого покрытия сверху, количественно. Довольно расслабленная метрика, на самом деле, для совсем полного покрытия требуется еще больше тестов, учитывающих разные варианты вычисления логических выражений.

https://ru.wikipedia.org/wiki/%D0%A6%D0%B8%D0%BA%D0%BB%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C

Разумеется, на практике мало кто подгоняет покрытие под цикломатику. Есть два разных software engineering - о котором говорят в сети и на конференциях, и как реально делают. В реальности дай бог если каждая строка написанного кода тестами вызывается.

Что звучит разумно (ну код-то мы вообще хоть раз вызвать тестами должны!), но (внезапно) этого трудно достичь из-за так называемого "защитного кода" и обработки ошибок. Каждую исключительную ситуацию покрывать тестами, эээ... Влом. Некоторые из них не так просто воспроизвести.

В общем, это "полное покрытие" - Неуловимый Джо. Никто его не может поймать, и никому он особенно не нужен.

Edited at 2016-06-19 05:43 am (UTC)
Трещиноватые коллекторы. Инструкция.
maksenov at 2016-06-19 15:10 (UTC) (Link)
Ага, спасибо.

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

По ощущениям оно так и происходит - функциональными и интеграционными тестами проверяются типичные форкфлоу (сразу вскрывая глупые ошибки с типами), а на остальное кладется болт.
Gaperton
gaperton at 2016-06-20 05:32 (UTC) (Link)
Об этом я и писал в статье. Системы типов популярных языков слишком слабы, чтобы конкурировать с традиционными QA процедурами (а эзотерику мы всерьез не воспринимаем - есть объективные причины, почему она даже близко не подходит к мэйнстриму). Ловля этих ошибок чуть раньше - приятно, но само по себе не преимущество. Оно в другом.

И это другое - оно более важное.

Edited at 2016-06-20 05:45 am (UTC)
Previous Entry  Next Entry