Comments 58
Прогнозы по-умолчанию считают, что экономическая, политическая система мира в общих чертах не изменится. В случае экономических кризисов, войн ситуация изменится. Посмотреть те же прогнозы 1930-х и что в результате получилось. На дирижаблях точно не летаем.
В 1930-х уже был нацизм и предшествовавший ему экономический кризис. Может быть, вы имели в виду «прогнозы» из советской фантастики 1920-х? Там действительно иногда описывается глобализированный мир (только, разумеется, коммунистический) с мобильной связью к 1950-м и другими интересными ништяками. ИЧСХ — этот мир во многом похож на наш сегодняшний.
К Гитлеру тогда относились положительно. Где-то встречал фразу, что если Гитлера бы убили в одно из первых покушений до начала Мировой войны, то он вошел бы в историю Германии как великий политический деятель.
К сожалению, вряд ли за 20-30 лет компьютерная техника в общем (и программирование в частности) так сильно изменится. Просто за столько лет уже создалась инфраструктура, которую технически сложно заменить чем-то более новым и прогрессивным. Самый простейший пример — IPv6. Этот протокол описан в 1998 году, но до сих пор его использование — скорее диковинка, чем правило. Протокол SCTP — возможная замена TCP — с 2000 года используется по большей части в телефонии, в быту его практически не встретишь.
В том же программировании большинство новых фич в языках — это фичи каких-то других языков, «хорошо забытое старое». Не удивлюсь, если кто-то вспомнит про Prolog и сделает его популярным… Кто знает?
В том же программировании большинство новых фич в языках — это фичи каких-то других языков, «хорошо забытое старое». Не удивлюсь, если кто-то вспомнит про Prolog и сделает его популярным… Кто знает?
Prolog, например, используется в IBM Watson… т.ч. он не совсем уж забыт, просто не является языком программирования общего назначения.
А не нужно заменять старую инфраструктуру на новую. Просто будет еще один слой абстракции над старой инфраструктурой. А потом еще один слой абстракции над предыдущей абстракцией. И еще один. И никто не будет знать, как на самом деле работает что-то под 10 слоями абстракциями. Все будут писать прекрасный абстрагированный код. Правда потребуется мощное железо, чтобы 10 слоев абстракции не тормозили.
Само по себе это работать не будет, нужно хотя бы немного людей, которые знают, как это всё работает.
Закон дырявых абстракций
Закон дырявых абстракций
Компилятор 10 поколения.
Программист:
— Напиши мне корпоративную ERP!
Компилятор:
— Сделано, хозяин.
Компилятор 15 поколения.
Компилятор:
— А не написать ли мне корпоративную ERP…
Программист:
— Делай что хочешь, но пощади меня!
Программист:
— Напиши мне корпоративную ERP!
Компилятор:
— Сделано, хозяин.
Компилятор 15 поколения.
Компилятор:
— А не написать ли мне корпоративную ERP…
Программист:
— Делай что хочешь, но пощади меня!
Компилятор 31 поколения — компилятору 30 поколения: «Папа, давай заведём программиста, как у соседей. Программисты такие забавные!»
Компилятор 20 поколения (при развитии в правильном направлении)
Создаёт виртуальную реальность, моделирует в ней пользователей данной ERP-системы и при помощи генетических алгоритмов создаёт создаёт программу, в которой удобство использования и удовлетворённость работой системы максимальна.
А хитрые программеры будут хакать компилятор, чтобы он учитывал удовлетворённость не пользователей, а самого программера.
Создаёт виртуальную реальность, моделирует в ней пользователей данной ERP-системы и при помощи генетических алгоритмов создаёт создаёт программу, в которой удобство использования и удовлетворённость работой системы максимальна.
А хитрые программеры будут хакать компилятор, чтобы он учитывал удовлетворённость не пользователей, а самого программера.
Думаю что программирование сведется к перетаскиванию квадратиков в UML редакторе
Когда-то так говорили о визуальных компонентах IDE типа Delphi.
Скорее к неформальному общению с компилятором :) Вот только объяснить ему что хочется будет ненамного проще, чем написать код.
Я бы хотел, чтобы с IDE можно было бы разговаривать на естественном языке…
В таком стиле:
— А помнишь я как-то наткнулся на библиотечку, типа… супра… сурпа…
— SupraLib?
— Да-да! Вот подцепи её в общий библиотечный каталог… угу… Теперь, смотри, мне нужен класс, у которого будет вес, имя, описание. Назови этот класс — «штукень». Ага… И вот в той функции, которая ищет объекты по описанию, сразу после цикла добавь создание объекта класса Штукень с конструктором по умолчанию, дай ему имя Гриша и вес 100. Отлично. Теперь откомпили, залей на ФТП и открой в браузере.
…
В таком стиле:
— А помнишь я как-то наткнулся на библиотечку, типа… супра… сурпа…
— SupraLib?
— Да-да! Вот подцепи её в общий библиотечный каталог… угу… Теперь, смотри, мне нужен класс, у которого будет вес, имя, описание. Назови этот класс — «штукень». Ага… И вот в той функции, которая ищет объекты по описанию, сразу после цикла добавь создание объекта класса Штукень с конструктором по умолчанию, дай ему имя Гриша и вес 100. Отлично. Теперь откомпили, залей на ФТП и открой в браузере.
…
А рядом еще человек 50 бормочут…
Ну это скорее голосовое управление. А я то имел в виду чтобы можно было с компилятором обсуждать алгоритмы решения той или иной задачи. И чтобы он мог предложить свои оптимизации, пожелания и так далее.
> И чтобы он мог предложить свои оптимизации, пожелания и так далее.
— Что-то мне сыкотно этот твой код компилить. Не, не буду, иди нафиг. Сначала тесты прогони и баги подчисти.
— Что-то мне сыкотно этот твой код компилить. Не, не буду, иди нафиг. Сначала тесты прогони и баги подчисти.
Получится как в цикле статей про Каспарова и компьютерные шахматы — сначала программист ассистировал компилятору, а потом будет компилятор, который умнее любого программиста, и программисты только иногда ради спортивного интереса будут пытаться писать код сами :-) Ну чтобы как минимум понимать тот код, который безошибочно и с невероятной скоростью генерится компилятором. Сейчас проблема скорее в наличии гибких инструментов создания программ. Библиотеки, фреймворки — это все-таки какой-то слишком низкий уровень. Нужно чтобы программа возникала сама исходя из постановки задачи (описания проблемы), а не задача подгонялась под то, что реализовано в библиотеках и фреймворках. Т.е. по сути компилятор должен уметь сам быстро создать фреймворк с необходимыми свойствами под любую задачу. О как закрутил!
ReSharper v14?
Т.е. по сути компилятор должен уметь сам быстро создать фреймворк с необходимыми свойствами под любую задачу.Что-то похожее делает продвинутый Prolog. Указываете ЧТО нужно, а он перебирает варианты в поиске КАК это сделать.
а потом будет компилятор, который умнее любого программиста, и программисты только иногда ради спортивного интереса будут пытаться писать код самиС машинным кодом сейчас примерно так дело и обстоит. В отдельных случаях компиляторам удаётся оптимизировать код лучше, чем живым программистам. Далее компиляторам(/интерпретаторам/виртуальным машинам) отдали управление памятью. В будущем ожидаю, что отдадут и аспект выбора реализации структур данных и алгоритмов, т.ч. просто будем запрашивать определённые данные, а процесс их хранения и обработки будет выбираться автоматически, избавив программиста от размышлений на тему того, нужно ли, скажем, в данном случае использовать таблицу хэшей или достаточно упорядоченного списка.
UFO just landed and posted this here
Разработка программ — процесс формализации.
Переход от неформального к формальному существенно неформален. Т.е. неформализуем процесс трансляции пожеланий клиента в код программы. Для этого ИИ нужен, который может поговорить с клиентом. Навести его на мысли. Разрешить все конфликты в его голове. Согласовать с ним модель его целей, ресурсов, ограничений и уже по ним синтезировать код программы.
Переход от неформального к формальному существенно неформален. Т.е. неформализуем процесс трансляции пожеланий клиента в код программы. Для этого ИИ нужен, который может поговорить с клиентом. Навести его на мысли. Разрешить все конфликты в его голове. Согласовать с ним модель его целей, ресурсов, ограничений и уже по ним синтезировать код программы.
где то год назад попадалось, что в лаборатории microsoft сделали\делают плагин к студии, которы по некому неформальному описанию лезет в stackoverflow и формирует код
Интересно, а появится ли уже профессия «программист-археолог»?
Скорее актуальны профессии «программист-патологоанатом» и «программист-ассенизатор».
Вот вы смеетесь, а я был программистом винтажником. Заказчик хотел обновить под iOS 7 приложение развернутое когда-то под iOS 3 (главное условие — внешний вид не трогать, просто чтоб хорошо работало на новой платформе и новом экране). Сдуваю я пыль с SVN репозитория, там проект еще времен XCode 3 или 4. После часа плясок с бубном наконец-то собрал с новым СДК и емае, оно не то что выглядит винтажно — оно вообще никак не выглядет, три дня реставрировал/стилизировал его под вид приложений для старых iOS.
>> нормальной зарплатой программиста будет примерно $29 000 в месяц (на сегодняшние деньги, без учёта налогов)
Просто для сравнения было бы неплохо указать, что, по его мнению, является «нормальной зарплатой программиста» сейчас.
Одно дело, если сейчас он назовёт $2-3k, другое дело – если считает $15-20k сейчас нормой.
Просто для сравнения было бы неплохо указать, что, по его мнению, является «нормальной зарплатой программиста» сейчас.
Одно дело, если сейчас он назовёт $2-3k, другое дело – если считает $15-20k сейчас нормой.
Единственное, что мы можем сказать о будущем — оно отличается от всего что мы способны представить.
Вообще, идеальный процесс программирования был бы следующий:
1. Без необходимости учить синтаксис языков – компилятор/IDE всё знают
2. По-сути, только создание алгоритмов (в том числе, это касается UI).
Пример кода приложения для смартфона:
<code>
после запуска отобразить Основной экран
Основной экран состоит из: Заголовок, Строковое поле ввода, Кнопка.
Фон Основного экрана: Текстура №1, растянуть по ширине и высоте.
Заголовок: размером текста 25px, чёрного цвета, расположение посередине, на 15px от верхней границы экрана.
Строковое поле ввода: ширина 50% от ширины экрана, расположение посередине, на 30px ниже Заголовка.
Кнопка: текст на кнопке «Нажми меня!», ширина – по тексту, расположение посередине, на 20px ниже Строкового поля ввода.
При нажатии на Кнопку отправить значение Строкового поля ввода на Сервер, ответ отобразить в виде Всплывающего сообщения.
Сервер: <данные для подключения>
Всплывающее сообщение: расположение модальное, посередине экрана, фон чёрный, прозрачность фона 60%, закруглённые углы с радиусом 10px, размеры не больше 80% от соответствующих размеров экрана. В случае, если содержимое не помещается – отобразить полосы прокрутки.
</code>
Всё. Build & Run, Publish.
1. Без необходимости учить синтаксис языков – компилятор/IDE всё знают
2. По-сути, только создание алгоритмов (в том числе, это касается UI).
Пример кода приложения для смартфона:
<code>
после запуска отобразить Основной экран
Основной экран состоит из: Заголовок, Строковое поле ввода, Кнопка.
Фон Основного экрана: Текстура №1, растянуть по ширине и высоте.
Заголовок: размером текста 25px, чёрного цвета, расположение посередине, на 15px от верхней границы экрана.
Строковое поле ввода: ширина 50% от ширины экрана, расположение посередине, на 30px ниже Заголовка.
Кнопка: текст на кнопке «Нажми меня!», ширина – по тексту, расположение посередине, на 20px ниже Строкового поля ввода.
При нажатии на Кнопку отправить значение Строкового поля ввода на Сервер, ответ отобразить в виде Всплывающего сообщения.
Сервер: <данные для подключения>
Всплывающее сообщение: расположение модальное, посередине экрана, фон чёрный, прозрачность фона 60%, закруглённые углы с радиусом 10px, размеры не больше 80% от соответствующих размеров экрана. В случае, если содержимое не помещается – отобразить полосы прокрутки.
</code>
Всё. Build & Run, Publish.
Скорее всего будет продолжаться автоматизация, но до какой степени… Всё упрется в экономическую целесообразность. Что будет выгоднее платить з/п разработчикам или поддерживать некие автоматические системы.
«Поле ввода телефона, маска по стандарту +* (***) ***-**-**, размер текста 14 пикселей, ширина на 18 символов, расположение слева, внутренние отступы 5 пикселей, серая рамка с округлыми уголками в 3 пикселя, текст подсказка „введите номер телефона“, цвет текста-подсказки светло-серый, цвет текста чуть светлее черного, при ошибке подсветка рамки светло-красным, текста темно-красным, потряхивание границ».
Ура, я только что создал красивый элемент! Можно я теперь уволюсь?
Ура, я только что создал красивый элемент! Можно я теперь уволюсь?
> А теперь укажите поведение элемента управления на телефоне, смартфоне, фаблете, планшете, ноутбуке, настольном компьютере и телевизоре. И помедленнее, я еще прошлое сообщение распознаю
А слабо написать весь код, которые сейчас необходим, чтобы аналогичный элемент создать?
По-моему, Вы изобрели HTML+CSS+JS.
Bret Victor — The Future of Programming:
vimeo.com/71278954
vimeo.com/71278954
Не будет никаких программистов. ИИ пролоббирует закон, что доверять людям писать код — угроза национальной безопасности.
Программисты всё-таки будут, но в уголовном кодексе.
«Программирование в особо крупном размере»
«Призывы к экстремизму и программизму»
«Незаконное вмешательство в процесс написания кода»
«Действия алгоритмического характера»
«Призывы к смене власти ИИ»
«Перепрограммирование робота»
«Коворкинг (пособничество программированию)»
«Покушение на отладку кода»
«Программирование в особо крупном размере»
«Призывы к экстремизму и программизму»
«Незаконное вмешательство в процесс написания кода»
«Действия алгоритмического характера»
«Призывы к смене власти ИИ»
«Перепрограммирование робота»
«Коворкинг (пособничество программированию)»
«Покушение на отладку кода»
И более тяжкие.
«Взрыв ЭМИ-бомбы в плотной толпе компьютеров»
«Пентестинг программы, написанной менее чем 16 лет назад»
«Надругательство над кодом, совершённое в составе организованной группы»
«Декомпиляция программы с целью извлечения и перепродажи модулей»
«Неповиновение законному требованию антивируса»
«Выращивание, распространение, хранение и употребление новых видов капчи»
«Взрыв ЭМИ-бомбы в плотной толпе компьютеров»
«Пентестинг программы, написанной менее чем 16 лет назад»
«Надругательство над кодом, совершённое в составе организованной группы»
«Декомпиляция программы с целью извлечения и перепродажи модулей»
«Неповиновение законному требованию антивируса»
«Выращивание, распространение, хранение и употребление новых видов капчи»
Замечаю, что программы становятся всё сложнее, неочевиднее, а языки программирования в связке с библиотеками начинают всё больше быть похожими на естественные языки. В порядке бреда выскажу идею, что через 20-30 лет работа программиста будет сводится к переводу человеческого языка на язык компьютера/AI. От части это и сейчас так, но будет ближе к человеческому общению.
Nowadays, we don't even need to RTFM, we just copy&paste error messages to google. Further improvements along this trend are to be expected; like, compilers will google errors and solutions themselves;)
developers can focus on goal, not being distracted by boring things that break down the program
За последние десятилетия программисты видели массу инструментов, которые предположительно должны были устранить необходимость программирования. Сначала это были языки третьего поколения, потом — четвертого. Потом — автоматическое программирование. Потом — CASE-средства. Потом — визуальное программирование. Каждое из этих достижений привносило значительные улучшения, и общими усилиями они сделали программирование абсолютно неузнаваемым для тех, кто изучал его до этих нововведений. Но ни одна из этих инноваций не устранила программирования как такового.Совершенный код, 30:6
Причина в том, что программирование — принципиально сложный процесс даже при наличии хорошего инструментария. Дело не в инструментах — программистам приходится бороться с несовершенством реального мира; нам нужно досконально продумывать последовательности, зависимости и исключения, иметь дело с конечными пользователями, которые никак не могут ничего решить. Нам всегда придется бороться с плохо определенными интерфейсами с другими программными и аппаратными средствам и всегда принимать во внимание инструкции, бизнес-правила и другие источники сложных проблем, возникающие вне мира программирования.
Нам всегда будут нужны люди, способные заполнить брешь между задачей реального мира, которую нужно решить, и компьютером, предназначенным для решения этой задачи. Эти люди будут называться программистами независимо от того, манипулируют они машинными регистрами на ассемблере или диалоговыми окнами в Microsoft Visual Basic. Пока у нас есть компьютеры, нам будут нужны люди, которые говорят компьютерам, что делать, и эта деятельность будет называться программированием. Когда вы слышите заявления о том, что «новый инструментарий устранит необходимость компьютерного программирования», бегите! Или хотя бы посмейтесь про себя над этим наивным оптимизмом.
UFO just landed and posted this here
А подскажите, куда отнести shell? Мне вот надо надо автоматизировать запросы к сайтам, коммутаторам и соорудить пару триггеров на события с уведомлением по почте и sms.
UFO just landed and posted this here
Shell по классификации — командно-сценарный язык.
Он не только применяется в «администрировании UNIX-серверов».
В шелле часто используеют sed и awk, которые являются Тьюринг-полными языками.
Пересмотрите свою классификацию языков. :)
Он не только применяется в «администрировании UNIX-серверов».
В шелле часто используеют sed и awk, которые являются Тьюринг-полными языками.
Пересмотрите свою классификацию языков. :)
Вот мой прогноз. Если и дальше политическая обстановка на планете будет обостряться в том же темпе, то через 20-30 лет код будет состоять из говна и палок. В буквальном смысле.
Например, каким мы видели будущее 20-30 лет назад? Ясно было, что будущее за интернетом.
Это что-то вроде «постфактум предсказания», даже если такого термина и нет. На чём основано данное утверждение? Я что-то не припомню, чтобы 20 лет назад всем было ясно, что будущее за Интернетом. Это тоже самое, что говорить: когда Цукерберг запустил Facebook 11 лет назад, всем было ясно, что через 11 лет у ресурса будет полтора миллиарда активных пользователей в месяц. Похоже на ситуацию в биржевой торговле, когда ты смотришь на текущие цены и понимаешь всю логичность текущих цен, и думаешь, что вчера всем было ясно, что сегодня цены будут именно такими.
Какие-то несколько человек считали, что за Интернетом будущее. Когда они оказались правы, все остальные, кто на тот момент даже и не знал, что такое Интернет, стали говорить, будто всем в тот момент было ясно, что так и будет.
Вот сейчас люди задаются вопросом: каким будет программирование через 30 лет. А через 30 лет, например, все будут говорить, что уже 30 лет назад было понятно, что чистое программирование было временным явлением, потому что гораздо эффективнее натуральным языком дать задачу нейронной сети, которая сгенерирует весь код. Или просто поизлучать мозгом команды для той же самой сети.
Или, например, через 30 лет все будут говорить: 30 лет назад всем было понятно, что за счёт открытия теории слабых измерений можно создать линию передачи данных на основе квантовой запутанности, что вообще избавит от нужды использовать провайдеров Интернет и позволит не опасаться, что какое-нибудь АНБ будет пролушивать траффик. Все эти вай-фаи и оптоволоконные сети были временным явлением.
Линус Торвальдс вот десять лет назад написал Git. Ему нужен был инструмент, к которому были конкретные требования. Сейчас Git стал очень популярным решением для поддержки версий и командной работы над кодом. Может быть завтра кто-то недовольный тем, как много кода ему постоянно приходится писать, напишет среду, которая позволит разворачивать очень короткие спецификации в двоичный код. Назовёт её как-нибудь вроде «сетка Хича», и через 30 лет люди будут не программировать, а хичировать. А все потом будут говорить, что уже 20 лет назад было понятно, что за хичированием будущее, потому что оно позволяет сразу оценить результат идеи, которая воплощается во всех деталях мгновенно после одной только мысли о ней. И остаётся только сохранить результат или сформировать новую идею. Весь процесс программирования сводится к отбору подходящего результата из нескольких вариантов, сгенерированных сетью. И люди будут спорить, что, на самом деле, хичирование и программирование — не одно и то же, потому что во время программирования ты создаёшь код, а при хичированиии ты хичируешь сгенерированные образы. И нет смысла велосипедить, занимаясь программированием, если гораздо проще схичировать образ, который будет работать сразу на всех устройствах.
… Надо бы торговую марку и патент наверное заранее зарегистрировать. Буду потом патентным троллингом заниматься и лупить деньги с тех, кто от хичирования получает доход.
Имхо IDE таки станут умнее. Сейчас повсюду используется машинное обучение, зайчатки ИИ. Для ориентирования по коду нужно будет меньше его читать, задавать IDE правильные вопросы, она будет подсказывать где что-то делается, как что-то сделать в текущем фреймворке, окружении, с использованием классов проекта. Еще возможно появятся и получат распространение крутые интерфесы мозг-компьютер, для ввода информации.
Sign up to leave a comment.
Каким будет программирование через 20-30 лет?