All streams
Search
Write a publication
Pull to refresh
35
0.5
Send message

Чем программист отличается от математика?

Математик использует математический аппарат. Все эти cos, sin и прочие теоремы. Сложность отдельной маленькой формулы может быть максимальна для понимания.

Программист может (и в 99% случаев) обходится без этого. Программист строит огромные алгоритмы в уме. Огромные графы простых кирпичиков. Сложность отдельного взятого кирпичика не превышает 2+2. Но количество кирпичиков может быть крайне много, а взаимосвязи запутаны до предела.

Это как мозг. Работа отдельного нейрона - понятна и проста. Работа всех нейронов одновременно - непонятно до предела.

Эта мысль описана в вашей книге?

P.S. Можно быть и математиком и программистом одновременно. Также есть области программирования (достаточно мало встречающиеся, по сравнению с огромным ворохом всего программного кода) где математика используется в полный мере. Например симуляция реальности в 3D играх.

O! Разблокировано воспоминание.

Лет 25 назад существовали такие кнопочные телефоны siemens s35 и подобные. У меня был проект - надо было через этот телефон выйти в интернет с контроллера. Сами телефоны управлялись через COM порт и AT команды.

Тогда я был молод и горяч и море по колено и горы по плечу. Сказано сделано. Выход в интернет начинался с PPP протокола. В него упаковывался IP, в него TCP. Потом шёл ворох вспомогательных протоколов типа ICMP. В общем всё это я реализовал на С - было дико интересно.

А потом я наткнулся на недокументированные команды AT которые могли реализовывать стек протоколов TCP/IP - и своя разработка улетела в мусорку ). Весёлые времена были.

Добавлю офтопа. Как же мне смешно смотреть на мою карму )))) Я уже давным давно понял писать сюда что то не имеет никакого смысла. Что бы ты не написал - тебе попросту напихают минусов в карму. Потому как на хабре должен остаться только рекламный булшит и кривые переводы в коммерческих блогах. Даже этот комментарий не имеет смысла писать.

Я бы сказал так:

Со временем ИИ инструменты сыграют злую шутку с программистами мясными мешками человеком

Сильный ИИ заменит просто всех. Продавщиц на кассе. Всех служащих работающих с людьми. Водители. Врачи (кроме хирургов наверно и то спорно). Да вообще не представлю профессии где человек останется нужен.

И программист тоже не нужен будет. Только он станет не нужен не в первых рядах как тут обычно акцентируют, а ближе к концу очереди мясных отходов

Как бы это разделитель. Компилятор без этого может склеить код там где этого не должно быть.

Вот пример - я писал минификатор для файлов javascript. Основная операция это выкидывать ненужный текст. А это как раз всякие переносы строки которые могут и 2 байта занимать (\r\n) и куча пробелов. Если всё это выкинуть то всё склеится. А точка запятой будет как раз это разделять. Ну в javascript ещё пробел можно использовать.

Просто мы для читабельности используем форматирование с кучей переносов строк и пробелов. И вроде как использование точки с запятой уже и не надо.

Вот в javascript так и сделали - хочешь используй, хочешь нет.

Опять же есть языки где вместо точки с запятой используют для форматирования другие символы \r\n, begin end и прочее. Но точка с запятой это минимальный и наглядный символ для разделения блоков.

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

Пусть складывает int

Отлично! Программа будет складывать целые числа (int). Давай уточним оставшиеся детали:

  1. Сколько чисел должно складываться?

    • Фиксированное количество (например, 2 числа)

    • Произвольное количество (пользователь вводит числа, пока не решит остановиться)

  2. Как программа должна получать числа?

    • Ввод с клавиатуры (пользователь вводит числа в консоли)

    • Чтение из файла (например, числа хранятся в текстовом файле)

  3. Как программа должна выводить результат?

    • Просто вывод результата в консоль

    • Запись результата в файл

    • Другое (например, вывод с пояснением, типа "Сумма чисел: ...")

  4. Должна ли программа обрабатывать ошибки?

    • Да (например, если пользователь ввел не число)

    • Нет (программа работает только с корректными данными)

