Возможно, в каких-то регионах, в деревнях, есть подобный говор, или может быть девочковый манерный стиль речи с нарочитым искажением, но в дефолтном Токийском японском такого нет. Можете послушать репортажи по их "первому" каналу nhk, там с дикцией у людей все в порядке.
Что касается репортажа: во-первых там скороговорка.
Потрясающий аргумент, вижу что общаюсь с настоящим диванным экспертом в по японскому языку, которому лучше японцев виднее как сами японцы произносят звуки.
Не знаю кого там гугловцы привлекают, но переводчик у них так себе. Я слушаю японцев каждый день в живую, никакими "суси" и "такаси" они не разговаривают. Мне не верите, вот вам официальная транскрипция станции Шибуя
Зачем-то лишнюю букву добавили, видимо чтобы не понимать гайдзинов когда те пытаются дорогу спросить.
В 99% случаев мы не хотим реагировать по разному, мы просто логируем ошибку и уходим. В 1% случаев мы проверяем на 1 конкретный тип ошибок вроде "aborted". И примерно в 0% мы реально обрабатываем каждый тип ошибок прямо на месте. Даже если мы в этом самом 0%, то код будет не длиннее проверки возвратов, и, вероятно, даже короче. Кстати, раз уж речь про типы зашла, хочется посмотреть на обработку множества типов ошибок потенциально возвращаемых из одного метода, особенно на typescript.
const result = try {getSome()} сatch {null};
//или объявление переменных внутри условий
if (const data = getSomeData()) {
process(data)
} else {
handleEmpty();
}
Исключения, как можно из их называния понять, вызываются довольно редко и лишь страхуют программиста от независящих внешних факторов и кривых входных данных. Множество массивов для результатов создаются каждый вызов функции.
Я уже ответил: сложность меньше тем, что вы контролируете каждое ветвление, а не ловите всевозможные ошибки из блока.
Ничего не понял. Можно, пожалуйста, наглядный пример с меньшей сложностью?
Всё верно, но чем концептуальная сложность проверки на ошибку каждого вызова в стиле вызова api методов 30 летней давности, меньше чем у try catch? Говоря о сложности, вам еще нужно придумать имя переменной для ошибки в каждом вызове, а GC создать и удалить массив.
снижение вложенности полезно тем, что вы как программист при отладке можете просматривать меньший объём кода
Вы можете заметить, что вложенность обоих примеров одинаковая. А вот размер кода в высоту растет линейно. И делает простейший метод из 3х строк трудночитаемым. А если вызовов будет не 3 а 10, да еще и с 3х уровневой логикой?
Если же, наоборот, мы упростим обработчики до return false, то будет очень компактно, хотя и менее информативно.
Будет все еще минимум +1 строка на каждый обработчик, а с вменяемым стилем форматирования +4.
Потому что обработка ошибок через возвращаемые значения это try catch "для бедных", это как рекламировать колбеки вместо async await. Годятся разве что для хитрых языков с автоматической параллелизацией последовательного кода, или для раста, где просто не смогли подружить свой компилятор с человеческой обработкой ошибок.
Единственное применение в js которое вижу: вызов методов которые могут фейлить, но нам нет до этого дела, например вызов логгера.
Ты видишь чтобы кто-то принуждал тебя к использованию этой фичи?
Вижу как сейчас пиарят фичу, а нам потом иметь дело с таким кодом на проектах или в api внешних библиотек.
// Традиционный подход
try {
const response = await fetch("https://api.example.com/data");
const json = await response.json();
const data = parseData(json);
} catch (error) {
handleError(error);
}
// С использованием ?=
const [fetchError, response] ?= await fetch("https://api.example.com/data");
if (fetchError) {
handleFetchError(fetchError);
return;
}
Потрясающе, с использованием уникального оператора отпадает необходимость получать json и парсить данные! Или дело в том, что если честный код приводить, то размер примеров будет одинаковым? Или, точнее, размер примера с try catch будет меньше, за счет того, что не надо делать проверки на каждый чих
Учитывая, что с внешними стейт менеджерами работать не умеет, довольно бесполезная в реальной жизни штука. Так же большой вопрос: что там с дебагом, сурсмапы завезут? А если с тайпскриптом?
В чём суть претензий к разработчикам? Указывать на недостатки технологии что-то постыдное? Тогда css и развиваться не будет, а браузеры продолжат внедрять свистелки вроде управляемых параметров шрифтов вместо человеческих гридов, которых в 2016 году всё ещё нет.
Конечно моветон, лучше на каждом проекте писать свои костыли и складывать в папочку utils/. Тесты, кстати, писать не обязательно.
Возможно, в каких-то регионах, в деревнях, есть подобный говор, или может быть девочковый манерный стиль речи с нарочитым искажением, но в дефолтном Токийском японском такого нет. Можете послушать репортажи по их "первому" каналу nhk, там с дикцией у людей все в порядке.
Потрясающий аргумент, вижу что общаюсь с настоящим
диваннымэкспертом в по японскому языку, которому лучше японцев виднее как сами японцы произносят звуки.Не знаю кого там гугловцы привлекают, но переводчик у них так себе. Я слушаю японцев каждый день в живую, никакими "суси" и "такаси" они не разговаривают. Мне не верите, вот вам официальная транскрипция станции Шибуя
Так же рекомендую послушать новостной репортаж например, https://www3.nhk.or.jp/news/html/20241219/k10014672891000.html можете прямо мне указать на какой секунде вы там услышите "си" (звук し, там употребляется много раз, если что)
Замечательно что есть такая система, вот только сами Японцы почему то не Си-кают.
В 99% случаев мы не хотим реагировать по разному, мы просто логируем ошибку и уходим. В 1% случаев мы проверяем на 1 конкретный тип ошибок вроде "aborted". И примерно в 0% мы реально обрабатываем каждый тип ошибок прямо на месте. Даже если мы в этом самом 0%, то код будет не длиннее проверки возвратов, и, вероятно, даже короче. Кстати, раз уж речь про типы зашла, хочется посмотреть на обработку множества типов ошибок потенциально возвращаемых из одного метода, особенно на typescript.
Тут скорее хочется чтобы блоки делали возврат
Исключения, как можно из их называния понять, вызываются довольно редко и лишь страхуют программиста от независящих внешних факторов и кривых входных данных. Множество массивов для результатов создаются каждый вызов функции.
Ничего не понял. Можно, пожалуйста, наглядный пример с меньшей сложностью?
Всё верно, но чем концептуальная сложность проверки на ошибку каждого вызова в стиле вызова api методов 30 летней давности, меньше чем у try catch? Говоря о сложности, вам еще нужно придумать имя переменной для ошибки в каждом вызове, а GC создать и удалить массив.
Вы можете заметить, что вложенность обоих примеров одинаковая. А вот размер кода в высоту растет линейно. И делает простейший метод из 3х строк трудночитаемым. А если вызовов будет не 3 а 10, да еще и с 3х уровневой логикой?
Будет все еще минимум +1 строка на каждый обработчик, а с вменяемым стилем форматирования +4.
Не забудьте еще каждый handle* метод расписать.
Потому что обработка ошибок через возвращаемые значения это try catch "для бедных", это как рекламировать колбеки вместо async await. Годятся разве что для хитрых языков с автоматической параллелизацией последовательного кода, или для раста, где просто не смогли подружить свой компилятор с человеческой обработкой ошибок.
Единственное применение в js которое вижу: вызов методов которые могут фейлить, но нам нет до этого дела, например вызов логгера.
Вижу как сейчас пиарят фичу, а нам потом иметь дело с таким кодом на проектах или в api внешних библиотек.
Потрясающе, с использованием уникального оператора отпадает необходимость получать json и парсить данные! Или дело в том, что если честный код приводить, то размер примеров будет одинаковым? Или, точнее, размер примера с try catch будет меньше, за счет того, что не надо делать проверки на каждый чих
Учитывая, что с внешними стейт менеджерами работать не умеет, довольно бесполезная в реальной жизни штука. Так же большой вопрос: что там с дебагом, сурсмапы завезут? А если с тайпскриптом?
Проблема с v6 что он может практически 1 в 1 повторить картинку с обучающей выборки, что может запросто вылиться в копирайт страйк.
Лучше на людях узнать что клей не тот?
ASN1 чем не устроил?
Отличная реализация .join(",").