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

Нажмите для полного просмотра!
Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №1Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №2Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №3Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №4Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №5Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №6Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №7Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №8Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №9Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №10Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №11Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №12Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №13Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №14Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №15Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №16Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №17Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №18Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №19Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №20Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №21Протекающие абстракции, Или зачем современному программисту знать все эти низкоуровневые детали, слайд №22

Содержание

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

Слайды и текст этой презентации


Слайд 1





Протекающие абстракции
Или
зачем современному программисту знать все эти низкоуровневые детали
Описание слайда:
Протекающие абстракции Или зачем современному программисту знать все эти низкоуровневые детали

Слайд 2





Что пишет типичный современный программист
Описание слайда:
Что пишет типичный современный программист

Слайд 3





Что пишет типичный современный программист
Описание слайда:
Что пишет типичный современный программист

Слайд 4





А то и еще хуже
Описание слайда:
А то и еще хуже

Слайд 5





На самом деле все еще хуже
Описание слайда:
На самом деле все еще хуже

Слайд 6





И как с этим теперь жить?
«Я лучше буду знать что-то одно, но буду знать это хорошо»
«Пусть за меня думает компьютер, я буду решать только высокоуровневые вопросы»
«Преждевременная оптимизация – корень всех зол»
«Будет тормозить – будем думать»
Описание слайда:
И как с этим теперь жить? «Я лучше буду знать что-то одно, но буду знать это хорошо» «Пусть за меня думает компьютер, я буду решать только высокоуровневые вопросы» «Преждевременная оптимизация – корень всех зол» «Будет тормозить – будем думать»

Слайд 7





Протекающие абстракции
Leaky abstraction © Joel Spolsky, http://www.joelonsoftware.com/articles/LeakyAbstractions.html
Что же может протечь?
Проблемы с безопасностью
Проблемы с производительностью
Ошибки
Документированные особенности реализации
Описание слайда:
Протекающие абстракции Leaky abstraction © Joel Spolsky, http://www.joelonsoftware.com/articles/LeakyAbstractions.html Что же может протечь? Проблемы с безопасностью Проблемы с производительностью Ошибки Документированные особенности реализации

Слайд 8





Например
Transmission Control Protocol
Абстракция надежного соединения через ненадежную сеть
Реальная сеть теряет пакеты или доставляет их не по порядку
TCP имитирует надежное соединение
Описание слайда:
Например Transmission Control Protocol Абстракция надежного соединения через ненадежную сеть Реальная сеть теряет пакеты или доставляет их не по порядку TCP имитирует надежное соединение

Слайд 9





Но
TCP использует подтверждения, таймауты и повторную передачу
TCP рвет соединение при трех последовательных таймаутах
TCP гарантирует доставку, но не гарантирует время доставки
Описание слайда:
Но TCP использует подтверждения, таймауты и повторную передачу TCP рвет соединение при трех последовательных таймаутах TCP гарантирует доставку, но не гарантирует время доставки

Слайд 10





Другой пример
Java/C# используют сборку мусора
Полезная абстракция, которая устраняет висячие ссылки и утечки памяти
Снижение стоимости разработки от 2 до 5 раз
Описание слайда:
Другой пример Java/C# используют сборку мусора Полезная абстракция, которая устраняет висячие ссылки и утечки памяти Снижение стоимости разработки от 2 до 5 раз

Слайд 11





Но
Если вы не думаете, куда (а также, когда и почему) у вас деваются объекты, вы будете делать ошибки.  
В С++ и C# это будут разные ошибки.
Кстати, в Java/C# утечки памяти очень даже бывают…
Описание слайда:
Но Если вы не думаете, куда (а также, когда и почему) у вас деваются объекты, вы будете делать ошибки. В С++ и C# это будут разные ошибки. Кстати, в Java/C# утечки памяти очень даже бывают…

Слайд 12





Exception security
C++ style
RAII (Resource allocation is initalization)
Деструкторы зовутся в конце блока
Завернуть выделяемый ресурс в объект с конструктором/деструктором, и исключения вам не страшны
Описание слайда:
Exception security C++ style RAII (Resource allocation is initalization) Деструкторы зовутся в конце блока Завернуть выделяемый ресурс в объект с конструктором/деструктором, и исключения вам не страшны

Слайд 13





Пример из жизни
В Android есть две кучи
Managed heap (Dalvik)
Native heap (OpenGL/BMP)
Объектам нативной кучи надо явно звать recycle.
Куча приколов
Нативная куча кончилась, вы зовете gc, а толку нет
Утечки памяти в нативной куче
Висячие ссылки в управляемой куче
И прочие радости жизни
И все это в условиях жестко ограниченной памяти.
Описание слайда:
Пример из жизни В Android есть две кучи Managed heap (Dalvik) Native heap (OpenGL/BMP) Объектам нативной кучи надо явно звать recycle. Куча приколов Нативная куча кончилась, вы зовете gc, а толку нет Утечки памяти в нативной куче Висячие ссылки в управляемой куче И прочие радости жизни И все это в условиях жестко ограниченной памяти.

