Добавлен , опубликован
В данный момент вы читаете слово “слово”, оно выводится на экране вашего устройства, ноутбука, телефона, часов или кто знает, может даже на экране микроволновой печи. Что по сути стоит за этим процессом? Железо на самом низком уровне получает сигналы и интерпретирует их, после чего обрабатывает и посылает импульс дальше на какое то устройство, например экран. В мире компьютерной техники принято считать что 1 (единица) это присутствие сигнала, 0 (ноль) наоборот, таким образом любая программа на любом языке программирования в конечном счете превращается в последовательность из нулей и единиц.
Уровень абстракции в современном мире настолько высок, что программист вообще не обязан думать как именно его print(‘hello world’) будет выведен в консоль, или на экран. За этим стоит огромный пласт кода, сотни тысяч или даже миллионы строк интерпретатора, компилятора и самой ОС. В теории вы можете словить баг даже в программе состоящей из одной строки, которая традиционно здоровается с миром “привет мир”. Но эта статьи не совсем о багах в мире языков программирования, если вы считаете себя программистом, попробуйте мысленно ответить на вопрос “Что именно делает программист”? Как только закончите с этим, можно вернутся к чтению следующего параграфа.

Кто такой программист?

Я думаю ответом у вас получилось что-то вроде “программист придумывает алгоритмы и пишет код”, если упростить и разобрать это на мелкие составляющие, то в конечном итоге мы получим утверждение в духе “программист думаем головой и нажимаем на клавиши”. Кстати нажимать на клавиши может даже обезьяна, само по себе это умение не делает программиста - программистом. Получается что все чего я хочу при написании кода, это думать над программой а не нажимать на клавиши.
Представьте ситуацию, есть 3 человека:
  • Читатель - знает только английский язык и любит читать книги
  • Переводчик - знает два языка, русский и английский и может писать книги
  • Автор - знает только русский язык
Теперь давайте подумаем как в данный момент происходит выпуск новых шедевров:
  • Автор умеет думать головой, и у него есть задача издать “Пособие по J37 для чайников” на английском языке. Что для этого нужно сделать? Ну для начала выучить этот язык, потом написать книгу и отдать её читателю.
Именно таким образом работает программирование в данный момент. Программисту приходится изучать языки чтобы объяснить читателю (машине) суть своего произведения. Если вы внимательно читали, то заметили что “переводчик” пропал, и остались только “автор” с “читателем”, а что если представить что уровень абстракции кода будет настолько высоким, что в качестве “переводчика” будет выступать отдельная программа, на вход мы ей будем говорить что хотим “привет мир”, а она будет сама писать код на подходящем для конкретной задачи - языке программирования.

Кодогенерация

В данный момент (2016 г.) такое явление уже можно повсеместно наблюдать в разных языках и фреймворках, люди по натуре достаточно ленивые, и уж точно не хотят делать однотипные действия. Существует множество различных инструментов прототипирования и генерации кода. Вы к примеру говорите консоли:
bin/cake migration CreateUsersTable name:string email:string; bake all Users;
и она вам создаст кучу кода и файлов, это и миграции (up-down), и модели таблиц, сущностей, реляционные связи, юнит-тесты, и даже контроллеры и шаблоны чтобы управлять “юзерами” и видеть изменения в удобном виде. Конкретно этот пример из фреймворка cake (php), но аналогичные решения есть везде. По сути уже давно не “модно” писать шаблонный код, и все стремятся писать роботов которые будут писать шаблонный код за них.
Если вы хоть немного разбираетесь в веб программирование (пишу про него, так как это моя основная специализация на данный момент), представьте сколько времени уйдет на:
  • создать вручную таблицы данных
  • не забыть про реляционные связи, индексы, автоинкримент
  • создать сущности и класс для работы с этими данными (+наследование от интерфейса)
  • не забыть про валидадцию входных данных
  • написать нужные запросы к базе
  • не забыть про связи, и подгрузить нужные данные из других таблиц
  • связать все подгруженные данные из соседних таблиц в виде сущностей (классов)
  • написать контроллер для управления и шаблон для вывода
  • а есть еще тесты, хелперы, миграции (вам же надо перенести эти таблицы в git?), а как насчет тестовых данных, ну и про оптимизацию не забудем. А что насчет кеша? Добавить к базе коммиты тоже хорошая идея, вдруг нужно будет откатить удаление, если произошла ошибка при удалении связной сущности. А если нужно эти данные вывести по нескольким протоколам, написать web/json/xml, ну и пусть будет сортировка, пагинация, фильтрация, api..
