Laurel и Hardy в попытке написать
программу на C
Автор: Stephen Bint
Перевод: Юрий Прушинский
... участвуют любимцы публики Стэн Лаурель (Stan Laurel) и Оливер Харди (Oliver Hardy).
(Официальный сайт L&H ) (UK tribute page)
[Stan Laurel и Oliver Hardy -- английские комики. Начинали сниматься ещё во времена "Великого Немого", в 1917 г. Прим.ред.]Данная статья является послесловием автора к предыдущей январской публикации Мечты об идеальном текстовом редакторе и трём февральским отзывам на неё в Mailbag letters .
Олли сидит за монитором. Заходит Стэн, держа в руках книжку.
Олли: Ты где был?!
Стэн: Да вот, сходил в книжный магазин купить книгу, про которую ты говорил.
Олли: Тебя только за смертью посылать! Нам же надо к завтрашнему утру закончить этот CGI-скрипт! Покажи, что хоть купил-то?
Стэн показывает книгу Олли.
Олли: "Введение в Программирование на C". Это ещё что такое?
Стэн: Это введение в программирование на C, Олли.
Олли невозмутимо смотрит в камеру.
Олли: Сам вижу, не дурак! Только я помнится говорил тебе, что мы пишем скрипт на Perl'е.
Стэн: Но мистер Бинт сказал...
Олли: мистер Бинт?
Стэн: Ну, продавец в книжном магазине, мистер Бинт.
Олли: [Нетерпеливо] И что же сказал этот твой "мистер Бинт"?
Стэн: Он сказал, что книги о Perl у них закончились, но у него был целый стеллаж книг по С. Сказал, что мне ещё повезло.
Олли: Это ещё почему?
Стэн: Он сказал, что для CGI лучше всего использовать C, потому что C - это профессиональный язык программирования, а Perl просто игрушка. Perl просто какой-то продвинутый скриптовый язык и всё.
Олли: Да? Прямо так и сказал?
Стэн: [Кивая] Мистер Бинт сказал, что изначально изучать С сложнее, но на практике он не такой обширный, потому что в С мало правил. Говорит, что Perl сам делает практически всё за тебя, и поэтому для того чтобы понять работу программы, нужно в каждом случае изучать что же именно он делает. И поэтому книги по С намного тоньше книг по Perl. Сказал, что книги по Perl такие толстенные, что их уместилось всего четыре штуки на полке, поэтому и распродал их так быстро. Причем книги бывают настолько толстыми, что даже у грузовиков при их перевозке шины лопаются и книги долго везут.
Олли: Что, правда что ли?!
Стэн: [Кивая] Так сказал мистер Бинт. Он сказал что в Perl такой непонятный синтаксис, что часто трудно правильно определить интерфейсы, что приводит к всеобщей расхлябанности.
Олли: А что ещё он сказал?
Стэн: Сказал ещё, что С часто выставляют как полным опасностей по сравнению с Perl, но, фактически, в Perl просто нет нескольких багов из С, но сама "нечитабельность" Perl это ещё больший баг. И вообще, gcc выдаёт вполне нормальные сообщения при компиляции о синтаксических ошибках, и есть много программ для проверки программ на утечку памяти или другие ошибки.
Олли: Мммммф. Мистер Бинт небось упомянул тебе про Lint?
Стэн: Да.
Олли смотрит нетерпеливо на камеру, а затем на Стэна.
Олли: Ну, что ж, полагаю нам ничего не остаётся, как писать наш скрипт на "C".... "мистер Бинт". Ммммфф!
Олли склоняется над клавиатурой, готовясь набирать код.
Олли: Oкей, ты читай мне книгу вслух, а я буду писать программу.
while( Olli_waits ) { Stan_looks_at_book(); Stan_looks_at_Olli(); Stan_looks_panic_stricken(); if( Olli_looks_around() ) Olli_waits = false; } ( данный код символизирует заминку в диалоге двух друзей; без комментариев - прим.перев. )
Олли: Ну, и что ты теперь на это скажешь, Стэнли?
Стэн: [Рыдая] Прости Олли... [всхлипывание]... Я думаю что мы не сможем начать прямо сейчас... [шмыгая носом]...Я думаю, что нам надо сначала прочесть книгу и выучить язык...
Олли: Ладн, может прекратишь ныть? Давай-ка посмотрим, насколько его будет трудно изучить? Нам ведь надо всего лишь выучить язык и затем написать программу.
Олли оборачивается к Стэну.
Олли: Oкей, скажи-ка мне, что нам надо знать о С перед тем как начинать?
Стэн: Ну, если судить по Оглавлению, то..... типы переменных, типы, определяемые пользователем, статические переменные, инициализация или присваивание, константы, операторы, бинарные операции, унарные операции, арифметические операции, логические операции, приоритет операций: if, for, switch, while, continue, break, массивы...
Олли невесело глядит в камеру.
Стэн: многомерные массивы, указатели, арифметические указатели, указатели функций, объявление и определение функций, предварительные директивы и макросы, форматы printf, автоматическая и распределяемая память, аргументы командной строки, рекурсия...
Олли снимает с головы Стэна кепку, шлёпает его ковриком от мыши (двумя сторонами) и аккуратно надевает кепку обратно. Стэн перестаёт читать.
Олли: Что ж, поздравляю, Стэнли. Ты втянул меня в очередную передрягу!
while( camera_is_running() ) Stan_blubbers(); ( без комментариев - прим.перев. )
Конец.
Стивен (Stephen) простой бездомный Англичанин, живёт в
палатке в лесу. Питается из консервных банок и курит окурки,
найденные на дороге. Хотя он работал какое-то время программистом
на С, но предпочитает называть себя "проницательным
любителем".
Copyright (c) 2003, Stephen Bint.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 89 of Linux Gazette, April
2003