Как стать автором
Обновить
67
0
Александр @Taetricus

Пользователь

Отправить сообщение

Так, может и рассматривать AI как инструмент, не относя на сторону добра или зла?

Тут многие комментарии явно мне не адресованы, но ваш - непонятно. Если мне, то я в статье вообще не касаюсь то к какой там стороне относится ИИ, а высказываю своё мнение о несостоятельности аргументов автора видео.

Статья основана на ложном предположении.

Во первых:
На пару строк выше в статье:

Прежде чем привести примеры, хочу отметить, что я не хочу сказать, "ИИ не может писать хороший код", я хочу сказать "затраты на разработку продукта - не единственный фактор влияющий на выбор между ИИ и людьми"

Во вторых:
Недавно слушал подкаст где программист использовал то ли copilot, то ли chatgpt, в реальном проекте, для написания какой-то функции, функция получилась рабочей, но крайне плохо оптимизированна.

что даже сейчас оптимизация на 99% отдана на откуп компилятору

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

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

Постоянно вижу такое у ИИ. Банально имена переменных начинает путать.

Я уже не говорю про перепутанные от усталости "=" и "==" в каком-то дальнем участке кода, который исполняется раз в месяц.

За 22 года программирования, ни разу не сделал такую ошибку, чтобы она прошла компиляцию.

У машины таких проблем не будет

На чём основано данное утверждение?

Почему не рассматриваются варианты, когда люди сделали все плохо, а ИИ хорошо?

А как это продемонстрирует то, что стоимость разработки это не единственный фактор влияющий на то, кого выберет заказчик: команду людей или ИИ?

видео рассказывали про "скоро", а у вас примеры "сегодняшние"

Там где я приводил примеры про "сейчас", я говорил о том, что в данный момент с ИИ есть проблемы и не факт, что в скором времени они будут решены. А автор видео говорит, что будут и приводит несостоятельные (по моему мнению) аргументы. О том что я считаю аргументы несостоятельными - я статью и написал, намеренно не касаясь темы затронутой автором видео.

Нет, не из ряда. Эта статья о о моём мнение про несостоятельности аргументов известного блогера по теме "ИИ убивает программирование". Вопрос "убивает" или нет, в статье вообще не рассматривается.

ИИ действительно убивает программирование, сам факт подобных статей говорит об этом

Как статья о моём мнение про несостоятельности аргументов известного блогера, говорит о том, что ИИ убивает программирование?

вы вместо того, чтобы программировать

Я писал эту статью в то время, в которое я в любом случае не программировал.

мучаетесь в размышлениях

не мучаюсь

лишит вас работы ИИ или нет - выходит уже лишает

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

В статье вы пишите про разрекламированные платные клиники, я так понимаю они частные?

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

более функциональному стилю, который среди прочего требует иммутабельности

На Shar больше всего влияния оказал Haskell и мне очень нравится функциональный подход, правда только и лишь в сочетании с ленивостью. Но у функционального подхода есть и множество недостатков: непредсказуемое потребление памяти, недетерминированность кода. Также слышал от человека, который использовал Haskell в продакшене, что отлаживать программы на Haskell очень тяжело и бывали случаи когда без дебага программа падала, а с ним - нет. В Shar я взял лучшее (то что я считаю лучшим) из Haskell, а именно - возможность писать функции не обращая внимание на на данные вне функции, а также классы типов, но в Shar нет недостатков (то что я считаю недостатками) Haskell. Shar - детерминированный язык, даже освобождение памяти происходит в предсказуемом месте кода.

И как быть, если понадобилось изменить исходный массив, имея ссылку на него?

В языке нет ссылок.

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

Я увлекаюсь программированием вот уже 21 год и за всё это время, самые сложные в исправлении баги с которыми я сталкивался, были вызваны тем, что есть несколько ссылок на объект и происходит запись по ссылке, которая была рассчитана только на чтения. Такая проблема обычно сразу себя не проявляет, а программа некоторое время работает, а затем происходит ошибка, при этом код который вызвал ошибку полностью корректен и никак собственно с проблемой не связан. Бывало что я тратил десяток часов на поиск и исправление ошибок. Подход используемый в Shar делает невозможным совершение подобных ошибок.

Также некоторое время я программировал на Haskell и мне очень нравилось то, что не нужно париться про состояние данных вне функции, что позволяет абстрагироваться от всего кода и сфокусироваться на одной функции. Тоже самое и в Shar, только в Haskell это достигается за счёт иммутабельности, а в Shar за счёт невозможности изменить данные одного объекта при изменении другого.

