Если вдруг решите написать об этом статью - я бы почитал с удовольствием.
Это было на предыдущей работе, сейчас уже техническую часть не собрать. А "общие рассуждения" - их в интернете и без меня полно.
Я бы в ваш список добавил еще дедлоки в распределенных системах.
Да согласен. Раз уж зашла об этом речь (проверка высокоуровнего состояния на отсутствие блокировок) - вы не знаете ПО, для представления \ верификации небольших протоколов и\или state-machine (на 10-20 переменных состояния)?
Замечу, что цикл в Resource Allocation Graph => WFG создаётся не только на mutex но и на других способах синхронизации.
1 Чтобы предотвратить deadlock надо учесть ещё: 1.а) другие примитивы синхронизации 1.б) блокирующие системные вызовы (мы, к стати ловили такой deadlock - блокирующий системный вызов в потоке A, завершению которого мешал другой поток B захвативший ресурс и уснувший на mutex захваченном потоком A).
2. Есть ещё livelock и livelock-like проблема: у вас может быть ещё и самописная синхронизация, типа активного ожидания события. Тут вообще сложно и 8 лет назад были только частные решения: 2.а) Если такое ожидание не завязано на бизнес-логику (а только на техническую, изолируемую часть) - называете эту функцию "ожиданием на примитиве" и включаете её в вашу модель (у вас - детекция циклов в WFG), с соответствующими обёртками. 2.б) Если такое ожидание завязано на всю вашу безнес-логику - то это уже другая высокоуровневая модель синхронизации по избеганию livelock ну и соответственно тема другой статьи (цикла статей) на хабре.
Раскладка Qwerty создавалась с прицелом минимизировать коллизии в центре клавиатуры. Это было актуально для пишущих машинок. Сегодня это же актуально для смартфонов, если хочешь что-то быстро написать и начинаешь писать двумя руками. Поэтому иметь две раскладки: для компьютеров и для смартфонов вряд ли разумно.
Ну и опять же какой там эффект при переходе на дворак? Я думаю o-малое (если не чистый 0) по сравнению qwerty -> слепая десятипальцевая печать на qwerty.
У меня в клавогонках при желании ускориться нагрузка была на "держать в голове look ahead буфер" чтобы не печатать с экрана, а так-то руки могли ещё прибавить.
О_О отличная статья. Прям хорошо разъяснила почему зачастую глядя на (clean code или "clean code") хочется его выкинуть весь и написать как в ссылке на репозиторий.
Чтобы все действия в одном месте, а не замаскированные размазывания преобразований по 15 функциям.
В основном это гуглится по lock global order (+ какие-то дополнительные условия, поскольку сам lock global order - это слишком строгая и весьма простая модель). Когда занимался этим были и другие (кроме lock global order) модели, но нам не подошли.
ПС Вот ссылка (судя по абстракту примерно то, статью не читал): делают глобальный порядок на блокировках и доказывают что благодаря этому всё хорошо.
На этапе статического анализа исходного кода или компиляции.
В рантайме.
Есть ещё такой "промежуточный" способ, как: deadlock-free model + runtime проверка соответствия программы модели (разумеется имеет смысл если проверка имеет преимущество перед поиском циклов в RAG \ WFG).
Вкладываться - я имею в виду "честно вкладываться, а не спекулировать (*)" надо на длительный срок в "несколько циклов". В этом случае вы получаете что-то около "среднего дохода по экономике" - может быть 2% может быть 5% годовых.
*) Почему спекулировать это плохо? Потому, что на втором конце сделки (например если вы покупаете биток по 30к и надеетесь, что он отрастёт) всегда стоит другой агент, который рассчитал что биток и дальше будет падать. В среднем тенденция такая, что условные Джоны с Иванами в этой игре расстаются с деньгами, а JP Morgan и City Bank деньги получают.
Рискну предположить, что вы просто слишком хорошо знаете английский и не пробовали учить его по стихам \ песням (или это было в процессе другого обучения и давно в школе).
Песни (стихи не пробовал) это такое специальное подмножество языка, в котором: - рифма и ритм важнее грамотности - фразы применяются часто такие, которые в другой речи не употребляются (часто на или за границами приличия, а вы этого можете даже не понять)? - применяемые слова совсем не не репрезентативны по частотности (вам хочется выучить часто употребимые слова и не учить какие-нибудь canebrake) - произношение у носителей именно песен будет далёким от репрезентативного. Простые каналы "обзор игр" (не говоря уже о "научпопе") намного лучше по произношению чем песни.
Лично я помучался с выбором нормального для изучения исполнителя, выучил несколько песен Фрэнка Синатры, а когда его песни надоели - бросил.
Я за три года поднял с А1-А2 (в какой-то момент в моей области появилась очень хорошая ru-документация и я расслабился) до B1-B2. В этот момент скилл становится "самоподдерживающимся".
Что мне помогло: 1. Понимание, что "изучить язык" это не спринт, а марафон. - 1.а) с преподавателем "мотивированному взрослому" нужно 400часов + 400 часов домашних работ до нужного уровня (по презентации Стэнфордского универа); - 1.б) без преподавателя оценить сложно, но я бы оценивал в 1600 часов (учитывая, что часть из них будет "низкоэффективными", например в метро) При этом только с уровня B1-B2 (я бы назвал это b2 с ошибками когда вы много текстов понимаете, но знаете ещё мало слов, неуверенны с предлогами, оборотами...) язык начинает быть "самоподдерживающимся" знанием, до этого надо вкладываться.
2. Представлять что вам нужно: - знания - "грамматики" + словарный запас - умения - reading \ writing \ listening \ speaking - слушание и произношение - я бы выделил в отдельный скилл (во всяком случае когда я занялся этим отдельно это дало буст). вам нужны только умения, но без "нижележащего" уровня знаний не обойтись.
3. Примерные инструменты: Метро: duolingo(бесплатно) \ lingualeo (у них бывают хорошие скидки) по дороге "фоном" - в наушниках OxfordBookwarms / лёгкие аудио за компьютером - чтение книг на английском - слушание "сложных" аудио - гугление непонятных вопросов. - плагин-переводчик от lingualeo мне понравился возможностью повторять встреченные слова.
4. Набор инструментов 1, 2 годы -- слушать Oxford Bookwarms -- (с уровня 1, до предпоследнего) 1,2 годы -- lingualeo - грамматика; слова -- "неправильные глаголы" "фразовые глаголы" 1год ... -- рабочие мануалы / статьи (то, что по силам) 2,3 год -- duolingo (на нём нельзя научиться, но можно ДОУЧИТЬСЯ). 2,3,.... год - научпоп-литература. Советую именно её (советую: "basic economics"; "Guns, Germs, and Steel: The Fates of Human Societies") 3 год - подростковые фильмы, книги (ориентируйтесь на 12-14 лет, т.е. что-то типа Гарри Поттера). 1 год -- каналы на youtube: - english with rebecca - phonetic fanatic - хочу отдельно отметить этот канал, всё остальное +/- заменяемо, аналогов этому не видел. 2,3,... год -- каналы на youtube - milton fridman - robert sapolsky - Stanford university channel + MIT channel (note: TED talks мне вообще не понравились, но можно сюда).
Извините за вопрос - а что является ближайшей аналогией этого курса на coursera ?
Просто у меня есть общее недоверие к теме "системного мышления" в изложении отечественных инфлюенсеров (в первую очередь это Анатолий Левенчук). Недоверие связано с тем, что форма изложения С.М. очень "нетехническая" и подозрительно близка к изложению всяких псевдо-научных теорий.
обобщения, сравнительные характеристики и обзывательства в этой теме некорректны, субъективны и неизменно отдают клюквой :)
Давайте загуглим: what english accent easier to learn is rhotic english accent learn to learn is non-rhotic english accent easier to learn
Показательно: 1. Исследований, которые можно было бы выложить как "финальный аргумент"; 2. Большинство опросов/мнений что американский английский проще (подозреваю, что сравнивались GA vs RP); 3.а. Большинство опросов/мнений говорят, что /r/-full акценты проще для изучения; 3.б. за /r/-less акценты выступают японцы-корейцы, у которых по-видимому есть специфические трудности с произношением r с гласными;
Предварительные выводы: - американский вообще и /r/-full акценты в частности люди считают проще для изучения по опросам. - ваша сентенция про клюкву не только неуместна но и похоже неверна; как и вообще заявление что частные мнения необобщаемы.
1. Ну вот как-то так сложилось, что американцев понимают, а англичан менее (и я подозреваю потому, что они не считают важным быть понятными другим).
2.
по личному опыту (а мы тут делимся личным опытом), когда англичанин хочет, чтобы собеседник понял английский, у него это получится лучше, чем у носителя американского акцента или какого-нибудь осси.
exactly!
Собственно 1+2 я и назвал снобизмом. Вы так не считаете?
============================================= > В любом случае делать на них упор и надеяться, что когда-нибудь сможешь зазвучать "как британец" или "как американец", особенно самостоятельно, не стоит. То, что вы называете "особенностями" по-моему сложная (для русскоязычных) часть английского языка в навыках listening \ speaking. И эта, и без того сложная часть ещё и усложнена в британских акцентах.
В сравнении англичан с американцами (как сравнить англичан с другими странами без десятка примечаний я просто не знаю): у американцев получается говорить понятно для не-нэйтивов, а у англичан почему-то куда меньше. Не прикладывать усилия для того, чтобы тебя понимали (несмотря на то, что ты изначально в выгодном положении и прикладываешь к общению куда меньше усилий) - на мой взгляд ну такое себе.
По поводу британских акцентов: /r/-less (вроде это называется non-rhoticity) акценты просто сложны, т.к. из-за выпадения /r/ требуется различать (и воспроизводить) больше гласных звуков, что реально сложно (особенно самостоятельно - мы в топике про самостоятельное изучение языка) особенно в задней части IPA-chart.
duolingo крутой инструмент, но очень ограниченный.
Его лучшее применение, на мой взгляд: - полировка ошибок (когда ты уже что-то знаешь, но неточно) - изучение новых слов (вроде слово повторяется за тему около 20 раз) также "игровые механики" помогают поддерживать интерес (но лично у меня вот после 3х месяцев и 1 места в алмазной лиге интерес прямо пропал).
Во всём остальном он не очень хорош. Есть места, где он просто недоделан и можно лучше, а есть где просто лучше наверное не сделать.
Меня коллеги по работе понимают, а эппловый ввод текста нет. При этом я не знаю что сделать, чтобы он меня понимал нормально.
ПС При этом места непонимания очень сильно отличаются от русского, где непонимание беглой речи тоже есть, но оно не так критично и я точно знаю как его исправлять в случае необходимости
Спасибо статья хорошая. Из плюсов - достаточно полное рассмотрение с разъяснениями и примерами (наверное претендует на славу What Every Programmer Should Know About Memory). Из минусов - перевод (иногда только к середине абзаца понимал о какой именно известной речи идёт вещь).
ПС Про lock convoy не знал, но видел в одном проекте хак и теперь знаю, что против него: сначала крутится спинлок (с попыткой взять атомик) и только потом уход в системный вызов.
Разумеется если вы понимаете цели заказчика и вашей конторы (а они могут и не совпадать) - то вам куда проще работается, в смысле выбора конкретного технического решения из спектра возможных (это одна из самых сложных и часто "давлеющих" вещей - сделал 3 месяца назад формально правильно, но не подходяще под цели заказчика, сейчас переделываешь, да ещё и знаешь что ошибся ты).
С другой стороны если бизнес заказчиков людям совершенно неинтересен, то очень сложно в такой бизнес "вникать".
Это было на предыдущей работе, сейчас уже техническую часть не собрать. А "общие рассуждения" - их в интернете и без меня полно.
Да согласен.
Раз уж зашла об этом речь (проверка высокоуровнего состояния на отсутствие блокировок) - вы не знаете ПО, для представления \ верификации небольших протоколов и\или state-machine (на 10-20 переменных состояния)?
Замечу, что цикл в Resource Allocation Graph => WFG создаётся не только на mutex но и на других способах синхронизации.
1 Чтобы предотвратить deadlock надо учесть ещё:
1.а) другие примитивы синхронизации
1.б) блокирующие системные вызовы (мы, к стати ловили такой deadlock - блокирующий системный вызов в потоке A, завершению которого мешал другой поток B захвативший ресурс и уснувший на mutex захваченном потоком A).
2. Есть ещё livelock и livelock-like проблема: у вас может быть ещё и самописная синхронизация, типа активного ожидания события. Тут вообще сложно и 8 лет назад были только частные решения:
2.а) Если такое ожидание не завязано на бизнес-логику (а только на техническую, изолируемую часть) - называете эту функцию "ожиданием на примитиве" и включаете её в вашу модель (у вас - детекция циклов в WFG), с соответствующими обёртками.
2.б) Если такое ожидание завязано на всю вашу безнес-логику - то это уже другая высокоуровневая модель синхронизации по избеганию livelock ну и соответственно тема другой статьи (цикла статей) на хабре.
Раскладка Qwerty создавалась с прицелом минимизировать коллизии в центре клавиатуры. Это было актуально для пишущих машинок.
Сегодня это же актуально для смартфонов, если хочешь что-то быстро написать и начинаешь писать двумя руками. Поэтому иметь две раскладки: для компьютеров и для смартфонов вряд ли разумно.
Ну и опять же какой там эффект при переходе на дворак? Я думаю o-малое (если не чистый 0) по сравнению qwerty -> слепая десятипальцевая печать на qwerty.
У меня в клавогонках при желании ускориться нагрузка была на "держать в голове look ahead буфер" чтобы не печатать с экрана, а так-то руки могли ещё прибавить.
О_О отличная статья.
Прям хорошо разъяснила почему зачастую глядя на (clean code или "clean code") хочется его выкинуть весь и написать как в ссылке на репозиторий.
Чтобы все действия в одном месте, а не замаскированные размазывания преобразований по 15 функциям.
В основном это гуглится по lock global order (+ какие-то дополнительные условия, поскольку сам lock global order - это слишком строгая и весьма простая модель).
Когда занимался этим были и другие (кроме lock global order) модели, но нам не подошли.
ПС
Вот ссылка (судя по абстракту примерно то, статью не читал): делают глобальный порядок на блокировках и доказывают что благодаря этому всё хорошо.
https://link.springer.com/chapter/10.1007/978-3-642-11957-6_22
А вот перечислите, реально было бы интересно.
SICP, Code Complete, Clean Code, Design Patterns, Dragon Book - с ходу.
Остальное - либо не дотягивает, либо слишком технология-ориентировано, либо надо вспоминать.
На этапе статического анализа исходного кода или компиляции.
В рантайме.
Есть ещё такой "промежуточный" способ, как: deadlock-free model + runtime проверка соответствия программы модели (разумеется имеет смысл если проверка имеет преимущество перед поиском циклов в RAG \ WFG).
Вкладываться - я имею в виду "честно вкладываться, а не спекулировать (*)" надо на длительный срок в "несколько циклов".
В этом случае вы получаете что-то около "среднего дохода по экономике" - может быть 2% может быть 5% годовых.
*) Почему спекулировать это плохо? Потому, что на втором конце сделки (например если вы покупаете биток по 30к и надеетесь, что он отрастёт) всегда стоит другой агент, который рассчитал что биток и дальше будет падать.
В среднем тенденция такая, что условные Джоны с Иванами в этой игре расстаются с деньгами, а JP Morgan и City Bank деньги получают.
Рискну предположить, что вы просто слишком хорошо знаете английский и не пробовали учить его по стихам \ песням (или это было в процессе другого обучения и давно в школе).
Песни (стихи не пробовал) это такое специальное подмножество языка, в котором:
- рифма и ритм важнее грамотности
- фразы применяются часто такие, которые в другой речи не употребляются (часто на или за границами приличия, а вы этого можете даже не понять)?
- применяемые слова совсем не не репрезентативны по частотности (вам хочется выучить часто употребимые слова и не учить какие-нибудь canebrake)
- произношение у носителей именно песен будет далёким от репрезентативного. Простые каналы "обзор игр" (не говоря уже о "научпопе") намного лучше по произношению чем песни.
Лично я помучался с выбором нормального для изучения исполнителя, выучил несколько песен Фрэнка Синатры, а когда его песни надоели - бросил.
Я за три года поднял с А1-А2 (в какой-то момент в моей области появилась очень хорошая ru-документация и я расслабился) до B1-B2.
В этот момент скилл становится "самоподдерживающимся".
Что мне помогло:
1. Понимание, что "изучить язык" это не спринт, а марафон.
- 1.а) с преподавателем "мотивированному взрослому" нужно 400часов + 400 часов домашних работ до нужного уровня (по презентации Стэнфордского универа);
- 1.б) без преподавателя оценить сложно, но я бы оценивал в 1600 часов (учитывая, что часть из них будет "низкоэффективными", например в метро)
При этом только с уровня B1-B2 (я бы назвал это b2 с ошибками когда вы много текстов понимаете, но знаете ещё мало слов, неуверенны с предлогами, оборотами...) язык начинает быть "самоподдерживающимся" знанием, до этого надо вкладываться.
2. Представлять что вам нужно:
- знания - "грамматики" + словарный запас
- умения - reading \ writing \ listening \ speaking
- слушание и произношение - я бы выделил в отдельный скилл (во всяком случае когда я занялся этим отдельно это дало буст).
вам нужны только умения, но без "нижележащего" уровня знаний не обойтись.
3. Примерные инструменты:
Метро: duolingo(бесплатно) \ lingualeo (у них бывают хорошие скидки)
по дороге "фоном" - в наушниках OxfordBookwarms / лёгкие аудио
за компьютером
- чтение книг на английском
- слушание "сложных" аудио
- гугление непонятных вопросов.
- плагин-переводчик от lingualeo мне понравился возможностью повторять встреченные слова.
4. Набор инструментов
1, 2 годы -- слушать Oxford Bookwarms -- (с уровня 1, до предпоследнего)
1,2 годы -- lingualeo - грамматика; слова -- "неправильные глаголы" "фразовые глаголы"
1год ... -- рабочие мануалы / статьи (то, что по силам)
2,3 год -- duolingo (на нём нельзя научиться, но можно ДОУЧИТЬСЯ).
2,3,.... год - научпоп-литература. Советую именно её (советую: "basic economics"; "Guns, Germs, and Steel: The Fates of Human Societies")
3 год - подростковые фильмы, книги (ориентируйтесь на 12-14 лет, т.е. что-то типа Гарри Поттера).
1 год -- каналы на youtube:
- english with rebecca
- phonetic fanatic - хочу отдельно отметить этот канал, всё остальное +/- заменяемо, аналогов этому не видел.
2,3,... год -- каналы на youtube
- milton fridman
- robert sapolsky
- Stanford university channel + MIT channel (note: TED talks мне вообще не понравились, но можно сюда).
Извините, после предыдущего комментария я сомневаюсь, что ваше мнение как эксперта по этому вопросу имеет импакт отличный от 0.
Извините за вопрос - а что является ближайшей аналогией этого курса на coursera ?
Просто у меня есть общее недоверие к теме "системного мышления" в изложении отечественных инфлюенсеров (в первую очередь это Анатолий Левенчук). Недоверие связано с тем, что форма изложения С.М. очень "нетехническая" и подозрительно близка к изложению всяких псевдо-научных теорий.
Давайте загуглим:
what english accent easier to learn
is rhotic english accent learn to learn
is non-rhotic english accent easier to learn
Показательно:
1. Исследований, которые можно было бы выложить как "финальный аргумент";
2. Большинство опросов/мнений что американский английский проще (подозреваю, что сравнивались GA vs RP);
3.а. Большинство опросов/мнений говорят, что /r/-full акценты проще для изучения;
3.б. за /r/-less акценты выступают японцы-корейцы, у которых по-видимому есть специфические трудности с произношением r с гласными;
Предварительные выводы:
- американский вообще и /r/-full акценты в частности люди считают проще для изучения по опросам.
- ваша сентенция про клюкву не только неуместна но и похоже неверна; как и вообще заявление что частные мнения необобщаемы.
Разумеется мы делимся личным опытом.
1.
Ну вот как-то так сложилось, что американцев понимают, а англичан менее (и я подозреваю потому, что они не считают важным быть понятными другим).
2.
exactly!
Собственно 1+2 я и назвал снобизмом.
Вы так не считаете?
=============================================
> В любом случае делать на них упор и надеяться, что когда-нибудь сможешь
зазвучать "как британец" или "как американец", особенно самостоятельно,
не стоит.
То, что вы называете "особенностями" по-моему сложная (для русскоязычных) часть английского языка в навыках listening \ speaking. И эта, и без того сложная часть ещё и усложнена в британских акцентах.
В сравнении англичан с американцами (как сравнить англичан с другими странами без десятка примечаний я просто не знаю): у американцев получается говорить понятно для не-нэйтивов, а у англичан почему-то куда меньше.
Не прикладывать усилия для того, чтобы тебя понимали (несмотря на то, что ты изначально в выгодном положении и прикладываешь к общению куда меньше усилий) - на мой взгляд ну такое себе.
По поводу британских акцентов: /r/-less (вроде это называется non-rhoticity) акценты просто сложны, т.к. из-за выпадения /r/ требуется различать (и воспроизводить) больше гласных звуков, что реально сложно (особенно самостоятельно - мы в топике про самостоятельное изучение языка) особенно в задней части IPA-chart.
Англичане да снобы (ну и британский(ие) акценты английского довольно плохие для изучения).
А в США, если человек плохо знает английский это значит, что он знает как миинмум ещё один язык.
duolingo крутой инструмент, но очень ограниченный.
Его лучшее применение, на мой взгляд:
- полировка ошибок (когда ты уже что-то знаешь, но неточно)
- изучение новых слов (вроде слово повторяется за тему около 20 раз)
также "игровые механики" помогают поддерживать интерес (но лично у меня вот после 3х месяцев и 1 места в алмазной лиге интерес прямо пропал).
Во всём остальном он не очень хорош.
Есть места, где он просто недоделан и можно лучше, а есть где просто лучше наверное не сделать.
Меня коллеги по работе понимают, а эппловый ввод текста нет.
При этом я не знаю что сделать, чтобы он меня понимал нормально.
ПС
При этом места непонимания очень сильно отличаются от русского, где непонимание беглой речи тоже есть, но оно не так критично и я точно знаю как его исправлять в случае необходимости
Спасибо статья хорошая.
Из плюсов - достаточно полное рассмотрение с разъяснениями и примерами (наверное претендует на славу What Every Programmer Should Know About Memory).
Из минусов - перевод (иногда только к середине абзаца понимал о какой именно известной речи идёт вещь).
ПС
Про lock convoy не знал, но видел в одном проекте хак и теперь знаю, что против него: сначала крутится спинлок (с попыткой взять атомик) и только потом уход в системный вызов.
Разумеется если вы понимаете цели заказчика и вашей конторы (а они могут и не совпадать) - то вам куда проще работается, в смысле выбора конкретного технического решения из спектра возможных (это одна из самых сложных и часто "давлеющих" вещей - сделал 3 месяца назад формально правильно, но не подходяще под цели заказчика, сейчас переделываешь, да ещё и знаешь что ошибся ты).
С другой стороны если бизнес заказчиков людям совершенно неинтересен, то очень сложно в такой бизнес "вникать".