The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Открыт код Sorbet, системы статической проверки типов для Ruby"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Открыт код Sorbet, системы статической проверки типов для Ruby"  +/
Сообщение от opennews (??), 21-Июн-19, 11:13 
Компания  Stripe, специализирующаяся на разработке платформ для online-платежей, открыла (https://sorbet.org/blog/2019/06/20/open-sourcing-sorbet) исходные тексты проекта Sorbet (https://sorbet.org), в рамках которого подготовлена система статической проверки типов для  языка Ruby. Код написан на языке С++ и распространяется (https://github.com/sorbet/sorbet/) под лицензией Apache 2.0.


Информация о типах в коде может вычисляться динамически, а также задаваться в форме простых аннотаций (https://sorbet.org/docs/sigs), которые могут указываться в коде при помощи метода sig (например, "sig {params(x: Integer).returns(String)}") или размещаться в отдельных файлах с расширением rbi.  Возможен (https://sorbet.org/docs/overview) как предварительный статический анализ кода (https://sorbet.org/docs/static) без его выполнения, так и проверка по мере выполнения (включается (https://sorbet.org/docs/runtime) через добавление в код "require 'sorbet-runtime'").


Предусмотрена возможность постепенного перевода (https://sorbet.org/docs/gradual) проектов на использование Sorbet - в коде могут сочетаться как снабжённые аннотациями типизированные блоки, так и нетипизированные участки не охваченные проверкой. Из особенностей также отмечается очень высокая производительность и возможность масштабирования для кодовых баз, включающих миллионы строк кода.


В состав проекта входит ядро для статической проверки типов,
инструментарий для создания новых проектов с использованием Sorbet, инструментарий для поэтапного перевода на применение Sorbet существующих проектов, runtime с предметно-ориентированным языком для написания аннотаций о типах и репозиторий (https://github.com/sorbet/sorbet-typed) с готовыми определениями типов для различных gems-пакетов на  Ruby.

Изначально Sorbet развивался для проверки внутренних проектов компании Stripe, большая часть платёжных и аналитических систем в  которой написана на языке Ruby, и был переведён в разряд открытых после полутора лет разработки и внедрения.  Перед открытием кода было проведено бета-тестирование, в котором приняли участие более 30 компаний. На текущем этапе развития Sorbet поддерживает запуск большинства типовых проектов на Ruby, но могут наблюдаться отдельные несовместимоcти.


URL: https://sorbet.org/blog/2019/06/20/open-sourcing-sorbet
Новость: https://www.opennet.me/opennews/art.shtml?num=50921

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +2 +/
Сообщение от Аноним (1), 21-Июн-19, 11:13 
Если нужен ruby с типизацией то лучше уже на crystal смотреть.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

29. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –1 +/
Сообщение от Junior frontend developer (?), 21-Июн-19, 23:54 
Как раз на кристал-то лучше не смотреть. Люди важным делом занимаются, а не в игрушки играют.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –3 +/
Сообщение от Аноним (2), 21-Июн-19, 11:19 
Чего только не придумают, лижь бы на СИ-89 не писать
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –3 +/
Сообщение от Аноним (13), 21-Июн-19, 14:42 
Чего только сищники не придумают, только чтобы оправдать свое невежество и неумение подбирать инструмент под задачу
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

24. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –1 +/
Сообщение от YetAnotherOnanym (ok), 21-Июн-19, 20:44 
И что же такого особого в задаче "написать платёжную систему", что Руби для неё предпочтительнее си?
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

33. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –2 +/
Сообщение от Илья (??), 22-Июн-19, 06:29 
Для подсчёта денег лучше всего годятся статически типизированные, защищённые от небезопасного поведения языки.

Практика показывает, что это не си и не руби

Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

39. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –1 +/
Сообщение от Аноним (39), 22-Июн-19, 16:06 
> Практика показывает, что это не си и не руби

Практика подсказывает, что это не зависит от языка, но многие берут жабу.

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

48. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (48), 25-Июн-19, 09:47 
То, что для платежной системы надо сосредоточиться на бизнес-логике, а не на низкоуровневых приблудах.
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

49. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от YetAnotherOnanym (ok), 25-Июн-19, 11:02 
> То, что для платежной системы надо сосредоточиться на бизнес-логике, а не на
> низкоуровневых приблудах.

Если для разработчика принципиально важно не знать, что происходит "под капотом" (хотя бы в самых общих чертах) - гнать такого разработчика мокрыми тряпками.


Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

50. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (50), 26-Июн-19, 23:51 
Вы таки не понимаете разницу между "знать что под капотом" и "ковыряться целыми днями под капотом вместо того, за что деньги платят".
Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

51. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Andrey Mitrofanov_N0 (??), 27-Июн-19, 08:57 
> Вы таки не понимаете разницу между "знать что под капотом" и "ковыряться
> целыми днями под капотом вместо того, за что деньги платят".

Я знаю разницу.  Я даже бесплатно тебе расскажу.  Страдай.

Ковыряешься бесплатно под капотом пару-другую лет.  Потом внезапно за это тебе начинают платить.  Это сразу [относительно] становится скучно и неинтересно.  Профессионально тянешь резину ещё пару лет (опенет здесь -- для этого!).  ...в это время копаешь бесплатно под другим капотом.  Потом внезапно.... [см.п.2]   .....PROFFIT//

Ответить | Правка | ^ к родителю #50 | Наверх | Cообщить модератору

30. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –3 +/
Сообщение от _ (??), 22-Июн-19, 01:26 
Чего только ребе не придумает, чтобы его совсем напрочь! не забыли :)
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

36. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –2 +/
Сообщение от Аноним (36), 22-Июн-19, 10:30 
>Чего только не придумают, лижь бы на СИ-89 не писать

Ты ещё про K&R вспомни. Ну уж предложил бы C11 что-ли.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +21 +/
Сообщение от hfgsd (?), 21-Июн-19, 11:24 
Сначала делают динамическую типизацию, а затем начинают ее героически преодолевать по мере популяризации ЯП. Забавное явление.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +3 +/
Сообщение от Аноним (5), 21-Июн-19, 11:31 
взрослеют...
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +1 +/
Сообщение от Andrey Mitrofanov_N0 (??), 21-Июн-19, 12:11 
> Сначала делают динамическую типизацию, а затем начинают ее героически преодолевать по мере
> популяризации ЯП. Забавное явление.

Не, не так.

Сначала понапишут курсовичков про не-динамические типзации, потом, такие талантливые!, работать пойдут, по-на-раз-работают этих своих не-динамических и... опаньки -- #Успех.

Выкидываем это через стену:  гитхаб, новость на опенет, все дела.

Теперь нужно набирать на работу новых студентов -- и всё по кругу.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

8. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –3 +/
Сообщение от Аноним (8), 21-Июн-19, 13:42 
Динамическая типизация больше подходит для ООП языков - без неё они теряют в гибкости и обрастают костылями, в виде адаптеров и дженериков.

Например, есть у нас класс SomeMessage, протокол которого состоит из двух сообщений: int getIndex() и string getMessage() - и есть у нас функция bool storeMessage(IIndexedMessage message), где IIndexedMessage интерфейс, который описывает протокол состоящий из тех же двух сообщений: int getIndex() и string getMessage().

Класс SomeMessage не реализует интерфейс IIndexedMessage, из-за этого, несмотря на то, что он имеет необходимый протокол, его нельзя передать в функцию storeMessage.

Допустим, что интерфейс IIndexedMessage реализует два интерфейса: IIndexed, описывающий протокол из одного сообщения int getIndex(), и ITextMessage, описывающий протокол из одного сообщения string getMessage(). Класс SomeMessage реализует оба этих интерфейса по отдельности, но не реализует интерфейс IIndexedMessage. Т.е. его всё-равно нельзя передать в функцию storeMessage.

Второй пример - это паттерн "цепочка обязанностей", который часто используется вместе с декораторами и в композитах. В динамических языках он реализуется элементарно: если объект не может обработать пришедшее сообщение - ему будет отправлено сообщение doesNotUnderstand с неопознанными сообщением в виде аргумента. В обработчике doesNotUnderstand можно послать неопознанное сообщение дальше по иерархии.

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

Идеальным, был бы ООП язык, где поверх динамической типизации грамотно приделана хорошая статическая система типов, с runtime-проверками, Intersection Types, Union Types и строгой проверкой на null. До выхода Sorbet самым близким вариантом был TypeScript, но в нем нет runtime-проверок. И вот, похоже, в Ruby сделали нечто интересное.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

10. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –2 +/
Сообщение от Аноним (10), 21-Июн-19, 14:03 
c#
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

12. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (12), 21-Июн-19, 14:32 
> костылями, в виде [...] дженериков

Ну я даже не знаю, что тут сказать. Значит, нормальные алгоритмы вывода типов, ко-/контравариантность, и все наработки начиная с ML – так, костыли и насмарку?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

15. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (13), 21-Июн-19, 14:53 
>Динамическая типизация больше подходит для ООП языков - без неё они теряют в гибкости и обрастают костылями, в виде адаптеров и дженериков.

Вы так говорите, как будто для функциональных языков она не подходит.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

16. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (2), 21-Июн-19, 14:57 
> Класс SomeMessage не реализует интерфейс IIndexedMessage, из-за этого, несмотря на то, что он имеет необходимый протокол, его нельзя передать в функцию storeMessage

Пример надуманный. А даже если он и возникнет на практике, ничто не мешает сделать

class IndexedSomeMessage extends SomeMessage implements IIndexedMessage {
  /*тут ничего нет. Буквально ничего нет. Ну может конструктор, не делающий ничего, кроме super()*/
}

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

44. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Ordu (ok), 22-Июн-19, 17:30 
В некотором смысле, это уже динамическая типизация, потому что если мы работаем с SomeMessage в коде, то статически мы не знаем какого типа этот объект. Это не совсем-совсем динамическая типизация, потому что что-то о его типе мы знаем, в конце-концов SomeMessage -- это уже тип. Но и всё же, мы приходим к динамическому диспатчу, вероятно, ещё и к dynamic_cast. А dynamic_cast -- это уже стопроцентов динамическая типизация.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

17. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +1 +/
Сообщение от Аноним (2), 21-Июн-19, 15:46 
> несмотря на то, что он имеет необходимый протокол

Это предпосылка, взятая на веру. То, что методы имеют одинаковую сигнатуру, еще не говорит о том, что класс "по идее" реализует такой-то интерфейс. Часть требований к интерфейсу может быть оформлена не на ЯП, а в комментариях; к примеру, IIndexedMessage может иметь требование "getIndex должен возвращать исключительно положительные числа". А то, что SomeMessage никак не упоминает в себе IIndexedMessage, является индикатором того, что тебе нужно провести дополнительное исследование того, насколько успешным будет использование SomeMessage в качестве IIndexedMessage. Если бы этот implements был указан, тогда бы ты мог сказать, что автор SomeMessage действительно заявил работоспособность своего класса со всякими там storeMessage.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

19. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (19), 21-Июн-19, 16:14 
> Динамическая типизация больше подходит для ООП языков - без неё они теряют в гибкости и обрастают костылями, в виде адаптеров и дженериков.

Это если в них утиной типизации нет.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

20. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (20), 21-Июн-19, 16:49 
>Класс SomeMessage не реализует интерфейс IIndexedMessage, из-за этого, несмотря на то, что он имеет необходимый протокол, его нельзя передать в функцию storeMessage.

И правильно. "Реализовал интерфейс" = "взял на себя обязательство гарантировать соответствие реализации интерфейсу", "не реализовал интерфейс" = "каким образом можно гарантировать, что именно нужно поведение реализовано за похожими именами функций?".

>поверх динамической типизации грамотно приделана хорошая
>статическая система типов

Взаимоисключающие параграфы. Ты скажи: проверка типов где будет происходить - в рантайме или в компайлтайме?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

32. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (32), 22-Июн-19, 03:43 
Он же написал:
> хорошая статическая система типов, с runtime-проверками

:)

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

38. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от funny.falcon (?), 22-Июн-19, 11:18 
Посмотрите на Go: если объект реализует методы интерфейса, то он автоматически реализует интерфейс. И есть делегирование через "безымянные" поля.

Не сказать, что это идеал. Но вполне юзабельно и имеет практически ценность.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

14. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (13), 21-Июн-19, 14:44 
Для прототипа или небольшого проекта, разрабатываемого одним автором, динамическая типизация удобнее, для большого проекта с кучей разработчиков, которые к тому же с годами меняются, удобнее статическая
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

21. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +2 +/
Сообщение от Аноним (20), 21-Июн-19, 16:53 
Лол нет.

Динамическая типизация подходит для мелких скриптов, если проект выше, то в нем ВНЕЗАПНО появляются тесты на передаваемые типы, которые теперь ВНЕЗАПНО нужно писать вручную и которые теперь отстреливают только в рантайме (если их стриггерить). Это такие бешенные неудобство, что я не понимаю зачем вообще нужна динамическая типизация

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

18. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от user (??), 21-Июн-19, 16:02 
им платят за строчки тестов
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

4. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (4), 21-Июн-19, 11:27 
На руби еще активно пишут? Прошла волна и что-то все затихло.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от НяшМяш (ok), 21-Июн-19, 13:14 
Если этого не видно, не значит, что не пишут. Например, тот же гитхаб на рубях.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +2 +/
Сообщение от Аноним (4), 21-Июн-19, 13:47 
гитхаб создавался и писался когда руби был на подъеме, тогда все восхищались им и пророчили рельсам славу убийцы пхп
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

22. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –1 +/
Сообщение от Аноним (22), 21-Июн-19, 17:46 
а потом они переехали на пхп и все заработало гораздо быстрее и дешевле
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

25. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (25), 21-Июн-19, 22:16 
Он занял своё почётное место на свалке истории рядом с Perl. Но разумеется найдётся куча народу которая на нём активно пилит своё легаси, а кому-то это наверняка даже нравится.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

37. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (37), 22-Июн-19, 11:13 
>  Он занял своё почётное место на свалке истории рядом с Perl.

Пишете так, как будто есть какая-то вменяемая альтернатива Ruby. Уж явно не Go его заменит.

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

40. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (39), 22-Июн-19, 16:08 
> Пишете так, как будто есть какая-то вменяемая альтернатива Ruby.

Что в нем такого, что нельзя ничем заменить?

Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

47. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –1 +/
Сообщение от Аноним (37), 23-Июн-19, 08:20 
> Что в нем такого, что нельзя ничем заменить?

синтаксис

Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

11. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +2 +/
Сообщение от n1rdeks (ok), 21-Июн-19, 14:04 
Нет на Вас Haskell...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

41. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (39), 22-Июн-19, 16:09 
не все любят приседать со штангой... что мы дети малые? нам нужно деньги делать.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

23. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –1 +/
Сообщение от Аноним (23), 21-Июн-19, 19:47 
Хочу писать на Lisp, как он был в универе на языках программирования, так я его полюбил, жаль только мало слышно про него
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

26. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –1 +/
Сообщение от Аноним (25), 21-Июн-19, 22:17 
Это же бородатая шутка от ЯП, что вы хотели про неё нового услышать?
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

28. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +1 +/
Сообщение от Аноним (19), 21-Июн-19, 23:50 
Ставь себе GuixSD и наслаждайся.
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

34. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Andrey Mitrofanov_N0 (??), 22-Июн-19, 07:44 
> Ставь себе GuixSD и наслаждайся.
>GuixSD

Они мажорно изменили в версии 1.0 теперь
и пакадж-менеджер, и дистрибутив называют Guix.

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

35. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Canis Dirus Leidy (?), 22-Июн-19, 09:22 
>Хочу писать на Lisp,

Хочешь — купи себе(ц) https://common-lisp.net/downloads

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

42. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от Аноним (39), 22-Июн-19, 16:10 
> так я его полюбил, жаль только мало слышно про него

Теперь его любит кто-то другой, смирись.

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

27. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –2 +/
Сообщение от GentooBoy (ok), 21-Июн-19, 22:29 
Просто оставлю это здесь для тех кто все еще холиварит по поводу типизации:

Dynamically typed languages give you a lot of flexibility. Type changes do not need manual propagation through your program. It also gives you more mental flexibility, as you can think more in terms of transformations, operations, and algorithms. Flexibility lets you move faster, change things quickly, and iterate at a faster velocity. But it comes at a cost. It’s a lot easier to miss potential problems and these problems are generally very hard to debug. Plus these features generally comes with a performance penalty.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

43. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –1 +/
Сообщение от Аноним (39), 22-Июн-19, 16:13 
Никто не холиварит, цитатой ты доказал, что динамическая типизация для наколеночных, одноразовых поделий. Продакшен код - это тебе не олимипиадные задачки решать.
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

46. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +/
Сообщение от IB (?), 22-Июн-19, 18:50 
Scala/Scheme/F#/Ocaml/Haskel и более новомодные смотрят на тебя как

Они смеют говорить о трансформациях и алгоритмах @$%^&^$*$

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

31. "Открыт код Sorbet, системы статической проверки типов для Ru..."  –3 +/
Сообщение от Аноним (31), 22-Июн-19, 02:33 
Типизированный Ruby уже давно существует - называется Pascal.
Ребята изобрели велосипед, причем хуже оригинала.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

45. "Открыт код Sorbet, системы статической проверки типов для Ru..."  +1 +/
Сообщение от IB (?), 22-Июн-19, 18:47 
Вот это я понимаю извращения.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру