bash.im ithappens.me zadolba.li
4611

Сорцы давно минувших дней

...Обратите внимание: несмотря на низкую человекопонятность, недостаточную структурированность, а также на появление в последующие годы более совершенных языков и стилей разработки, этот код считался образцом правильно спроектированных систем ещё 0x40 лет. Каждый из вас даже при поверхностном анализе сможет выявить в нём не менее 0x800 уязвимостей. Дайте-ка, посчитаю с нуля... У меня получилось 0x81c, но это с минимальной глубиной анализа. Ну так вот: несмотря на огромное количество уязвимостей, эта система считалась образцом надёжности и защищённости. Репутацию спасало лишь слабое развитие аппаратных средств: если бы самый мощный пракомпьютер конца эпохи UNIX начал анализ, который я только что произвела, в момент выхода первой версии ядра, мы с вами не дожили бы до обнаружения им первой из только что найденных мною уязвимостей.

На этом я предлагаю закончить обзор зала кода процедурного стиля и перейти к рассмотрению раннего объектно-ориентированного программирования. Его зарёй почему-то принято считать вторую половину того же 0x14 века, хотя существовавшие тогда технологии нельзя считать программированием в современном смысле этого слова. Достаточно упомянуть о том, что код создавался людьми или примитивными кодогенераторами опять же по заказу человека, а такие аспекты, как универсальность, структурированность и надёжность, не являлись неотъемлемыми его свойствами и целиком зависели от программиста. Тем не менее, историки считают этот этап шагом вперёд, поскольку он позволил добиться немного более полного выражения предметных областей в терминах языков — разумеется, не на том уровне, на котором это делается сейчас.

В качестве примеров языков зари ООП можно привести C++ или Java, хотя считать их языками программирования в современном понимании опять-таки нельзя. В качестве примеров могу предложить вам исходные коды линейки операционных систем Windows, нескольких систем комплексного управления оборудованием, а также нескольких сред, реализующих тот язык, на котором они написаны. Как вы видите, эти программы по-прежнему рассчитаны на работу с человеком. Несмотря на огромное количество проблем с безопасностью и стабильностью, этот код использовался даже в критических местах! Не надо смеяться: я говорю серьёзно. Поскольку весь этот код был написан людьми, никаких имён здесь назвать, как вы понимаете, нельзя; однако уже в следующем зале мы с вами сможем увидеть наконец код, имеющий авторов. Началом объектно-ориентированного программирования можно считать...

Проснулся я в холодном поту. Так вот на какие экскурсии будут ходить будущие хозяева планеты!

4610

HP BurnJet

Купили для нужд кладовщиков цветной лазерный принтер. Их начальница (хотя с компьютером почти на «ты») сильно удивилась:

— Я всю жизнь думала, что лазерный принтер печатает, выжигая лазером буквы на бумаге, поэтому может быть только чёрный цвет!

4609

Чужих — армейским сапогом

5 ноября 2010, 11:00

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

Aliens Versus Predator 3 — avp.exe

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

4608

Антииндийский код

Мудрость наших отцов и дедов гласила: «Нет такой программы, которую нельзя было бы сократить хотя бы на один оператор». Учитывая, что вводить код приходилось с перфокарт, индийский подход был нежизнеспособен. Те времена прошли, но «мышечная память» всё ещё жива в некоторых преподавателях программирования.

История эта произошла со мной, когда я учился на первом курсе МИРЭА. Очередная лаба по программированию: матрица N×N с рандомными числами, задающими расстояние, в которой надо было провести расчет кратчайшего пути из {1; 1} в {N; N}. Первая версия программы была напичкана циклами и массой условий. Работала быстро — ну, насколько это позволял третий «пень». Тётечка-преподаватель, оценив код, сказала, что надо бы оптимизировать. Почесав репу, я изрядно переписал код: количество циклов сократилось вдвое, а условий — втрое. «Всё равно много», — сказала тетечка.

Десятая версия выглядела примерно так:

i := 0;
while ((48 условий) and (i <= N*N)) do inc(i);

Только после этого я получил зачёт и фразу, которая вьелась мне в мозг: «Памяти много не бывает!»

4607

Слышал звон и знает, где он

