Истории с тегом: образование

Всего историй: 725

5473

Верховный Некромант и знамёна поиска

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

Захотел лич квадрат магический найти. В принципе, он и сам бы справился, но Верховный Некромант сказал, что процесс надо распараллелить. Тогда лич призвал скелетов. Каждый призванный скелет отправлял личу почтовым голубем присягу о верности и готовности приказам следовать. Призвал лич нескольких скелетов и решил, что этого достаточно будет. Тогда поднял он знамя поиска и разослал всем скелетам почтовых голубей с заданиями. И начал каждый скелет поиск квадрата магического. Скелет ищет-ищет квадрат да на знамя поглядывает — надо ли искать ещё? А как только найдёт — знамя поиска опускает и бежит к своему господину ответ докладывать. Так и ищут квадраты: стоит на поле памятном лич, флаг подле него развевается, да скелеты вокруг толпятся, приказов ждут. Как только флаг поднимется да голуби полетят, так сразу скелеты за поиск и принимаются.

Некоторые вопросы некромантии.

В:: Говорят, что в методических указаниях Верховного Некроманта есть ошибка.

О:: Да. Верховный Некромант считал, что письмо можно отправить почтовым голубем. Но почтовый голубь-скелет летает плохо (попробуй полетай без перьев), поэтому может отнести только короткую записку, не больше трёх слов.

В:: А чем плохо относить письма лично?

О:: В задании Верховного Некроманта написано: распараллелить. Нескольких голубей можно отправить одновременно, а вот лично разносить письма придётся от одного скелета к другому, то есть последовательно.

В:: Как почтовый голубь знает, куда лететь?

О:: Голубю говорят адрес. Свой адрес лич сообщает скелету в заклинании призыва, потом этот адрес скелет передаёт голубю. А адреса скелетов лич узнаёт из их присяг о верности и готовности и тоже говорит их голубям.

В:: А в методических указаниях было написано по-другому.

О:: Ага, в методических указаниях предлагалось, чтобы скелет сам искал лича. Представьте картину: бегает скелет по полю памятному и пристаёт ко всем встречным деревьям, зайцам и другим скелетам с вопросом: «Вы лич или не лич?» — и так, пока лича не найдёт.

В:: Зачем нужен флаг поиска?

О:: Скелет не просто так работает, он зарплату процессорной маной берет. Поэтому, когда он не нужен, его надо остановить, а то и вовсе развеять по ветру. Когда скелет занят, он на почтовых голубей внимания не обращает. Можно, конечно, заставить обращать внимание, но мне больше понравилось обращать внимание скелета на флаг. Быстрее это: бросил взгляд, и всё тут. А с голубем надо выбрать нужного, потом записку с лапки снять, прочитать, да ещё и голубя вернуть.

В:: Что это вообще такое?

О:: Лич — главный процесс,

скелет — вызванные процессы,

Верховный Некромант — преподаватель IT %PrepodName%,

призыв скелетов — команда ShellExecute,

почтовый голубь — команда PostMessage,

лично принасти — команда SendMessage,

записка — произвольное сообщение Windows,

письмо — сообщение Windows WM_COPYDATA,

флаг поиска — событие синхронизации (еvent),

поиск лича — команда FindWindow,

поле памятное — оперативная память,

процессорная мана — процессорное время.

5460

Не знаю пароль, но вижу ориентир

Попросили помочь с программой по одному околокомпьютерному предмету. Как всегда, программа уже кем-то сдавалась, «там уже всё работает, ты только подправь чуток, чтобы выглядело по-другому».

В двух словах о самой задаче: необходимо рассчитать матрицу значений, которая затем ломаным контуром делится на две части, имеющие некий экономический смысл. В зависимости от того, в какой из частей находится элемент, делается вывод.

Открываю проект, вижу привычную уже картину: полное отсутствие форматирования, однобуквенные переменные и имена компонентов по умолчанию, комментариев нигде нет. Благо алгоритм самой задачи нехитрый, так что разобраться, где в этом коде что, было не шибко сложно. Форматирую, правлю — и в самом конце программы нахожу настоящий шедевр.

Рассчитанные значения выводились в таблицу на форме, при этом ячейки прямо на ходу раскрашивались в зависимости от того, в какую из двух частей матрицы они попали. Думаете, красоты ради раскрашивались? Вот и я так думал, пока в конце не увидел это:

a := Canvas.Pixels[n-10,k-10];

if TColor(a) = clRed then begin otvet := … end else otvet := …

Окончательное решение программа принимала на основе цвета ячейки таблицы! Ей-богу, я окосел. Объявить массив и занести в него номера ячеек, образующих контур, наверное, слишком скучным показалось — лучше потыкать в пиксели на форме. Особенно весело было нажать на кнопку «Рассчитать», потом на секунду свернуть окно программы и наблюдать девственно чистую белую таблицу, о перерисовке содержимого которой, разумеется, никто не позаботился. Разумеется, сделать вывод после этого программа уже не могла.

Я понимаю, человек был далёк от программирования и писал только чтобы сдать лабу, но такого «изобретательного» подхода, признаться, ранее я не встречал никогда.

5422

Офис в каждом окне

Работаю в школе лаборантом информатики. Выдать буки учителям, подключить проектор, записать всё в тетрадочку — дело нехитрое. В штате школы числятся и два учителя информатики, которые, собственно, учат детей уму-разуму. Работают эти милые дамы строго по учебнику, и если картинка на странице изображает Офис 2003, а на машинах в классе стоит 2007-й, впадают в ступор и бегут ко мне с ужасом в глазах и жаждой помощи.

Сегодня одна из этих милых училок с утра примчалась ко мне с воплем, что ей надо десятому классу рассказывать, как работает PowerPoint, а найти она его не может, и я немедленно должна что-то с этим сделать. Зная точно, что офисный пакет стоит на месте, спрашиваю бедолагу, где ж она ищет програмку-то? «Как где?» — испепеляюще глядит она на меня. «Пуск — Программы — Стандартные!»

5417

Блок-схема и лист-программа

Не понимаю я преподавателей со встроенным в голову компилятором, хоть головой о стену бейся! А дело обстоит так: моя девушка учится на технической специальности, не имеющей ни малейшего отношения к IT. Есть у них общий предмет с гордым именем «Информатика», на котором учат всему, от создания папки до азов программирования на бородатом паскале и VBA. Ей, естественно, программирование надо, как юниксу BSoD. Кто все домашние задания делает? Верно, я.

Стандартный случай: пять простых задачек по три массива, четыре цикла и десяток-полтора переменных. Я, эникейщик-самоучка, глянул на это всё, на минутку задумался, за 15 минут написал, ввёл тестовые данные, проверил ответ — отлично. Можно сдавать, скажете? А вот тут и прикол. Моя любимая берёт ноут, тетрадку и… верно, переписывает туда код.

Цитирую преподшу: «Блок-схема — самая важная часть программы! Без неё вы никогда не напишете ни одной программы!» Ну да… Можно подумать, что я за минуту в голове нарисовал пять этих блок-схем. Кстати, внешность этой преподши полностью соответствует её манере преподавания: уже за сорок, старомодная юбка, очки и полное нежелание идти на коннект со студентами, какого бы это вопроса ни касалось.

Так вот, рисую блок-схему. Любимая смотрит, говорит, что неправильно. Начинаем рыться в её конспекте и смотреть, что им на лекциях диктовали. Нашли, сделали. Ура! Курсор в верхний правый угол, «Закрыть», «Нет». Я фигею: «А как же сдавать программу, если ты ее не сохранила? Заново писать?» — «Нет», — отвечает мне любимая, и показывает на тетрадь: «Вот так». Мда… XXI век!

Видел я идиотов, видел людей, которые умудрялись планку DDR2 вдавить в слот DDR, видел, как, не зная об отверстии для извлечения диска, привод зверски раскурочивали отвёрткой, не вынимая из корпуса, но чтобы работоспособность программы проверялась на листике…

И это я молчу, что переменная, содержащая сумму, должна называться S, и не иначе, счётчик — n, вводимые данные — x и т. д. О «говорящих переменных» им никто не рассказывал; мало того, по словам преподши, так делать неправильно!

Завтра у девушки контрольная. Как студенты будут писать программы? Вы снова правы! На листочке, не подходя к компьютеру. Я же, в свою очередь, буду сидеть в ближайшем интернет-кафе с ноутом, открытым редактором VBA и включённой аськой. Если такие преподаватели учат людей грамотно разбираться в вопросе, то, простите, я тогда страус!

5405

Ключевые слова знает

В институте на преддипломной практике был у меня руководитель — главврач местной больницы. Дипломников и посетителей было у него много, поэтому всех он запомнить не мог.

