Skip to content

Instantly share code, notes, and snippets.

@bergusman
Last active July 12, 2021 06:08
Show Gist options
  • Save bergusman/3fddf3f80af84a40f59f69c4342b645e to your computer and use it in GitHub Desktop.
Save bergusman/3fddf3f80af84a40f59f69c4342b645e to your computer and use it in GitHub Desktop.
О строках

В контексте языков программирования и их стандартных библиотек разработчики очень часто не задумываются и даже не представляют насколько вопросы о строках и датах не просты, все привыкли делать let str = "" и на этом повседневные потребности исчерпываются, но самый банальный вопрос что такое длинна строки в языке программирования может ввести в ступор. Пример длинны строки в разных языках программирования:

print("😎".count)             // Swift: 1
print(NSString("😎").length)  // Swift with NSString: 2
console.log('😎'.length)      // JavaScript: 2
fmt.Println(len("😎"))        // Go: 4

40-60 лет назад где-нибудь для американцев для строки было достаточно сделать однобайтный массив с символами из ASCII. Сейчас это ой как не достаточно, по этому каждый язык программирования решает эту проблему по своему.

Простая строка текста скрывает за собой такие вопросы как Unicode и все его фишки в виде символов состоящих из нескольких кодов, представление строк в бинарном виде ибо символов больше чем два байта по этому появляются такие вещи как UTF-8, UTF-16 и UTF-32, так же мы еще не говорим о рендеринге строк ибо тут так же все не просто, достаточно вспомнить про лигатуры. Незная этих деталей не получится максимально точно понять что такое строка.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment