Что изучает компьютерная наука? Какие задачи решают разработчики внутреннего программного обеспечения? И как компании обрабатывают отчеты об ошибках ПО? Об этом рассказывает кандидат физико-математических наук Станислав Протасов.

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

Не существует идеального программного обеспечения. В любой программе бывают ошибки. Все они упаковываются в отчеты об ошибках, отправляются в компанию (к разработчику) на сервера, которые «заполнены» этими отчетами. Если программа используется большим количеством людей, то, скорее всего, ошибки будут возникать либо однотипные, либо одинаковые. Если реагировать на каждую из них, работа превратится в обслуживание индивидуальных клиентов. Необходимо разработать подход, как решить проблемы пользователей, не обращая внимания на каждую конкретную ошибку. В этом поможет искусственный интеллект — алгоритмы кластеризации.

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