Добавлен H,
опубликован
В данный момент вы читаете слово “слово”, оно выводится на экране вашего устройства, ноутбука, телефона, часов или кто знает, может даже на экране микроволновой печи. Что по сути стоит за этим процессом? Железо на самом низком уровне получает сигналы и интерпретирует их, после чего обрабатывает и посылает импульс дальше на какое то устройство, например экран. В мире компьютерной техники принято считать что 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.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Кодогенерацией пугают уже не один десяток лет, начиная с попыток генерации кода с UML.
Вообще, будущее будет той самой сказкой. Феодальное средневековье с волшебными палочками мудрецов, которые будут говорить заученные заклинания, не подозревая даже, что это команды для их палок-квантовых компьютеров на забытых ЯП.
Компьютеры, передающиеся по наследству после изучения заклинаний, лол.//
Отредактирован H
Слать через telnet я кстати не пробовал, но это выглядить примерно так:
> helo mx.yandex.ru
> mail from: h@yandex.ru
> rcpt to: zlaya1000@yandex.ru
> data
Subject: Hello world
.
> quit
Отредактирован nvc123
а это опять же яп
а вот если надо чтобы бот мог взять фразу обычного человека и превратить её в код то нужен интеллект как минимум уровня человека
а то и выше
взять хотя бы академию вар3, иногда хрен поймёшь чего они хотят, а я ведь обладаю интеллектом на уровне человека(или надеюсь что обладаю)
— Багнутый? — переспросил Сергей, — ты тоже программистом раньше работал?
Они уже почти месяц работали вместе, но Сергей ни разу не заподозрил в нем бывшего программиста. Жилистый, мускулистый Антон как-то мало походил на бывшего программиста.
— Приходилось подрабатывать в студенческие годы, — немного сконфузившись ответил Антон.
— Да не дрейфь! Я свой. Три года вёрстки и js под все браузеры, — Сергей оживился и надавил чуть сильнее, придавив Антона.
— Тише ты! Штука тяжелая! Из-за нее у меня уже функционируют только 7 пальцев. И вообще тут лучше о кодопрошлом разговаривать вполголоса. Настучат — вмиг вылетим с работы. Фуух, какой тяжелый! Двигай влево до упора.
— Да начальник наш — страсть как бывших программистов не любит. Говорит, мол кто много думает — тот мало работает. Тут всего человек 10 программистов бывших, и они работают тут только по той причине, что с местным начальником раньше знакомы были, как и я впрочем.
— Вот оно как! А я то думал, что я один программист бывший, на остальных и не подумаешь.
— Да кто сейчас о своём кодопрошлом рассказывать будет? Здесь у нас просто помалкивают, и на том — спасибо. Друг у меня есть — Виталий, так у него на работе что придумали для выявления бывших проггеров. Встанут в курилке и начинают рассказывать, как чей-то телефон сделал сайт в 14 раз быстрее бригады программистов и вообще без ошибок. Или как лет 9 назад чей-нибудь друг проникал на соревнования по программированию и с помощью телефона одерживал победу над лучшими программистами в городе. Так вот, рассказывают такие истории заводилы, а сами по глазам глядят — не спалится ли кто-нибудь. Человек с кодопрошлым такое слушать долго не может, обязательно себя поведением выдаст. Давай передохнем, а то еще 12 пролетов, а пальцы одеревенели и не слушаются.
— Страсти какие. Я про такое слышал, но думал, что выдумки. А разве 9 лет назад уже были такие умные телефоны? Вроде как семилетняя технология.
— Были. Сперва как спец прошивка на телефон распространялись. Один хитрец днем честно работал в закрытой фирме, а ночью выкладывал секретные прошивки в закрытой сети. Помню, в то время я себе на квартиру и заработал. Зарегистрировался на фриланс бирже и скармливал телефону задания, а он мне чистый и читабельный код выдавал. За ночь успевал 2-3 задания сделать. В то время, объяснять телефону подробно нужно было, сам додумывать не умел. Это через год он поумнел до веб-серверов в кармане, а еще через год программисты оказались не нужны — даже новый код для этих проклятых телефонов писали сами телефоны! — Антон со злости ударил кулаком по ножке дивана, послышался глухой удар и запахло пылью.
— Долго вы будете копошиться? — донесся противный голос сверху.
— Четыре пролета осталось! — звонко выкрикнул Антон вверх. Схватился за диван и, повернувшись, вполголоса спросил, — а ты как узнал о закате программистов?
— А мне мама позвонила. Позвонила и таким довольным голосом мне сообщает, что сама сделала себе сайт, который я ей обещал сделать уже месяцев семь. Зашёл, проверил — действительно, отличный свёрстанный сайт, открывается быстро, код чистый. Информации о ее садоводстве пока не много, но видно что почти каждый день добавляется та или иная статья, всё удобно, структурировано. Она рассказала, что пару недель назад по телевизору в новостной ленте был сюжет о том, как сделать свой сайт с помощью мобильного телефона. Нужно только объяснить телефону, что ты хочешь сделать сайт и что хочешь туда поместить. Она проговорила со своим телефоном полдня и он сделал всё как она хотела. Я, конечно же, не поверил.
— Захотел проверить? — Антон уже знал, что ответит Сергей.
— Да, в тот же вечер сам попробовал. До этого я вообще не общался с телефоном и держал его AI выключенным, мне удобнее было использовать обычную звонилку, — Сергей перехватил диван по-удобнее и продолжил, — включил и попросил его сделать хеллоуворлдную страничку. Спустя секунду я уже рассматривал ее на своём стационарном компьютере. Что самое удивительное, страничка хостилась прямо на моём телефоне. Мурашки побежали у меня по спине. Я попросил телефон сделать мне страничку с моим резюме и с историей моих проектов. И вот я даю разрешение на доступ к моему компьютеру. Две секунды и я уже рассматриваю своё резюме с актуальными данными. Треклятый телефон нашел моё старое резюме, обновил в нем данные, сверстал страницу и захостил ее. Словно читая мои мысли, он нашел все мои успешные проекты и тоже добавил в резюме. Самое страшное, что эта железяка даже понимает смысл выражения «Поиграть со шрифтами» и подбирает оформление согласно моему вкусу. Стало понятно, как маме удалось так быстро осуществить задуманное. Теперь она наполняет свой сайт по садоводству контентом, просто беседуя с ним, добавляет туда фотографии, общается там с другими людьми. А ее сервер — это просто ее телефон, который лежит у нее всегда в правом кармане.
В тот вечер я еще долго возился с телефоном, заставлял его программировать сложные алгоритмы, строить сложные модели и так далее и тому подобное. Я лихорадочно пытался найти хоть какое преимущество живого программиста перед искусственным интеллектом. Это было для меня как ушат холодной воды. Я понял, что меня можно заменить простым мобильным телефоном, который можно купить в каждом магазине.
Некоторое время слышались гулкие напряженные шаги и шарканье дивана о стены.
— А я сейчас думаю о скрипте для робота, который бы вместо нас диван тащил.
— Я тоже, — сказал Антон.
Отредактирован nvc123
так что ситуация особо не изменится
либо учить операторы и api java либо ключевые слова какого нибудь mySuperCodeGenerator
лишь уровень абстракции немного выше