?

Log in

No account? Create an account

Previous Entry | Next Entry

Итак, я еще студент-старшекурсник, но одновременно МНС (младший научный сотрудник) получил свое первое задание от шефа Шеф -- новоиспеченный доктор наук, профессор Садреев Алмаз Фаттахович занимался тогда (как впрочем и сейчас) много чем, но среди этих занятий была одна забавная физическая проблемка -- это предел скорости движения доменных стенок в тонких ферромагнитных пленках под воздействием внешнего магнитного поля. Все дочитали фразу до конца? Молодцы, МНС-ами хоть сейчас можно всех брать...

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

прогер

Ну так вот, ближе к делу. Программки тогда считались на таких огромных шкафах, вместе называемых -- аппаратно-программный комплекс "Эльбрус-1". По мощности этот комплекс был примерно равен нынешнему "Пентиуму". Точнее не нынешнему, конечно, а какому-нить "Пентиум-II"  года так 1995 выпуска. Сейчас такое старье нафиг никому не сдалось, но тогда это было невероятно круто.  Чтобы такую круть зазря не гонять, вначале программка писалась и отлаживалась на настольной ДВК-2М (аналогов не подберу, что-то чуть покруче программируемого калькулятора), потом отлаженная программка передавалась на ВЦ, там ее операторы водили в "Эльбрус и тот начинал считать. Причем у каждого отдела был лимит времени (сколько-то часов), в течении которых они могли этот самый "Эльбрус" гонять. У нас он был что-то около 80 часов в месяц.
 

0025-058-Superkompjutery
Итак написал я программку, отладил на небольших массивах на ДВК-шке, проверил -- все работает, промежуточные результаты вылетают один за одним, даже и какое-то обоснование шефовской гипотезы вроде можно разглядеть -- все круто! Сдал ее операторам, они набили ее на перфокарты (можно я не буду рассказывать, что это такое -- вы все равно не поверите...), запустили. Я сижу, жду результатов. Программка считает. Прошел час, результатов нет, прошел еще один -- выдала первый промежуточный, а их должно быть 40 --- то есть как раз на все 80 часов месячного лимита работы.Я чувствую, что-то не то, иду к дежурному сисадмину, говорю -- останавливайте расчет. Тот мне --- так она же не доработала... Я говорю -- и слава богу, если бы доработала все 80 часов, шеф бы меня на части порвал. А так может просто уволит...

Иду с кодом к шефу. Шеф смотрит код, смотрит на меня, снова на код и говорит -- "Андрей, а ты почему тут "алгоритм пузырька" для сортировки используешь?" Я честно отвечаю -- "Потому что никаких других не знаю. Нам в универе только этот показывали..." Шеф тяжело вздыхает, снимает с полки книжку Никола Вирта "Алгоритмы + структуры данных = программы" и говорит "официальным тоном" -- "Идите, Андрей, домой и читайте. И пока не сможете мне назвать СОРОК алгоритмов сортировки и объяснить, в каких случаях какой надо применять,  можете на работу не приходить. Я Вам это оформлю как отпуск за свой счет". Вот так. И не поспоришь, характер у шефа был суровый.  Сорок не сорок, но с десяток я смог ему назвать на третий день. Считаю легко отделался -- зарплатой за три дня... Могли и 13-й зарплаты (так называлась премия по итогам года в размере месячного оклада) лишить...

Вот такой был у меня первый профессиональный "косяк" С тех пор я навсегда выучил -- ПЕРЕД тем, как писать КОД, ПРОВЕРЬ РАЗУМНОСТЬ И ОБОСНОВАННОСТЬ АЛГОРИТМА.
promo torin_kr december 5, 2015 19:43 25
Buy for 200 tokens
Этот пост -- заказной. Меня его попросила написать одна моя хорошая знакомая, с которой мы знакомы такое количество лет. что аж страшно становится. Как говорит в таких случаях мой младший брат -- "Да ну нафиг. Столько и не живут". Живут... к сожалению. Ладно, это было лирическое…

Comments

( 23 comments — Leave a comment )
dent
Feb. 8th, 2019 02:21 pm (UTC)
Подход безусловно разумный! Но сейчас, на современных компьютерных мощностях, редко кто задумывается о вычислительных ресурсах. Проще затребовать компьютер помощнее, чем оптимизировать код.
torin_kr
Feb. 8th, 2019 02:36 pm (UTC)
Тут речь даже не о коде. Прежде чем оптимизировать код, нужно оптимизировать АЛГОРИТМ, по которому будет писаться этот код. В основе КОДА лежит АЛГОРИТМ. код -- это реализация алгоритма средствами языка. Ну скажем как рассказ и фабула рассказа. Алгоритм намного важнее реализации. Об этом большинство нынешних прогеров по-моему просто забыли...

