Начать бесплатный период
Searching...
SoBrief
Русский
EnglishEnglish
EspañolSpanish
简体中文Chinese
繁體中文Chinese (Traditional)
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Алгоритмы + структуры данных = программы

Алгоритмы + структуры данных = программы

Никлаус Вирт 1975 366 стр.
4.24
207 оценок
Слушать
Попробуйте полный доступ на 3 дня
Откройте прослушивание и многое другое!
Продолжить

Ключевые идеи

1. Управление памятью: Основа программирования

Каждый цифровой компьютер, будь то размером с комнату или карманный, состоит из тех же трех функциональных частей: ЦПУ = Центральный процессор (микропроцессор, GPU и т.д.), В/В = Ввод/Вывод, Основная память.

Основы распределения памяти. Современные языки программирования абстрагируют управление памятью, предоставляя две основные области: Стек и Куча. Стек управляет локальными переменными и вызовами функций, в то время как Куча обрабатывает динамическое распределение памяти. Эта абстракция упрощает программирование, но не устраняет необходимость понимания концепций памяти.

Распространенные проблемы с памятью. Программисты должны быть осведомлены о возможных проблемах:

  • Переполнение стека (бесконечная рекурсия)
  • Повреждение кучи
  • Утечки памяти
  • Невозможность обнаружения ошибок распределения
  • Исчерпание массивов фиксированного размера

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

2. Объектно-ориентированное программирование: Инкапсуляция данных и поведения

"Объект" для наших целей — это самодокументирующийся участок памяти, выделенный из кучи. Он содержит не только пространство для индивидуальных значений ("свойств"), которые могут потребоваться для хранения, но и дополнительные описательные данные ("метаданные"), которые служат для непосредственной ассоциации объекта с процедурным кодом ("методами"), предназначенным для работы с ним.

Объединение данных и поведения. Объектно-ориентированное программирование (ООП) сочетает структуры данных с алгоритмами, которые их обрабатывают. Эта парадигма позволяет более интуитивно и модульно организовывать код, способствуя его повторному использованию и упрощению обслуживания.

Ключевые концепции ООП:

  • Инкапсуляция: Сокрытие деталей реализации
  • Наследование: Создание иерархий связанных объектов
  • Полиморфизм: Позволяет объектам быть обработанными как экземпляры их родительского класса

ООП поощряет мышление в терминах реальных сущностей и их взаимоотношений, что упрощает моделирование и понимание сложных систем. Однако важно тщательно проектировать иерархии классов, чтобы избежать чрезмерно жестких структур, которые трудно модифицировать при изменении требований.

3. SQL: Язык баз данных

SQL позволяет вам указать, какие данные вы хотите получить. Задача движка базы данных — на лету разработать план для получения этих ответов и затем выполнить его.

Декларативные запросы. Сила SQL заключается в его декларативной природе. Программисты указывают желаемые результаты, а не то, как их получить. Эта абстракция позволяет движкам баз данных оптимизировать выполнение запросов на основе таких факторов, как размеры таблиц и доступные индексы.

Ключевые концепции SQL:

  • Таблицы, строки и столбцы
  • Соединения (внутренние, левые внешние, правые внешние)
  • Условия WHERE для фильтрации
  • Группировка GROUP BY для агрегации
  • Сортировка ORDER BY

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

4. Точное специфицирование: Превращение требований в код

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

Планирование перед кодированием. Переход к кодированию без четкого плана часто приводит к неэффективному и трудному для обслуживания программному обеспечению. Вместо этого стоит потратить время на тщательный анализ требований и проектирование архитектуры системы перед написанием кода.

Эффективный процесс спецификации:

  1. Сбор и уточнение бизнес-требований
  2. Перевод бизнес-потребностей в технические спецификации
  3. Проектирование общей архитектуры системы
  4. Планирование на случай непредвиденных обстоятельств и крайних случаев
  5. Разделение проекта на управляемые задачи

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

5. Многоуровневая архитектура: Разработка фронтенда и бэкенда

Все реальные производственные приложения имеют "многоуровневую" архитектуру. Они включают взаимодействие "машины в руках клиента" (или на его столе), подключающейся к некоторым серверам, которые отвечают за выполнение всей или части работы.

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

Ключевые компоненты:

  • Фронтенд: Пользовательский интерфейс и клиентская логика
  • Бэкенд: Серверная обработка и взаимодействие с базой данных
  • API: Интерфейсы для связи между уровнями

Понимание таких протоколов, как HTTP, и форматов данных, как JSON, важно для реализации эффективной связи между уровнями. Технологии, такие как AJAX, позволяют создавать динамичные и отзывчивые пользовательские интерфейсы, обеспечивая асинхронное взаимодействие с сервером.

