Поэтому я решил сделать C++ для второй части. Меня всегда немного интересовал C++, потому что он представляет собой техническую сторону программирования, которую вы просто не получите из чего-то вроде Ruby или Python. Я изучил C++, когда изучал компьютерные науки в колледже, и я продолжаю возвращаться к нему, чтобы бросить себе вызов.

Вчерашний список Ruby Linked занял 28 минут. Сегодня версия C++ заняла около часа. Технически я работал над ним около полутора часов и запускал его дважды. В основном это было из-за того, что я просто забыл, как использовать C++, но это говорит о том, что его немного сложнее использовать в качестве языка и настроить для проекта.

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

Внимание к деталям является ключевым в C++, потому что сообщения об ошибках ужасны. Посмотрите видео ниже, и вы можете мельком увидеть это. Я потратил 3 часа, пытаясь понять, почему я однажды получил ошибку segfault, и причина была в том, что когда я писал конструктор своего класса, я забыл инициализировать некоторую переменную значением NULL, и когда я это сделал вещи, основанные на том, было ли это NULL или нет, начали происходить странные вещи. Когда переменные объявлены, но не инициализированы каким-либо значением, им выделяется место, но пространство не очищается и ничем не заполняется. Поэтому, когда приходит время использовать переменную и читать ее из памяти, вы получаете неопределенное значение. Не undefined в JavaScript, а это означает, что он буквально не может быть определен, потому что нет способа предсказать, каким он будет — вы, по сути, читаете из случайного места в памяти. Это называется неопределенным поведением и является серьезной причиной, по которой люди считают C++ «опасным языком».

Как говорит этот парень:

Неопределенное поведение бывает трех видов:

1) Он ударит вашу собаку.

2) Он переформатирует ваш жесткий диск.

3) Работает без проблем.

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

Вы можете найти код, который я написал здесь.

Вы можете найти таймлапс того, как я пишу код здесь.

Далее: Питон.