В данном случае фреймворк cake (php) решает это одной консольной командой (ну на самом деле двумя, надо еще “мигрировать” миграцию), всего 5 секунд и у вас уже полностью рабочая табличка с простой админкой. Но конкретно данная статья не про плюсы этого фреймворка, я просто хочу поделится с вами моим взглядом на программирование через 50-100 лет.

Фабрики роботов фабрик роботов

Само по себе написание кода, должно полностью исчезнуть, ну или заниматься этим будут самые отважные из числа программистов, меньше 0.01% от общего числа. Эти люди будут писать интерфейс низкоуровневого бота, который будет писать других ботов, которые будут писать ваш код за вас. Остальные смогут через интерфейс, просто описывать свои мысли и логику, а бот переводчик будет конвертировать её в машиночитаемый код. Кстати это не обязательно должно быть с помощью голоса (уже представили офис с программистами которые бурчат под нос “выведи мне тут список юзеров, да мать твою сначала проверь доступ админа”?) Это может быть и прямой коннектор к мозгу, такой себе USB 5.0, который будет “слушать ваши мысли”.
В любом случае очевидно что уровень абстракции с каждым днем растет все выше, и происходит это уже в геометрической прогрессии. Сейчас на свете довольно много умных людей которые “могут в логику”, но начать программировать им мешает то, что сперва нужно выучить очередной питон или C++. Высокий уровень абстракции над языками сможет полностью устранить эту проблему, и решать задачи мы сможем на любом подходящем для этой задачи языке. Но в данный момент все еще большинство разработчиков знают и используют от силы 2-3 языка, по этому решают любые нестандартные задачи колхозом и велосипедами, кто-то на perl пишет сайты, кто-то на php пишет оболочку для raspberry pi.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
21
8 лет назад
0
nvc123, нет ограничений обучаемости, есть только ограничения скорости обучения.
2
28
8 лет назад
2
girvel, есть ограничение на результат обучения
результат нейронной сети сильно зависит от входных данных
таким образом нейронная сеть не может создать то что не имеет под собой основания
из за этого люди не могут придумать чтото отличное от всего остального а могут лишь дорабатывать то что они подсмотрели у природы
а вот у метода случайных мутаций такого недостатка нету
вот только скорость обучения там почти 0 и очень много неудач
0
21
8 лет назад
0
nvc123, потому что мы используем примитивные нейронные сети. У мозга все значительно более сложно: он, например, специально допускает ошибки чтобы создавать с малой вероятностью неожиданные решения. Это почти то же самое, что и метод случайных мутаций - если ошибка полезная, она принимается как дополнение к текущим знаниям и на ее основе продолжается их развитие, если нет - ошибка просто исправляется обычным путем. А еще он ставит задачи на фон и использует данные из других областей. Поэтому у мозга нет технологического ограничения на результат обучения, только связанные с текущей мощностью мозга.
0
28
8 лет назад
Отредактирован nvc123
0
girvel, у мозга есть ограничение
любая нейронная сеть имеет данное ограничение включая мозг
girvel:
если ошибка полезная
полезность ошибки оценивается на основе существующего базиса
таким образом даже если ошибка полезна то нн будет считать иначе если данная "ошибка" сильно отличается от текущей нн
для того чтобы ошибка была принята как полезная нужно огромное количество факторов доказывающих её полезность(например оказаться на волосок от смерти)
некоторые называют это упёртостью
это кстати и является причиной всех срачей и холиваров включая и текущий
с случайными мутациями всё намного лучше ибо там работает естественный отбор
все ошибочные решения уничтожаются средой
из минусов случайных мутаций малая скорость развития и потолок развития зависящий от среды
0
21
8 лет назад
0
nvc123, есть две компании: А, Б и В. Сотрудник компании А допустил ошибку на важном этапе работы, которая оказалась полезной и позволила компании А стать лидером рынка. Компания В допустила подобную ошибку, но неверную, из-за чего заняла меньшую долю рынка. При анализе успеха компании А выявляется полезная ошибка и используется дальше. Компании В никто не подражает, потому что у нее дела идут не очень хорошо.
0
28
8 лет назад
0
girvel, предоставленная тобой схема слишком упрощена и является обычным алгоритмом обучения с ошибкой
и эта ошибка всеравно лежит в пределах базиса
если компания A занимается изготовлением изделий из железа то ошибка сотрудника не может привести к изготовлению изделий из золота
ибо у него нету золота
а небольшие изменения в процессе изготовления вызванные ошибкой сотрудника лежат в пределах погрешности обучения нн и не оказывают воздействия на направление развития нн
единственный вариант в котором подобные ошибки могут сильно повлиять на развитие это когда базис не был сформирован (у людей это примерно до 12 лет)
но даже тогда это просто изменит базис
и в будущем обучение будет происходить с учётом нового базиса
будь нейронные сети таким идеальным инструментом как ты их описываешь мне бы не пришлось чистить вопросы в академии
да и вообще само понятие личности отсутствовало бы
0
21
8 лет назад
0
и эта ошибка всеравно лежит в пределах базиса
Ну да. Я именно об этом и говорил - ограничения есть, но только на скорость обучения. Человек может совершить все возможные открытия, если он будет иметь достаточно времени. И происходить эти открытия будут при помощи смещения базиса.
само понятие личности отсутствовало бы
Необычный тезис требует необычных доказательств.
0
28
8 лет назад
0
Ну да. Я именно об этом и говорил - ограничения есть, но только на скорость обучения. Человек может совершить все возможные открытия, если он будет иметь достаточно времени. И происходить эти открытия будут при помощи смещения базиса.
смещение базиса ограничено в ширину(количество вероятностей)
иначе говоря человек может совершить все возможные открытия в пределах того что он считает реальностью
в то время как все иные варианты даже не будут рассматриваться т.к. противоречат базису
исключение лишь внешние причины наподобие повреждения мозга и прочего
пример :
нн считает что физика реальна а магия нет
в результате он будет исследовать физику и изучит её всю
а вот за магию даже не возьмётся
это не значит что магия существует
но сам факт того что отбрасывается эта вероятность является минусом т.к. таким образом можно случайно отбросить чтото важное и никогда к этому не вернуться
случайные мутации действуют наоборот
они исследуют все направления
но как только они достигнут необходимого для выживания результата они практически прекращают своё развитие
0
21
8 лет назад
0
nvc123, рано или поздно все равно человек попробует магию. Изучит всю физику - она не объяснит всех явлений - возьмется за магию. И вообще, все области знания, не связанные с гуманитарными науками, связаны между собой очень крепко и трудно пропустить целую область. И человеку рано или поздно придется перепроверить все варианты, и если он будет иметь реальные доказательства, что магия реальна, то я не думаю, что он не станет ее проверять. Ученые часто делают открытия, противоречащие их здравому смыслу,
Случайные мутации как раз-таки и действуют наоборот. Они не исследуют все направления. Из тысячи направлений они случайно выбирают шесть и оставляют лучший из шести, а не из тысячи, и из-за растущей конкуренции они никогда не вернутся к этому выбору. Метод мутаций хорош тем, что дает хороший результат, быстрее, чем при переборе всех вариантов, но при этом ему очень трудно прийти к наилучшему результату, поскольку жесткой конкуренцией он загоняет себя в тупик.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.