Ответь на эти вопросы, и я составлю код для твоей программы! 😊

Вывод. Столь простую программу мне как программисту делать 1 минуту. Взял и написал. Потому как я уже в подсознании знаю ответы на все вопросы и знаю что мне надо. Просто сразу пишу нужный код.

А ИИ может мне наверно ещё пол часа вопросы задавать?

Наверно новичку это норм.

А если это будет чуть сложнее сложения 2 чисел? Уточняющих вопросов будет как книга Война и мир?

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

А новичок даже не подозревать об их существовании.

Интересный подход. А если попросить текущий ИИ что бы он задавал вопросы и по ответам писал код.

Ради интереса задал deepseek такой промт

Задай мне вопросы что бы написать программу на C#. А я буду тебе давать уточняющий ответы какая должна быть программа.

На что он мне ответил

Конечно! Давай начнем с уточнения, чтобы я мог понять, какую программу ты хочешь написать. Вот несколько вопросов:

  1. Какой тип программы ты хочешь создать?

    • Консольное приложение

    • Графическое приложение (Windows Forms, WPF, MAUI)

    • Веб-приложение (ASP.NET, Blazor)

    • Мобильное приложение

    • Игра (Unity, Godot)

    • Другое (укажи, что именно)

  2. Какую задачу должна решать программа?

    • Обработка данных

    • Работа с файлами

    • Взаимодействие с базой данных

    • Математические вычисления

    • Автоматизация задач

    • Игра или развлечение

    • Другое (опиши подробнее)

  3. Какие данные будет обрабатывать программа?

    • Текстовые данные

    • Числовые данные

    • Изображения

    • Аудио/видео

    • Базы данных

    • Другое (укажи, что именно)

  4. Какие функции должна выполнять программа?

    • Ввод/вывод данных

    • Хранение данных

    • Обработка данных (сортировка, фильтрация, анализ)

    • Взаимодействие с пользователем

    • Сетевые функции (интернет, API)

    • Другое (опиши подробнее)

  5. Какие технологии или библиотеки ты хочешь использовать?

    • .NET Core / .NET 6/7/8

    • Entity Framework

    • LINQ

    • ASP.NET

    • Unity

    • Другое (укажи, что именно)

  6. Есть ли у тебя конкретные требования к интерфейсу?

    • Простой текстовый интерфейс (консоль)

    • Графический интерфейс с кнопками, полями ввода и т.д.

    • Минималистичный дизайн

    • Сложный интерфейс с анимациями

    • Другое (опиши подробнее)

  7. Какая у программы должна быть архитектура?

    • Простой скрипт

    • Модульная структура

    • MVC/MVVM паттерн

    • Микросервисы

    • Другое (укажи, что именно)

  8. Есть ли у тебя предпочтения по стилю кода?

    • Чистый код (Clean Code)

    • ООП (объектно-ориентированное программирование)

    • Функциональное программирование

    • Другое (опиши подробнее)

  9. Какие платформы должны поддерживаться?

    • Windows

    • Linux

    • macOS

    • Мобильные платформы (iOS, Android)

    • Веб-браузеры

    • Другое (укажи, что именно)

  10. Есть ли у тебя конкретные требования к производительности?

    • Высокая производительность

    • Средняя производительность

    • Низкая производительность (например, для простых задач)

    • Другое (опиши подробнее)

Ответь на эти вопросы, и я помогу тебе сформулировать задачу и начать писать программу на C#!

Программа на C#. Консольная. Задавай следующий вопрос.

Отлично, консольное приложение на C#! Давай уточним детали. Вот следующий вопрос:

  1. Какую задачу должна решать программа?

    • Обработка данных (например, сортировка, фильтрация, анализ)

    • Работа с файлами (чтение, запись, редактирование)

    • Взаимодействие с базой данных (запросы, обновление данных)

    • Математические вычисления (калькулятор, решение уравнений)

    • Автоматизация задач (например, выполнение рутинных операций)

    • Игра или развлечение (текстовая игра, викторина)

    • Другое (опиши подробнее, что именно программа должна делать)

Математическое вычисление. Должна уметь складывать числа.

Понял! Программа будет консольным приложением на C#, которое выполняет математическое вычисление — сложение чисел. Давай уточним детали:

  1. Какие числа должна складывать программа?

    • Целые числа (int)

    • Дробные числа (double/float)

    • Оба типа (и целые, и дробные)

  2. Сколько чисел должно складываться?

    • Фиксированное количество (например, 2 числа)

    • Произвольное количество (пользователь вводит числа, пока не решит остановиться)

  3. Как программа должна получать числа?

    • Ввод с клавиатуры (пользователь вводит числа в консоли)

    • Чтение из файла (например, числа хранятся в текстовом файле)

    • Другое (укажи, если есть особые требования)

  4. Как программа должна выводить результат?

    • Просто вывод результата в консоль

    • Запись результата в файл

    • Другое (например, вывод с пояснением, типа "Сумма чисел: ...")

  5. Должна ли программа обрабатывать ошибки?

    • Да (например, если пользователь ввел не число)

    • Нет (программа работает только с корректными данными)

Ответь на эти вопросы, и я помогу тебе написать код!

Я бы ещё добавил что часто бизнес аналитик играет роль щита от самадура-заказчика способного изнасиловать тебе мозг так что и программировать не захочешь.

Вместо тебя мозг насилуется бизнес аналитику. И опять же я замечал что если такой аналитик "не сильно умный" - то ему как бы и норм. Это его "суперсила".

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

Вы правы. Более того про бизнес аналитиков я писал выше. Но на практике я часто видел бизнес аналитиков которые играли роль простого посредника вопросов. И гораздо проще было напрямую связаться с заказчиком и разъяснить все вопросы.

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

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

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

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

Он состоит из.

  1. Общения с заказчиком.

  2. Общение с кучей рабочих людей на предприятии заказчика. Например когда программистская контора делает какую нибудь ERP для предприятия.

  3. Каждодневных утренних планёрок и кучи ненужных совещаний

  4. Собственного опыта программиста.

Всё это практически невозможно вспомнить и написать подробно в промте. Зато когда программист пишет код - этот контекст без труда автоматически всплывает в его голове. Так устроен мозг и нейроны - один нейрон тянет другой и так далее. Не зря есть такое понятие как "воспоминание разблокировано" Глянул мельком на камень на земле по дороге на работу и вспомнил случай из детства который никогда не вспоминал.

Часто есть отрицательный момент. Программист десять лет вёл проект на работе. И в его голове хранится ТАКОЙ контекст этого проекта - что он становится "незаменимым работником". Кроме него уже никто не может в этом разобраться. И ИИ не разберётся. Т.к. 10 лет не варился в этом проекту и не знает кучи подводных камней.

Ну так смотрите я как раз и пишу про эту проблему. Ваш подход подразумевает наличие программиста.

Который:

  1. Создаст архитектуру программы.

  2. Нарежет на блоки задачи. Создат чёткие описание каждой задачи.

  3. Далее поручит ИИ или мидлу каждую задачу.

  4. В случае с ИИ потом придётся досконально изучать каждую строчку получившегося кода.

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

Статья которую я привёл в самом начале, говорит - все программисты будут ненужны. Код 100% будет писать ИИ.

При этом подобные статьи наводит саспиенса - мол ууууу!!!! Ищи программист сейчас любую другую работу!!! A то через год даже в дворники не возьмут.

А на деле появился очередной инструмент, не более. Я говорю про текущие возможности ИИ. Что будет завтра я не говорю.

Upd. Забыл самый важный пункт который выполняет программист. Он получает весьма туманные хотелки от заказчика и переводит это в возможности которые может программа. Часто (если не всегда) заказчик сам не знает что он хочет. И программисту (ладно пусть будет бизнес аналитик) надо выудить это у заказчика. Бизнес аналитик всё равно потом всё передаёт программисту. Часто программист напрямую с заказчиком общается по деталям.

С этой работой ИИ вообще не справится если он не будет сильным.

Ну вот вы как раз и привели ту проблему о которой я писал. Я например полностью согласен с менеджерами. И то же бы хотел что бы ИИ за меня делал всё. В конечном счёте держать свой мозг по 8 часов в день в постоянном напряжении - это адская работа.

