#4 CS50 на русском 2016 — Память компьютера и файлы

Приветствую Вас, дорогие друзья!
Неделя 4 курса Гарвардского университета по основам программирования CS50 2016 года на русском языке. На Неделе 4 мы рассмотрим память компьютера, а именно — взаимодействие кода программы и памяти компьютера. И по обычаю начало Недели 4 сопровождается кратким обзором материала алгоритмов сортировки данных с Недели 3.

00:00:00 — Обзор Недели 3
00:03:24 — Строки это вранье
00:04:20 — compare0
00:06:34 — copy0
00:10:05 — noswap
00:15:49 — Память программы
00:17:35 — Стэк (Stack)
00:22:15 — Подробное рассмотрение get_string()
00:31:05 — Пред просмотр мультипликации об указателях
00:31:29 — Удаление тренировочных колес
00:32:05 — compare1
00:32:39 — char *
00:34:45 — strcmp
00:36:42 — copy1
00:37:02 — malloc
00:45:07 — Рассмотрение указателей
00:49:27 — swap
00:55:04 — Память компьютера и профессор Мэлэн
00:56:05 — Арифметика указателей
00:56:18 — Указатели
01:03:06 — Игра указателей с Бинки
01:06:26 — Утечки памяти
01:07:02 — Отладка программы с помощью Valgrind
01:07:30 — memory
01:14:42 — Хип (Heap)
01:16:01 — Типы переполнений
01:17:26 — Переполнение буфера
01:21:20 — Подробное рассмотрение Стэк (Stack)
01:26:53 — Увеличение
01:28:38 — Изображения
01:31:04 — JPEG
01:32:11 — Шестнадцатиричная система исчисления
01:37:10 — BMP
01:40:24 — struct
01:42:19 — structs0
01:45:00 — structs1
01:47:55 — CSV
01:48:43 — Улучшение

Строки STRING и память компьютера

Почему курс СS50 Гарвардского университета по основам программирования приобрел столь широкую огласку и популярность? Мне кажется, что секретной формулой успеха являются детские шаги, о которых мы впервые узнали в самом начале курса на Неделе 0 при рассмотрении языка Scratch. Ведь все большие дела делаются маленькими шагами, не так ли?

Сначала мы рассматривали строки string в качестве данных, которые нам может ввести пользователь для дальнейшей работы с ними. После этого на Неделе 2 мы осознали, что строк, как таковых, не существует, вместо них есть массивы символов, другими словами, последовательность символов друг за другом. Все эти символы объединенные в строку. Но как компьютеру найти окончание той или иной строки? Для этого существует обратный слэш 0 (\0), который четко разграничивает в памяти окончание той или иной строки. На Неделе 4 пришло время сделать еще один маленький шаг, который позволит пополнить копилку наших знаний своего рода магической информацией.

Оказывается, что программа работает не со значениями или символами, которые ввел пользователь, будь-то слово Hello, Zamyla, David или любое другое слово. Программа работает с адресом символа в памяти компьютера, то есть с адресом первого символа строки, с которым мы выполняем операции в памяти.

Почему мы тогда рассматривали строки string на предыдущих занятиях, если их не существует? Все очень просто. Это сделано преднамеренно, для того, чтобы двигаться от общего к частному и не запутаться в самом начале изучения программирования в вопросах самого низкого уровня. Такое поэтапное движение дает четкое представление того, что же находится «под капотом» и каким образом устроена память компьютера.

Понимание принципов работы памяти компьютера на самом низком уровне позволяет избежать довольно распространенных ошибок. А именно связанных с ситуацией, когда память компьютера может оказаться переполненной или могут произойти утечками памяти. Знание «узких мест» позволяет защитить память своего компьютера от несанкционированного доступа злоумышленников.

Что нужно для того, чтобы стать файлом?

На Неделе 4 мы немного отвлечемся от рассмотрения как работает память компьютера и затронем определение файлов на примере изображений с расширением JPEG, которые все Вы видели у себя в компьютере, фотоаппарате или телефоне. Оказывается, что файл это все тот же набор нулей и единиц, однако компьютеру нужно как-то понимать отличие между изображениями и текстовыми документами Microsot Word или презентациями Power Point или другими файлами. Поэтому люди пришли к соглашению, что определенный набор цифр десятичной системы или двоичной системы, или шестнадцатиричной системы исчисления будет означать тот или другой тип файла. Так, например, изображения JPEG содержат цифры FF D8 FF в шестнадцатиричной системе исчисления, которые дают компьютеру понимание того, что это действительно изображение JPEG с большой долей вероятности. Давайте посмотрим, как будут выглядеть комбинации символов, представляющих изображение JPEG в различных системах исчисления:

  1. Десятичная — decimal: 255, 216, 255.
  2. Двоичная — binary: 1111 1111, 1101 1000, 1111 1111.
  3. Шестнадцатиричная — hexadecimal: FF D8 FF.

Кстати, помните ли вы, как преобразовать число из десятичной системы исчисления в двоичную?

По итогу, хочется отметить, что четвертая Неделя курса CS50 2016 на русском является наиболее интересной неделей с точки зрения понимания вещей, которые происходят «под капотом» в памяти компьютера. Надеюсь, что Неделя 4 не оставит Вас равнодушными и пополнит Вашу копилку знаний, новым и интересным материалом.

Приятного просмотра, дорогие друзья!

 

 

 

Поделиться:

Оцените запись:
Notice: Undefined variable: thumbnail in /home/level80/level-80.com/www/wp-content/plugins/wp-postratings/wp-postratings.php on line 1176
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*Комментарий - обязательное поле для ввода
* Имя - обязательное поле для ввода
* Email - обязательное поле для ввода