(Продолжение, начало см. МК № 46 (165)) Судя по всему, первый Клондайк читателям был полезен. Тема программирования без скоса под отдельный язык или оболочку, конечно, на первом Клондайке не заканчивается. Потому Клондайк будет продолжен. И вот она, следующая часть.
Итак, опять ресурсы, которые должны быть интересны всем программистам. На этот раз продолжу тему сайтов с теорией программирования и алгоритмами, а также постараюсь дополнить заинтересовавшую многих тему создания shareware. Поговорим еще о ресурсах, посвященных защите программ от взлома, ну и о всяком разном.
Значит, алгоритмы. Первым у нас будет сайт «Структуры и алгоритмы» (http://structur.h1.ru). Вот что говорит о своем творении его автор: «Сайт сделан в убеждении, что программирование имеет свой предмет, не сводящийся ни к конкретным языкам и системам, и показывает базисные структуры и алгоритмы, которые это демонстрируют». Как видим, как раз «в тему» Клондайка. Все материалы сайта доступны со страницы http://structur.h1.ru/biblio.htm. Тут есть многое: от описаний фундаментальных структур данных и алгоритмов сортировок до хеширования, архивации данных и основ компиляции. В общем, достойный ресурс, тем более что все материалы на нем авторские, а не скопированные с других страничек.
А вот по адресу http://algolist.manual.ru, наверное, ничего собственного нет. Но зато чужого так много, что ресурс тоже достоин упоминания в Клондайке. Ведь сайтов-коллекций статей по теории программирования и алгоритмам так мало, что не стоит пренебрегать хотя бы одним ресурсом. Кроме статей, доступных для прочтения напрямую с сайта, с него можно еще загрузить материалы в архиве zip. В архивах доступны даже не просто статьи, есть и целые конспекты лекций.
Тематика материалов? Та же, что и на предыдущем ресурсе, но самих статей больше, нет, я бы даже сказал БОЛЬШЕ. Плюс к этому: математические алгоритмы, защита информации, нейронные сети, вейвлеты. Для тех, кто хочет потренироваться, есть раздел с задачами олимпиад. В общем, не просто сайт, а настоящая находка для программиста любого уровня.
В чем-то аналогичен этому сайту ресурс http://www.softcomplete.com/algo. Тоже море информации как в zip, так и html. Тематика схожая. Но дадим слово автору: «Еще одна попытка собрать воедино разбросанные по СЕТИ крохобайты полезной информации. В противовес уже существующим подобным проектам сделана попытка не создавать очередную «свалку», а выделить некоторые ключевые моменты, знание которых существенно облегчает программирование». Думаю, что этот «противовес» вместе с предыдущим сайтом будет вам хорошим помощником в программировании.
Тут http://algo.da.ru тоже полезная находка, но несколько иного плана. Рассказывается об алгоритмических моделях (стык дискретной математики и абстрактного программирования), а также о криптографии и нейронных сетях. Если вы увлеклись симулятором «Жизнь», то этот ресурс будет вам очень кстати. В общем, серьезный сайт для серьезных программистов. Как заявляет создатель проекта, часть материалов носит эксклюзивный характер.
«Первые шаги». Так называется сайт по адресу http://firststeps.narod.ru, достойный вообще отдельной статьи благодаря уникальным пошаговым обучающим статьям по разным языкам и технологиям программирования. Но под тематику Клондайка (как обзора, нацеленного не на определенные языки и оболочки) подпадает только его раздел «Алгоритмы» (http://firststeps.narod.ru/theory/algor.html). Тут есть пошаговый «Обзор объектно-ориентированного программирования», являющийся очень удачным введением в ООП. Причем это попытка ввести вас в курс дела как бы без уклона в сторону определенного языка (но с примерами на C++). Есть в разделе и отдельные статьи по алгоритмам, но и тут тоже царит C++.
Вы задумывались над тем, что некоторые люди оказываются в программировании гораздо более полезными, чем остальные? Авторы проекта Programmer’s, Stone Алан Картер (Alan Carter) и Колстон Сэнджер (Colston Sanger), потратили на такие размышления немало времени. В результате появился этот ресурс, и чуть позднее другие энтузиасты перевели его на русский язык и разместили на http://progstone.nm.ru. Море идей, подробное изложение и очень вдумчивый подход к проблеме. Думаю, всем будет интересно.
Об особенностях мышления выдающихся программистов можно еще почитать в интервью с различными достигшими успеха разработчиками программного обеспечения и озаглавленном «Нужна ли программированию элегантность?» (http://www.osp.ru/cw/1999/07/18.htm). Вопрос о хороших и плохих программистах обсуждался и в интервью со знаменитым Брайаном Керниганом (http://www.osp.ru/os/1999/03/13.htm).
На то, как хорошо работает программист, влияет и обстановка в его «среде». Как вы думаете, хорошо ли трудится программистам Microsoft? Чтобы глубже понять, почему продукты этой фирмы так хороши/плохи (выберите нужное), советую почитать «MS: корпоративная культура разработки ПО» на http://www.osp.ru/os/1998/01/45.htm, а также прямо таки классическую статью «Заметки об американском программировании» на http://progcpp.narod.ru/doc/articles/usaprog.htm. Пригодятся эти материалы и руководителям наших софтверных фирм, хотя для них (и для всех просто интересующихся) осмелюсь посоветовать еще статьи о курировании проектов и технологии создания программ, доступные на странице http://progcpp.narod.ru/doc/project.htm.
Наверное, всем нашим программистам будет невредно ознакомиться с технологией экстремального программирования — эффективной технологией разработки ПО в небольших коллективах. Автором этого термина и активным энтузиастом данного подхода к программированию является Кент Бек (Kent Beck). Подробную информацию об экстремальном программировании можно найти на англоязычных сайтах http://www.extremeprogramming.org и http://www.xprogramming.com. Знакомство с этим подходом лучше начать со статей на русском языке: основы хорошо изложены на http://www.relib.com/articles/article.asp?id=153. Более глубоко окунуться в технологию экстремального программирования поможет перевод одной из статей Кента Бека (которая так и называется — «Экстремальное программирование») на странице http://www.relib.com/articles/article.asp?id=8.
Дам, пожалуй, еще несколько ссылок по экстремальному программированию. Чтобы оценить преимущества этой технологии разработки, не утруждая себя чтением слишком длинных текстов (думаю, после знакомства с ее достоинствами вы захотите узнать больше и все-таки себя утрудите :-)), зайдите на http://www.mmdl.ru/article.php?sid=101. А если хотите коротко об основных принципах — обратитесь к статье «Экстремальное программирование» на http://www.kosnet.ru/~ivanleb/extprog.html. Вот еще пара хороших введений: «Все больше программистов уходят в экстрим» (http://profi-club.kiev.ua/career/jit_ekst.htm) и «Что такое экстремальное программирование» (http://profi-club.kiev.ua/career/jit_extr2.htm).
В первом Клондайке я очень хвалил сайт http://www.iarchitect.com как крайне полезный для понимания принципов юзабилити (там находятся множество скриншотов реальных программ с неправильным интерфейсом). Теперь с удовольствием сообщаю, что существует полностью переведенное на русский язык зеркало этого ресурса по адресу http://www.akzhan.midi.ru/iarchitect. Обязательно загляните в раздел «Ошибки». Многие из размещенных здесь сообщений об ошибках могли бы попасть в золотой фонд программерского юмора, если бы это все было шуткой, а не реальными сообщениями…
Тема создания shareware волнует многих наших программистов. В Клондайке №1 я рассказал о http://www.softerra.ru/review/program/shareware. Теперь несколько слов о http://www.softshape.com/swrus, это еще одно нужное настоящему и будущему шароварщику место. Есть тут и несколько эксклюзивных статей, имеются и прямые ссылки на материалы, даются и линки на специальные сервисы для шароварщиков. Похоже, что этот ресурс охватил ссылками все статьи и сайты по теме создания shareware на русском языке (а их, кстати, совсем немного), потому, думаю, его вам будет достаточно.
Если вы написали коммерческую программу, то ее нужно защитить. От взлома — чтобы ею могли пользоваться только те, кто вам заплатил. Хотя опыт солидных софтверных фирм свидетельствует о том, что от взлома спастись практически невозможно, но с вашей стороны будет несолидным не сделать хоть что-то, затрудняющее работу кракера. Основные методы защиты, советы и примеры выложены на http://nigersoft.chat.ru.
Одним из лучших способов защититься от кракеров в среде shareware-программистов считается следующий — «иди впереди кракера». То есть новые версии программы должны появляться как можно чаще. А на http://nigersoft.chat.ru такой простой и эффективный способ не упоминается. Зато представлены такие способы, как привязка к оборудованию компьютера, использование ключевых дискет, записи в реестре, электронные ключи. Но информации маловато.
Отдельно расскажу о сайте «Пилорама» (http://pilorama.com.ru). Польза от него не в статьях о защите программ, а в материалах, освещающих противоположную задачу, — Reverse Engineering. Для защиты своей программы полезно знать, как ваш заслон будут пытаться обойти. А кроме этого, на сайте выложены статьи по криптографии, руководства по SoftIce и Interactive Disassembler.
Ну и напоследок, как и в первый раз, коллекции программерского юмора. «25 вещей, которые говорят программисты» и небольшая подборка анекдотов о программистах доступны с http://softdev.omskreg.ru/humor/index.asp.
Решение задачи «Прострелите себе ногу» на разных языках, «Некоторые важные правила для настоящих программистов» и другие тексты есть на http://www.kulichki.com/ostrova/bera/CompHumor/prog.html. Некоторые тексты были известны еще в незапамятные времена, например, «Тест — какой вы программист?» датируется 1977 годом, но все равно любопытно.
«Программисты — что/кто это?». Вопрос, конечно, интересный. И ответ на него тоже — http://m4v.chat.ru/humor/0001.htm. Кстати, с http://m4v.chat.ru/humor/humor.htm можно увидеть и некоторые другие образцы программерского юмора: «Распорядок рабочего дня программиста», «Компьютерная застольная», «Как завести дома программиста»…