Но вот не работает так. И не программисты этого не видят. А я как программист попытался описать суть проблемы.

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

А когда ИИ станет сильным - то зачем ему вообще человек нужен будет. Давным давно смотрел мультфильм Аниматрица. Что то похожее на Любовь Смерть и Роботы. Тоже собрание короткометражек. Так там очень круто было показано как машины отделились от человечества и создали в Африке своё государство и назвали его 0.

В отличии от PIR датчиков, радарные датчики типа HLK-LD2402 имеют радиолокационный принцип обнаружения, поэтому даже статические объекты с легкостью фиксируются данным датчиком.

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

Человек движется в этих волнах - вносит возмущение в этот генератор. В самом генераторе происходит колебание частоты и эти колебания в виде гармоник и висят например на коллекторе генераторного транзистора. Где эти колебания мы снимаем и анализируем.

Т.е. что бы что то зафиксировать надо что бы кто то двигался. Стоячий человек не будет вызывать искажения. У радара совсем другой принцип работы.

Я сам собирал (100 лет назад)* такие датчики на 1 сверхвысокочастотном транзисторе с логикой обработки детекторного сигнала на контроллере.

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

простые и базовые вещи

Ну во превых на разные вопросы

1. У Анны 3 сестры и 1 брат, сколько сестер у брата Анны?

2. Какое количество сестёр имеет брат?

Был дан абсолютно одинаковый кривой ответ:

  1. У Анны 3 сестры и 1 брат.

    • Это значит, что в семье всего 4 девочки (Анна и её 3 сестры) и 1 мальчик (брат).

  2. Сколько сестёр у брата Анны?

    • Брат Анны является общим братом для всех сестёр.

    • У него те же 3 сестры, что и у Анны.

Ответ:
\boxed{3}

Это одинаковость и резанула по глазам, т.к. из опыта общения с другими нейросетями одинаковости не наблюдал. Всегда диалог был в стиле: Да-да я ошибся - вот правильный ответ и подобное.

Простые базовые вещи это когда "конечному автомату" даёшь одинаковые данные на вход - получаешь одинаковые данные на выходе.

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

Раз задаю один и тот же вопрос да ещё и в одном контексте, значит предыдущий ответ вероятно не удовлетворил пользователя?

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

чтобы не говорить ложную информацию

Что значит ложную? Сделал как написано в статье - перешёл по ссылке. Вбил простой запрос. Получил результат. Даже написал про кривой интерфейс. Как раз другие люди увидев это - не попадутся на такую подставу. И не надо мне доказывать что это нормально: Мы сделали продукт. Пользуйтесь - только будете получать херню. А что бы нормально работало - нужно нажать кнопку - работать нормально. Но про это вы не будете знать.

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

P.S. Я сижу программирую - и на 5 минут зашёл просто мозг разгрузить. Статью глянул по диагонали (опять же всё читать - никаких мозгов не хватит), в заголовке же написано это супер пупер-ноухау. Кликбейтный загловок заставил меня потратить минуту (ну а сколько там то нужно что бы просто перейти по ссылке и вбить 1 запрос). Вот вбил...

Юзер френдли интерфейс! Оказывается надпись DeepSeek-R1 это не то что ты используешь этот самый DeepSeek-R1. А это кнопка! И её надо нажать. Я нажал и мне выдало портянку текста на 2 страницы A4 мелким текстом. Не читал. В конце вроде результат 4.

P.S. Задал опять тот же вопрос - ответ одинаковый с точностью до буквы. Другие гпт хоть стилистику ответа меняют. Этот copy-past делает походу.

Просто перешёл по ссылке которая есть в статье. Вот https://chat.deepseek.com/. И думать не думаю какие там версии. Вот зашёл опять по ссылке - там стоит DeepSeek-R1 .

Даже ещё уточняющий комментарий написал. Что бы без всяких там юлений.

Я справшиваю сколько, количество, напиши просто цифру сестёр которое имеет брат

Ответ: 3

Information

Rating
2,092-nd
Registered
Activity