Слайд 14





Пример из жизни (самый противный вариант)
Класс-обертка вокруг битмапа в нативной куче
Битмап большой, обертка маленькая
Насоздавали битмапов, нативная куча кончилась, а управляемая куча почти не занята. 
Сборка мусора не проходит (не видит, чего собирать-то)
Описание слайда:
Пример из жизни (самый противный вариант) Класс-обертка вокруг битмапа в нативной куче Битмап большой, обертка маленькая Насоздавали битмапов, нативная куча кончилась, а управляемая куча почти не занята. Сборка мусора не проходит (не видит, чего собирать-то)

Слайд 15





Пример из жизни (продолжение)
Ну давайте везде звать recycle()?
http://masterden.livejournal.com/50326.html
[]
Поэтому при работе с битмапами постоянно ставишь recycle. А вот мы и подобрались к объяснению баги, описанной в начале. Даже в доках от гугла есть пример отдачи картинки в OpenGL, где после трансфера её туда битмап "ресайклится". Ага! У меня в коде было тоже самое! Но тот самый злосчастный экран отличалcя от остальных тем, что битмапы грузил не с SD-карты, а из ресурсов прилады! А они (ресурсы) грузятся один раз на всё приложение. И, будучи поресайкленной, битмапа из ресурсов оставалась таковой до рестарта приложения 
[]
Описание слайда:
Пример из жизни (продолжение) Ну давайте везде звать recycle()? http://masterden.livejournal.com/50326.html [] Поэтому при работе с битмапами постоянно ставишь recycle. А вот мы и подобрались к объяснению баги, описанной в начале. Даже в доках от гугла есть пример отдачи картинки в OpenGL, где после трансфера её туда битмап "ресайклится". Ага! У меня в коде было тоже самое! Но тот самый злосчастный экран отличалcя от остальных тем, что битмапы грузил не с SD-карты, а из ресурсов прилады! А они (ресурсы) грузятся один раз на всё приложение. И, будучи поресайкленной, битмапа из ресурсов оставалась таковой до рестарта приложения []

Слайд 16





На самом деле все еще хуже
Приколы вылезают не только при явном освобождении памяти
Приколы могут вылезать если вы используете два разных сборщика мусора
Например:
CLR (.Net) использует mark’n’sweep
COM (legacy VB) использует reference count
Описание слайда:
На самом деле все еще хуже Приколы вылезают не только при явном освобождении памяти Приколы могут вылезать если вы используете два разных сборщика мусора Например: CLR (.Net) использует mark’n’sweep COM (legacy VB) использует reference count

Слайд 17





В чем разница?
Mark’n’sweep
Сборка мусора дорогая операция
Зовется только от горя (когда память кончилась)
Refcount
Сборка мусора происходит «сама», звать ее не надо
Никаких хуков на «что-то мы сожрали много памяти» нету
Тот же сценарий: маленькая обертка в mark’n’sweep куче вокруг большого refcount объекта
Refcount куча разрослась до хрен-знает-скольколлиона байт, а mark’n’sweep про это ни сном, ни духом
Описание слайда:
В чем разница? Mark’n’sweep Сборка мусора дорогая операция Зовется только от горя (когда память кончилась) Refcount Сборка мусора происходит «сама», звать ее не надо Никаких хуков на «что-то мы сожрали много памяти» нету Тот же сценарий: маленькая обертка в mark’n’sweep куче вокруг большого refcount объекта Refcount куча разрослась до хрен-знает-скольколлиона байт, а mark’n’sweep про это ни сном, ни духом

Слайд 18





Безопасность
Описание слайда:
Безопасность

Слайд 19





Dynamic SQL, говорите?
Описание слайда:
Dynamic SQL, говорите?

Слайд 20





Хорошие практики
Ну и что? – скажут многие
Не надо знать низкоуровневые детали и не надо знать, что может протечь
Надо знать хорошие практики, как бороться с протечками
Описание слайда:
Хорошие практики Ну и что? – скажут многие Не надо знать низкоуровневые детали и не надо знать, что может протечь Надо знать хорошие практики, как бороться с протечками

Слайд 21





Хорошие практики не панацея
Хорошая практика: нельзя совать пальцы в розетку
Описание слайда:
Хорошие практики не панацея Хорошая практика: нельзя совать пальцы в розетку

Слайд 22





Во что это может вылиться
Описание слайда:
Во что это может вылиться



Похожие презентации
Mypresentation.ru
Загрузить презентацию