Pull to refresh
32
0
Игнат Толчанов @Leeb

Backend developer

Send message
Скорее уж так, хотя в деталях мог ошибиться
SELECT t.name, COUNT(d.track_id) as c
FROM track_downloads d
INNER JOIN tracks t on t.id = d.track_id
GROUP BY d.track_id
HAVING c > 1000
Go как язык гораздо более примитивный, чем Rust. Если проводить параллели, Go это как статически типизированный компилируемый Python. А в Rust явно питались идеями из C++ и Haskell.
Дизайн это вкусовщина. Я бы сказал, что все без исключения тойоты ужасающи (какие-то в большей, какие-то в меньшей степени), и эта вполне в тренде. Плюс тут, конечно, добавляет перцу факт, что дизайнеры пытаются показать, что это машина будущего и всячески выделить ее визуально в общем потоке. Делают это как могут.
Начнем с того, что ASN.1 стандартизирован. Уже это делает его в определенных ситуациях единственным возможным выбором (а не просто является одним из преимуществ, в противовес вашим мечтам). Во-вторых, ASN.1 является великолепным способом описания интерфейса (именно интерфейса, а не какой-то там «общей структуры»; можно очень хорошо и четко конкретизировать и ограничить возможные значения). В некоторой степени, его сложность и количество возможностей, конечно, плохо повлияли на его распространенность (да просто всем западло кодить Unaligned PER энкодер-декодер для всего этого; а тем более генератор парсеров, как, в общем-то, и подобает нормальному инструменту). Поэтому и появились инструменты, вроде Thrift и ProtoBuffers: бывает, что весь имеющийся арсенал — это дичайший оверкилл. Но в тех областях, где он используется (в первую очередь, конечно, телефония и прочие телекомы, где уровень чуть или сильно ниже перегонки личных сообщений по хттп), он используется и замены ему нет. Собственно, единственный минус ASN.1: это малая распространенность.
Я спорил исключительно с утверждением «в рамках строго типизированного языка не решается». Все (если быть точнее, почти все необходимое на практике) решается, если есть нормальная система типов.
Нормально решается. Сделайте тип данных с соответствующими конструкторами и пакуйте в список, что заблагорассудится. Не знаю, как это описать в SML, но на Haskell это будет выглядеть примерно так
data MyType = Int n | String s

myFilter :: [MyType] -> [MyType]
...
Да ладно, в европе-то не меньше автопроизводителей этим обеспокоены.
Вы слишком оптимистичны в оценке сроков. Лет через 5 первые полноценные автопилоты только появятся на некоторых (!) автомобилях из представительского сегмента (то есть база от 100 тысяч евро; плюс цена опции автопилота еще порядка 20-30 тысяч). А когда это будет внедрено повсеместно, это большой вопрос. Вы не забывайте, что жизненный цикл у модели автомобиля гораздо дольше, чем у телефона. Плюс существенное изменение в законодательстве. Это тоже такая консервативная штука. Я бы сказал, что не меньше 30 лет пройдет, когда ситуация изменится каким-то заметным образом.
Эти вещи придется решать в любом случае, где бы машина не эксплуатировалась.
Ну S-klasse же уже продается. Ну то есть, если вы ждете, то уже дождались.
Вообще-то, гужевой транспорт вполне себе транспорт. И по дорогам общего пользования он может передвигаться.
Это можно ввести уже сейчас заменив транспортный налог на новый акциз в стоимости топлива. Это будет и логичнее: чем меньше машина жрет, тем меньше платишь. То есть убиваются сразу 2 зайца.
Вот мне интересно, что будут делать с уже существующими системами.

У Volvo уже есть аналогичная система под названием OnCall. Она работает в России полностью, у них есть собственные кол-центры и помимо указанной в законе функциональности она содержит еще большой ряд функций (вплоть до управления некоторыми функциями автомобиля удаленно со смартфона) и имеет одно очень важное преимущество перед тем, что предлагают наши законотворцы: ее делали те же люди, что и автомобиль, и степень интеграции со всеми системами (и в том числе системами безопасности) гораздо выше.

Что теперь, Volvo должны выкинуть свою нормальную систему и поставить неизвестно что?
Да, у них там смутное время сейчас. Есть противоречивые сведения, но не мне рассказывать о положении вещей у них. Лучше поинтересоваться непосредственно у инсайдеров. dmitriid например.
Именно return нет. Но, если требуется прервать выполнение из за ошибки (и при этом не выпустить ошибку наружу), можно слепить конструкцию из catch и begin… end например (но это плохой пример, потому что можно и нужно обойтись и без этого трюка, но идея должна быть ясна).
foo(Bar) ->
    catch begin
        Zoo = do_some_very_necessary_work(),
        if 
          Bar < 5 -> throw({error, invalid_bar});
          true -> ok
        end,
        Result = do_bar(Bar, Zoo),
        {ok, Result}
    end.


А насчет return из середины при happy path я не припомню, чтобы это пригождалось. Всегда находится способ (матч в голове клоза, вынести логику в лямбду или отдельную функцию) не прибегать к этому. Получается элегантнее.
Пишем процессинг платежных транзакций (и кучу вспомогательных вещей). Но мы не одни такие. Шведская Klarna пока еще тоже на эрланге сидит. Кроме того (из того, что еще не отметили), эрланг применяют в hft (Exante), в чем-то связаном с рекламой (насколько я понимаю, Campanja), играми (MochiMedia), интерактивным Web (Echo), видеостриммингом (Flussonic, бывший erlyvideo, код, например, тут можно посмотреть).
Почему нельзя сопоставлять уже связанные переменные?
Вполне же рабочий код
1> A = 5.
5
2> {A, _} = {5, whatever}.
{5, whatever}


А вот это так вообще бывает очень полезно
> F = fun([H | _], H) -> ok end. 
Насколько я понимаю (пару месяцев шерстил интернет) проблема не в поддержке со стороны телефонов, а в том, что API для эмуляции не является публичным и для доступа к нему нужен бубен.
На самом деле, если без каких-то уточняющих обстоятельств (например, для случая когда мы заранее не знаем, какой набор функций нам необходимо применить к аргументу), код из вашего последнего примера — терминальная стадия идиотизма. Может, случай меня миновал, но я не могу припомнить, чтобы видел такой код без необходимости.

Что же касается простоты и линейности, культура написания кода на Хаскелле заключается в комбинировании (композиции) функций, что можно записать очень компактно и окинуть одним взглядом. Буквально, как предложение прочитать. Безусловно, это требует приобретения некоторого навыка скорочтения, что повышает порог, особенно для имеющих укоренившийся императивный бэкграунд. Но это не требует обязательного применения страшных, неизвестно что делающих операторов, вроде <**>, >>? или .&. (хотя без этого иногда не обойтись), и я не вижу в этой конкретной сложности ничего плохого.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity