# Code Completion. Часть 2: зачем тут машинное обучение?

DevFeed: [Code Completion. Часть 2: зачем тут машинное обучение?](<https://devfeed.tech/articles/code-completion-2-23929.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/JetBrains/articles/572864/>)

Author: p0b0rchy (JetBrains)

Published: 2021-08-17T09:45:16Z

Content type: tutorial

Language: ru

Sources: [JetBrains RU](<https://devfeed.tech/sources/jetbrains-ru.md>)

Topics: [code-completion](<https://devfeed.tech/topics/code-completion.md>), [машинное обучение](<https://devfeed.tech/topics/tag-055aee430837.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [code-completion](<https://devfeed.tech/tags/code-completion.md>), [ide](<https://devfeed.tech/tags/ide.md>), [tag-055aee430837](<https://devfeed.tech/tags/tag-055aee430837.md>), [tag-baed6d151ab4](<https://devfeed.tech/tags/tag-baed6d151ab4.md>)

## AI overview

The second part of a series explains why machine learning is used in code completion. It examines conflicts among heuristic rules, including prefix and CamelCase matching, and discusses ranking suggestions by correctness and proximity to the edited code.

## Source excerpt

В первой части мы сформулировали, из каких компонентов состоит система автодополнения, обсудили способы ее использования и требования к качеству. Теперь давайте разберемся, зачем там нужно машинное обучение. Казалось бы, страшно выбрасывать работающий код и заменять его машиннообученным бинарником, который жрет память, может замедлить работу IDE, да еще не вдруг и отладишь его, если что-то пошло не так. В нашем случае "работающий код" -- это эвристики, жесткие правила. Они отлично работают, пока их не очень много и они не конфликтуют между собой. Давайте рассмотрим такие правила подробнее и разберемся, откуда берутся конфликты. Как на самом деле работают подсказки