Проблема в том, что информация о появлении пробок появляется с существенным лагом. А по-другому и никак: пока автомобилист после построения маршута доедет до узкой улочки, пока соберётся статистика, может пройти минут 10-15. Соответственно, после возникновения пробки, этот маршрут будет рекомендоваться ещё некоторое время, тем самым только усугубляя ситуацию. И мы будем постоянно видеть жалобы на навигатор, что вместо нормальных маршрутов по широким дорогам (пусть и с медленным движением) он строит маршруты козьими тропами со стоячими пробками.
Окей, ситуация: есть дорога с небольшой пропускной способностью, но по которой можно добраться быстрее. Вопрос: что случится, если этот маршрут будет рекомендоваться всем как самый короткий и быстрый? Ответ: там очень быстро возникнет пробка.
Решение дотнета в данном случае предпогалает, что функционал потока может меняться в рантайме, поэтому статические проверки здесь не подойдут.
Именно так. Функционал потока может измениться прямо в процессе работы. Например, сокет можно зашатдаунить только в одном направлении, и он резко из IReadableWritable становится или IReadable, или IWritable. Можно зашатдаунить в обоих направлениях - какой у него в этом случае должен быть тип?
Ну вот смотрите: у Stream могут быть интерфейсы: IReadableStream, IWritableStream, ISeekableStream, IBufferedStream, IAsyncReadableStream. IAsyncWritableStream, которые могут быть по-разному скомбинированы. А ешё это может быть какой-нибудь NetworkStream со своими интерфейсами.
Ну да, можно обмазаться дженериками и писать что-то типа:
void MyMethod<TStream>(TStream stream) where TStream : IReadableStream, IAsyncReadableStream, IBufferedStream, ...
Но это реально уродство получается, ещё и ограничениями, потому что нельзя перегружать функции с одниаковыми сигнатурами, но разными трайтами. Куда проще просто один if внутри функции воткнуть.
Я ещё нехило так увидился, когда в nvtop посмотрел на потребление видеопамяти (для нейросеток это критично): XFce отжирает значительно больше видеопамяти, чем Plasma.
А мне поведение с переключением раскладки по нажатию Alt+Shift в Linux, а не по отпусканию в винде, наоборот, нравится больше, и я бы очень не хотел, чтобы этот "баг" фиксили.
В винде при быстром наборе текста постоянно раскладка не переключается, и это ужасно бесит. В линуксе же переключение железное, за пару лет активного использования линукса на десктопе проблемы непереключения раскладок не случилось ни разу. Конфликтов с шорткатами не имею.
После того, как суды начали отказывать операторам в исках по миллиону рублей, и был внесён законопроект, который предусматривает, что абонент российского сотового оператора не может задолжать оператору за услуги в роуминге более 3 тысяч рублей в месяц, внезапно оказалось, что обновление баланса в роуминге вполне себе возможно и реальном времени.
Во, я то же самое делал, только наоборот, пережимал файлы с телефона/фотоаппарата в hevc с пресетом пожёстче для уменьшения размера. И ещё была команда в меню для архивации директории в sqfs.
В far2l можно нажать Ctrl+O, а затем F3 — и вся длинная выдача (включая историю) откроется в стандартном просмотрщике far, да ещё и сохранением подсветки. А по F4 ещё и в редакторе откроется.
Это, кстати, для меня одна из киллер-фич far2l, которой нет в виндовом far.
У меня универсальность ассоциируется ещё и с покрытием кейсов, для которых используются узкоспециализированные языки.
Стандартная бибилиотека как раз std::string предоставляет. Но разработчики библиотек используют кто во что горазд, потому что C++ не принуждает к использованию только стандартной библиотеки.
И это пример того, что случится с любым языком, претендующим на универсальность. Он тупо окажется слишком сложным, и люди будут пользоваться лишь небольшим его подмножеством.
В линейном городе тоже будут и пересадки, и пробки, потому что люди пока не научились садиться и выходить в движущийся на большой скорости транспорт.
Высокая скорость передвижения возможна только при малом числе остановок. Но когда остановок мало, расстояние до останавок получается большим, и нужна дублирующая ветка с частными остановками.
То же самое касается и автомобильных дорог. Если на автобане сделать по съезду каждые 100 метров, то скорость на нём быстро станет черепашьей.
Это как раз следствие низкой плотности населения и как следствие, низкого спроса на ОТ. В городе же не успел на метро - следующий поезд через 2 минуты.
скажете что типа "тут город, а ты деревню приводишь в пример"...так размер мегаполиса и так огромный..
Ну так и вы сравнивайте деревню того же размера. Сколько площади будет занимать деревня с населением 10-15 млн человек?
Вот как пример можно Сербию взять - население в 2 раза меньше Москвы, плотность населения 100 чел/км2 (как раз нижняя граница субурбии). Но вот дорога из одного конца в другой занимает 500 км.
т.е. при неудачных маршрутах можно часа по 2-3-4 тратить на дорогу с пересадками
Ну вот я возле шоссе жил. Дойти до рынка на противоположной стороне шоссе - 5 минут, доехать на личном авто - 15 минут, если не рисковать на 5000 рублей штрафа.
Проблема в том, что информация о появлении пробок появляется с существенным лагом. А по-другому и никак: пока автомобилист после построения маршута доедет до узкой улочки, пока соберётся статистика, может пройти минут 10-15. Соответственно, после возникновения пробки, этот маршрут будет рекомендоваться ещё некоторое время, тем самым только усугубляя ситуацию. И мы будем постоянно видеть жалобы на навигатор, что вместо нормальных маршрутов по широким дорогам (пусть и с медленным движением) он строит маршруты козьими тропами со стоячими пробками.
Окей, ситуация: есть дорога с небольшой пропускной способностью, но по которой можно добраться быстрее. Вопрос: что случится, если этот маршрут будет рекомендоваться всем как самый короткий и быстрый? Ответ: там очень быстро возникнет пробка.
И с каких это пор у нас пор на идеи распространяются авторские права?
Понятно, что без ограничений задача становится абсолютно тривиальной. Интересен практический смысл подобных ограничений кроме как для разминки мозгов.
Именно так. Функционал потока может измениться прямо в процессе работы. Например, сокет можно зашатдаунить только в одном направлении, и он резко из IReadableWritable становится или IReadable, или IWritable. Можно зашатдаунить в обоих направлениях - какой у него в этом случае должен быть тип?
Ну и чего там хорошего? Прямо в IOBase есть:
fileno - может бросить исключение, а может и не бросить;
isatty - то есть это реализовано не через интерфейс, а флажком;
readable, seekable - всё как в C# (CanRead, CanSeek);
Ну вот смотрите: у Stream могут быть интерфейсы: IReadableStream, IWritableStream, ISeekableStream, IBufferedStream, IAsyncReadableStream. IAsyncWritableStream, которые могут быть по-разному скомбинированы. А ешё это может быть какой-нибудь NetworkStream со своими интерфейсами.
Ну да, можно обмазаться дженериками и писать что-то типа:
void MyMethod<TStream>(TStream stream) where TStream : IReadableStream, IAsyncReadableStream, IBufferedStream, ...Но это реально уродство получается, ещё и ограничениями, потому что нельзя перегружать функции с одниаковыми сигнатурами, но разными трайтами. Куда проще просто один if внутри функции воткнуть.
Короче, баланс разумного должен быть.
Вы путаете неспособность принимать новое с желанием принимать неудобное.
Я ещё нехило так увидился, когда в nvtop посмотрел на потребление видеопамяти (для нейросеток это критично): XFce отжирает значительно больше видеопамяти, чем Plasma.
А мне поведение с переключением раскладки по нажатию Alt+Shift в Linux, а не по отпусканию в винде, наоборот, нравится больше, и я бы очень не хотел, чтобы этот "баг" фиксили.
В винде при быстром наборе текста постоянно раскладка не переключается, и это ужасно бесит. В линуксе же переключение железное, за пару лет активного использования линукса на десктопе проблемы непереключения раскладок не случилось ни разу. Конфликтов с шорткатами не имею.
После того, как суды начали отказывать операторам в исках по миллиону рублей, и был внесён законопроект, который предусматривает, что абонент российского сотового оператора не может задолжать оператору за услуги в роуминге более 3 тысяч рублей в месяц, внезапно оказалось, что обновление баланса в роуминге вполне себе возможно и реальном времени.
Что совершенно не мешало его акциям расти. Вот инвесторы-то тупые, правда?
Во, я то же самое делал, только наоборот, пережимал файлы с телефона/фотоаппарата в hevc с пресетом пожёстче для уменьшения размера. И ещё была команда в меню для архивации директории в sqfs.
Как минимум, удобно, когда в разных ОС используется один и тот же инструмент. Не нужно привыкать к разным хоткеям и функционалу.
В far2l можно нажать Ctrl+O, а затем F3 — и вся длинная выдача (включая историю) откроется в стандартном просмотрщике far, да ещё и сохранением подсветки. А по F4 ещё и в редакторе откроется.
Это, кстати, для меня одна из киллер-фич far2l, которой нет в виндовом far.
У меня универсальность ассоциируется ещё и с покрытием кейсов, для которых используются узкоспециализированные языки.
Стандартная бибилиотека как раз
std::stringпредоставляет. Но разработчики библиотек используют кто во что горазд, потому что C++ не принуждает к использованию только стандартной библиотеки.И это пример того, что случится с любым языком, претендующим на универсальность. Он тупо окажется слишком сложным, и люди будут пользоваться лишь небольшим его подмножеством.
Парки надо строить и возле домов, и подальше от них. Просто кому хочется именно пошуметь, будут вынуждены идти в парк подальше.
В линейном городе тоже будут и пересадки, и пробки, потому что люди пока не научились садиться и выходить в движущийся на большой скорости транспорт.
Высокая скорость передвижения возможна только при малом числе остановок. Но когда остановок мало, расстояние до останавок получается большим, и нужна дублирующая ветка с частными остановками.
То же самое касается и автомобильных дорог. Если на автобане сделать по съезду каждые 100 метров, то скорость на нём быстро станет черепашьей.
Это как раз следствие низкой плотности населения и как следствие, низкого спроса на ОТ. В городе же не успел на метро - следующий поезд через 2 минуты.
Ну так и вы сравнивайте деревню того же размера. Сколько площади будет занимать деревня с населением 10-15 млн человек?
Вот как пример можно Сербию взять - население в 2 раза меньше Москвы, плотность населения 100 чел/км2 (как раз нижняя граница субурбии). Но вот дорога из одного конца в другой занимает 500 км.
Ну вот я возле шоссе жил. Дойти до рынка на противоположной стороне шоссе - 5 минут, доехать на личном авто - 15 минут, если не рисковать на 5000 рублей штрафа.