Это вольный перевод курса статей за авторством Jeffrey Dege.
Этот курс ствтей — не введение в программирование или криптографию.
Этот курс статей создан для раскрытия концепции проектирования программ
способных взламывать некоторые классические шифры
.
Простой тест:
язык программирования
и Python
в одном словосочетании?Если любой из ответов положительный — стоит попробовать почитать другие работы , подробно освещающие эти вопросы.
Для начала – маленькое отступление о программированни в целом. Cоздание программ-кирпичиков для решения собственных задач и программирование для решения более общих (клиентских) задач — две большие разницы. Если зайти издалека, то задача Серьезного Программиста — создание бензопилы достаточно безопасной для семилетнего ребенка и одновременно пригодной для решения задач сурового лесоруба.
Cуществует такая околоюниксовая поговорка: «Единственная необходимая ошибка — сегфолт» (имеется в виду Segmentation fault: core dumped). Такой способ обработки ошибок отрицательно влияет на психику и моральное состояние пользователей, что с одной стороны довольно забавно, но и обременительно с другой. Создание интуитивного интерфейса и вытекающая из этого проблема качественной обработки ошибок — задачи подчас более сложные чем описание алгоритма программы.
Пару десятков лет назад, когда большинство пользователей были программистами, книги компьютерной тематики писались именно с уклоном в эту сторону. UNIX придуман и воплощен как средство повышения продуктивности программистов. Очень увлекательно читать труды посвященные этой концепции, написаные командой исследователей из Bell Labs – создателей упомянутого UNIX’а:
А программирование тем временем стало массовой сферой, сконцентрироваванной на написании приложений для живых человеков не связанных спрограммированием.