Разве создание копии массива в момент переопределения его элемента - не ведет к путанице при отладке?

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

По моему в таких случаях проще вызывать явное копирование массива.

Проще. Но это приведёт к значительно увеличению потребления памяти, а так же к снижению производительности.

Надеюсь, как можно скорее дойдёте до того, что важнее всего — читаемость кода

Надеюсь, как можно скорее дойдёте до того, что то "что важнее всего" является субъективным и что никакой объективной важности, к которой люди со временем приходят - нет.

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

перфекционизм надо давить и это вполне возможно.

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

Даже SIMD не использовался?

Используется, но я считаю SIMD честной оптимизацией, ведь расчёты производятся те-же, но несколько вычислений за раз.

Под вашим текстом Хабр предлагает вакансию Разработчик компилятора и интерпретатора

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

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

Нет. Я занимаюсь программированием вот уже 20 лет и за это время я перепробовал множество языков, парадигм и подходов в программировании и прекрасно знаю, что мне подходит, а что нет. Из всех языков которые мне нравятся, но к созданию которых я не имею отношения - Haskell. Программирование я использую для реализации своих идей, а Haskell очень не практичен для реализации многих из них и получается так, что Haskell как язык мне нравиться, но он всё равно мне не подходит. Поскольку из всех известных мне языков мне нравится только Haskell, но он мне не подходит, я начал создавать свой язык. Если рассматривать язык как комбинацию из различных идей, то мне от языка нужно было наличие некоторых идей, а вот остальные идеи в языки мне приходовалось подбирать. Когда я заканчивал с подбором идей, мне нужно было решать как их грамотно реализовать. Ничего общего с отсечением от гранита.

А если идеала нет — что будете делать?

Цитата из моей статьи:

Когда проектируешь язык программирования, всё время приходится идти на компромиссы

Я не знаю как вы представляете себе идеал, но в моём представлении, в идеале нет компромиссов. Я и не думал делать идеал.

И сколько времени вы себе готовы дать? Неужели всю свою жизнь?

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

Какой процент из своих хотелок вы уже смогли удовлетворить за эти годы? Есть хотя бы половина, или ещё кучу идей проверить предстоит?

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

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

Вот только любое занятие ради самого занятия это высокотехнологическое самоудовлетворение

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

Привет!

Привет!

Я думал что я один такой сумасшедший.

После первой статьи мне писало много людей и по всей видимости - нас не мало.

Я вот дольше тружусь. Больше 25 лет. Правда я и задачу себе поставил покруче. Создать новый процессор, под него систему и язык. Уж очень мне не нравится классическая архитектура.

Если всё делать не тяп-ляп, то мне кажется, что может не хватить жизни одного человека, что-бы всё это закончить.

" А есть ли смысл в оптимизации?". Неужто принципиально насколько быстрее/медленнее что-то выполнится? Если задача решается в приемлемое для пользователя время, то и бог с ним.

Так я об этом и написал в этой статье. Вот цитата из статьи:

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

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

А как найти границы этой части для [pi * 999999 / 2000000, pi / 2]?
Функция y = sin (x) выбрана для того, чтобы наглядно проилюстрировать идею. Для того, чтобы находить на этой функции максимум, не нужно делить график на 2 части, мы и так знаем как ведет себя sin x. А тому как находить такие границы уже при обучении нейронных сетей, посвещенно примерно 40% статьи.
Значит ваш вид чисел может состоять не просто из промежутка, а из двух, а то и более промежутков. А как, тогда, простите, определяется какие промежутки к каким числам относятся? Никакого дополнительного символа нет
Так я и не пытаюсь ввести в математику новые числа, эта статья об обучении нейронных сетей. Видимо для того, чтобы абстрагироваться от вычислений, мой мозг придумал некие числа, я мог бы вообще не упоминать эти числа, но поскольку в статье я не только написал об алгоритме, но и о том как я его придумал, то я и написал о числах. Поскольку при обучении нейронных сетей не будет возникать ситуаций, когда одно число состоит из нескольких промежутков, никакого символа придумывать не нужно.
Нигде не говорится, что ваши суперпозиционные числа могут состоять из двух или более промежутков.

