Alexey Evdokimov @PastorGL
Software engineer. Practicioner, not a theorist.
Information
- Rating
- 1,202-nd
- Location
- Ижевск, Удмуртия, Россия
- Registered
- Activity
Specialization
Backend Developer, Software Architect
Lead
Big data
Spark
Java
Database
Geoinformation systems
Software development
Algorithms and data structures
Development management
Automation of processes
ETL
Я почти 10 лет занимался веб-разработкой. Правда, начинал ещё с Perl/CGI. Такие очень древние технологии, когда для ускорения бэка приходилось писать поначалу модули на сях, а для фронта — аплеты на допотопной жабе. Потом какое-то время у меня был хайлоад на оракле, далее — всякий и разный жабоэнтерпрайз в нескольких вариациях, а последние лет 8 я занимаюсь биг датой. Нормальной такой, с петабайтами геоданных.
«Необычным» программистом я себя при этом не считаю. Ну знаю два десятка языков и пять разных платформ, но это ведь наживное. Написать прошивку для станка? Хм, если такая задача вдруг возникнет, то почему нет? Для роутеров и фотоаппаратов я прошивки собирал... справлюсь, думаю.
Пруфы-то легко гуглятся, но пока вы придерживаетесь механистических взглядов, они вам никак не помогут :)
Слава богу, за 25 лет мне ни разу не доводилось заниматься тупой обезьяньей работой. Всё время какой-нибудь R&D, интерпретаторы, контейнеры, и прочая дичь. Значит, никакие ИИ не для меня, так и буду продолжать руками писать... точнее, головой :)
Абстрактное мышление ни в какой кремний запихнуть нельзя.
Вы бы хоть матчасть для начала изучили, а именно, какие конкретно части мозга активируются при обдумывании тех или иных понятий. Если изучите, сильно удивитесь. Потому что никакого абстрактного мышления не существует.
Когда думаешь о наборе текста на клавиатуре, задействуются ровно те же самые нейроны, которые двигают твоими пальцами. Просто слегка иначе. Когда думаешь о счётных множествах, то те же нейроны, которые реагируют на что-то большое в поле зрения. Просто чуть по-другому. И так вообще со всем.
Человеческое сознание всего лишь побочный артефакт нашего wetware. Повезло вот миллион лет назад предкам людей получить пару мутаций в энергетическом обмене, которые позволяют поддерживать альтернативный режим работы мозга помимо его прямой функции — управления триллионами клеток тела.
Никакая модель с такой задачей не справится.
Механисты, которые не знают, что в настоящем человеческом мозге между двумя соседними нейронами могут быть тысячи синапсов, причём совершенно разных — как по скорости реакции, так и по медиаторным молекулам, которые бывают как стимулирующие, так и тормозные, — просто понять не могут, что повторить его в софте физически невозможно.
А ведь даже один синапс это ещё и объём + время. И сколько вокселей надо, чтобы в точности его смоделировать? А потом помножить на параллельную обработку, причём честно параллельную — ведь каждый нейрон уже сам по себе как независимое процессорное ядро со своим тактовым интервалом.
И в мозге их чуть более чем дофига, да ещё и конфигурация самого wetware меняется всё время. Никакими квинтиллионами параметров такое не замоделить. Но кажется, что вот-вот, что ещё чуть-чуть... Ну, пускай кажется, что ли.
Один мой вузовский препод (ох и мерзкий же был дядька) любил повторять, что большинство начинающих программистов было бы рациональнее заменить дрессированной макакой. (25 лет назад ИИшенок ещё в продакшене не было, так что да, действительно, хорошо выдрессированная под типовые задачи макака вероятно казалась ему лучше бестолкового студента.)
Вот только помимо типовых задач, которые раньше копировались со стековерфлоу, а теперь пишутся бредогенерилками (обученными на том же самом выхлопе стековерфлоу по большей-то части), есть нетиповые. Решений для которых в обучающих выборках нет.
А если нет качественно обучающей выборки, то никакая языковая модель ничего полезного по неизвестному ей контексту не напишет. Так уж они устроены.
Прям так и хочется как в Википедии поставить [кому?] [когда?] и прочие метки.
В вашем-то случае может и помогает, если вы натренировали их на всей кодовой базе дотнета, и собственно для дотнета и используете. Для автоматизации написания перекладывалок из джейсонов в постргю тоже, наверное, неплохо такие тулы подойдут. Но вот только стоит заняться чем-то более редким, полезность их уменьшается экспоненциально.
Ровно так же как все генералы готовятся к давно закончившейся войне, искусственные идиоты не могут выдать ничего сверх того, на чём были обучены. Бесконечный ремикс с фантазией на подмешанные из промпта токены — сколько угодно.
Вот только смысла сгенерированной ими же самими последовательности токенов они понимать не могут, и покуда не научатся, у кожаных есть преимущество. Ну а что касается этого самого понимания смысла, то у современных моделей его даже близко не просматривается. Это просто гигантские формулы с миллиардами коэффициентов. А формула, какой бы гигантской ни была, не может чего-то осознавать.
Ну как что. Софт просто развалится. Все эти «сопилоты» не видят общей картины, значит, через пару бездумных прогонов через них любая кодовая база превратится в месиво. А как тяжело заставить бредогенерилку исправить стиль отлично видно на этих примерах.
(Но всё равно хайп сдуется рано или поздно.)
Ого, я даже угадал. Действительно, человеки обошлись с this/that ровно так, как в русском языке положено обходиться с английским указательным артиклем, а нейронки везде навтыкали мерзотный «этот».
(Дисклеймер: я почему-то не смог осилить «Дюну». Начинал читать в оригинале несколько раз, так до конца даже первой книги не дотянул, бесит она меня.)
Хммм... значит, LLM по какой-то причине очень любят оставлять в тексте английское this/that, и в переводе получаем сплошное «этот-этот-этот». Омерзительно.
Тоже верно. В зависимости от того, какой метод применялся для моделирования предметной области, получившаяся абстрактная модель может быть разной. (И если продукт в итоге не дошёл до релиза, значит, неправильный был выбран метод... :)
Таки раскрылся. Правда, ещё больше 40 лет назад. За аппаратом всё это время таки наблюдали, известно точно.
У молотка должен быть метод .удар(). А булевское свойство .забиваемость() у наследника класса Материал, из которого состоит экземпляр класса Поверхность (заданный оному через соответствующее свойство), в который экземпляр класса Гвоздь забивается методом .забить() экземпляром класса Плотник. Перед этим надо ещё координаты забивания указать, и выбрать конкретный молоток, потому что у плотника их несколько... И количество вызовов метода .удар() зависит как от нужной глубины забивания, так и от сопротивления материала.
А то ведь гвозди не сами себя забивают, и в металлический швеллер их тяжеловато будет вогнать.
Короче, сначала модель надо ещё как следует смоделировать.
Если понимать под «ООП» имплементацию с классами, то некоторые претензии можно принять. И то с натяжечкой, — если злоупотреблять концепциями ряди концепций, как это делают авторы некоторых фреймворков, код может превращаться в переусложнённое маловменяемое нечто. Но ведь и другие имплементации бывают. Прототипная, на локальных контекстах/лямбдах. В конце концов, даже на голом C можно писать во вполне себе объектном стиле.
И вообще, для гоняния туда-сюда сообщений между базой и юаем развитое ООП и в самом деле не особенно нужно (для логики вполне можно обойтись процедурным программированием, а DTO, которые не имеют собственных методов — это же просто структуры), но для написания некоторых классов приложений подход с классами может очень удобным.
Если пишешь интерпретатор или компилятор, например. Или когда твои абстрактные объекты точно моделируют объекты реального мира — причём не собачек или кошечек, а что-то на пару порядков посложнее. Или если есть необходимость в инверсии контроля и инжектах логики, что часто бывает в распределённом энтерпрайзе. Там, где всё действительно строится на интерфейсах, стратегиях, и фабриках, просто потому что код размазан между десятков сервисов, и логика приложения собирается в далёком рантайме.
Просто серебряных пуль и универсалий не существует, каждому классу задач — свой ограниченный набор инструментов. А ещё над методологией разработки нужно думать головой, а не тупо брать какой-то шаблон, потому что он популярный. Обзывать же что-то скамом только из-за того, что для вашей конкретной частной задачи оно плохо подошло — даже не глупость, а свинство.
Ну так развал СССР это ведь «крупнейшая геополитическая катастрофа XX века» по мнению Путина В.В. (см. «Обращение к Федеральному собранию» 2005 года).
Ну а коли президент так думает, значит, надо всеми силами восстанавливать совок. Значит, всё логично и правильно, точно в русле курса партии и правительства...
Не сегодня, так завтра развернут на всю страну.
Ну, останутся разработчики без stackoverflow и docker, ну так и хер с ними... Хабр ведь не про разработку же.
Чтобы заблокировать к чёртовой матери половину интернета, руководствуясь какими-то внутренними распоряжениями, им и так полномочий хватает. Куда больше-то?
Впрочем, даже сокрушаться на эту тему уже надоело. Вот прям щас они Cloudflare зарезали для большей части страны. Видимо, просто потому что могут.
Которые тоже дружно пойдут на рынок труда, как только маленькому проценту программистов станет невозможно заниматься разработкой. Вот только они что-то найдут, а мы вряд ли.
А на чём сам 1С написан? Не на visual C++, часом? А СУБД какая штатно? Не PostgreSQL ли?