С детства я увлекался электроникой. Потом было программирование, которое стало увлечением серьёзным, заняв меня на долгие годы. Чтобы поступить в институт по интересующей специальности в начале нашего столетия, нужна была кругленькая сумма, поэтому я получил среднее образование. В 2005-м мой опыт разработки ПО достиг такого уровня, что я без проблем смог пройти собеседование на должность инженера-программиста в крупной компании, где закрыли глаза на отсутствие диплома. Через два года я решил всё-таки получить заветную «корочку» и поступил на экономиста. Хоть обучение было заочным, лекции я посещал часто, и преподаватели без проблем ставили зачёты/экзамены — достаточно было пробормотать что-нибудь по теме. Не ходил я только на один предмет — информатику.

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

— Молодой человек, а теперь скажите мне, какие языки программирования вы знаете.
— C/C++, Pascal/Delphi, VBA немного, — особо не задумываясь, ответил я.
— Это слишком мало. Если бы вы посещали лекции, знали бы больше! Встретимся на следующей неделе.

«Ни хрена себе: оказывается, для экономиста этого мало!» — думал я, выходя из кабинета. Тут меня осенило, что же преподаватель имела в виду. Подождал, попытался всё объяснить. Женщина на меня смотрела круглыми глазами, когда до неё дошло, что в айтишном мире понимают под знанием языка. Преподаватель извинилась и пообещала экзамен автоматом.

4606

Лови момент

4 ноября 2010, 20:30

При попытке установить старую добрую игру на новый комп столкнулся с неожиданной проблемой: установка вылетала на проверке соответствия системы требованиям игрушки. Окно с ошибкой появлялось на долю секунды, и сразу же после этого установщик валился.

Пораскинув мозгами, я поставил Фрапс и записал процесс установки. Оказалось, установщик считал объём оперативной памяти и, дойдя до 256 МБ, благополучно вылетал. Проблема решилась установкой игры на виртуалку с последующим копированием в рабочую систему.

4605

Два шага назад

4 ноября 2010, 16:45

Работает в небольшой госорганизации парень — будем звать его Лёхой. Лёха — парень смышлёный и находчивый, разработчик прикладных программок узкой направленности и самоучка-веб-технолог. Есть у Лёхи коммуникатор Acer с утилиткой, синхронизирующей время с атомными часами по инету.

Канун дня «Х», когда все переводят стрелки на час назад. Суббота (уже воскресенье), три часа ночи. Лёха включает своему зверьку инет, лезет посмотреть почту и перекинуться парой сообщений в аське. Умная программка соединяется с атомными часами и переводит время, как и положено, назад на час. После нескольких минут пребывания во всемирной сети Лёха благополучно засыпает.

Утро воскресенья. Лёха просыпается и смотрит на своего любимого зверька. Тот с радостью сообщает, что можно поспать подольше, так как время переведено с летнего на нормальное, и чтобы хозяин не заморачивался, он сам это сделал буквально в семь утра...

На работу в понедельник Лёха опоздал ровно на час, а как он прожил воскресенье — до сих пор не понимает.

4604

Кража в четыре этапа

4 ноября 2010, 16:45

Взяла у подружки переписать пиратский диск с мультиками. После прожига болванки, тестируя полученную запись, я случайно наткнулась на фразу: «Релиз подготовлен специально для торрент-трекера „xxx“». Естественно, на обложке пиратки не было ни малейшего упоминания о трекере.

Итак, первые пираты тырят у правообладателей контент и располагают его на трекере. Вторые этот же контент качают, записывают на диски, печатают обложки и продают обывателям. Я совершаю третье воровство в «пищевой цепочке»: копирую пиратский диск, на котором гордо значится: «Все права защищены». Задумался: если бы кто-нибудь спёр у меня болванку с записью, контент стал бы четырежды ворованным.

4603

Миру — мир

4 ноября 2010, 16:45

Рекламное агентство с представительствами в нескольких регионах. Печать материала на местах пока в полной мере не налажена, посему высылаем открытки, буклеты и прочее почтой по мере надобности.

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

Строка «Уважаемая peaceyulia» в шаблоне ответного письма повергла весь офис в пятнадцатиминутный технический перерыв.