Сидоров Максим@MaxSidorov
Senior Android Developer, teamlead SberDevices
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирован
- Активность
Специализация
Разработчик мобильных приложений, Архитектор программного обеспечения
Ведущий
От 20 000 $
Android SDK
Kotlin
SQL
SQLite
Java
Базы данных
ООП
REST
C#
Отличное и фундаментальное исследование!!!
Абакар, ты монстр)
Я высказывал предположение, что все фреймворки, имеющие оберку для корутин сами переключат диспатчер на IO, когда это будет нужно.
Все таки получается, что для вызовов ретрофита можно не парится по поводу смены диспатчера, так как оказалось что под капотом он вообще использует другую реализацию.
Идея для следующей статьи, проверить тоже самое для обращений к room)
Вы разобрали очевидные минусы и плюсы.
Из ключевых, огромный минус LinkedList это объем памяти. А еще один - это то, что каждый элемент является экземпляром и при вставке элементов мы вынуждены создавать инстансы объектов, что довольно медленно. Попрбуйте сделать тест на копирование данных из массива в 1 млн элементов в обе коллекции (в конец) и вы увидите разницу. Только arrayList нужно создать сразу с нужным капасити.
Кстати отличной заменой LinjedList для очередей служит класс ArrayDequeu который лишен недостатков LinkedList и работает в среднем в 1.5 раза быстрее
Мне кажется есть отличный класс ArrayDeque который умеет все что умеет LinkedList но при этом уделывает его по скорости в разы и по памяти тоже.
Все таки массивы работают намного эффективней, чем созлание инстансов и хранение по 3 указателя на элемен
А я вот полностью согласен с автором. Я тоже аыходец из 90 и видел как программирование развивалось все это время. То о чем пишет автор неизбежно. Языки программирования вымрут как класс, а разработка решений превратится в нечто совсем иное. Мы будем разрабатывать системы, но уже вряд ли будем писать код.
Это очевидно из истории развития языков. Я начинал еще с асмемблера и в то время крайне невероятно было то, что мы воспр инимаем как обыденность сейчас.
Генерация кода прямо в процессорные инструкции это уже настоящее. Просто сейчас мы описыааем инструкции на высокоуровневых языках и использую низкоуровневые абстракции, а через несколько лет будем делать это на естественном языке и с помощью высокоуровневых абстракции и паттернов.
Я опубликовал исходники тестов и всех функций: https://github.com/maxssoft/yield_recursion
И обновил статью. Перепроверил все результаты. Yield работает в сотни раз медленнее всех остальных подходов.
Да, я тоже заметил это. На выходных поправлю и обновлю статью. Заодно выложу ссылку на исходники тестов и всех функций
На выходных оформлю код в github, его надо еще причесать) и отправлю issue в JetBrains и возможно в Google и тогда скину ссылку на github в статью. Просто я статью написал за два дня и еще не успел все оформить как следует.
Я создаю следующую иерархию вью
и так на заданный уровень глубины (1000, 3000, 5000)
Затем я выполняю тест, который находит все view, чей id делится нацело на 10 (то есть примерно 10% всех вьюшек). Идишники вьюшек генерируются автоинкрементом
И вот код самого теста, но он тривиальный
Аналогичные тесты и для всех остальных функций
Я и сам задаюсь этим вопросом. Посмотрим что ответят в JetBrains
Ну я регулярно слышу его на реальных собесах)
Мне кажется в перспективе все будет еще хуже. ИИ учится за дни тому, чему люди учатся десятилетиями. Я боюсь, что в какой то момент образование может обесценится. Зачем учится 10-20 лет тому, что ИИ уже и так умеет. И тогда начнется деградация. Скорее всего, к тому времени ИИ уже будет вполне самостоятельной и независимой веткой в общей эволюции разума на нашей планете. А люди со временем просто вымрут, как когда то вымерли динозавры.
По сути для полноценного разума ИИ не хватает реализации самосознания, которое даст ему мотивации и цели.
Вроде мы сами еще не до конца понимаем, что это такое и как оно работает. Но как только мы поймем и опишем что это такое, с человечеством можно будет простится.
У меня проблемы с пессимизмом)
Я пробовал генерировать код с помощью chatGPT и результаты уже сейчас поражают.
Мне кажется когда то давно таксисты тоже говорили по контр-аварийное вождение и все такое.
В работе разработчика на самом деле есть две большие составляющие. Кодирование и использование типовых паттернов и подходов для проектирования типового решения. Тот высокий термин Software Engineer - это просто опыт, который равен знанию многих типовых паттернов. ИИ вполне способен решать обе эти задачи. И есть крайне редкие моменты, когда мы действительно создаем что то новое, что никто никогда не делал или то, что еще не стало типовым подходом. Вы часто в своей жизни создавали что то подобное?
Да, но кодирование - это как раз ты самая нудная и простая работа, за которую нам платят много денег. Потому что обычный человек не может кодировать. Но обычный человек вполне может неплохо думать и генерировать идеи и для этого ему не нужно учится десятки лет. Сейчас в программировании очень высокий порог входа, а будет низкий.
ChatGPT это транслятор. Сейчас аналитик продумывает систему. Разработчик переводит аналитику в программный язык, по сути выполняя роль транслятора. С LLM моделями в перспективе 10 лет разработчик в этой схеме станет лишним.
Статья как раз об этом, что судя по всему скоро будет "никаких программистов на проекте"). Менеджеры всегда выигрывали эту войну и видимо на этот раз победа будет окончательной)
В том то и дело, что Microsoft и Google уже это делают со своей кодовой базой в своих собственных in-house решениях. А недавний релиз Open AI уже говорит о том, что эта модель выходит за пределы больших корпораций. Я думаю у нас осталось 5-10 лет, прежде чем это станет мейнстримом.
Тут речь идет о том, что в то время еще не было персональных компьютеров и все программирование было уделом больших компаний. В СССР это были НИИ и вычислительные центры на предприятиях. В те времена ни у кого дома еще не было персональных компьютеров.
В том то и дело, что нет. Я думаю, что со временем мы просто перестанем писать код, также как давно уже перестали писать на ассемблере. Я вот в детстве еще писал на нем, но сейчас этот навык уже не актуален, так как появились высокоуровневые языки.
Сейчас следующий этап, мы все также будем оставаться инженерами и будем продумывать решения, но кодироваться скорее всего они будут уже без нашего участия.
Не надо пытаться помогать JIT компилятору делать его работу)
Суть инлайнинга не в экономии методов. Косвенно он может их сокращать, но задуман он совсем не для этого.
Да, интересное решение. Кажется что отменяем строгую типизацию, но она просто переносится в место вызова функции.