Зара Горенко – Мыслим на Си (страница 7)
На 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");