очень полезный материал снова о базовых вещах с памятью
вообще, я все сильней убеждаюсь, что любой программист — это впервую очередь не заложник своей платформы. И изучая иос не нужно забывать, что этот мир яблок не отдельный остров, который далек от компьютерных наук. А лишь абстракция над общим устройством компьютеров
https://youtu.be/TajLTcjBgIg
вообще, я все сильней убеждаюсь, что любой программист — это впервую очередь не заложник своей платформы. И изучая иос не нужно забывать, что этот мир яблок не отдельный остров, который далек от компьютерных наук. А лишь абстракция над общим устройством компьютеров
https://youtu.be/TajLTcjBgIg
YouTube
Лекция 3. Работа с памятью, выполнение программ (Программирование на C++, часть 1)
https://compscicenter.ru/
Лекция №3 в курсе "Программирование на C++, часть " (осень 2018).
Преподаватель курса: Валерий Михайлович Лесин
Лекция №3 в курсе "Программирование на C++, часть " (осень 2018).
Преподаватель курса: Валерий Михайлович Лесин
👍5💩1
я в авито.
с 16 мая работаю тут. прохожу онбординг и под сильнейшим впечатлением.
за свои 8 лет опыта в разных компаниях у меня не было того, что соответствует моим ожидания по процессам, технологиях. Как я уже говорил: "Авито — это частица Европы в России". Живой пример всех сомнений, что в россии не приживается демократия и аджайл мышление.
Живой пример многих реальностей, кому многим кажутся недостижимыми фантазиями. Я дико впечатлен многими вещами, описывать которые не хватит времени. Но скину базовые вещи, на котором держится многое — это принципы.
с 16 мая работаю тут. прохожу онбординг и под сильнейшим впечатлением.
за свои 8 лет опыта в разных компаниях у меня не было того, что соответствует моим ожидания по процессам, технологиях. Как я уже говорил: "Авито — это частица Европы в России". Живой пример всех сомнений, что в россии не приживается демократия и аджайл мышление.
Живой пример многих реальностей, кому многим кажутся недостижимыми фантазиями. Я дико впечатлен многими вещами, описывать которые не хватит времени. Но скину базовые вещи, на котором держится многое — это принципы.
👍18💩3🔥2
Bloomberg: Apple показала AR/VR-гарнитуру на последнем совете директоров
– Члена СД представили новую гарнитуру смешанной реальности
– AR/VR-гарнитуру показали составу из 8 независимых директоров
– Также Apple направила больше ресурсов на разработку rOS
– Предполагается, что так может называться ОС для гарнитуры
– Дебют нового продукта может состояться в ближайшие месяцы
– Старт продаж нового устройства запланирован на 2023 год
– На бизнес по продаже девайсов приходится 80% выручки Apple
– Члена СД представили новую гарнитуру смешанной реальности
– AR/VR-гарнитуру показали составу из 8 независимых директоров
– Также Apple направила больше ресурсов на разработку rOS
– Предполагается, что так может называться ОС для гарнитуры
– Дебют нового продукта может состояться в ближайшие месяцы
– Старт продаж нового устройства запланирован на 2023 год
– На бизнес по продаже девайсов приходится 80% выручки Apple
Bloomberg.com
Apple Shows AR/VR Headset to Board in Sign of Progress on Key Project
Apple Inc. executives previewed its upcoming mixed-reality headset to the company’s board last week, indicating that development of the device has reached an advanced stage, according to people with knowledge of the matter.
🔥6👍1
Многопоточность: Процесс и Поток
Многопоточка входит в блок обязательных вопросов. По мне он самый сложный из всех. Я сам могу путаться. Сейчас подтягиваю и углубляю знания. Начну с общей теории и перейду в глубь.
И начнем с самой базы.
Process выполняет действия, указанные в памяти программы. ОС помогает создавать, планировать и завершать процессы, используемые процессором.
Thread — небольшой фрагмент процесса. Процесс может иметь несколько потоков, и все они выполняются одновременно.
Ключевые отличия:
- Процесс — это выполнение программы
- Поток — это часть процесса.
- Процессы не легковесные, тогда как потоки легки.
- Для создания и завершения процесса нужно больше времени, а для потока — меньше.
- Процессу требуется больше времени для переключения контекста
- Процессы изолированы и не делятся данными между собой, а потоки делятся
- Потоки совместно используют инструкции, глобальные области и области кучи. Однако у него есть свой регистр и стек.
Многопоточка входит в блок обязательных вопросов. По мне он самый сложный из всех. Я сам могу путаться. Сейчас подтягиваю и углубляю знания. Начну с общей теории и перейду в глубь.
И начнем с самой базы.
Process выполняет действия, указанные в памяти программы. ОС помогает создавать, планировать и завершать процессы, используемые процессором.
Thread — небольшой фрагмент процесса. Процесс может иметь несколько потоков, и все они выполняются одновременно.
Ключевые отличия:
- Процесс — это выполнение программы
- Поток — это часть процесса.
- Процессы не легковесные, тогда как потоки легки.
- Для создания и завершения процесса нужно больше времени, а для потока — меньше.
- Процессу требуется больше времени для переключения контекста
- Процессы изолированы и не делятся данными между собой, а потоки делятся
- Потоки совместно используют инструкции, глобальные области и области кучи. Однако у него есть свой регистр и стек.
🔥15
Многопоточность: Конкурентность и Параллелизм
Мы уже знаем о процессе и потоке.
Процесс выделяется на одно ядро, а поток — это маленькие фрагменты нашего процесса
Но как назвать мультизадачность и мультипоточность? Ответ — Конкурентность и Параллелизм. Их часто путаем между собой, поэтому стоит определиться.
Конкурентность - это возможность разбивать алгоритм или компьютерную программу на отдельные блоки, которые могут выполняться независимо и коммуницировать между собой. Конкурентность может быть на одном ядре и будет казаться, что все выполняется одновременно.
Представим что вы пишите код и слушаете музыку, работая на одноядерном процессоре. На уровне операционной системы, эти задачи разбиваются на отдельные блоки, которые выполняются процессором по очереди, а переключение между этими блоками происходит настолько быстро, что создается впечатление, будь-то эти процессы выполняются одновременно. Однако это не так.
Конкурентность - это способность компьютера справляться с множеством задач одновременно, в то время как параллелизм - способность компьютера выполнять несколько задач одновременно. Это про то, как мы структурируем логику выполнения программы, как мы делим ее на логические блоки, которые могут выполняться параллельно или поочередно.
Параллелизм — это одновременное выполнение разных частей одной задачи. Параллелизм требует многоядерный процессор. Многоядерный процессор способен обрабатывать несколько инструкций в единицу времени, по одной инструкции на ядро. Соответственно, многоядерные процессоры умеют выполнять несколько задач одновременно, за счет чего достигается параллелизм.
https://www.youtube.com/watch?v=oV9rvDllKEg
Мы уже знаем о процессе и потоке.
Процесс выделяется на одно ядро, а поток — это маленькие фрагменты нашего процесса
Но как назвать мультизадачность и мультипоточность? Ответ — Конкурентность и Параллелизм. Их часто путаем между собой, поэтому стоит определиться.
Конкурентность - это возможность разбивать алгоритм или компьютерную программу на отдельные блоки, которые могут выполняться независимо и коммуницировать между собой. Конкурентность может быть на одном ядре и будет казаться, что все выполняется одновременно.
Представим что вы пишите код и слушаете музыку, работая на одноядерном процессоре. На уровне операционной системы, эти задачи разбиваются на отдельные блоки, которые выполняются процессором по очереди, а переключение между этими блоками происходит настолько быстро, что создается впечатление, будь-то эти процессы выполняются одновременно. Однако это не так.
Конкурентность - это способность компьютера справляться с множеством задач одновременно, в то время как параллелизм - способность компьютера выполнять несколько задач одновременно. Это про то, как мы структурируем логику выполнения программы, как мы делим ее на логические блоки, которые могут выполняться параллельно или поочередно.
Параллелизм — это одновременное выполнение разных частей одной задачи. Параллелизм требует многоядерный процессор. Многоядерный процессор способен обрабатывать несколько инструкций в единицу времени, по одной инструкции на ядро. Соответственно, многоядерные процессоры умеют выполнять несколько задач одновременно, за счет чего достигается параллелизм.
https://www.youtube.com/watch?v=oV9rvDllKEg
YouTube
Concurrency is not Parallelism by Rob Pike
Slides:
https://talks.golang.org/2012/waza.slide
https://talks.golang.org/2012/waza.slide
🔥8
Что выведется в консоли?
Anonymous Quiz
7%
200002
2%
20002
10%
200000
11%
0
56%
Ответ всегда будет разный
15%
Будет ошибка
🤔6😁5💩5
Самый распространенный вопрос от новичков: "А должен ли я учить swiftUI?".
Очевидный спойлер: Нам нужно учить и то, и другое
https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
Очевидный спойлер: Нам нужно учить и то, и другое
https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
Hacking with Swift
Answering the big question: should you learn SwiftUI, UIKit, or both? - a free SwiftUI by Example tutorial
Learn Swift coding for iOS with these free tutorials
👍1
Проблемы многопоточки: Race Condition vs Data Race
Как все знают многопоточка нужна для ускорения задач и их фрагментов на устройствах. Но все не так просто и любой инструмент дает свои проблемы. Выше, в опросе, мы уже столкнулись с гонкой.
Race condition и data race — две разные проблемы многопоточности, которые часто путают.
Эти проблемы очень похожи, но есть различия:
Race Condition — это недостаток, возникающий, когда время или порядок событий влияют на правильность программы.
Data Race — это состояние когда разные потоки обращаются к одной ячейке памяти без какой-либо синхронизации и как минимум один из потоков осуществляет запись.
Как все знают многопоточка нужна для ускорения задач и их фрагментов на устройствах. Но все не так просто и любой инструмент дает свои проблемы. Выше, в опросе, мы уже столкнулись с гонкой.
Race condition и data race — две разные проблемы многопоточности, которые часто путают.
Эти проблемы очень похожи, но есть различия:
Race Condition — это недостаток, возникающий, когда время или порядок событий влияют на правильность программы.
Data Race — это состояние когда разные потоки обращаются к одной ячейке памяти без какой-либо синхронизации и как минимум один из потоков осуществляет запись.
👍11
Примитивы синхронизации: NSLock, NSRecursiveLock, NSCondition
Для решения проблемы синхронизации данных в iOS есть множество решений. Начнем с базовых типов.
NSLock
Когда поток пытается заблокировать объект возможно два варианта, поток либо сможет это сделать и продолжит работу, либо будет ожидать пока другой поток, успевший раньше заблокировать объект, не вызовет unlock() тем самым освободив блокировку.
NSLock и другие блокировки Foundation несправедливы, в том смысле, что когда несколько потоков ожидает освобождения объекта блокировки, они не получат его в том порядке в каком они пытались наложить блокировку. При большом количестве потоков это может служить проблемой, когда один из потоков никогда не получит доступ в положенное время.
Для решения проблемы синхронизации данных в iOS есть множество решений. Начнем с базовых типов.
NSLock
Когда поток пытается заблокировать объект возможно два варианта, поток либо сможет это сделать и продолжит работу, либо будет ожидать пока другой поток, успевший раньше заблокировать объект, не вызовет unlock() тем самым освободив блокировку.
NSLock и другие блокировки Foundation несправедливы, в том смысле, что когда несколько потоков ожидает освобождения объекта блокировки, они не получат его в том порядке в каком они пытались наложить блокировку. При большом количестве потоков это может служить проблемой, когда один из потоков никогда не получит доступ в положенное время.
🔥5