6. Фреймворки: Строительные блоки для эффективной разработки

Фреймворки также используются для создания пользовательских интерфейсов фронтенда. Некоторые наборы инструментов используются для сглаживания различий между веб-браузерами. Другие сглаживают различия между различными типами (и марками) мобильных устройств.

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

Преимущества и соображения:

  • Быстрая разработка и прототипирование
  • Единая структура и практики кодирования
  • Поддержка сообщества и документация
  • Потенциальная зависимость или избыточность функций

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

7. Прагматичная отладка: Предотвращение и выявление дефектов

Первый принцип, который я сейчас предложу, заключается в том, что: "само программное обеспечение на самом деле является единственной стороной, которая действительно может обнаружить дефект в себе."

Проактивное обнаружение ошибок. Эффективная отладка начинается с написания кода, который может выявлять собственные ошибки. Этот подход смещает фокус с реактивной отладки на проактивное предотвращение ошибок и их раннее обнаружение.

Стратегии отладки:

  • Используйте утверждения для проверки предположений
  • Реализуйте комплексную обработку ошибок
  • Логируйте информативные сообщения о ходе выполнения
  • Пишите "подозрительный" код, который проверяет невозможные условия
  • Используйте обработку исключений для неожиданных сценариев

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

Обновлено:

Report Issue

Обзор отзывов

4.24 из 5
На основе 207 оценок с Goodreads и Amazon.

Алгоритмы + структуры данных = программы считается классикой в области компьютерных наук. Читатели ценят его вечное содержание, ясные объяснения структур данных и алгоритмов, а также его влияние на последующие работы. Многие считают эту книгу обязательной для прочтения программистами. Подход книги к пошаговому уточнению и акцент на взаимосвязь между алгоритмами и структурами данных особенно хвалят. Некоторые читатели отмечают устаревший язык и примеры, но все равно находят содержание весьма актуальным и хорошо представленным. В целом, это фундаментальный текст, который продолжает предлагать ценные инсайты современным программистам.

Your rating:
4.56
255 оценок
Want to read the full book?

Об авторе

Никлаус Вирт - выдающийся ученый в области компьютерных наук, наиболее известный созданием языка программирования Паскаль. Он внес значительный вклад в инженерное программное обеспечение и разработку языков программирования. Вирт разработал несколько влиятельных языков программирования и написал важные книги по разработке программного обеспечения. Его работа подчеркивала простоту, ясность и эффективность в программировании. В 1984 году он получил премию Тьюринга за свои инновационные разработки языков. Подход Вирта к обучению компьютерным наукам оказал долговременное влияние на эту область. Его акцент на структурированном программировании и важности алгоритмов и структур данных сформировал то, как компьютерные науки преподаются и практикуются по всему миру. Идеи Вирта продолжают влиять на современные парадигмы программирования и разработку языков.

Follow
Слушать
Now playing
Алгоритмы + структуры данных = программы
0:00
-0:00
Now playing
Алгоритмы + структуры данных = программы
0:00
-0:00
1x
Queue
Home
Swipe
Library
Get App
Try Full Access for 3 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
Read unlimited summaries. Free users get 3 per month
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Сегодня: мгновенный доступ
Слушайте полные саммари 26 000+ книг. Это более 12 000 часов аудио!
День 2: напоминание о пробном периоде
Мы отправим вам уведомление об окончании пробного периода.
День 3: начало подписки
Оплата будет списана Jun 14,
отмените в любой момент до этой даты.
Consume 2.8× More Books
2.8× more books Listening Reading
Our users love us
600,000+ readers
Trustpilot Rating
TrustPilot
4.6 Excellent
This site is a total game-changer. I've been flying through book summaries like never before. Highly, highly recommend.
— Dave G
Worth my money and time, and really well made. I've never seen this quality of summaries on other websites. Very helpful!
— Em
Highly recommended!! Fantastic service. Perfect for those that want a little more than a teaser but not all the intricate details of a full audio book.
— Greg M
Save 62%
Yearly
$119.88 $44.99/year/yr
$3.75/mo
Monthly
$9.99/mo
Start a 3-Day Free Trial
3 days free, then $44.99/year. Cancel anytime.
Unlock a world of fiction & nonfiction books
26,000+ books for the price of 2 books
Read any book in 10 minutes
Discover new books like Tinder
Request any book if it's not summarized
Read more books than anyone you know
#1 app for book lovers
Lifelike & immersive summaries
30-day money-back guarantee
Download summaries in EPUBs or PDFs
Cancel anytime in a few clicks
Scanner
Find a barcode to scan

We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel
Settings
General
Widget
Loading...
We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel