Подумайте про структури даних
після оплати (24/7)
(для всіх пристроїв)
(в т.ч. для Apple та Android)
Структури даних і алгоритми є одними з найважливіших винаходів за останні 50 років, і це фундаментальні інструменти, які повинні знати розробники програмного забезпечення. Але, на мій погляд, більшість книжок на ці теми є надто теоретичними, надто великими та надто «знизу вгору»: надто теоретичні. Математичний аналіз алгоритмів базується на спрощених припущеннях, які обмежують його корисність на практиці. Багато презентацій на цю тему замовчують спрощення та зосереджуються на математиці. У цій книзі я представляю найбільш практичну частину цього матеріалу та пропускаю або зменшую акцент на решті. Занадто великий. Більшість книг на ці теми мають щонайменше 500 сторінок, а деякі – понад 1000. Зосереджуючись на темах, які, на мою думку, є найбільш корисно для розробників програмного забезпечення, я зберіг цю книгу менше 150 сторінок. Занадто «знизу вгору». Багато книг про структури даних зосереджені на тому, як працюють структури даних (реалізації), менше про те, як їх використовувати (інтерфейси). У цій книзі я йду «зверху вниз», починаючи з інтерфейсів. Читачі вчаться використовувати структури в Java Collections Framework, перш ніж вникати в подробиці їх роботи. Нарешті, деякі книги подають цей матеріал поза контекстом і без мотивації: це просто одна клята структура даних за одною! Я намагаюся оживити це, організувавши теми навколо програми — веб-пошуку — яка широко використовує структури даних і сама по собі є цікавою та важливою темою. Ця програма мотивує деякі теми, які зазвичай не висвітлюються у вступі — клас структур даних, включаючи постійні структури даних із Redis. Я приймав важкі рішення щодо того, що виключити, але я пішов на деякі компроміси. Я включаю кілька тем, які більшість читачів ніколи не використовуватиме, але які вони, можливо, будуть знати, можливо, під час технічної інтерв’ю. Щодо цих тем я представляю як загальноприйняту думку, так і свої причини скептизму. Ця книга також представляє основні аспекти практики розробки програмного забезпечення, включаючи контроль версій і модульне тестування. Більшість розділів містять вправи, які дозволяють читачам застосувати те, що вони навчилися. Кожна вправа передбачає автоматичні тести, які перевіряють рішення. І для більшості вправ я представляю своє рішення на початку наступного розділу.
Характеристики
- Мова
- Англійська