Про софтописание двадцать первого века
Oct. 31st, 2012 01:40 am
Всё когда-нибудь случается в первый раз.Сегодня я в совершенно официальной (хотя и очень внутренней) инструкции по запуску программы написал пункт «Pray».
Если кто-то скажет, что есть язык более дикий и система разработки более поганая, чем DOORS/DXL, не верьте. По сравнению с этим то, что пишут студенты в качестве курсовой по компиляторам, является образцом логичности и изящества, а Турбо-Си, который я использовал в прошлом веке на операционной системе DOS, прекрасен и недостижим как вершины Гималаев.
Самый распространённый тул. Стандарт для многих отраслей. Мощная парадигма. Возможность расширений, настройки и адаптации под внутренние задачи и процессы...
Массивы создавали какие-то извращенцы. А реализация хеша (который associative array) настолько бредова, что я минут десять рылся в Reference Manual не в силах поверить, что ключ можно получить только в цикле, перебирающем значения элементов. Специально ходил по форумам, искал как выяснить размер хеша. Только честно. Только циклом. И в первый раз, и в десятый, и в сотый. Так что придётся запастись долготерпением. Или как некоторые делать Паскаль, пряча размер в особый элемент и не забывать прибавлять и убавлять единичку при изменениях.
Первый раз в жизни ставил комментарии
// L.125
Да. Номера строк. Потому что чудесная среда разработки не умеет даже это. И место, где произошла ошибка, приходится высчитывать вручную.
Насчёт же дебаггинга и тестирования... Это происходило примерно так.
- Задача простенькая. Сделаем рекурсию. Запускаем... Умерло или думает? Вроде что-то происходит... Ну ладно, можно чай попить... Так. Что там у нас?.. Да. Можно было и пообедать... О! Сообщение. Так-с..
- «Скрипт работал слишком долго. Ждём дальше или убиваем?»
- Хм. Вроде что-то в файлы пишет. Значит продолжаем... Ничего нового?.. Ничего нового?.. Всё ещё ничего нового?.. О! Ожил. И что это такое?
- «Произошло что-то интересное. Отошлите лог в ИБМ для проверки и улучшений.»
- Ничего удивительного. Стек переполнился. Что там у нас за кнопочки в диалоге?
- «Close»
- Небогатый выбор. Интересно, как предполагается посылать? Ладно, закрываем. Впрочем, надо бы на всякий случай закрыть программу и запустить по-новой. Опа! Что это за диалог?
- «Произошло что-то интересное. Отошлите лог в ИБМ для проверки и улучшений.»
- Нафиг. Закрываем программу.
- «Произошло что-то интересное...»
- Так, закрываем все открытые окна. Всё? Вроде всё. Давим на «Exit»
- «Произошло что-то интересное...»
- Попробуем из таск-менеджера.
- «Произошло что-то интересное...»
...
Конечно, удалось найти пути кривые и извращённые, хоть и не лёгкие, но зато работающие. Конечно, в конце концов оно запустилось, заработало и выдало результат. Только ушёл я из офиса в ноль ноль часов, ноль ноль минут. Первый раз у этого клиента.
.
no subject
Date: 2012-10-31 09:36 am (UTC)поясни, что ты имеешь в виду
у тебя есть хэш, содержащий пары ключ-значение (которые называется в разных языках по разному, в питоне и сишарп dictionary например), и ты хочешь найти набор всех всех ключей для данного значения V?
no subject
Date: 2012-10-31 09:42 am (UTC)no subject
Date: 2012-10-31 12:29 pm (UTC)no subject
Date: 2012-10-31 01:49 pm (UTC)ок, ключи в мн.числе, когда понятно про что идет речь. в оригинальном постинге стоит "получить ключ", я уж подумал, что ты поиск конкретной пары делаешь
а ключи как массив и длина массива, да, в принципе полезные вещи, в питоне это as simple as
myArrayr.keys() и len(myArrayr)
но ведь никто не обещал что будет просто жить?
no subject
Date: 2012-10-31 03:11 pm (UTC)no subject
Date: 2012-11-01 11:33 am (UTC)(Заранее извинюсь за, возможно, некоторую глупость оного и предупрежу, что моя - инженер по электромеханике и пром.контроллерам, далеко не программист в полном "понимании понятия").
Недавно открыл для себя удивительное, что одномерный массив, называемый вектором - он одномерный столбец, а не строка, как я привык со времен ранней юности, когда постигал основы и речь шла о простых массивах.
Поскольку раньше никогда надо не было, сей факт меня несколько озадачил.
Это действительно во всех языках столбец или только в некоторых? (в моём случае речь шла о С++)
no subject
Date: 2012-11-01 11:53 am (UTC)Массив в языках низкого уровня - это область памяти, разбитая на равные куски. Известен начальный адрес и смещение до следующего элемента.
Представлять это строкой, столбцом или упорядоченным множеством (однородных или разнородных элементов) - зависит от задачи. У меня часто бывает что-то вроде двумерного массива, хешей со значениями векторов хешей. Так что я не парюсь насчёт столбцов и строк.