Разименновываем переменную и вычисляем. До левой части ещё не дошли. Для закрепления предлагаю подумать над
a, b = b, a + b
То есть если написано, что x = x + 1, то это значит, что x = x + 1… но это же бред!
Бред это haskell, не позволяющий в одном пространстве имён держать две структуры с одинаковым названием полей. И потом
a : List String -> List Int
a i = List.map String.length i
b : Int -> Int
b i = i + 1
c i = List.map (\x -> x + 1) i
Как же так, в одном месте i это список, а в другом — число? А x вообще в одной и той-же строке значение меняет.
Неявное умножение — это как раз ближе к вызову функций в Hasekll'е.
Подобный сахар есть и в ruby
puts "a"
puts("a")
Там всё равно переменная ведёт себя совсем-совсем не так, как на уроке математики.
На уроке математики есть неизвестная, которая является локальной константой на протяжении всего уравнения.
Есть-есть, вы просто про них забыли. Вот буквально то же квадратное уравнение когда решаете — там фигурная скобочка появляется и, справа от неё, три варианта: D > 0, D = 0, D < 0.
Только вот алгоритм записывается не математическим языком, а самым обычным разговорным. А в разговорном языке нет разницы между «присваиванием» и «сравнением», есть только «равно». А почему «равно» не важно. В императивном есть ещё «повтороное присваивание». Присваивание или инициализация выглядит так
a : Int
a = 1
А где в C# впервые встречается макропроцессор?
В C# нет, в nemerle, rust, nim…
Ну это уже чистая косметика… как и макропроцессор…
Эта косметика нужна, если не хочется интерфейс командной строки использовать
Дык и в Haskell за всеми этими вещами — тоже не нужно следить.
И как haskell решил проблему остановки? И зачем тогда нужен "!", кроме как стек подпирать, чтобы он не разбух?
А как человек, не понимающий, что Debug — это не D*e*b*u*g работает с синусами или логарифмами?
Достаточно один раз прочитать «сначала вычисляется правая часть выражения, потом левая», чтобы не испытывать больше проблем, точно так же как и с неявным умножением в математике. В крайнем случае можно писать на tcl или pascal. Открытые/закрытые диапазоны точно так-же не имеют отношения к программированию, и запись типа [10, 5) является ошибкой.
Про скобки — вообще не понял: если вы не про LISP, то скобки ставятся как на уроках математики…
В математике — функция(аргумент), в си подобных функция(аргументы), в хаскельподобных(?) (функция аргументы). В lisp скобки обязательны, в других фп скобки можно опустить если не вкладывать вызовы друг в друга.
Квадратные уравнения в школе решают все, а понять, что ФП это тоже самое, для человека, чего-то написавшего на каком-нибудь Basic'е — проблема
Я как раз начинал с VB .NET. В квадратных уравнениях нет никакой ни рекурсии, ни локальных переменных, ни замыканий, ни сопоставлений с образцом, ни ленивых вычислений, ни с деструктирующим присваиванием, ни с макропроцессором, ни с шаблонизаторами. Точно так-же в математике нет отдельно присваивания и отдельно сравнения, там сравнивать не с чем. Точно так-же переносить из одной части в другую в функциональном программировании нельзя. При их решении уравнений не нужно следить ни за стеком вызовов, ни за условиями выхода из цикла, ни за чем иным.
Проблемой могли бы быть отступы python, так как их нельзя просто выкинуть. Либо заменять на табуляции, либо довольстоваться одним единственным пробелом. Это бы даже не должно было бы повлиять на появление TypeScript, Flow, Elm,… так как у этих языков те же самые проблемы, типа необъявленных переменных или обноружения несоответствия типов во время выполнения. Даже у CoffeeScript есть аналог в виде MoonScript.
Субъективно, порог вхождения в эти языки выше чем в js
Все эти языки учаться по схеме за 15 минут. Ну плюс пару статей по преодолению каких-то местных костылей. И некоторое время практики, если до этого не программировал ни разу.
да и внедрить их бы в браузеры было бы сложнее вероятно.
Работа по подключению языка к программе одинакова что в случае js, что в случае, например, lua. Только js перед этим нужно было ещё создать, тогда как lua уже был готовым.
Действительно — человеку, мозги которого не поломаны императивщиной рассказывать про функциональное программирование (где такого нету) проще.
Империативщина не ломает мозги. Можно начать с чисто империативного подхода, постепенно добавляя паттерны из функционального программирования. А то при буквальной трактовке так же можно споткнуться на неявном умножении Debug.log = D*e*b*u*g.l*o*g или же на том как ставить скобки
text (min x y)
Это-то да, но суть в том, что подобный код в принципе писать нельзя. Зачем же его обсуждать?
Одни языки более/менее пытаются делать некорректные состояния невыразимыми, то есть код даже не соберётся. Это языки простые для написания программ. И есть языки простые для написания компиляторов, в которых отстрелить ногу можно на ровном месте.
Вот как раз JavaScript в этом плане замены полноценной нет. На каком языке вы напишите что-то, что работало бы в и в последнем Хроме и в ИЕ11?
В данной ветви речь идёт о следующей ситуации: есть какая-то задача и нужно решить, создавать для этого язык или нет. В год создания js 1995 были и другие языки, например python 1991, lua 1993, scheme 1975. Веб прекрасно бы работал, даже если бы скрипты в вебе были на python|lua|scheme. Соответственно «прорыв» «пиши на одном языке на бекэнде и на фронтенде» произошёл бы гораздо раньше.
Хотя, эти же задачи можно решить, используя имеющиеся языки.
Без одних языков(javascript, python) решать задачи так-же легко, так как существует замена, без других(rust, erlang) решать туже самую задачу будет в разы сложнее. Новые языки — новые попытки решить уже существующие проблемы. Какие-то проблемы решены криво (вместо возможности автоформатирования принудительные отступы в python, громкое имя java в javascript), какие-то достаточно хорошо, чтобы рассматривать язык как замену (rust заменяет си улучшая безопасность, erlang заменяет *** для распределённых вычислительных систем).
Так что в этом смысле LISP (и диалекты) кардинально проще других ЯП (где нужно помнить много хитрых значков, отступов и ключевых слов и что они значат в том или ином контексте).
Хитрые значки/ключевые слова всё равно придётся запоминать, только идти они будут не из коробки.
Какое то у Вас противоречивое заявление. И что можно не знать то в «C»? Он в базе простой и примитивный.
Количество вещей, которые нужно держать в памяти при написании программы огромно. Нельзя выучив чисто си сесть и начать писать что-то полезное, нужно выучить ещё кучу всего. char это не символ, это просто байт, поэтому нужно либо отказаться от многобайтных символов, выбрав какую-то кодировку, либо вручную прописывать требуемый код. Нельзя просто выделить немного памяти и начать туда писать пользовательские данные, нужно сначала проверить размер. Нельзя просто взять символ по индексу, нужно правильно обрабатывать многобайтные символы. Авторы многих программ либо не знали подобных вещей, либо им было просто лень это делать. Нельзя задав пару вопросов программисту на си определить код какого качества он напишет завтра. Глядя на файл си кода, невозможно сказать как он будет работать в приложении.
«Остаётся вопрос, что это фундаментальное изменение способа доставки контента в интернете представляет собой проблемный сдвиг в балансе сил между субъектами, — рассуждают разработчики Firefox. — Мы должны рассмотреть, могут ли агрегаторы использовать эту технологию, чтобы навязать свою волю издателям»
Mozilla считает, что принятие Web Packaging просто увеличит централизацию в вебе, увеличив влияние Facebook и Google как дистрибьюторов контента.
Отзываем сертификат, и контент исчезает везде. Мечта цензуры. Сейчас хоть скриншоты вставляют или текст перепечатывают.
И как? Сколько там андроид занимает, тормозят ли приложения, что с автономностью? Как часто нужно вспоминать про очистку? У меня есть опыт общения не с флагманом, так он может либо зависнуть в произвольный момент времени, так что даже на нажатие кнопки блокировки реагировать не будет, либо всё его внутреннее хранилище забъётся и даже смс не работать не будут. В результате количество приложений на смартфоне постоянно уменьшалось, последнее время нужно было периодически делать сброс к заводским настройкам или перезагружать. Пользовался оригинальной прошивкой, так как серьёзных типа lineage на него нет.
Смущает ровно наоборот, что старые расширения не поддерживаются, и многие из них уже и не будут портированы на более новые версии.
А что тут должно смущать? Чем больше накопится технического долга, тем тяжелее будет что-то сделать. Тут либо хоронить браузер, либо хоронить аддоны. Дальше только вопрос в том, предоставляет браузер API для портирования, или же разработчикам лень/некогда. Если API можно реализовать, форкайте, реализуйте. Если оно уже есть, то портируйте. Почему, то что в винде, линуксе,… старые программы/аддоны не работают и людей это не беспокоит, а тут аж прямо смущает? Просто ставят старую винду/… в виртуалку и не больше.
А что Вас смущает в старом софте? И, кстати, я и смартфон не меняю раз в полгода, и машину не меняю раз в два года.
То что он обречён. Ни произовдитель, ни сообщество его не поддерживают. Старыми смартфонами можно пользоваться несколько лет активно, потом не очень, а потом вообще уже как звонилками, даже не давая им доступа в сеть.
Мнение об алгоритме и его эффективности, а не рассуждения на вольную тему.
А потом мы поговорим о том, кто и где говнокодер.
Пока выполнение алгоритма не занимает много времени, алгоритм не важен. С учётом того, что это время меньше четверти секунды, то и заморачиваться по этому поводу не стоит.
Кроме uBlock существуют и другие расширения, например uMatrix и NoScript, заменить какие простым AdBlock-ом невозможно. В любом случае, хотелось бы увидеть ваш патч, разумеется если вы можете его сделать.
Кстати, по этой причине, большинство пользователей не поймет что их компьютер тормозит или ломает сайты именно из-за блокировщика и не додумается его отключить и проверить.
Сарказм: Безусловно, сайты тормозят не из-за багов браузера перерисовывающих всю страницу, не из-за говнокода в фронтенде с тоннами костылей, а из-за блокировщиков релкамы. Особенно из-за блокировщиков рекламы тормозит винда, постоянно что-то делающая с жёстким диском.
Что мешает сделать активный прокси сервер с которым будет общаться блокировщик?
Борьба с рекламой прямо в теле страницы, запрет прокси ради безопасности пользовательских данных, наличие устройств у на которых нет прав суперпользователя.
Исходники chrome закрыты. Если корпоративная ветка будет открыта, то это будет очень большой помощью компаниям делающим шкурки для chromium — типа opera, yandex
Какой вывод из этого следует? Гугл объявил о своих планах и стал наблюдать за реакцией общественности. Общественность осталась достаточно равнодушной, для того чтобы гугл мог осуществить свои планы. Если вас это не устраивает, то прямо сейчас перейдите на браузер не на движке Blink. Гугл ещё остаил для себя лазейку по увеличению лимита.
Бред это haskell, не позволяющий в одном пространстве имён держать две структуры с одинаковым названием полей. И потом
Как же так, в одном месте i это список, а в другом — число? А x вообще в одной и той-же строке значение меняет.
Подобный сахар есть и в ruby
На уроке математики есть неизвестная, которая является локальной константой на протяжении всего уравнения.
Только вот алгоритм записывается не математическим языком, а самым обычным разговорным. А в разговорном языке нет разницы между «присваиванием» и «сравнением», есть только «равно». А почему «равно» не важно. В императивном есть ещё «повтороное присваивание». Присваивание или инициализация выглядит так
В C# нет, в nemerle, rust, nim…
Эта косметика нужна, если не хочется интерфейс командной строки использовать
И как haskell решил проблему остановки? И зачем тогда нужен "!", кроме как стек подпирать, чтобы он не разбух?
В математике — функция(аргумент), в си подобных функция(аргументы), в хаскельподобных(?) (функция аргументы). В lisp скобки обязательны, в других фп скобки можно опустить если не вкладывать вызовы друг в друга.
Я как раз начинал с VB .NET. В квадратных уравнениях нет никакой ни рекурсии, ни локальных переменных, ни замыканий, ни сопоставлений с образцом, ни ленивых вычислений, ни с деструктирующим присваиванием, ни с макропроцессором, ни с шаблонизаторами. Точно так-же в математике нет отдельно присваивания и отдельно сравнения, там сравнивать не с чем. Точно так-же переносить из одной части в другую в функциональном программировании нельзя. При их решении уравнений не нужно следить ни за стеком вызовов, ни за условиями выхода из цикла, ни за чем иным.
Все эти языки учаться по схеме за 15 минут. Ну плюс пару статей по преодолению каких-то местных костылей. И некоторое время практики, если до этого не программировал ни разу.
Работа по подключению языка к программе одинакова что в случае js, что в случае, например, lua. Только js перед этим нужно было ещё создать, тогда как lua уже был готовым.
text (min x y)
Если карты можно либо просто скачать с оффициального сайта, либо извлечь с другого смартфона, то я точно так-же смогу использовать старый смартфон.
Природа разумна?
Отзываем сертификат, и контент исчезает везде. Мечта цензуры. Сейчас хоть скриншоты вставляют или текст перепечатывают.
То что он обречён. Ни произовдитель, ни сообщество его не поддерживают. Старыми смартфонами можно пользоваться несколько лет активно, потом не очень, а потом вообще уже как звонилками, даже не давая им доступа в сеть.