Skip to content

Latest commit

 

History

History
61 lines (46 loc) · 4.49 KB

README-ru.md

File metadata and controls

61 lines (46 loc) · 4.49 KB

Tower of Babel

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

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

Почему появился этот проект

За всё время работы программистом, мне часто приходилось портировать программу с одного языка программирования на какой нибудь другой. Это был и Java, ассемблер, С, С++, Pyton, Basic, Modula 2, Pascal, Oberon, Delphi, Go, FoxPro и пожалуй это всё. Не будем упоминать SQL, XML, XSLT, HTML и тому подобные языки.

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

Довольно успешно использовались несколько методов:

Внимательный просмотр кода

Трудоёмкий и ненадёжный способ. Годится для простенького кода

Написание юнит-тестов

Великолепно, когда в проекте есть юнит-тесты. Они позволяют удостовериться работоспособности отдельных модулей. Но они не панацея, их всегда не хватает. Я не встречал достаточно большого проекта, со 100% покрытием тестами. Тесты помогут найти ошибку, но они не являются доказательством правильной работы программы. На разработку тестов нужно тратить время.

Сравнение результатов исполнения двух программ

Метод конечно весьма трудоёмок, но для сложных программ является весьма эффективным способом отладки.

Типовой сценарий а) Подготовка тестовых наборов данных б) Добавляем в программу код для дампа в текстовый файл log. Как правило, это имя метода (подпрограммы), входные параметры и результаты полученные в методе. в) Сравнивая два файла с дампа легко найти место расхождения и найти место ошибки и её причину.

Унифицированный генератор случайных чисел

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