Цитата из статьи:
Хотя и в суперпозиционных числах, и в плотностных числах может быть сколь угодно много отрезков возможных чисел (например: суперпозиционное число состоящее из 3 отрезков ([0, 1], [20, 40], [100, 101]) ), поскольку я эти числа использую только в контексте обучения нейронных сетей, то всё что я говорю ниже, относиться к плотностным числам которые состоят из 1 отрезка ограниченного 2-мя вещественными числами.


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

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

Число состоящее из двух промежутков — ([0, 1], [2, 3])
Число состоящее из одного промежутка — [12, 17]
Сумма чисел = [12, 20]
А может ли ваше число состоять из нуля промежутков?
Нет
На счёт вопроса про бесконечность. Помните, как вы ловко складывали промежутки по своим правилам? А теперь сложите промежутки с бесконечностью с каким-нибудь (1,3) промежутком. Боюсь, что этого сделать невозможно

При обучении нейронных сетей это и не нужно.
И чтобы применить ваши числа в нейронных сетях нужно не просто уметь их складывать и вычитать, нужно уметь находить производную
Алгоритм обучения без вычисления производной уже указан в статье.
Удивлён таким способом расчёта. По предыдущему примеру здесь должно было получиться бесконечное число промежутков, но они у вас по какой-то магии слились в два.
Синус может быть вычислен для любого вещественного числа, но результат всегда будет в промежутке от -1 до 1, а результатом выражения 1/x, где x принадлежит множеству [-1, 1] может быть любое число кроме 0.
Так а по предложенному мною варианту есть что-то интересное или похожее?
Нашлось нечто похожее на вариант с «суперпозиционными» числами, но чего то похожего на вариант с «плотностными» числами, не увидел.
Другое дело — алгоритмы сжатия изображения/аудио, тут смогу поддержать беседу или даже подкинуть идей)
Я не то, что сильно такой тематикой интересуюсь, просто размышляя над решением одной задачи, я пришёл к алгоритму с помощью которого можно сжимать данные с потерями и в голову сразу пришла мысль о изображениях, аудио, и видео. В реализации алгоритма нет ни каких сложностей, его можно реализовать хоть сейчас, но реализация и испытания займут от недели до месяца, а я в данный момент занят своим компилятором, как допишу его, на своём языке и реализую этот алгоритм и сравню его с jpeg.
"мне кажется" и я написал статью. По моему мнению если есть идея которая может быть полезна, но это не доказано, то лучше её опубликовать и пусть даже она окажется бесполезной. Если вы с этим не согласны, то это ваше мнение и если вы придумаете хорошую, по вашему мнению, идею алгоритма, но вы не сможете доказать её полезность, то вы можете её не публиковать, я вас за это упрекать точно не буду.
По какому такому определению?

Результатом применения любой унарной операции к суперпозиционному числу, это суперпозиционное число, которое охватывает множество чисел, которые могут быть получены в результате применения унарной операции к любому числу из множества, которое охватывает исходное суперпозиционное число. Например: sin([-pi, pi]) = [-1, 1]. Результатом применения любой бинарной операции над суперпозиционными числами, это суперпозиционное число, которое охватывает множество чисел, которые могут быть получены в результате применения бинарной операции к двум любым числам из множеств, которые охватывают исходные суперпозиционные числа. Например: [-3, 6] — [-12, 7] = [-10, 18].


Вот у вас есть число x=[-1, 1], чему равно 1/x?
(-бесконечность,0)(0, бесконечность)
Ээээ… так «можно производить» или «невозможно посчитать»?
Можем ли мы в математическом смысле вычислить выражение TREE(3)*TREE(3) — да можем, а использовать для вычисления в реальных компьютерных программах — нет, не хватит места для хранения в двоичном виде.
Это какое-то ваше собственное определение «простых feedforward», я так понимаю?

Да. Но в различных источниках по которым я изучал нейронные сети, всегда рассматривалась нейронная сеть в которой каждый сигнал поступает на вход каждого нейрона следующего слоя и сигналы умножались на веса, а сумма каждого сигнала перемноженного на вес поступает на вход функции активации, в последствии я изучал и более сложные feedforward сети и у меня почему то отложилось в голове название таких сетей как «простые feedforward», это мой недочёт, но я и не идеален и не претендую на звание лучший писатель.
То есть я считаю, что нужно писать статью о том, что может быть полезно.
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Каменец, Брестская обл., Беларусь
Дата рождения
Зарегистрирован
Активность