9. CS50 на русском: Лекция #9 [Гарвард, Основы программирования, осень 2015 год]

preview_player
Показать описание

Гарвардский курс, основы программирования CS50, лекция 9: обман с помощью программирования, рекурсия, указатели и отладка приложений

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

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

Кроме этого:

• Дэвид подробнее расскажет о рекурсии и сравнит циклический и рекурсивный алгоритмы для одной и той же задачи.

• Научит, как менять переменные местами с помощью дополнительного параметра, без него, а также с применением загадочного оператора XOR.

• Продемонстрирует, как нужно отлаживать программку на примере CS50 IDE. Отладка — полезна, она действительно ускоряет процессы разработки в разы, так что это важное умение и в каждой среде разработки его следует усвоить чтобы повысить собственную продуктивность.

• Вы получите ещё немного полезной информации о стеке памяти и локальных переменных.

• Указатели или как в Си напрямую общаться с памятью! Вот мы дошли и до них. Сила и слабость Си, мощнейший инструмент, который в руках новичка или злоумышленника может превратиться в ядерную бомбу.
Рекомендации по теме
Комментарии
Автор

Рассинхрон звука...
Решение
1.включите вкладку с видео со звуком с 11:15
2.включите вкладку с видео без звука с 12:47
3.запускаем одновременно
4.profit 🙂

xNAVICATx
Автор

Этот преподаватель просто красавчик!) Мало того что так грамотно и довольно доходчиво объясняет, так еще и после уроков в пляс пускается!))) Мечта!)))

MarvL_
Автор

Надеюсь что в последнем уроке мы все- такие найдем Майка Смита

shonshishka
Автор

Обожаю этого чувака. Спасибо за переводы.

plqzmjx
Автор

Тайм-коды: рекурсия, обмен 2-х переменных значениями, отладка, стек памяти, локальные переменные, указатели
0:00 заставка
3:06 электронная система у volkswagen
7:33 вопрос доверия к программам
8:33 1984г. Премия Тьюринга. Кен Томпсон презентация о безопасности программ
9:52 даже если есть доступ к исходному коду вредоносного компилятора, это не поможет
11:03 новая техника программирования с алгоритмом сортировки слиянием
11:17 псевдокод для поиска 12:47 (!видео отстаёт от звука на полторы минуты)
11:23 оператор go to перейти на
12:01 цикличность Цикл
13:11 рекурсия для цикличности. Вызывает сам себя
14:47 include CS50.h библиотека
15:17 прототип функции int sigma(int); 16:07
15:59 что делает функция main
16:12 команда присвоения переменной результата выполнения функции
16:22 входящий аргумент функции(n) типа int. Что делает функция sigma()
17:26 без рекурсии как реализуется sum
18:17 sum с рекурсией
18:49 отсеивание некорректных значений и стоп рекурсии
20:14 код int sigma (int m) в коде которой сначала считается sigma(m-1) - рекурсия
22:32 рекурсия в google: do a barell roll
24:34 обмен 2-х переменных значениями через 3-ю временную переменную (tmp) 27:07
27:48 без временной переменной с помощью 3-х XOR (новый оператор ^) исключающее или. Для 8-ми битных чисел 29:27
29:45 пример без перестановки noswap.c 31:25
31:49 локальные переменные .в примере х = 1, у = 2, а = 2, в = 1
32:52 в редакторе (CS50 IDE) отладчик (debugger 34:24 ) выполнение программ пошагово. Можно увидеть значение локальных переменных. Точки прерывания break point
33:51 стек вызовов Call Stack перечень функций, вызванных на данный момент в обратном хронологическом порядке
34:12 break point клик слева от номера строки - красная точка
34:48 приостановлено выполнение до красной точки до желтой строки (не включительно) (на первой строке функции)
35:28 кнопки отладки: запуск (возобновить)
35:48 пояснительные подсказки: шаг с обходом step Over 37:20
36:07 шаг с заходом step into 37:41 и жёлтая строка выполняется
37:13 если переменной не присвоено значение, то там может оказаться что угодно
37:52 int 32 бита
38:29 стек вызовов состоит из 2-х слоёв 40:05
38:42 передавая функции аргумент передаётся только копия аргументов (т.е.у функции теперь свои такие-же значения)
40:10 stack стек - блок памяти (оперативной) для доступа к функциям, которые необходимо вызвать (снизу вверх) 42:36
42:37 программа сравнение compare0 44:10
44:54 указатель. GetString() возвращает не string слово или строку, не m o m \0, а адрес строки (блока памяти)
48:25 указатель (адрес). Символ со звёздочкой char*

iritaka
Автор

Спасибо большое за то что взялись переводить данный курс!

StasyanXplay
Автор

Огромное всем спасибо! Шикарный материал и подача!

fdeifdv
Автор

У меня одного рассинхрон звука с видео? Так очень трудно понять, что происходит

nikolaikorotaev
Автор

Господа, не минусуйте, в лекции есть фрагменты рекламы VW и из-за этого ролик не показывают. Сейчас мы его вырежем и все будет хорошо.

JavaRushVideo
Автор

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

xgoctic
Автор

Лекции переведены качественно, и за это огромное спасибо! Но будет ли перевод Доп. материалов и задачника?)

dantesd.
Автор

Так цікаво спостерігати, як з кожним відео, стає все менше і менше людей, які додивлюються курс до кінця, а не зупиняться на 1-2 відео 😅

tweegwl
Автор

Почему звук и видео рассинхронизированы?

vi
Автор

Случайно благодаря этому видео разобрался с дебагером в Java :-D гениально!

Shkip_stream
Автор

Мне очень начальное кратко музыка нравится каждый раз ставлю класс

dilik
Автор

что со звуком после 12 минуты?! звук рекламы обрезали, а видео нет, видео сильно не догоняет звук, смотреть неинформативно, невозможно.

pkqwckl
Автор

На 11ой минуте звук и видео перестаю совпадать. Какая то не понятная склейка. Я так понимаю из-за дурацкого видеоряда с мини Вейдером.

hxewghu
Автор

Есть ли к этой лекции и к дальнейшим лекциям перевод заданий...?

jyhyspe
Автор

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

dmitrys
Автор

А есть где-нибудь речь Кена Томпсона 1984 года "Reflections on trusting trust" с переводом? Не могу найти даже на английском

himmeldorf