1. JavaScript / Говнокод #25205

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    class Cat {
      constructor(
        public name: string) {
      }
      toCoolCat(coolness: number): CoolCat {
        return new CoolCat(this.name, coolness);
      }
    }
    // ...
    class CoolCat extends Cat {
      constructor(
        name: string,
        public coolness: number) {
    
        super(name);
      }
    }
    //...
    function addCoolCat(coolness: number, cat: Cat): void {
      this.coolCats.push(cat.toCoolCat(coolness);
    }
    //...
    addCoolCat(80, {name: 'Greycat'});

    Вроде TypeScript, а на самом деле NotCompletelyTypeScript.
    Во время выполнения получим ошибку "cat.toCoolCat is not a function". Тем не менее, компилятор TypeScript позволяет это (а конкретно, строку 23) скомпилировать. Хотелось бы, чтобы не позволял.

    Запостил: wissenstein, 19 Декабря 2018

    Комментарии (221) RSS

    • Ошибка вышла. Строку 23 компилятор не принимает. Принимает такое:
      const cat: any = {name: 'Greycat'};
      addCoolCat(80, cat);
      Ответить
      • Ну в этом суть any. Просто не используйте any.

        Вообще все эти ваши тайпскрипты — жуткая дрянь, broken by design. Гораздо приятнее жс, конечно, но быть лучше жс — это слишком low bar.

        У ReasonML хотя бы задумка правильная.
        Ответить
        • >Вообще все эти ваши тайпскрипты — жуткая дрянь, broken by design. Гораздо приятнее жс, конечно, но быть лучше жс — это слишком low bar.
          Мне кажется, ты слишком узко на это смотришь. Я бы рассматривал не конкретный typescript или reasonML, а множество языков, компилируемых в js, в котором каждый может выбрать язык, соответствующий его бизнес-кейсу, или запилить свой ламповый DSL. А это замечательно.
          Ответить
          • > компилируемых в js
            > замечательно
            Юзать высокоуровневый язык с динамической типизацией в качестве ассемблера. Что может быть замечательней...
            Ответить
            • [незелёный]Юзать Форт в качестве асемблера... Что может бть замечатльней?[/незелёный]
              Ответить
            • Ты против любых compilation target'ов кроме ассемблера в общем, или ты против js в частности?
              Ответить
            • Вообще, надо помнить, что машинный код, ассемблер и прочие языки программирования -- лишние слои абстракции, которые исторически вытекли из недостатков реализации компьютеров XX века.

              Имея достаточно высокоуровневый язык, можно сделать тоньше дополнительные слои абстракции, лежащие над ним.
              Ответить
              • Процессор с его инструкциями это вообще лишнее всё, надо головой в уме всё считать
                Ответить
                • https://habr.com/company/badoo/blog/420407/
                  "Посыл статьи (если отбросить C-специфичные вещи про выравнивание, неопределенные биты и тд) в том и был, что C (и все другие похожие языки) был простым языком, который напрямую ложился на реальное железо, а теперь инженеры пытаются всячески вбить новое железо (которое имеет принципиально другие допущения!) в видение мира старого языка (а разработчики компиляторов в то же время пытаются как-то приспособиться к новому железу, которое пытается выглядеть старым). Строго та же фигня происходит и с, к примеру, архитектурой ОС — до сих пор программы притворяются, что весь компьютер принадлежит им, а ОС всячески им в этом потворствует ценой приличных накладных расходов. Обратная совместимость — главное зло мира..."
                  https://habr.com/company/badoo/blog/420407/#comment_19013005
                  Ответить
              • Поднимая уровень абстракции ты сознательно вносишь какие-то ограничения которые упрощают разработку и понимание какого-то подмножества задач.

                Например, ограничив себя джвумя уровнями сигналов, ты теряешь возможность запилить тёплый ламповый звук.

                Используя процессор ты теряешь контроль над гейтами и не можешь делать что-то помимо перечисленных инструкций.

                Используя си ты теряешь часть инструкций процессора.

                Используя жс ты теряешь структуры и указатели. Какие-то новые структуры данных помимо хешмапа уже не запилить.

                Каждый новый уровень абстракции отбрасывает какие-то концепции в пользу других.
                Ответить
                • > Используя си ты теряешь часть инструкций процессора .
                  Используя S" Forth" я ничего не теряю , именно поэтому я ничего не теряю .
                  Ответить
                • В программировании XXI века всё наоборот. Чем выше уровень абстракции, тем больше возможностей. Что важно, современные абстракции поставляются на пару с оптимизатором.

                  Меньше вариантов выстрелить себе в ногу (вроде зашумления звука с аналоговных носителей, дребезжания сигнала с кнопок, утечек памяти).

                  Больше вариантов для человека выразить сложное простыми словами.

                  Больше вариантов оптимизации. В сраной сишке слишком много притянуто за уши. Одно неверное действие программиста порождает чёртову неоптимизируемую ссанину. Пирфоманс достигается за счёт неистового пердолинга программиста, иначе свобода по стандарту в руках компилятора. Код получается быстрый, но с UB. В сраной сишке можно соптимизировать код только с одного уровня абстракции, и это теоретический максимум. В ЯВУ компилятор может оптимизировать код как хочет, работая на всех уровнях абстракции сразу.

                  Мастеру(*) гораздо проще реализовать "сделайте нам хорошо"(1), чем подробное задание на 100 страниц(2). Мастер знает, как нужно делать, чтобы было хорошо. Юристы заказчика формализуют нерабочую идею и связывают мастеру руки, на выходе имеем только говно. То же в случае ЯВУ(1)/ЯНУ(2) и оптимизатора(*).

                  Человек туп и тормознут. Опыт группы людей можно закачать в оптимизатор. Вместо 16 лет просиживания в школе и вузе (умножаем на количество программистов) можно потратить несколько минут на копирование оптимизатора. Оптимизатор работает круглосуточно и не устаёт.
                  Достаточно один раз автоматизировать процесс, сделать оптимизатор и всем пользоваться им, чем всем делать одни и те же потуги в сторону оптимизации.

                  И вишенка на торте: низкоуровневое говно настолько просто, что выражается через высокоуровневые абстракции. Присваивание легко запиливается через монады, любые байты и указатели - через объекты JS. А оптимизатор анализирует и сразу генерирует низкоуровневую питушню, эквивалентную написанному. Таким образом, высокоуровневая питушня позволяет реализовывать объекты с любых нижележащих уровней абстракции.
                  Ответить
                  • показать все, что скрытоvanished
                    Ответить
                    • Почитайте http://govnokod.ru/25205#comment446032, там всё подробно написано.

                      Вкратце: божественная высокоуровневая абстракция позволяет эмулировать низкоуровневое говно, а оптимизатор делает эквивалентные преобразования, чтобы пирфоманс не просаживать.

                      > На машине тюринга можно сделать всё, что угодно (просто займет безумное количество времени). А на HTML нет.
                      На любом тьюринг-полном языке тоже ничего нельзя сделать. Потому, что машина Тюьринга что-то считает, а языки вроде HTML или C ничего не считают, только описывают какие-то факты/утверждения/прочую информацию.

                      Чем не тьюринг-полный брейнфак?
                      <!DOCTYPE html>
                      <html>
                        <body>
                          <ul>
                            <li data-cmd="P" data-rep="10">
                            <ul data-cmd="loop">
                              <li data-cmd="R">
                              <li data-cmd="P" data-rep="7">
                              <li data-cmd="R">
                              <li data-cmd="P" data-rep="10">
                              <li data-cmd="R">
                              <li data-cmd="P" data-rep="3">
                              <li data-cmd="R">
                              <li data-cmd="P">
                              <li data-cmd="L" data-rep="4">
                              <li data-cmd="M">
                            </ul>
                            <li data-cmd="R">
                            <li data-cmd="P" data-rep="2">
                            <li data-cmd="dot">
                            <li data-cmd="R">
                            <li data-cmd="P">
                            <li data-cmd="dot">
                            <li data-cmd="P" data-rep="7">
                            <li data-cmd="dot" data-rep="2">
                            <li data-cmd="P" data-rep="3">
                            <li data-cmd="dot">
                            <li data-cmd="R">
                            <li data-cmd="P" data-rep="2">
                            <li data-cmd="dot">
                            <li data-cmd="L" data-rep="2">
                            <li data-cmd="P" data-rep="15">
                            <li data-cmd="dot">
                            <li data-cmd="R">
                            <li data-cmd="dot">
                            <li data-cmd="P" data-rep="3">
                            <li data-cmd="dot">
                            <li data-cmd="M" data-rep="6">
                            <li data-cmd="dot">
                            <li data-cmd="M" data-rep="8">
                            <li data-cmd="dot">
                            <li data-cmd="R">
                            <li data-cmd="P">
                            <li data-cmd="dot">
                            <li data-cmd="R">
                            <li data-cmd="dot">
                          </ul>
                        </body>
                      </html>
                      Ответить
                      • показать все, что скрытоvanished
                        Ответить
                        • > Но если при эмуляции ты не убираешь часть функционала, то ты получаешь тот же самый язык просто с другим синтаксисом.
                          Да! Я имею удобный и выразительный высокоуровневый язык. Могу писать программы прямо на нём, могу написать простой транслятор в него из менее удобного и высокоуровневого языка.

                          Как я говорил, транслятор будет тоньше. Нет дублирования кода компилятора и оптимизатора.
                          Вариант с ВМ + языками: ВМ простая, компиляторы и оптимизаторы толстые и содержат много логики. Каждый новый язык должен напердоливать свои std.lib. и оптимизатор.
                          Вариант с ЯВУ + компиляцией в ЯВУ: ВМ сложная, компилятор и оптимизатор сложный, но один. Трансляторы из других языков очень простые. Каждый новый язык может создать даже тупой школьник без потери изящности std.lib. и пирфоманса.

                          > В приведенном тобой примере HTML ничуть не выше уровнем чем то, что ты пытаешься на нем изобразить.
                          Я могу взять JS, пройтись по DOM и сгенерировать код в brainfuck. А могу просто оставить HTML+JS и написать сложное приложение.
                          На brainfuck очень долго придётся писать код, который символизирует HTML.

                          >>только описывают какие-то факты/утверждения/прочую информацию.
                          >Нет. Они описывают поведение машины. Во всяком случае императивные
                          Описание чего-либо - это уже не информация? Это информация о последовательности действий.
                          Более того, в условиях работы оптимизатора любой язык становится декларативным. Язык декларирует какие-то операции на абстрактной машине, а как их конкретно выполнять и какой алгоритм для их вычисления использовать - выбирает компилятор.
                          Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • > в общем случае
                              Ну а кого интересует общий случай?

                              В общем случае
                              * Большинство программ (бесконечность против единицы) выполняется за бесконечное время
                              * Количество задач - континуально, а количество программ - счётная бесконечность
                              И прочая дурь в этом роде.

                              На то человек - существо с зачатками разума, чтобы отсеять откровенно говённые языки и создать адекватные.

                              > А так же там есть GC (или какой-то другой способ не управлять памятью) и нет ручных указателей
                              Ну и где я такой язык возьму? Тот же JS компилируется и JITится, внутри использует указатели, может выкомпилить нафиг вызовы GC и создание объектов в куче, может делать массивы - иммутабельными, слайсы хреначить как копии или как ссылки, а строки - мутабельными.

                              Почему Вы считаете, что когда у нас есть ЯВУ, все предыдущие уровни абстракции исчезают нафиг? JS исполняется на той же машине, на которой работает ассемблер.

                              Я задаю код, эмулирующий B-Tree LRU (tm) (c) (r), а он эквивалентными преобразованиями доводится до того машинного кода, который вылез бы из компилятора сишки.
                              Ответить
                              • показать все, что скрытоvanished
                                Ответить
                                • > Как оптимизатор поймет что там B-Tree?
                                  Так же, как сейчас понимает "структуры" - по паттерну. Само собой, разрабы движка JS должны предусмотреть такой паттерн. Обычная дыра между слоями абстракции.
                                  Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
                                    • > изучить этот паттерн
                                      В сишке ты тоже пишешь (x << 5) | (x >> 27) чтобы получить rol. Да и в HDL все эти триггеры да блоки памяти выводятся по паттернам. Технологические отверстия в абстракциях везде есть :)
                                      Ответить
                                  • А как программист понимает "структуры"? По паттерну.

                                    Помните статью на хабре как раз про паттерны проектирования. О том, что программисты учат паттерны проектирования, чтобы потом написать в своём коде понятный другим посыл, либо чтобы считать этот посыл из чужого кода.

                                    У мясного программиста всё то же самое, только пока работает его паттерн-матчинг гибче машины (хотя, от этой гибкости есть ложные срабатывания).

                                    Это для понимания чужого. Для написания своих программ программист должен надрочить какой-то набор алгоритмов, и писать код в их терминах, либо в терминах их линейной кобенации.

                                    Таким образом, обычный программист, знающий алгоритмы, и программист из мира гостя8-Борманда, знающий паттерны оптимизатора - тот же самый человек, только второй пишет свой код быстрее. Но это всё говно примерно одного порядка.

                                    Нормальный язык+компилятор должны брать на вход произвольную идею и преобразовывать её в быстрый код. Эволюция языков программирования идёт по схеме "ассемблер - сишка - жс - умный ЯВУ - питух, понимающий команды". Соответственно, крутость языков надо мерить их незашоренностью и гибкостью распознавания паттернов.
                                    Ответить
                                • > Однако в самом JS этого всего нет, и таким образом я не смогу это на JS выразить.
                                  Многая низкоуровневая питушня и на C не выражается.
                                  Если учесть, что ЯПы сделали для общения не только с компьютером, но и между программистами, то можно вспомнить, что очень много алгоритмов требуют использования конструкции языка "комментарий", иначе читатель ничего не поймёт.
                                  Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • > И только в вебе сложилась больная ситуация когда все обязаны комппилироваться в ЯВУ (да еще и без стат типизаци!!!) и потом бедный оптмизиатор вилкой должен искать какие-то паттерны и понять что хотел сказатьт прогарммист.

                                        Нет, не только в вебе, это во всём программировании.

                                        И только в программировании сложилась больная ситуация когда все обязаны комппилироваться в ТЗ (да еще и без непротиворечивого естественного языка!!!) и потом бедный программист вилкой должен искать какие-то паттерны и понять что хотел сказатьт заказчик.


                                        Я же говорю, что человек слаб и любит велосипеды и вавилонские башни. Если не сконцентрировать свои усилия на умном компиляторе ЯВУ, будут быстрые ЯНУ и медленные ЯВУ, а вместе с этим - дорогие программисты и пердолинг при написании программ.

                                        Кто бы пилил оптимизации для говножс, если б в браузерах была ВМ и цари с сишкой?
                                        Ответить
                                        • > браузерах была ВМ
                                          Пилили бы оптимизации для ВМ, как это делалось во всяких там JVM и .NET. И весьма неплохо делалось.
                                          Ответить
                                          • Пробовал я как-то пописать на JScript.NET.
                                            Конпелятор был настолько ленивый, что его нельзя было заставить делить инты как инты без перехода во флоаты. Вроде даже явное указание типов от этого не уберегало. В итоге пошёл на C#.
                                            То есть они сделали, чтобы C# летал, а всё остальное - как выйдет.
                                            Более, чем уверен, что JS в той же ситуации остаётся в интах.

                                            Нет, на практике нужен один ЯВУ, иначе никто не пошевелится, и ЯВУ будут тормозить.
                                            Ответить
                                            • А дальше - замкнутый круг.

                                              ЯВУ тормозят. На них не пишут серьёзный код потому, что тормозят. ЯВУ не оптимизируют потому, что пользователей с серьёзным кодом мало.
                                              Ответить
                                              • показать все, что скрытоvanished
                                                Ответить
                                                • > А тормозит куда меньше. Угадаешь почему?
                                                  Потому, что у них слабая и динамическая типизации - опциональны (слабую типизацию и вовсе надо самому делать), а также много синтаксиальной психозы для выражения разных питушней (вплоть до выбора передачи по ссылке/значению), которую лучше понимает более простой оптимизатор?
                                                  Ответить
                                      • > Хочешь -- бери ЯВУ, хочешь пиши напрямую.
                                        А хочешь —– бери S" Forth" и делай что хочешь со своим мозгом
                                        Ответить
                                    • >> "комментарий",
                                      > причем тут это, лол?:)
                                      Это к тому, что программисту тоже нужны подсказки как оптимизатору, а язык в явном виде не представляет всех абстракций.
                                      Ответить
                              • > когда у нас есть ЯВУ, все предыдущие уровни абстракции исчезают нафиг
                                Ты же от них сам сознательно абстрагировался, бака. И в этом нет ничего плохого, своё подмножество задач жс действительно решает проще и безопаснее.

                                И чтобы выразить какие-то концепции за пределами этого подмножества и расширить его ты добавляешь в интерпретатор JS новые паттерны, системные функции или языковые конструкции. Но вот выразить эти концепции на самом JS не изменяя интерпретатор невозможно.
                                Ответить
                                • Ну так абстрагируюсь я, а оптимизатор и компьютер - нет. Что тут непонятного-то?

                                  Я абстрагируюсь и накидываю код в виде идей (объясняю их на текущем уровне развития компилятора: для сишки - на уровне указателей, для жс - на уровне ФВП), а автоматика делает за меня всю чёрную работу.
                                  В этом и смысл абстракций - чтобы что-то сложное выразить через простое и не копаться в говне вручную.

                                  В этом суть программирования и любой наёмной работы
                                  Я абстрагируюсь и накидываю ТЗ в виде идей (объясняю их на текущем уровне развития программиста: для ребёнка - в терминах переменных и функций, для взрослых - UML-диаграмм и архитектуры), а программист делает за меня всю чёрную работу.
                                  В этом и смысл наёмного работника - чтобы что-то сложное высказать через простое задания и не выполнять работу самому.
                                  Ответить
                  • Ты так ничего и не понял.
                    Ответить
                    • Почитайте http://govnokod.ru/25205#comment446032, там всё подробно написано.

                      Вкратце: божественная высокоуровневая абстракция позволяет эмулировать низкоуровневое говно, а оптимизатор делает эквивалентные преобразования, чтобы пирфоманс не просаживать.
                      Ответить
                      • показать все, что скрытоvanished
                        Ответить
                        • > какой-то очень ненаучный термин
                          Если нужно, его, как и всё остальное можно формализовать за бесконечное время.

                          Берём весь набор реально существующих программ. Измеряем количество энергии (ватт, рублей, евро, пива), потраченной на их создание. Находим или пишем аналоги на недостающих языках (если было на низкоуровневом - пишем/находим аналог на высокоуровнемом, и наоборот), смотрим соотношения энергии.

                          Получаем коэффициент k = E_высоко / (E_высоко + E_низко)
                          Чем ближе к нулю, тем удобнее на практике высокоуровневая питушня.
                          Ответить
                      • > Вкратце: божественная высокоуровневая абстракция позволяет эмулировать низкоуровневое говно, а оптимизатор делает эквивалентные преобразования, чтобы пирфоманс не просаживать.
                        Так происходит в мире разноцветных пони. А в нашей серой и унылой реальности эвристический оптимизатор обречён периодически проёбываться, генерируя тормозящую питушню. А на сладкое — программист на божественном ЯВУ не имеет никакой возможности узнать, почему же его божественные абстракции тормозят: то ли комп плохой, то ли оптимизатор проебался, то ли алгоритм принципиально неоптимизируемый. Полагаться на какие-то недокументированные мега-оптимизации — примерно то же самое, что писать на «C» с UB.
                        Ответить
                    • показать все, что скрытоvanished
                      Ответить
              • Обычно абстракция работает так. Ты можешь поместить няшку в вазу чтобы получить больше контроля и упростить свои размышления над ней. При этом ты можешь закрыть её полностью или оставить дыры в абстракции для доступа к нужным деталям реализации.

                Но если ты возьмешь просто вазу (аля высокоуровневый язык), то вместо няшки у тебя будет в лучшем случае ее унылая глиняная эмуляция.
                Ответить
                • > глиняная эмуляция
                  Когда будешь пользоваться ей, придёт жид и выточит из неё няшку, которая будет меньше парить мозг, чем созданная вручную.
                  Ответить
              • Ну и пропускать слои абстракции в середине тоже не выгодно. Тебе придется пилить кентавра на более низком уровне. А это сложно в разработке и поддержке.
                Ответить
            • показать все, что скрытоvanished
              Ответить
              • Вот я и пишу, что в него компилят от безысходности.
                Ответить
                • Мне эта безысходность нравится. Здесь программисты поступили с компилятором так же, как компилятор сишки поступил с программистами.

                  Здесь программист вышел из положения подчинённого.
                  Здесь программист - не раб UBожий, а сам себе Соломон.
                  Здесь с кодом пердолится конпелятор, а не программист.
                  Человек творит, машина возится с рутиной.
                  Ответить
                  • Вот, представьте только, если в браузеры завезут сишку. Веб-программистам придётся учиться 16 лет, чтобы писать за час то, что они пишут за десять секунд. При наличии быстрого языка гонка скоростных движков высокоабстрактного говна заглохнет. JS будет тормозить, компании будут платить в 10 раз больше сишникам за ту же работу. Знания и опыт не будут копиться в движке и храниться на носителях с защитой информации, они будут дедушкиным способом передаваться из поколения в поколения ненадёжными мясными существами, у которых из RAIDов есть только баллончик от тараканов.
                    Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • > Каждый выбирает себе язык по вкусу и на нем пишет
                        Я же говорю, что при такой возможности выбора народ из-за лени и нехватки времени сэкономит на ЯВУ. Будет быстрая сишка и медленные питоны.
                        Сейчас JS вынужден быть быстрым при работе с кодом на JS. Либо генеришь быстрый код, либо выбрасываешь движок. Параллельно прикручивают всякие asm.js, чтобы низкоуровневые питухи тоже были быстрыми. И высокий, и низкий уровень работает быстро.

                        С ВМ быстрой будет только работа с ВМ, оптимизации лягут на плечи компиляторов разных языков, которые не допилят. Человеки в условиях свободы выбора пилят 100500 разных уникальных недоделанных языков, пакетов для луникса и прочих программ вместо того, чтобы вкладываться во что-то одно хорошее.

                        Здесь Боженька не стал делать как в случае Вавилонской башни, а наоборот дал возможность всем собраться и разогнать высокоабстрактную питушню. Всем вместе сделать что-то одно хорошо.
                        Ответить
                        • показать все, что скрытоvanished
                          Ответить
                          • > то 90% кода, некритичного к перформансу, по прежнему писали бы на JavaScript.
                            > А критичные вещи писали бы Отцы На Сях, и делали бы API для JS.
                            Конечно, это заманчиво для Отцов на Сосях, но подход в общем случае говённый.

                            Те 10% кода составят то, что работает 90% времени :)

                            В итоге
                            * Программист становится незаменимым, проекты зависят от дорогих специалистов
                            * Качество программы зависит от знаний и опыта мелкой группы людей (вместо зависимости от всего опыта программистов)
                            * Знания надо передавать из поколения в поколение в ненадёжных плохостардартизуемых мясных мешках, подверженным ошибкой

                            Конечно, можно понять, что вы хотите получать деньги за пердолинг с компьютером и не хотите, чтобы роботы отбирали ваш хлеб. Но давайте мыслить шире и автоматизировать процессы.

                            С точки зрения принципов программирования (декомпозиция, дублирование кода, упрощение интерфейсов) текущее программирование -- говно.

                            Вполне себе можно сделать ЯВУ, в котором можно подсказывать конпелятору. Хотя, это тупик.
                            GCC же вроде уже не слушает inline, ему надо писать ((inline)). Потому, что он уже умнее программистов, которые 20 лет назад писали inline. Когда GCC ещё больше поумнеет, он и ((inline)) будет игнорировать, чтобы баги скудоумия мясных программистов как-то обойти. Тогда труъ программисты будут писать ((((definitely inline)))), что будет значить "да, я точно-точно хочу заинлайнить, здесь прямо сильно надо, и это случай особый, тут я точно умнее тех, кто писал inline, кто писал ((inline)), и умнее конпелятора.

                            Групповой разум в лице конпелятора эволюционирует быстрее, чем мясной программист, и лучше закрепляет знания. Чем лучше его написали, тем меньше нужны подсказки.
                            Ответить
                            • показать все, что скрытоvanished
                              Ответить
                              • > Зачем вообще что-то изобретать, если всё это уже много лет работает за пределами веба?
                                А какие быстрые ЯВУ уровня JS есть, кроме Lua?

                                > Какой программист и почему он незаменим?
                                Низкоуровневый питушок. Потому, что без него не тормозит.
                                А имея хороший оптимизатор, я могу нанять любого человека вместо отца-сишкопинателя, и он мне напишет код как отец-сишкопинатель.

                                > Зато вы хотите найти рациональное объяснение безграмотности
                                Ну а что, развивать мясных программистов - это тупик. Они долго учатся, рано начинают тупить и просить зарплату, быстро умирают.
                                Объясняю: программист - это переводчик с человечьего на компьютерный, не более того.
                                Начальнику достаточно сказать "строим дом", и строительство начинается. Хорошим работникам не нужны подсказки, они как специалисты сделают всё как надо.
                                Почему тогда в программировании мы не говорим "строим дом", а пишем длинную программу? Это неудобно, дорого и глупо. Фактически программист должен просто приказать "строить дом", и машина должна строить дом.

                                > gmail грузится 20 секунд на машине, которая в 100000 раз мощнее той, что отправляла человека на луну
                                Переходный период. Пока оптимизаторы не так сильно развиты.

                                > Без подсказок однако не будет никакой оптимизации.
                                Будет. И даже лучше, чем с подсказками.
                                Потому, что подсказки - это по сути второй слой кода.
                                Сначала человек в коде подсказывает, что будет квадратичный алгоритм вместо линейного, потом - что здесь всё влезет в стек (а в реальной программе не влезает).

                                > Если программист даже связанный список выразить не может, о какой оптмизиации может идти речь?
                                Напомните, в каких задачах нужно выражать связанный список, кроме лабы про связанный список?
                                Ни разу не слышал, чтобы где-то понадобился связанный список в чистом виде. Это только лишь деталь реализации, рудимент из низкоуровневых языков.
                                Мясного программиста нельзя допускать к структурам данных. Решать, какие структуры и как использовать, должен автомат.
                                Ответить
                                • > И даже лучше, чем с подсказками.
                                  А зачем тогда добавляют всё новые и новые подсказки? Плотные массивы, тайпхинтинг аля asm.js, кучу неписанных правил в духе "если заполнить все поля в конструкторе и не добавлять новых то получится почти сишная структура"...
                                  Ответить
                                  • Оптимизатор пока не такой умный, чтобы сам понять.

                                    Подсказки - это питушня, которая входит в язык. Отслеживание оптимизатором кода по паттернам ничем не отличается от отслеживания подсказок (в математическом смысле)
                                    Ответить
                                    • > пока не такой умный
                                      Т.е. он за эти годы стал хуже и ещё дальше от твоей цели? Ведь раньше этих подсказок не было.
                                      Ответить
                                      • Блджад, ну что за толстотроллинг.

                                        Как Вы вообще работаете? Заказчик/шеф говорит "сделай так", а Вы придираетесь к запятой, делаете формально верное говно и как-то избегаете увольнения/судов?

                                        Раньше не было ни подсказок, ни эффективной оптимизации. Программисту приходилось пердолиться вручную.

                                        А когда оптимизатор в зачаточном состоянии, подсказывать некому.
                                        Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                                  • > Как язык может быть "быстрым"?
                                    Я уже говорил об этом несколько месяцев назад, даже формализовал.
                                    Измеряем время работы реальных программ на реальных задачах на реальных языках, интегральные значения сравниваем.

                                    > Тебя Сёма укусил?
                                    Нет. Но Сёма нередко бывает прав.

                                    Программист прозябает на каком-то своём уровне представления мира. И объясняет важность чего-либо исходя из своего желания пердолиться с этим.
                                    Низкопитушок будет втирать всем о пользе и незаменимости указателей и бесполезности гц. Высокопитушок - наоборот. Аргументы есть и за то, и за то.
                                    Тем, кто называет себя "труъ-программистом" обычно интересна вся эта питушня-спискушня, но у программиста-профессионала задачи стоят в терминах предметной области, и если ЯП работает в терминах предметной области, низкоуровневой спискушни в программе не будет.
                                    Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • > Такое чувство, что у тебя комплекс
                                        У меня комплекс.
                                        Злые сишники говорят, что я не знаю указатели, стек и кучу (на самом деле, я знаю, как ими можно пользоваться, хотя во всяких колл-конвеншенах и алгоритмах аллокации не разбираюсь).
                                        Злые жабоскриптеры говорят, что я не знаю новые фреймворки и модные говноинструменты (я их не знаю и изучать новое говно, чтобы не использовать забыть через год, не намерен; изучаю только то, что нужно сейчас для работы).
                                        Злые алгоритмисты говорят, что я не знаю алгоритмы и символику оценки трудоёмкости (алгоритмы сложнее сортировки пузырьков я действительно не знаю, т.к. сами по себе они мне не интересны, а для работы бывают нужны только малая рандомная часть, которую никак нельзя заранее угадать и изучить - проще достать один конкретный алгоритм с полки, когда он понадобится, а про то, что я не знаю символику асимптотических оценок - они врут).
                                        Злые труъ программисты говорят, что я не знаю низкий уровень (в гробу я видал этот пердолинг с битами, когда у меня есть лямбды и ФВП).
                                        Злые функци ональщики говорят, что я не знаю *-морфизмы, монады, линзы и призмы (я действительно львиную доли этих математических терминов и их применения не знаю, и ума и желания понять их у меня не будет).
                                        Потом набигают злые банкиры, токари, слесари, врачи, гуманитарии и говорят, что я не знаю их элементарной питушни, которую должен знать каждый сука человек.

                                        И всё, я становлюсь как побитовый жизнью Сёма, который всегда недоволен.
                                        Ответить
                                      • > Каждый берет нужный ему уровень, и всё
                                        Я хочу, чтобы на высоких уровнях абстракции пирфоманс не сливался.

                                        * У нас есть куча научных применений, для которых отцы-математики и прочие учёные придумали алгоритмы на языке математики. И здесь нужны параллельно пирфоманс и ясность кода. Хорошо бы, если код мог написать сам учёный на языке математики, поскольку программист точно где-то ошибётся в процессе перевода. Конпелятор должен знать математику и выдавать вразумительные предупреждения.

                                        * У нас есть куча мест, где дают предпочтение красивости интерфейса и частоте выхода новых говнофич. И здесь нужна какая-то почти бесплатная питушня, позволяющая оптимизировать всё это говно, чтобы фиче- и красивостеориентированный код не был таким говном.

                                        Короче говоря, у нас есть куча задач и мало времени, есть технологии, экономящие наше время и тратящие время клиента. Высокий уровень должен летать.
                                        Ответить
                                • > имея хороший оптимизатор, я могу нанять любого человека вместо отца-сишкопинателя, и он мне напишет код как отец-сишкопинатель

                                  что-то я не знаю таких оптимизаторов которые могут ужать код ОС с графическим интерфейсом так, чтобы он в сумме с несколькими программами и игрушками занимал мегабайт с небольшим, а запуск самой ОС и программ не приходилось бы долго ждать. (Сишка тут тоже сосёт, на ней я самое маленькое видел 8 Мб луникс (версия SliTaz без гуёв))
                                  Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
                                  • Что-то я не знаю таких программистов, которые ... Сколько стоит подготовить и нанять такого программиста?

                                    Давайте сравним, сколько стоит подготовка среднего программиста с тем, сколько стоило вложить в современный V8 логику уровня среднего программиста (нормируя на количество программ, написанных программистом и V8). Вот когда обычные программисты станут дешевле V8, тогда и посмотрим.
                                    Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
                                    • QNX использовалась в основном только для «больших» проектов, так как ядро, имеющее размер 44 килобайта, было слишком большим, чтобы работать на однокристальных чипах того времени.

                                      Я не могу... вы провоцируете меня на изобретение машины времени... хочу туда!
                                      Ответить
                                      • показать все, что скрытоvanished
                                        Ответить
                                      • > хочу туда
                                        Купи какой-нибудь контроллер с cortex-m0 и играйся. Меньше бакса стоит. 44 килобайта не войдёт.
                                        Ответить
                                      • З.Ы. Тебе же хватит 32Кб флешки и 4Кб памяти под форт-систему?
                                        Ответить
                                        • > под форт-систему
                                          Смотря какую, для доса я умещал где-то в 3.6 Кб (это уже с определяющими словами и управляющими коньструкциями, когда я только-только заставил работать репл она была килобайт с небольшим, расширять можно было только с помощью ",", "C,", "!" и "C!" ;)), но она была нестандартная и в статьях даже не было поля кода, считалось что код шёл сразу за ней. (ещё видал форт-систему в 512 байт, но в ней был лишь адресный интрепретатор и несколько определений)

                                          Я как-то смотрел разные армы, среди них есть очень дешёвые, но я пока что не смог определится с выбором.
                                          Ответить
                                          • > пока что не смог определится с выбором
                                            ARM'овские контроллеры не особо приятны для пайки, в отличие от AVR. Даже у STM32F030K6, на котором я делал клаву, корпус с шагом 0.8мм. А это один из самых простых чипов...

                                            Поэтому бери рандомную отладочную плату на STM32 и программатор к ней. В пять баксов можно уложиться за весь комплект.

                                            Или что-нибудь из серии stm32 discovery, если денег не жалко. Там есть охуенная няшка с дисплеем, usb и встроенным программатором.
                                            Ответить
                                          • показать все, что скрытоvanished
                                            Ответить
                                            • > Postscript — это же вроде диалект Форта?
                                              Не знаю PostScript. Фишка Forth'а в расширяемости, а насколько расширяем PostScript?
                                              Ответить
                                          • > пока что не смог определится с выбором
                                            Вот такая няша сегодня приехала: https://i.imgur.com/ryVmtyu.jpg

                                            32-битный ARM на 72MHz, 64KB флешки, 20KB оперативки, Micro-USB (только как девайс). Для форт-машины тебе хватит с запасом, имхо. И ещё джва бакса из пяти останутся на программатор.
                                            Ответить
                                            • Ох, ёба. Купи себе лучше пизду резиновую, раз подруги нет, и забей на электронные развлечения. На алиэкспрессе стоит рублей 200...
                                              Ответить
                                            • Я такую и выбрал, и программатор st-link v2. Вместе с доставкой почти 6000 тенге. Меня ещё кроха STM8S103F3P6 хотела своим светодиодным глазом соблазнить, но там всего 1 Кб памяти, под него наверное только на асме писать.

                                              Эх, ARM'яша только в январе приедет :(. Пока читну доки.
                                              Ответить
                                              • > stm8
                                                Она осьмибитная, поэтому так мало.
                                                Ответить
                                              • > читну доки
                                                Доку по чипу, доку по семейству, доку по ядру... Эх, для avr всё в одной помещалось.

                                                Ты главное либы не юзай, напрямую в порты писать на этих армах на порядок веселее.
                                                Ответить
                                                • > либы не юзай
                                                  я на Forth хочу всё писать.
                                                  Ответить
                                                  • А я хочу, а я хочу опять
                                                    На Форте кодить,
                                                    И в порты писать.
                                                    Ответить
                            • Я предлагаю дивный новый мир, где Отцы-Сишкователи будут не страдать питушнёй в виде написания одного и того же кода в разных проектах, а соберутся в одном месте, чтобы генерализовать свои и чужие знания в умном компиляторе универсального ЯВУ.

                              Тут и работа отцам-сишкователям будет, где они эффективно себя проявят. И остальные программисты будут более эффективными, работая на быстрых ЯВУ без пердолинга с байтами, памятью, подсказками ко-ко-компилятору.
                              Ответить
                            • Это случайно не ты SQL проектировал? Такой высокоуровневый язык, где есть умный компилятор, и не надо ничего руками оптимизировать, ога.
                              Ответить
                              • показать все, что скрытоvanished
                                Ответить
                              • Не я. Я вижу себя в роли скромного пользователя даров отцов-сишкователей: SQL, V8, GCC и прочей умной питушни. И очень бы хотел, чтобы отцы-сишкователи сделали SQL, V8, GCC и прочую умную питушню ещё лучше.

                                Единственный недостаток SQL - что человек оказался умнее. И недостаток этот решаем. Умный человек может научить глупый SQL быть быстрее. Вот если бы было наоборот - тогда да, тупик.

                                Но мы же видим развитие технологий. Какие крутые оптимизации делают GCC и V8, какие продвинутые программы загружены в современные смартфоны.

                                Если вместо SQL не придумают что-то другое, через некоторое время он выполнит свои обещания.
                                Ответить
                                • > какие продвинутые программы загружены в современные смартфоны
                                  Замечательный пример - смотрелка смсок, которая лагала от сраных 200-300 записей на гигагерцовом проце и гигабайте памяти...
                                  Ответить
                                  • В смартфоне сейчас есть
                                    * Личный почтальон и курьер
                                    * Личный фотограф и художник
                                    * Личный диджей и киношник
                                    * Личный фитнес-центр

                                    Смартфон научился распознавать лица, облагораживать фотографии, распознавать речь и прочее, прочее, прочее. Он уже умён, наверно, как трёх-пятилетний ребёнок.

                                    > смотрелка смсок, которая лагала от сраных 200-300 записей на гигагерцовом проце и гигабайте памяти...
                                    А как будет лагать трёх-пятилетний рёбенок, если его просить читать 200-300 записей, а?
                                    Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • показать все, что скрытоvanished
                                        Ответить
                                        • Ребёнок открывает дверь почтальону, заучивает сообщения или записывает их на бумажку, затем отрисовывает их на маркерной доске чертёжным шрифтом.
                                          Ответить
                                          • показать все, что скрытоvanished
                                            Ответить
                                            • Справедливо. Хотя, мессенджер нужно сравнивать с некоторыми мыслями и действиями ребёнка, а ребёнка - со смартфоном. Мессенджер и мысли - приходящая-уходящая питушня, а смартфон и ребёнок - машины для их исполнения.
                                              И смартфон что-то из перечисленного умеет или начинает уметь.
                                              Ответить
                                    • Ничего, скоро всего этого там не будет. Останется только браузер.
                                      Ответить
                                      • В этом есть и пюлсы, Большому Барту будет проще за нами присматривать...
                                        Ответить
                                        • Нет. Большому брату проще, когда работает нативная программа, собирающая FullHD видео, HiFi звук, данные сенсоров с точным разрешением и информацию из файлов, запаковывающая это всё мощным нативным архиватором, умеющим в диффы.
                                          Большому брату вообще не выгодно, когда все ресурсы займёт браузер с говноскриптами, и сматрфон от этого быстро разряжается и перестаёт следить.
                                          Ответить
                                    • > А как будет лагать трёх-пятилетний рёбенок, если его просить читать 200-300 записей

                                      А как будет лагать трёх-пятилетний ребёнок, если у него вместо мозга будет гигагерцовый проц и гигобайт памяти.

                                      fixed
                                      Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • Ну голосовое управление таки полезно для водителей чтобы адрес в навигатор не вбивать. Где его ещё применить - х.з., но хоть одна область нашлась.
                                        Ответить
                                      • +1

                                        В общем-то, я этот сайт понимаю как место для отдыха программистов. И, соответственно, позволяю себя поразмышлять о высоких материях, поучаствовать в философских дискуссиях. Так можно посмотреть на ситуацию со стороны, проанализировать её с учётом новых фактов и установок.

                                        Философия и прочая с виду бесполезная питушня всё время протекает через нашу жизнь. Это и размышления на досуге, и маркетинговые цели, ценности компаний, и идеологические мотивы, и изучение философии в вузе. В человека впрыскивают твёрдую психозу на более широкую тему, чтобы он в мыслях над ней входил в светлое будущее.
                                        Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • > расписание транспорта
                                        Ну тут онлайновое на порядок круче - видно где именно едет автобус.

                                        > оффлайновых карт
                                        2гис. В ваших краях видимо не популярно, но карты у них очень годные.
                                        Ответить
                                        • показать все, что скрытоvanished
                                          Ответить
                                          • В оффлайне работает идеально - транспорт, поиск, расписание магазинов и кафешек и т.п. Другие карты - нет. Онлайн реально нужен только для инфы по пробкам и апдейтов.

                                            Но они походу хотят годное покрытие десятка городов чем хуёвое но всех. Поэтому там даже рашка далеко не вся.

                                            Еще в оффлайне неплохо работали проги на основе openstreetmap. Но там качество мап сильно зависит от добровольцев.
                                            Ответить
                                            • А maps.me что использует? Их?
                                              Кстати, полезная питушня. Есть наверно весь мир, только удобство использования на практике по сравнению с 2гис хуже.
                                              Ответить
                                            • показать все, что скрытоvanished
                                              Ответить
                                              • > OSM только векторные
                                                Да. Ты же ёбнешься спутниковые на телефон заливать. Разве что деревню какую-нибудь.
                                                Ответить
                                                • показать все, что скрытоvanished
                                                  Ответить
                                                • Яндекс-карты вроде раньше давали такую возможность, не знаю про то, как сейчас. Один раз питушню порядка гигабайта залил - и всё хорошо. Хотя, разрешение больше в городе и меньше в непопулярных местах. Опять же, видимо, в местах, где дачи яндексовиков, сохраняют подробность :)

                                                  Векторные гипертекстовые карты хороши, но спутниковые всё равно милее. На них всё видно без условностей и явных потуг создателей карт задокументировать объекты.
                                                  Ответить
                                                  • > Опять же, видимо, в местах, где дачи яндексовиков, сохраняют подробность

                                                    У Я есть Народная Карта. Любой может пойти и нарисовать свою деревню, после апрува иксперитов она будет на глагне.
                                                    Ответить
                                                    • А, то есть если разметить неразмеченные дачи, то алгоритм зожатия данных со спутника в этом месте повысит разрешение в оффлайн версии?
                                                      Кстати, оффлайн версия спутника ещё жива?
                                                      Ответить
                                                    • показать все, что скрытоvanished
                                                      Ответить
                                                      • > Раньше апрув не требовался.

                                                        Аппрув нужен чтобы правки из народных карт попадали в основную.https://mapeditor.yandex.com
                                                        Ответить
                                                    • А что творится с картами «Гугла»? Детские сады почему-то начали переименовывать в детские крематории.

                                                      Введи в поиск на гуглокарте: «детский крематорий».
                                                      Ответить
                                                      • Тонкий намёк на сгоревших при пожаре?
                                                        Ответить
                                                      • > А что творится с картами «Гугла»?
                                                        Какие-то юмористы обнаружили возможность переименования там произвольной питушни и решили пошалить.

                                                        > детские крематории
                                                        Их построили до или после школ имени Рикардо Милоса?

                                                        P.S. Со стороны школ был выдвинут отряд специалистов-переименовальщиков:

                                                        Специалисты вновь переименуют на Google-картах школу №12 в Таганроге Ростовской области, которую шутники обозвали в честь бразильского стиптизера Рикардо Милоса, рассказал директор школы Павел Олейников
                                                        Ответить
                                                        • Унылые дети какие-то.

                                                          Я бы на их месте все школы переименовал в гимназии имени Саши Грей
                                                          Ответить
                                                        • Но там же премодерация. Значит, юмористами оказались модераторы Гугла.
                                                          Ответить
                                                  • показать все, что скрытоvanished
                                                    Ответить
                                          • > А зачем знать где он если он по расписанию ездит?
                                            > Карты гермашки
                                            У разных стран разные требования. В России транспорт применяет квантовые технологии, а в квантовом мире живёт истинная случайность, оффлайновое расписание бесполезно.

                                            > Карты гермашки там есть?
                                            Есть несколько карт мест вне России (в которые ездят в отпуск разработчики? потому, что выбраны какие-то особые города).

                                            > Им в оффлайне пользоваться реально?
                                            Реально, но пробки не показываются.
                                            Ответить
                                            • показать все, что скрытоvanished
                                              Ответить
                                              • Я явной кнопки для подрубания не видел. Предполагаю, что только со своими работают. На хабре была статья про то, как они свой формат представления меняли, чтобы получше зожать вореции и вставить больше информации о подъездах, заборчиках, этажности домов и прочей питушне.

                                                Карты векторные. А с каждым обновлением всё больше тормозят, это да.

                                                Надо уже отдельный картотред создавать. Интересно узнать, что на практике удобно использовать как оффлайн карты (а) в глуши в конкретной стране и (б) в мире в целом.
                                                Ответить
                                      • > оффлайновых карт
                                        Есть RMaps. Оно, правда, лет пять назад померло, но зато не страдает Джээстянкой и быстро работает даже на древних телефонах. И выполнено в этаком «Unix way»: умеет мало, зато то, что умеет, делает отлично.
                                        Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
                                    • SQLite вполне справляется с такими "нагрузками". А вот гуйня (или сервер, х.з. кот из них) походу основаны на алгоритме Шлемиэля. Потому что лаги продолжали расти явно нелинейно.
                                      Ответить
                                  • >смотрелка смсок, которая лагала от сраных 200-300 записей на гигагерцовом проце и гигабайте памяти...

                                    Боюсь такими темпами лет через 20 даже тогдашний vim++ будет работать хуже этой смотрелки.
                                    https://govnokod.ru/26750#comment555277
                                    Ответить
                                • > акие продвинутые программы загружены в современные смартфоны

                                  В современные телефоны загружено унылое раздутое говно, которое жрёт ресурсы впустую. Вот тебе яркий пример:
                                  https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920/
                                  Эти макаки написали столько говна, что загрузчик ВМ не хотел его грузить. В итоге они хакнули загрузчик. Самое печальное, что они этим гордятся.

                                  К слову, у меня в телефоне с 4 ядрами и 3 Гб оперативы у Anki иногда уходит до 30 сек, чтобы загрузить с диска и отобразить несколько десятков байт html.
                                  Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
                                  • > унылое раздутое говно
                                    Забавно смотреть, как тот же hearthstone раньше без проблем летал на iPad 2, а теперь он на нём даже запуститься толком не может. Хотя визуально разницы нет. Как была карточная игра с простыми анимациями, так и осталась.

                                    Чему-чему, а утилизации ресурсов мобильные программисты научились.
                                    Ответить
                                    • Именно поэтому я за игры под "DOS", досбокс норсально работает на андрэ, и управление в думе для экстрасенсорного и крана подходит.
                                      Ответить
                                    • > утилизации

                                      Утинизации: девайс еле ходит и крякает под нагрузкой.
                                      Ответить
                                      • Мой девайс сходил к тебе за щеку и крякнул там. Проверь.
                                        Ответить
                                      • показать все, что скрытоvanished
                                        Ответить
                                        • Но ведь многие приложения отказываются работать без гугл плэй сёвисес, а ещо они постоянно просят его обновить (у него в гугл плэй там сплошные негативные отзывы).
                                          Ответить
                                        • > Сносишь GApps
                                          > Заменяешь на F-Droid
                                          > Прилетает корпоративное обновление политики, запрещающее устанавливать новые приложения не из Gulag Spy Store
                                          > Не унываем, т.к. termux-то остался
                                          Ответить
                                  • А среди людей тоже много алкоголиков, тунеядцев, хулиганов. Но кто-то уже на Луну своих собратьев отправил.
                                    Если так рассуждать про программирование, то у нас есть только тупые тормознутые IDE, а никаких продвинутых GCC и V8 на их фоне просто нет.

                                    Телефоны распознают речь, лица, могут убрать фон вокруг лица, поменять лица местами или вовсе заменить лицо на произвольную картинку, которая будет демонстрировать на себе работу мышц лица снимаемого.
                                    Ответить
                                    • >Телефоны распознают речь, лица

                                      Да, отправляют по 4G-сети в облако. Там сверхмощный комп всё распознает и отправит обратно. А заодно каждое слово заскладируется в цифровом Гулаге.


                                      >могут убрать фон вокруг лица, поменять лица местами или вовсе заменить лицо на произвольную картинку

                                      Ну охуеть теперь. Мы же понимаем что заслуга не быдлокодеров, а покорителей нанометров, создателей мощных GPU с терафлопсами мощи и миллиардами транзисторов.

                                      Тем более что лица распознаёт даже не программа, а надроченная нейронная сеть.

                                      А человек до конца и не понимает как это работает.
                                      Классического императивного алгоритма для распознавания лиц нет.
                                      Ответить
                                    • >Телефоны распознают речь, лица, могут убрать фон вокруг лица

                                      Яббл и гугл засадили хипстерасам в жопу анальный зонд, а счастливые рабы кричат ещё! ещё! и только сильнее вылизывают копрорациям жопу. Больше сири, инстаграмов, сканнеров отпечатков пальцев, «окей гугл, еби меня крепко зондом».

                                      Восторгается этим просто бездарная опущенная мразь вроде хабраотбросов.

                                      >дивный новый мир
                                      Термин изначально использовался Хаксли в саркастичном ключе.
                                      Ничего хорошего для отравленных пропагандой масс это не несёт.
                                      Ответить
                                      • Скоро они начнут распознавать отпечаток селезёнки.
                                        Ответить
                                      • > А человек до конца и не понимает как это работает.
                                        > Классического императивного алгоритма для распознавания лиц нет.
                                        Кого это волнует, кроме безопасников на самых защищённых объектах?
                                        Код работает? Выполняет свою работу? Настраивается? Переиспользуется? Да.
                                        Людям нужно распознавание лиц, а не пердолинг с алгоритмами.
                                        Я начинал про автоматизацию в конпеляторах, а тут сам алгоритм умеет учиться. Это более новый прогрессивный этап.

                                        Если хочется пердолиться с алгоритмами, можно открыть коворкинги для кодовых хендмейдеров. В то время, как алгоритмы будут учиться и писать программы за людей большими партиями за копейки, кодовые хендмейдеры будут пейсать штучные программки на замшелых джавах и продавать их техновеганам и любителям дизайнерских кодокукол.

                                        Художников вытеснили фотографы, фотографов вытесняют простота управления в камерах и алгоритмы в смартфонах.
                                        Программисты вытеснили компьютеров, программистов вытеснят обучающиеся алгоритмы.

                                        > анальный зонд, а счастливые рабы
                                        Есть простое правило. Если замышляешь что-то, за что можешь получить, то не обсуждай это ни с кем и не говори вслух, поскольку каждый - предатель.
                                        А если используешь GT, чтобы перевести "Как пройти в библиотеку?" с российского на московский, пусть записывают. Потом пра-пра-правнуков проиграют голоса дедов, которые говорили без ультразвуковых аугментаций.
                                        Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
      • показать все, что скрытоОшибка вышла из пизды твоей мамани, когда та задрав ноги лежала возле параши.
        Ответить
      • Эту проблему решить статически нельзя, но можно облегчить ситуацию с помощью type-guards:
        function isCat(cat: any): cat is Cat{
            return !!cat.name && !!cat.toCoolCat
        }
        
        function addCoolCat(coolness: number, cat: Cat) {
            if (isCat(cat)) {
                this.coolCats.push(cat.toCoolCat(coolness)); // cat is narrowed to Cat
          }
            else {
              throw new Exception('meow')
          }
        }
        //..
        const cat: any = {name: 'Greycat'}
        addCoolCat(80, cat);
        Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий