Программирование, тенденции в 2010-2015 годах
На основе новых языков, инструментов, рынка приложений появляется эволюция программирования.
В этой статье говорится лишь о тенденциях, присущих существующим инструментам программирования. Для проекции в будущем и исследования того, чего стоит ожидать от грядущих инструментов, можно увидеть и «Будущее языков программирования».
Всегда есть большинство программистов, которые продолжают использовать установленные языки, такие как C++, Java, PHP, которые обладают внушительным API, отвечающим большинству ситуаций, с которыми они сталкиваются.
Но есть и эволюция активности. Сейчас создается программное обеспечение для смартфонов и планшетов, приложения для Интернета, мультимедиа. Компьютеры, экраны, процессоры изменились, и для этого требуются средства разработки.
Вечная двойственность между полезностью и читаемостью
На протяжении десятилетий программистам предлагали языки, которые направлены на упрощение написания программ. Питон, Руби подчиняются этой тенденции. Долгое время до этого у Басича уже была такая цель. Тем не менее, он был вытеснен C, который труднее использовать, но дает больше свободы и возможностей.
Десятилетие 2010 года, как показывает хронология языков, не увидело появления новых языков, отвечающих этой цели простоты. За исключением Blocky, довольно анекдотичного визуального языка.
Именно тенденция обфускации преобладает у Го, Руста, чей синтаксис вписывается в родословную C, чисто утилитарную, требующую довольно длительного обучения и определённого вкуса к кодированию.
Программист должен быть дистанцирован от проблемы, решение которой он реализует, чтобы полюбить этот тип языка. Если только сама проблема не носит чисто компьютерный характер, что касается системных приложений или приложений для управления сервером. В остальных случаях программист должен иметь язык, облегчающий перенос реального мира в виртуальную конструкцию.
Классики также хотят вернуть власть над браузером с помощью Dart (Google), TypeScript (Microsoft), которые пытаются заменить инновационный синтаксис JavaScript более проверенными конструкциями, взятыми непосредственно из C или Java...
Это противоречит эволюции компьютеров. Правда, приложения переходят в браузер, но потребность в реализации идей новых сервисов не справится лучше с инструментами прошлого.
Браузер как универсальный интерфейс
Даже если ты предпочитаешь писать программу в TypeScript или CoffeeScript, чтобы избежать неясностей в коде JavaScript, эта, и это основная тенденция, имеет тенденцию к обобщению и становлению незаменимой. Он становится языком интерфейсов в HTML, и хотя XUL и XAML, которые он дополняет, используются меньше из-за отказа от XML или прибыли JSON, JavaScript остается, когда он, и становится языком Gnome, языком приложений с Node.js, который общается с браузером через Web Сокет
Можно выполнять локальные приложения в JavaScript с установкой Node.js на рабочем столе, не видя отличий от традиционного нативного приложения, как показывает файловый менеджер Advanced Explorer.
Так что одно и то же приложение может работать на всех операционных системах, на планшетах, на смартфоне. Эта универсальность - тенденция, которая должна проясниться в ближайшие годы.
Как и Advanced Explorer, приложения должны работать в браузере без ограничения совместимости с системой. Для достижения этой цели Mozilla создала потрясающий прорыв с помощью языка Asm.js. Он не теряет совместимости с JavaScript, обеспечивает скорость выполнения, близкую к скорости собственного кода. Теперь видно, как 3D-игры работают на Firefox. Еще лучше, поскольку есть возможность компилировать приложение C или C++ в Asm.js, можно иметь все библиотеки функций, написанные на этих языках с помощью JavaScript. Это в Firefox и, возможно, в других браузерах, если они реализуют Asm.js.
В ближайшие несколько лет Portable Native Client, завершит набор разработок в браузере. PNaCl позволяет компилировать в байт-коде LLVM приложения, написанные на C или другом языке, и этот байт-код может быть запущен в браузере Chrome, на любой операционной системе. Это альтернатива Asm.js.
Программирование для Windows: студия Макиавел
Visual Studio всегда остается лучшим инструментом разработки, и его уничтожит не Eclipse с его темным интерфейсом. Но EDI - не единственный аксессуар для разработчика, он также должен реализовать на платформе язык и набор функций.
Именно там Microsoft хочет инноваций, на Windows 8, бывший Metro, который теперь называется IU Modern, предлагает двойную платформу, работающую в HTML 5 или XAML на выбор. XAML - интересный и простой в доступе язык, который подходит только для иммерсивных программ Windows. И даже на самом деле чисто Windows 8, что еще больше снижает аудиторию. Версия Microsoft HTML 5 не является стандартной, поскольку для связи с системой требуется API, а этот API является специфическим для Windows.
Но ранее мы видели, что можно реализовать программное обеспечение, работающее в браузере без ограничений ОС. В Metro нет ничего, чего нельзя добиться с помощью новых веб-технологий. Эта инициатива, по-видимому, является маневром фирмы в попытке сделать пользователей пленниками своей системы, как и в прошлом. Чтобы ничего не исправить, приложения Metro доступны только из App Store и с 30-процентным налогом, который будет уплачиваться Microsoft. Так что инициатива имеет чисто финансовую грань.
В заключение, Metro - это скорее болт, чем что-то еще для разработчиков, план обслуживания интересов компании, который ничего не приносит сообществу, и поэтому я призываю их обратиться скорее к технологиям Mozilla или Google.
Важные изменения: конкуренция, асинхронность
Конкуренция основана на принципе, что процессор быстрее пользователя и поэтому может делать сразу несколько вещей в ответ на запросы одного или нескольких клиентов. С помощью Интернета клиенты растут за одно и то же приложение или услугу, и поэтому задачи решаются в условиях конкуренции. Это то, что отражается на дизайне языков. Go и Rust упрощают создание конкурирующих процессов, а Rust, в частности, лучше использует возможности многоядерных процессоров. Он также хочет повысить безопасность в Сети.
Асинхронность идет в том же направлении. Он позволяет пользователю выполнять одно задание, не дожидаясь обработки другого, и этот факультет, присущий JavaScript с самого начала, также позволяет нескольким пользователям использовать конкурирующий сервис. Поэтому JavaScript становится языком, который используется во всех областях. Это, очевидно, возможно только потому, что переводчики JIT становятся чрезвычайно быстрыми.
Инструменты стремятся к универсальности
Visual Studio имеет функции рефакторинга, то есть реорганизации кода без изменения его функции. IntelliSense нацелен на автоматическое исправление синтаксических ошибок, что также можно найти в NetBeans. Визуальное создание интерфейса - это 20-летняя помощь в разработке. Однако для HTML 5 не хватает EDI, но у последнего есть много фреймворков, поддерживающих привязку данных, и обмен между источниками данных и интерфейсом является одной из функций EDI.
IntelliTrace в VS упрощает отладку, сохраняя все состояния программы, что позволяет выполнять повтор с представлением кода, событий, переменных до возникновения ошибки.
Самые интересные достижения в области программирования - в преобразовании языка с помощью CLang и LLVM. Последний - оптимизированный байтекод, близкий к машинному языку. Это позволяет производить приложения на разных языках и распространять код LLVM, работающий в любой системе. Это техника, которую использует Portable Native Client для родных приложений в браузере.
Альтернативой является компиляция AOT (Ahead Of Time): одна и та же программа распространяется для всех ОС, она компилируется во время выполнения, а выпущенный бинарный код повторно используется во время последующих сессий. Кроме того, JIT (Just In Time), который позволил ускорить Java-приложения, распространился на JavaScript, что делает веб-приложения сверхбыстрыми и делает JavaScript универсальным языком приложений .
Обновлено 18 апреля 2013 года. Корпорация Intel объявляет среду разработки HTML 5. Создание приложений для всех мобильных устройств.
Заключение
За отчетный период развитие программирования происходит не в производстве действительно инновационных средств и инструментов, а в оптимизации существующих инструментов, в их универсализации, прежде всего JavaScript и HTML для интерфейсов. Парадокс в том, что компания, предлагающая лучший инструмент программирования, полностью смещена от этой тенденции и даже идет против течения.
Дени Суро 15 апреля 2013 года.