Итак, потребовалось мне получить разрешение на выдачу здравотделом статистических данных по некоторым заболеваниям. Я приехал, стою у служебного входа в больницу. Появляется главврач: «Вы пришли, да?» — и начинает крепко жать руку. Я радуюсь такому приему и слегка удивляюсь. Дальше — больше. «Пойдёмте со мной», — так же коротко бросает он, и мы идём в его кабинет. «Он пришёл!» Медсестра с благоговением смотрит на меня; облегчённо вздыхают тетки, сидящие рядом. Мои глаза раскрываются всё шире. Заходим в кабинет, садимся. Главврач спрашивает:

— Вы в сетях хорошо разбираетесь? Какой раньше опыт был?

— Ну, немного. Опыта никакого…

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

— Так, ладно, систему переставить можете?

— Да, это без проблем.

— А с серверами дело имели?

— Нет, но научиться, если что, смогу.

О том, что преподы любят «припахивать» студентов, я знал, поэтому удивляться перестал.

— Что ж, хорошо, что вы всё же пришли. Завтра приступаете. Наталья выдаст все пароли и логины.

— ?!

— Что вы так смотрите?

— К чему приступаю? А данные когда анализировать?

— Какие данные?! Мы, наверное, друг друга не поняли. Я расклеил перед кафедрой объявление, что нам нужен сисадмин, вы пришли — и вы приняты.

— Я ваш дипломник. Мне данные для диплома нужны. То-то я думаю, что вы мне какие-то странные вопросы задаёте!

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

5404

Трояк по вандализму

Поздний вечер. Завтра сдавать типовой расчёт по теме «Определитель матрицы». Дабы освежить знания по предмету, открываю статью об определителях в Википедии. Сижу себе, пишу... Поднимаю глаза на монитор и замечаю фразу, которой в статье вроде как быть не должно: «%TeacherName% придурок». Офигеваю, делаю скриншот на память, обновляю страницу. Нелестный отзыв о преподе пропадает, и на его месте появляется описание определителя. Видимо, не у одного меня в тот день произошёл небольшой взрыв мозга от объёма вычислений.

5401

Мне так, в окошко посмотреть

К тому, что никто ни на каких устройствах не пишет о совместимости с линуксом, я уже привык. Случайно нашёл в нашей местной библиотеке «Самоучитель по Linux», к нему ещё видеодиск прилагался. Ну, думаю, возьму интереса ради, полистаю. Гляжу на диск:

Системные требования:

Pentium 120 МГц

32 MB RAM

DirectX 7

Windows 95

Internet Explorer 4

Ё-моё, где логика?

5395

Первокурсные перфокарты

Я, наверное, типичный быдлокодер: как правило, приходится мне в минимальные сроки править то, что уже написано суперспециалистами.

Когда моя жена училась на программиста, писала она курсовую. Не помню суть ошибки, но она была. Бессонная ночь для меня — и ошибки нет. Всё на мой взгляд красиво: код читается легко, комментарии есть.

Пошла жена сдавать. Получила «отлично», но с комментарием, что использовала то, что они ещё не проходили. Программа была написана на VB, который они закончили изучать на втором курсе. Вопрос: чему их там, собственно, учили тогда?

5392

One apple a day keeps the admin away

Я работаю в одной из тех самых школ, где стоят аймаки с виндой (только плеваться не надо — не мы придумали). Эта самая винда живёт рядом с макосью на соседнем разделе. Примерно раз в неделю на какой-нибудь машине глюкает Boot Camp, и комп весело (и очень быстро) грузит вместо винды макось. Каких только описаний этой «проблемы» я не слышал от наших тетушек!

Попиваю кофе, сочиняю десятый за последний месяц отчёт Большому Начальству. Распахивается дверь, влетает Очень Красивая Женщина (преподаватель начальных классов) и кричит:

— Ты что мне там сделал?! Мне столько всего печатать надо, а там… Там всё по-другому. Картинка другая, окошки другие и… и… (скривившись, как от лекарства) какое-то надгрызанное яблоко!

5390

Победа за тёмной стороной

Выполняю лабораторную работу по основным командам линукс-терминала. Есть задание использовать команду kill. Запускаю первую попавшуюся игрушку (шахматы), смотрю список процессов, определяю PID, выполняю kill. Процесс исчезает из списка, но окно шахмат никуда не девается и светит надписью: «Белые победили. Один из игроков умер».