[bash.org.ru] [IT Happens] [zadolba.li]

IT Happens

Клиент и саппорт. Разработчик и заказчик. Программист и программа. Вести с фронтов.
747372• • •1817161514• • •321

#1747: Армейский способ

21 декабря 2009, 11:00

рейтинг: 1334

Недавно получили субподряд на разработку софта для армии — точнее, одного маленького модуля, который не смог реализовать главный подрядчик. Задачка из области баллистики представляла собой систему дифуров. Адаптируем простейший численный алгоритм — контрольные примеры не сходится. Меняем метод на более точный — требуемая точность не достигнута. Коллеги умывают руки.

Матерясь, поднимаю учебник по вышке и решаю аналитически. Барабанная дробь... Решение недостаточно точное. Прошу проверить контрольные примеры — говорят, всё точно. Прошу при мне пересчитать пример, и что же вижу? Старые советские таблицы коэффициентов. Объяснить, что наше решение точнее, не вышло.

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

 

#1708: Обфускация: вводный курс

17 декабря 2009, 11:00

рейтинг: 1980

На первом курсе мы занимались моделированием простеньких физических систем. Очередным заданием было смоделировать колебание маятника и получить петлю гистерезиса. Задание я выполнил за пару, все работало в моём понимании как нужно — понёс сдавать. Преподаватель посмотрел на работу программки, открыл код и, быстренько прокрутив колёсиком, заявил, что у меня не хватает зависимости от массы. Моё разочарование было настолько сильным, что я и не подумал расспросить более конкретно, о чём идет речь.

В течение недели я пыхтел над кодом, всматриваясь в каждую строку и пытаясь понять, о чём шла речь и что не так. На очередном занятии я всё же решил спросить препода, что имелось в виду? Он мне рассказал о том, как нужно писать код: оказывается, «зависимость от массы» — некий кусок той математической формулы, которую я использовал; от меня требовалось добавить комментарий и выписать этот кусок на отдельной строке.

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

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

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

 

#1695: Потеснитесь

16 декабря 2009, 11:00

рейтинг: 2328

Когда я учился я в техникуме, знакомый на лекции попросил меня написать ему на бейсике какую нибудь игрушку на его БК. Отчего ж не написать? Взял я тетрадь в клеточку и заполнил кодом «крестиков-ноликов» несколько страниц (много кода ушло на графическое оформление). Так как знакомый не обладал высокой скоростью печати, набирал он игру по вечерам в течение недели с промежуточным сохранением на кассету.

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

 

#1657: Десять раз по шесть рук

12 декабря 2009, 11:00

рейтинг: 1457

Мое первое знакомство с компьютером вообще и программированием в частности состоялось в восьмом классе школы. Происходило это всё в Доме Пионеров. Компьютерный класс состоял из нескольких «Корветов ПК8010» и одного главного «Корвета ПК8020», объединённых локальной сетью. Программировали мы на бейсике — других языков ещё не знали.

Никаких дискет и стримеров не было. Точнее, дисковод на головном «Корвете» был, но со странностями (об этом ниже). Первые коротенькие программки набирались быстро и в общем-то сохранения не требовали — нужные алгоритмы и функции записывались в тетрадки карандашиком. Но вот я дорос до написания Игры в Го, а одноклассник решил заняться «Морским Боем». Почему с больших букв? А вы попробуйте разрабатывать и отлаживать программу в тетради в клеточку...

Через некоторое время обе игрушки были наконец закончены и отлажены, поэтому их нужно было сохранить на дискетку для последующей быстрой загрузки, да и вообще для истории. Естественно, перед этим финальные варианты были скрупулёзно занесены в тетрадки. При сохранении возникла проблема с тем самым «весёлым» дисководом. Эта радость, побитая временем, работать сама по себе отказывалась — шпиндель приходилось раскручивать вручную, «с толкача». Процесс сохранения выглядел следующим образом:

1. На компьютере-терминале набирался нужный для сохранения код.
2. На сервере с дисководом код перекачивался в оперативную память и скармливался запущенному в фоне интерпретатору бейсика.
3. Дальше один человек не справлялся:

— Первый участник нависал над клавиатурой с целью нажать по сигналу Enter после команды SAVE "%filename%".
— Второй, хитро извернувшись под столом, залезал рукой в системник и указательным пальцем держал шпиндель дисковода с целью его раскрутки.
— Третий синхронизировал действия команды, отдавая приказы с определённым временным интервалом.

На практике выходило раза с третьего-четвёртого.

Помимо «запуска с толкача», у дисковода была ещё одна проблема: из интерпретатора бейсика он не мог записывать более ста строк кода за раз. Мне-то ещё повезло — го заняла всего 180 строк и сохранилась за два подхода, после чего файлы я слил в один. Однокласснику пришлось хуже — его «морской бой» занимал около тысячи строк кода. Фраза «и так 10 раз подряд» для всех участников процесса сохранения этого шедевра на дискетку имела впоследствии сакральный смысл.

 

#1634: Укрощение десятиголовой гидры

10 декабря 2009, 09:00

рейтинг: 1353

Где-то в 1992 году я учился на физфаке. На кафедре общей физики у нас был компьютерный класс, оснащённый компьютерами, гудящими, как реактивный самолет на взлёте. Звали машинки «Электроника», на борту крутилась операционная система «ПрОС 2.0». Через полгода завкафедрой выбил класс 80286 машин. Будучи несколько знакомым с компьютерами, я без труда стал лаборантом. Некоторое время жизнь была сказкой — неплохо получать и стипендию, и зарплату! Эстетическим бонусом были пятикурсницы, мывшие полы у меня в компьютерном классе.

