(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Проекты | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация (English)

Коды спящего разума

Все совпадения с реальными людьми и событиями являются случайными.

Ранним морозным утром 13 января 2009 года техно-патриархальную тишину заснеженного Принстона разорвал нечеловеческий, пронзающий душу крик. Страшный звук, содержащий все частоты слышимого, инфра- и ультразвукового диапазонов, пролетел по улицам Вильсона и Насау, стряхнул снег с готической крыши университетской часовни. Кричавший, немолодой белый американец с окладистой бородой, метался во сне, безуспешно пытаясь очнуться от леденящего сердце кошмара. Он не знал, что его крик, подхваченный западным ветром, пронесся через пять часовых поясов и был услышан в маленьком одноэтажном городе Орегона, недалеко от канадской границы. Еще молодой, довольно полный жизнерадостный человек (кажется финн или швед по происхождению) задрожал, угадав видение кричавшего. Маленький пингвинчик с большими желтыми лапами, который сидел на его плече, сочувственно тронул крылом его волосы. Человек встряхнул головой, но видение не исчезло. Ему оставалось только утонуть в пучине ужаса и лишь пингвин оставался последней нитью связи с реальностью.

Этими двумя были Бриан Керриган и Линукс Трувольд. Им виделось совершенно отчетливо, что один из них изобрел язык Це, и теперь они преподают его в комнате с огромной зеленой доской, розовыми стенами и длинными, расставленными амфитеатром партами. А студенты на незнакомом языке говорят им... Вот некоторые фрагменты этого кошмара.

Сначала несколько диалогов

Преподаватель: Что делает fopen?
Студент: Открывает файл и читает его.

Преподаватель: Какое значение возвращает fopen?
Студент: Ноль.
Преподаватель: (с надеждой) В каком случае?
Студент: ??? Ну, открывает файл и возвращает.
Преподаватель: (подсказывает) А если файл не откроется?
Студент: Не может быть!

Преподаватель: Какое значение возвращает fopen?
Студент: В случае успеха ноль, а в случае ошибки NULL.

Преподаватель: Что такое agrc?
Студент: Это параметры.
Преподаватель: Какие?
Студент: Ну которые там.

Преподаватель: Что делает команда tr?
Студент: Она здесь буквы переводит в один регистр.
Преподаватель: Это, видимо, в ВАШЕМ сценарии, а вообще что она делает?
Студент: ~> man tr

Тe же через пять минут

Студент: Она меняет символы.
Преподаватель: Удалите из файла все табуляции.
Студент: ~> man tr

Те же через неделю.

Студент: Вы просили удалить из файла табуляции.
Преподаватель: (заинтересованно) Ну и?
Студент открывает файл c именем qqqq, состоящий из четырех сплошных строк. Добавляет в него пробелы.
Преподаватель: Речь шла о табуляциях.
Студент: Да, да. (добавляет табуляции)

~> cat qqqq|tr -d '\t'
Смотрит на оставшиеся пробелы.
Студент: (грустно) Да, не получилось.

Последняя пересдача лабораторных за день до переэкзаменовки в последний день сессии.

Преподаватель: Что будете сдавать?
Студент: Все программы. Вот первая.
Преподаватель: Запустите ее.

Студент открывает emacs. Исправляет makefile, транслирует программу.

Преподаватель: (про себя) Это можно было сделать заранее.
Студент: А Вы не помните какими клавишами запускается gdb?
Преподаватель: Нет, не помню.
Студент: Я тоже. Я посмотрю в интернете?
Преподаватель: Запустите программу из командной строки.
Студент: Это из Linux-a. (Выход из emacs)
Преподаватель: Да-да.
Студент: ~>.\first.c
Linux: bash: .first.c: command not found
Студент: (после некоторого молчания) ~>./first.c
Linux: bash: ./first.c: access denied
Студент: Я все таки пойду посмотрю и через десять минут вернусь.
Преподаватель: Может не стоит? Могут возникнуть другие вопросы.
Студент: Я всегда знаю где это можно посмотреть.

Те же через полчаса.

Студент: ~>./first
Linux открывает stdin. Студент набирает несколько слов через пробел.
Студент: А как закончить ввод?
Преподаватель: Вам виднее. Это же Ваша программа. Как у Вас это сделано?
Студент:
Linux: ~>
Студент: ~>./first
Linux открывает stdin. Студент набирает несколько слов через пробел.
Студент: Нет, ну вот как сказать ему, что этот символ последний?
Преподаватель: Это зависит от того, какой символ Вашей программой трактуется как последний.

Студент уходит. Видимо ему снова нужно вспомнить где это можно посмотреть.

А теперь несколько цитат

"Чтобы проверить правильность работы программы, необходимо чтобы программа прошла через транслятор."
Мечты-мечты...

"По-другому то, что программист пишет в текстовом редакторе называется исходный код. Как правило, исходный код имеет расширение *.c"
С другой стороны другие языки действительно ни к чему!

"Но нередко программист может допускать ошибки."

"Вид ошибок: Ошибки времени выполнения."
Видимо заданий студентами.

"Семантические ошибки ... трудно изменить."
А уж исправить... Лучше не пробовать.

"Отладчик помогает автоматизировать процесс трансляции."

"Логические выражения это ">" "<" "+" "-" "*" "/"."

"Форматный вывод обеспечивает вывод форматированной информации."
Спасибо, профессор Амбридж, за Вашу содержательную речь.

"Обычно рекурсию используют ... когда без рекурсии алгоритм не реализовать."
Алгоритм назовем?

"Язык С создавался как многофункциональный, поэтому функция есть его неотъемлемая часть и структура."

"Тип данных последовательность (массив)."

"В любом языке программирования более или менее высокого уровня..."
Литературно.

"В написании программы может использоваться обращение к файлу по его имени как для извлечения его содержимого так и для получения его адреса.
Пример: *File получает содержимое файла с именем "File"."
Действительно, чего возиться.

"Существуют разные операторы ветвления."

"Данные называются переменными."

"Командная строка представляет собой массив символов."
И возразить-то нечего.

"Тестирование призвано указать на наличие или на отсутствие ошибок."
На свалку старые теории! Молодежь берет программирование в свои руки! Даешь программы без ошибок! Долой Дейкстру и Ван Тассела!

"Программирование на языке С это трудоемкий процесс разработки программного обеспечения."

"scanf(x)"
В этом эпизоде Бриан кричит особенно громко в ультразвуковом диапазоне

"if - логическое выражение, подразумевающее "если"."
Ну хоть английский сдаст

"

#include
int x;
main()
{
	scanF('%5/n', x);
	printF('%d/n', x);
}
return 0.
"
Рука тянется к крупнокалиберному пулемету.
Пояснение: Теоретически вышеприведенный фрагмент должен считывать пятеричное число и выводить соответствующее ему десятичное.

"Алгоритм может делиться на несколько путей."

"

сhar str[MAXLEN];
int len;

................

scanf("%s\n", str);
len=strlen(str);
str[len+1]='\0';
"
Для знатоков

P.S. Если Вы не поняли юмора, перечитайте конспект.