реклама
Бургер менюБургер меню

Зара Горенко – Мыслим на Си (страница 7)

18

На Reddit не принято хвастаться возрастом или учёными званиями. Здесь важен только код. Только идеи. Это меня устраивало – никто не узнает, что мне нет и одиннадцати.

Я села за клавиатуру. Открыла текстовый редактор. Мне нужно было написать пост. Объявление. Манифест. Но как?

Я знала несколько фраз из учебника английского: Hello. My name is… I am twelve years old. The cat is on the table . Грамматику я не понимала. Артикли казались бессмысленными. Времена глаголов – хаосом.

Но я знала Си. Я знала его синтаксис, его логику, его ритм.

И тогда я подумала: "А что если написать пост как код?"

Я набрала:

c// PhoeNIX: Hello, world.

// Goal: write program that think.

// Status: learning, experimenting.

// Question: who have ideas? Let's discuss.

// Return: knowledge++;

Грамматически это было ужасно. Write program that think вместо правильного write a program that thinks . Who have ideas вместо who has ideas . Но структура была правильной. Комментарии. Цель. Статус. Вопрос. Возврат.

Я нажала Submit .

Сердце билось так громко, что я слышала его в ушах.

Часть 1: Как я чиркнула спичкой

Через пять минут пришёл первый ответ:

Nice try, kid. But "thinking" is not a data type. You need to define what "think" means in computational terms.

Потом второй:

Are you talking about neural networks? Expert systems? Symbolic AI?

Третий:

This is stupid. Computers don't think. They execute instructions.

Четвёртый возразил третьему:

@user3 That's reductive. Turing test exists for a reason. If it behaves like thinking, maybe it IS thinking.

И началось.

Как я потом говорила: "Я чиркнула спичкой, а чему гореть – уже было". Мои оппоненты спорили друг с другом. Высказывали идеи одна безумнее другой. Дискутировали о философии сознания, о тесте Тьюринга, о китайской комнате Сёрла, о нейронных сетях и символьных системах.

А я сидела с английским словарём и переводила слова. Одно за другим. Neural – нейронный. Network – сеть. Symbolic – символьный. Execute – выполнять. Instruction – инструкция.

Часть 2: Программа для изучения языка

Но переводить каждое слово вручную было медленно. И тогда я подумала: "Я же программист. Почему бы не написать программу?"

Я скопировала все комментарии из треда в текстовый файл comments.txt. Открыла редактор. Написала простую программу на Си:

c#include <stdio.h>

#include <string.h>

#include <ctype.h>

#define MAX_WORDS 10000

#define MAX_WORD_LEN 50

typedef struct {

char word[MAX_WORD_LEN];

int count;

} WordFreq;

WordFreq words[MAX_WORDS];

int word_count = 0;

void to_lowercase(char *str) {

for (int i = 0; str[i]; i++) {

str[i] = tolower(str[i]);

}

}

int find_word(char *word) {

for (int i = 0; i < word_count; i++) {

if (strcmp(words[i].word, word) == 0) {

return i;

}

}

return -1;

}

void add_word(char *word) {

int index = find_word(word);

if (index != -1) {

words[index].count++;

} else {

strcpy(words[word_count].word, word);

words[word_count].count = 1;

word_count++;

}

}

int main() {

FILE *file = fopen("comments.txt", "r");