На втором курсе в расписании появился предмет «информатика». Самым печальным было то, что я прочитал этот курс задолго до преподавателей. В отделе ИТ на пятом этаже стоял грозный i386 с десятью терминалами. Как они это умудрились это сделать — чёрт знает, но я помню толстенный пучок проводов, припаянных прямо к материнской плате. Первым (и последним) моим развлечением было создать на бейсике замкнутый на себя цикл. Естественно, вся система от переизбытка чувств вешалась. Раза после десятого меня вызвал преподаватель, поставил в зачётке «4» и расписался. Мотивировал так: «„5“ за диверсию — много, а „3“, учитывая знания, мало». Хороший дядька оказался, только вот на свои занятия ходить запретил категорически.

 

#1633: Разбитые мечты, или «Идите на»

9 декабря 2009, 16:45

рейтинг: 2693

В далеком 1991-м я поступил в горный техникум на специальность, никак не связанную с IT. Но так случилось, что именно в этом учебном заведении я впервые увидел настоящий комп. Развлекались с товарищем бейсиком — других языков не знали, однако местный админ, увидев наше стремление, дал нам отведать С++. Это и стало ключевым моментом в выборе профессии — я стал программистом, правда, без диплома.

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

Из нашей группы в 25 человек имели представление о программировании не больше десятка, а на самом деле программировали только я и ещё один парень. Сидим мы однажды на лекции по программированию. Преподаватель — известный в этом вузе доцент, женщина бальзаковского возраста. Доходит очередь до операторов цикла. Преподаватель разъясняет типы, синтаксис и условия. Рассказав про операторы break и continue, преподаватель неожиданно заявляет, что пользоваться этими операторами ни в коем случае нельзя, так как они нарушают логику программы, а для прерывания цикла следует использовать исключительно goto. Группа продолжает писать лекцию; возмущаются, как вы уже поняли, только двое. Впрочем, возмущения ни к чему не привели. Все наши аргументы были разбиты о простой намёк: «Будем умничать — сессию не сдадим!»

Так разбиваются мечты. Эта лекция дала мне многое — теперь я точно знаю, откуда появляются «покалеченные» программисты. Такое высшее образование мне было не нужно, и на вторую сессию я не пошёл.

С тех пор прошло два года. Получить «вышку» для карьерного роста у меня не вышло, но я открыл фирму и теперь работаю на себя.

 

#1628: Если ты не выпьешь пива, компилиться будет криво

9 декабря 2009, 11:00

рейтинг: 1191

На первом курсе универа писали мы как-то с другом лабу по информатике. И он, и я с детства с компьютером на «ты», да и сама лаба была проста до ужаса. Буквально через пятнадцать минут лаба была готова, но не компилилась, причём даже не выдавала вменяемой ошибки — «Error», и всё тут.

Проверяем код. Каждая строчка, каждая точка на месте — всё отлично, но не работает. Копируем текст в текстовый файл, закрываем проект, открываем заново, вставляем (был такой глюк иногда) — всё равно не хочет. Переписываем с нуля — тот же результат.

Идеи кончились. Мы решили временно забить на лабу и для «проветривания мозгов» выпить по пиву. По бутылке выпили на улице, ещё по одной взяли с собой. Сели мы, значит, снова за комп, открыли пиво, и тут кто-то из нас без особой надежды на результат нажал F9.

Прога запустилась сразу и отработала на 5+.

 

#1596: Русский стандарт

6 декабря 2009, 09:00

рейтинг: 919

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

— Слушай, а зачем у тебя в программе переменная называется «Русский стандарт»?
— Где ты там такую переменную нашел?

Смотрим в код вместе. Втыкаем. Я объясняю, что «rudefault» — это не ru_default, а rude fault (грубый фол).

 

#1595: Полуночные алгоритмы

6 декабря 2009, 09:00

рейтинг: 1625

Прихожу я как-то утречком на работу, запускаю аську — здоровается со мной дружище-программист. Раз программист так рано не спит, думаю я, значит, кодил всю ночь.

Спрашивает он у меня совета — пишет какой-то плагин и не может реализовать один мега-алгоритм, прямо-таки не знает, как написать. Естественно, я соглашаюсь помочь. Стоит отметить, что программист уже давно отучился, много пишет — короче, опыта вагона три-четыре, не меньше.

— Не подскажешь быстрый алгоритм нахождения большего (или меньшего) из двух чисел? Я просто сплю что-то... Никак сообразить не могу, а спать ложиться не хочу, пока не доделаю кусочек.

В ходе непродолжительного опроса товарища оказывается, что задача поставлена именно так, как я её понял с первого раза, и даже не нужно учитывать случай, когда значения равны. И никаких гвоздей, как говорится…

Из соображений цензуры не буду показывать то, что он мне прислал в ответ на мою одинокую строчку:

return (a > b) ? a : b;

А мораль проста. Граждане программисты! Здоровый сон — основа качественного кода!

 
747372• • •1817161514• • •321
 
текст или номер истории
реклама
обратная связь
Хотите разместить рекламу?
Информация для рекламодателей.

Вопросы, предложения, что-то не так на сайте? Пишите в саппорт!
на сайте
Утверждено: 8399
Сегодня: 5
В рассмотрении: 2013
тэги
лучшие последних семи дней
статистика
Рейтинг@Mail.ru