Edited at 2019-02-08 02:50 pm (UTC)
izard
Feb. 8th, 2019 02:31 pm (UTC)
В начале 90х в старших классах средний победитель районной олимпиады по программированию уже знал 4 минимум алгоритма сортировки.

Но это не помогает и сейчас - я в 2003 году на работе поменял пузырек на квиксорт на машинке, которая платы проверяла, и в 2018 слышал от коллег, что в одной большой немецкой компании пузырек обнаружился в коде рассчета околоавтомобильного, и автор еще и не хотел менять, а хотел ускорить именно пузырек!
torin_kr
Feb. 8th, 2019 02:37 pm (UTC)
Вот это-то и потрясает...
bkl
Feb. 8th, 2019 02:42 pm (UTC)
A чем плох bubble sort ? Есть и побыстрее конечно, но непринципиально.
Так что косяка не вижу.
torin_kr
Feb. 8th, 2019 02:49 pm (UTC)
Всем плох. Прежде всего быстродействием Попробуйте на тесте. Скажем сгенерите пару тысяч двумерных массивов случайных чисел каждый 10000*10000 элементов и отсортируйте их. Вначале методом пузырька, потом шейкер-сортировкой. Потом посмотрите на время, которое заняли оба способа

Edited at 2019-02-08 02:50 pm (UTC)
bkl
Feb. 8th, 2019 03:22 pm (UTC)
В свое время сравнивал разные sort алгоритмы и не помню чтобы была заметная разница (все они требуют propto N*log(N) операций).
torin_kr
Feb. 9th, 2019 05:41 am (UTC)
Нет пузырек пропорционален N*N. А вот квик сортировка как раз N*log(N)
bkl
Feb. 8th, 2019 03:26 pm (UTC)
Вдогонку - да, обычный bubble sort propto N^2, видимо у меня была модификация Nlog(N) (не чистый bubble sort)
torin_kr
Feb. 9th, 2019 05:57 am (UTC)
Это модификация т.н. "встречный пузырек" (когда один прогон делается в одну сторону, а второй в обратную) и есть шейкер-сортировка
helkanarie
Feb. 8th, 2019 02:57 pm (UTC)
Можно это обобщить и сделать жизненным принципом и учить людей на курсах саморазвития за деньги: перед тем, как что-то делать, проверь разумность и обоснованность способа, которым ты собрался это делать :) Но это скучно :)

Edited at 2019-02-08 02:57 pm (UTC)
torin_kr
Feb. 8th, 2019 02:59 pm (UTC)
Вот всегда тебе что правильно -- то и скушно
Oleg Leonov
Feb. 8th, 2019 04:07 pm (UTC)
А как тады до нового (принципиально) добраться. Если оно лежит за пределами нынешнего разумного ??
helkanarie
Feb. 9th, 2019 04:22 am (UTC)
Вот потому и скучно :)
helkanarie
Feb. 9th, 2019 04:20 am (UTC)
Да :) Но ты что-то тоже не рвёшься делать как правильно: бросить пиво, пойти в спортзал... :)
torin_kr
Feb. 9th, 2019 05:39 am (UTC)
А почему спортзал это правильно?
helkanarie
Feb. 9th, 2019 10:08 am (UTC)
Потому что регулярные физические нагрузки (не чрезмерные) улучшают общее самочувствие и положительно влияют на настроение, которое у тебя, судя по записям в ЖЖ, всё время хреновое. Эндорфины выделяются и прочая биология.
mindfactor
Feb. 9th, 2019 12:15 am (UTC)
Угу, народ это называет "семь раз отмерь, один раз отрежь"
ingaret
Feb. 9th, 2019 07:17 am (UTC)
Хорошо помню ДВКшки. Довелось поработать в студенчестве.
torin_kr
Feb. 9th, 2019 07:20 am (UTC)
Потрясающая техника... Как мы на них работали?
А ведь работали же...
ingaret
Feb. 9th, 2019 07:26 am (UTC)
Ничего другого не было, вот и работали.

Как и на ЕС1840 без жёсткого диска, где надо было с пятидюймовой дискеты загрузить MS-DOS, потом вставить в другой дисковод такую же дискету с рабочей программой и расчётными файлами. И уже тогда - работать.

torin_kr
Feb. 9th, 2019 07:30 am (UTC)
Ладно с дискеты. Я помню у нас один из компутеров загружался с перфоленты. То есть надо было включить машинку, достать из сейфа рулончик с лентой, размотать его, вставить краешек ленты в считыватель, потом нажать кнопку загрузки...

Как вспомню -- так вздрогну.
ingaret
Feb. 10th, 2019 07:27 am (UTC)
Cлышал и про такие, но вживую не видел.
( 23 comments — Leave a comment )