В Идрисе один из базовых типов - String, внутри представленный как null-terminated C string. Знаете, как узнать длину такой строки? Сконвертить в список Char'ов, а потом посчитать его длину. А все потому, что хоть в рантайме идриса и есть нормальная функция вычисления длины (по-хорошему ее вообще стоило бы хранить, а не вычислять), в стандартную библиотеку ее забыли экспортнуть. У них там в академии своя атмосфера.
Page Summary
Style Credit
- Style: Neutral Good for Practicality by
Expand Cut Tags
No cut tags
no subject
Date: 2013-01-24 05:25 pm (UTC)Ваистену Так, Ибо!
no subject
Date: 2013-01-24 06:47 pm (UTC)no subject
Date: 2013-01-25 02:34 am (UTC)Я так понимаю, автор просто делал как ему проще, об эффективности не слишком заботился.
no subject
Date: 2013-01-24 06:48 pm (UTC)Я все понимаю, Холмс, но КАК?
Это же, мать его, всемирно известное, самое дорогое айтишное решение всех времен и народов.
За такое представление строки в любом современном языке у автора идеи надо вырезать яйца без наркоза.
no subject
Date: 2013-01-24 07:41 pm (UTC)no subject
Date: 2013-01-24 08:03 pm (UTC)А на длину потратить 1, 2, 4 или 8 байт?
Если бы тогда приняли решение хранить длину, то сейчас бы жили в мире, где поля ввода в програм ограничены 256-ю символами, и в JavaScript строки тоже были бы не длинее 256 символов. Так же как целочисленные числа по традиции ограничены 52-ю битами.
Возможно, что нам повезло с эффектом второго порядка - решение с null terminated было настолько ужасно, что слава богу сейчас не удержалось, а чуть менее ужасное с хранением длины в первом байте не завоевало мир.
no subject
Date: 2013-01-24 08:20 pm (UTC)И баснословно дорогим оно оказалось только в позднейшем контексте доминирования си в системном программировании.
Но вот авторам идриса все это было прекрасно известно и понять их решение невозможно.
"Возможно, что нам повезло с эффектом второго порядка - решение с null terminated было настолько ужасно, что слава богу сейчас не удержалось, а чуть менее ужасное с хранением длины в первом байте не завоевало мир."
Не удержалось? Си все еще на коне, самые распространенные ОС используют именно такие строки. Они еще нас переживут.
А хранение длины рулит не потому сколько байт, а потому что хранение. Да и с конвертацией проблем сущий мизер, ибо из строки с хранимой длиной длина отдельно и массив символов отдельно получаются за О(1).
no subject
Date: 2013-01-26 06:13 am (UTC)no subject
Date: 2013-01-25 02:39 am (UTC)Плюс, возможно, повлияло то, что компиляция идет через генерацию Си и вывов gcc.
no subject
Date: 2013-01-25 10:50 am (UTC)no subject
Date: 2013-01-25 10:58 am (UTC)no subject
Date: 2013-01-24 11:14 pm (UTC)no subject
Date: 2013-01-25 05:48 am (UTC)no subject
Date: 2013-01-25 06:33 am (UTC)no subject
Date: 2013-01-25 06:54 am (UTC)no subject
Date: 2013-01-25 06:58 am (UTC)no subject
Date: 2013-01-25 07:27 am (UTC)no subject
Date: 2013-01-25 07:30 am (UTC)no subject
Date: 2013-01-25 07:56 am (UTC)