Рубин Для Приготовления Сорбета Статически Типизирован


Проверка типа сорбета Stripe направлена на достижение того, что Typescript сделал для JavaScript; внедрить статическую типизацию в динамический язык.

Но давайте начнем с основ; что такого плохого в динамически типизированных системах, что статически типизированные системы, полные или частичные, так желательны.

Еще в начале 2010 года я, программист, запустил свою серию подробных статей “Система типов демистифицирована” (Часть 1, Часть 2, часть 3) о большом противостоянии между системами типов (статические и динамические, сильные и слабые), подробно описывая как их препятствия, так и их достоинства. Несмотря на то, что дела пошли дальше, принципы, которые я изложил в статьях, остаются, и их применимость к JavaScript даже упоминалась в диссертации 2013 года “Загрузка соответствия и рисование информации с использованием node.js – Работа, выполненная в компании” Svenska”, выполненная в Шведском Королевском Технологическом институте KTH.

В основном это сводится к тому, что объявление типов приводит к меньшему количеству ошибок во время выполнения, но опять же это торгует производительностью для безопасности; попробуйте проанализировать XML-файл на Java, а не на Perl. Вы видите, к чему это ведет, но правда в том, что тенденция движется в сторону смешанных или постепенных систем типов, таких как системы, одобренные Perl 6, или статически типизированных систем с выводом типов, таких как системы Haskell.

Сорбет на самом деле разделен на два аналога проверки типов, динамический и статический. Вдохновляясь RDL, еще одной облегченной системой для добавления типов, проверки типов и контрактов в Ruby, она использует гибридный подход, применяя проверку типов во время выполнения с аннотациями типов, представленными в виде DSL, и статически проверяя сигнатуры кода и методов.

Его отличие от Typescript заключается в том, что в Sorbet нет фазы компиляции или транспиляции, и, поскольку кодовая база Stripe огромна, система типов Sorbet должна была быть совместима с существующим кодом и библиотеками, чтобы обеспечить постепенную адаптацию.

Другие свойства, описанные Дмитрием Петрашко, разработчиком Stripe, который участвует в основном проекте, являются:

это смехотворно быстро, 100 тысяч строк в секунду на ядро, масштабирование до 64 ядер

написано на современном C++

все это разработано с учетом хороших сообщений об ошибках

вывод локального типа, нет необходимости объявлять локальные переменные

ненулевые типы по умолчанию

интеллектуальный ввод в зависимости от потока управления

типы объединения и пересечения

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

Посещение https://sorbet.run/ для большего.


Добавить комментарий