В Windows 11 начали появляться компоненты, написанные на языке Rust
Microsoft начала заменять устаревшие компоненты ядра Windows на версии, написанные на языке программирования Rust, который обеспечивает большую безопасность памяти и предотвращает возникновение многих ошибок. Технический директор Azure Марк Руссинович (Mark Russinovich) сообщил, что первая инсайдерская сборка Windows 11 с компонентами на Rust уже доступна для тестирования. Вероятно, речь идёт о сборке для канала Dev или Canary.

В апреле на конференции по безопасности BlueHat IL 2023 в Израиле вице-президент Microsoft Дэвид Уэстон (David Weston) заявил, что компания проводит «агрессивную и осмысленную работу по обеспечению безопасности памяти», которая является ключевым источником эксплойтов.
Кроме этого, Microsoft также использует язык программирования Rust в чипе безопасности Pluton, предназначенном для защиты конфиденциальной информации и ключей шифрования от атак с физическим доступом к устройству.
«С помощью Rust мы движемся в сторону языка, безопасного для памяти», — сказал Уэстон о Pluton. «Мы еще не достигли этого, но мы работаем в этом направлении… Проблемы безопасности памяти в Trusted Computing Base реальны и, возможно, являются одними из самых болезненных, не только потому, что если TPM взломан, [хакеры] потенциально имеют доступ ко всем видам данных, когда TPM необходимо обновить, происходит сброс состояния, что очень болезненно для пользователя. Наличие Rust здесь очень важно».
Rust — это мультипарадигменный, высокоуровневый, общего назначения язык программирования, который акцентирует внимание на производительности, типобезопасности и параллелизме. Он гарантирует безопасность памяти — то есть все ссылки указывают на действительную память — без необходимости использования сборщика мусора или подсчета ссылок, присутствующих в других языках с безопасной памятью.
Текст этой новости частично написан чат-ботом Bing и отредактирован командой Community.
PowerShell — это язык программирования?
Является ли PowerShell языком программирования? Совершенно определённо — является. И не обращайте внимание на тех, кто говорит, что это не так. Многие, работающие в сфере программирования, могут просто посмеяться над мыслью о том, что код, написанный для PowerShell — это нечто большее, чем обычные скрипты. Такие люди категорически неправы. Здесь мы поговорим о том, почему это так. Но если вы читаете этот текст в поиске чёткого ответа, то знайте — PowerShell — это язык программирования. Более того, PowerShell — это поразительный инструмент, который позволяет решать практически любые задачи. С помощью PowerShell можно сделать что-то простое, такое, что обычно делают в командной строке Windows (CMD), а можно, используя Windows Forms, построить полномасштабное приложение. Границы того, что можно создать с помощью PowerShell, ограничены лишь фантазией разработчика и его навыками поиска в интернете.

Здесь мы пройдёмся по некоторым вопросам о PowerShell, которые возникают у людей чаще всего. Особое внимание мы уделим вопросу о том, можно ли считать PowerShell языком программирования. Я работал с PowerShell много лет, но не могу сказать, что освоил хотя бы малую часть возможностей этой системы. Поэтому я, приступая к работе над этим материалом, уверен в том, что и я, и тот, кто будет этот материал читать, узнаем много нового об этом фантастическом инструменте. Ну и, конечно, я надеюсь, что мне удастся чётко ответить на вопрос о том, является ли PowerShell языком программирования.
Зачем вообще учиться программировать?
Я полагаю, что в заголовок этого раздела вынесен хороший вопрос. Зачем учиться программировать? Ведь это очень сложно, а полученные знания и навыки, вероятно, не пригодятся IT-специалисту в обычной работе. Тот, кто думает, что так оно и есть, глубоко ошибается. В наши дни научиться программировать как никогда просто, при этом конкретная сфера деятельности того, кто учится программировать, особой роли не играет.
Благодаря поисковику Google и видеохостингу YouTube (это, соответственно, первый и второй по посещаемости сайты в мире) в нашем распоряжении имеются нескончаемые запасы бесплатных и хорошо подготовленных учебных материалов. Если тому, кто хочет изучить некий язык программирования, попадётся хороший курс, то он меньше чем за час (в буквальном смысле) сможет настроить среду разработки и написать свой первый «Hello World». На следующем рисунке можно видеть «Hello World» на PowerShell.

«Hello World» на PowerShell — это очень просто
Может, изучая программирование, вы подумываете о продвижении по карьерной лестнице и считаете, что знания из сферы DevOps — это как раз то, что вам нужно. Ведущие языки программирования для DevOps — это Golang, Python, Ruby, C#… Данный список можно продолжать и продолжать (и в этот список, пожалуй, можно включить практически все актуальные языки программирования).
Есть масса причин для того чтобы учиться тому, как писать программы. Может, кому-то всегда хотелось сделать веб-приложение для организации, где он работает. А может — кто-то мечтает написать успешную мобильную игру, которая обеспечит его на всю оставшуюся жизнь. Возможно, что кому-то просто хотелось бы автоматизировать свои рутинные задачи и высвободить время, которое он, быстрее справляясь со своими обязанностями, сможет потратить на просмотр видео с котами. Умение программировать делает всё это возможным.
Что такое язык программирования?
Прежде чем называть PowerShell «языком программирования» или «средой для разработки скриптов», нам, вероятно, надо сначала разобраться с тем, что такое «язык программирования». Если говорить простыми словами, то язык программирования — это последовательность наборов инструкций, которые взаимодействуют с компьютерной системой.
Эти инструкции можно воспринимать как способ объяснения компьютеру того, чего от него хочет человек. При этом — такой способ, который не требует от человека изучения ассемблера или низкоуровневого программирования в машинных кодах с использованием шестнадцатеричных и двоичных конструкций (правда, кое-кто свободно владеет подобными методами «общения» с компьютерами; мы выражаем таким людям своё почтение!).
Существуют разные виды языков программирования. Кратко опишем их:
- Процедурные языки программирования. В них код выполняется линейно и пошагово. Это означает, что если некто создал приложение, то код этого приложения должен выполниться от начала до конца, после чего его работа завершается. А если при выполнении этого кода возникнут какие-то проблемы — его выполнение должно быть прервано.
- Функциональные языки программирования. Тут используются символические представления вычислений. В таких языках применяются конструкции, которые не особенно сильно отличаются от математических функций.
- Объектно-ориентированные языки программирования. В этих языках типы данных могут содержать как данные, в форме атрибутов и свойств объектов, так и функции, манипулирующие этими данными.
- Скриптовые языки программирования. Для запуска кода, написанного на таких языках, не нужен компилятор. Они используют так называемые «интерпретаторы». При написании программ на этих языках применяются предварительно подготовленные команды и функции, хотя подход к созданию программ на таких языках похож на подход, используемый при работе со «стандартными» языками.
- Логические языки программирования. В логических языках программирования используются (вот уж неожиданность) правила логики. Они позволяют, оперируя фактами и заданными правилами, автоматически выводить результат.
Суть PowerShell
До PowerShell в мире Microsoft Windows существовал VBScript. Используя этот язык программирования можно решить очень большое количество задач, но в наше время, в 2021 году, вероятно, это «количество» примерно равно количеству задач, нерешаемых с помощью VBScript. Инструмент PowerShell создавался как средство, которое поможет использовать всё лучшее, что есть в платформе .NET, и при этом будет иметь доступ ко встроенным возможностям ОС. Джеффри Сновер, человек, который придумал PowerShell, на самом деле, очень подробно об этом рассказывает в работе Monad Manifesto, которую он написал в 2002 году. Это — захватывающее чтение, в этом материале чётко выражено его видение проекта, который в итоге и стал тем, что получило название «PowerShell».
Проект PowerShell, с момента его появления, почти 20 лет стремительно развивался. То, что проект этот достиг уровня зрелости, очевидно для всех, кто им пользуется, и кто полагается на него в решении своих ежедневных задач, вне зависимости от того, что именно это за задачи. Существует обширный набор так называемых «командлетов», которые поддерживаются их создателями в актуальном состоянии и дают тому, кому это нужно, постоянно пополняемый набор гибких и мощных инструментов.
И всё же, PowerShell — это язык программирования или нет?
Можно ли отнести PowerShell к какому-то из вышеописанных видов языков программирования? Возможно, вы уже пришли к выводу о том, что PowerShell, на самом деле, подпадает под несколько категорий языков программирования. Пуристы отвергнут идею о том, что PowerShell — это полноправный язык программирования, и я даже вижу причину такого видения ситуации.
PowerShell полагается на системные хуки ОС Windows для выполнения множества встроенных команд, или, как их называют в PowerShell-сообществе, «командлетов» (так что этот термин придумал не я). Каждый из командлетов способен выполнить некую очень полезную, или, в некоторых случаях, очень мощную операцию.
В PowerShell для организации обмена переменными и данными используются объекты. Поэтому можно сказать, что тут используются идеи, роднящие PowerShell с объектно-ориентированными языками программирования. Многие считают PowerShell скриптовым языком программирования. А это, что невозможно не признать, во многих отношениях так и есть. Но PowerShell-код может работать и как код обычных приложений. Этот код, как и программы, написанные на том же Python, или на ещё каком-то распространённом языке, может включать в себя циклы, вроде foreach и while , условные конструкции и многое другое.
Всё это позволяет создавать весьма мощные приложения, которые могут быть запущены в Windows с помощью планировщика заданий, могут быть, ради упрощения их выполнения, преобразованы в .EXE-файлы, могут быть запущены в фоне, в виде служб Windows. Я регулярно пользуюсь всеми этими методами работы с PowerShell-скриптами и могу с уверенностью заявить о том, что они избавили меня от месяцев ручного труда и помогли мне оставаться на хорошем счету у начальства и коллег. Я, правда, шучу, никто этого не замечает, но я-то всё это вижу.
Если говорить серьёзнее, то PowerShell может оказать компьютерщику огромную помощь, и речь идёт не только о решении рабочих задач. Например, я хочу написать цикл материалов о том, как я создал простое Windows Form-приложение для моей мамы, которой уже за 70. Это приложение позволяет ей переключать настройки почтового сервера в путешествиях (до того, как мир охватило то, что происходит сейчас) буквально несколькими щелчками мыши.
Я надеюсь, что этот небольшой проект вдохновит на создание чего-то похожего тех, кто никогда ничего такого делать не пытался, и что процесс создания своего проекта принесёт им много положительных эмоций. Поэтому, если вам это интересно, можете иногда заглядывать в список моих публикаций. А вот — материал о том, как узнать версию PowerShell в Windows 10.
Полагаю, мы справились с нашей задачей. Мы выяснили, что PowerShell — это язык программирования, но вряд ли он будет основным языком, на котором пишет некий программист. Высоки шансы того, что тот, кто недавно узнал о PowerShell, воспользуется несколькими мощными скриптами для решения неких задач бэкенда своего приложения. Но реальность такова, что у скомпилированных приложений, запускающихся в операционной системе, есть преимущества в производительности перед хуками, используемыми в командной оболочке ОС Windows.
Итоги
Надеюсь, вы вынесли что-то полезное из этой нашей небольшой вылазки в мир языков программирования. Я не считаю себя экспертом ни в одной из тех областей, которых коснулся в этом материале. Я — энтузиаст, который хочет учиться новому. Я думаю, что главное, что можно вынести из чего-то вроде изучения программирования, скриптов, автоматизации, это желание осваивать новые навыки и развиваться.
Это — тот сорт любознательности, который, в итоге, поможет своему обладателю больше узнать о системах, с которыми он работает, поможет создать для этих систем что-то полезное, такое, что облегчит ему решение его повседневных задач. А если снова вернуться к вопросу о том, является ли PowerShell языком программирования, то я полагаю, что на этот вопрос совершенно спокойно можно ответить утвердительно.
Какие задачи вы решаете с помощью PowerShell?
Microsoft полностью перепишет часть Windows на своем новом языке программирования
Microsoft в рамках экспериментального проекта Verona развивает новый язык программирования, основанный на Rust. Не исключено, что некоторые низкоуровневые компоненты Windows 10 впоследствии будут переписаны на нем, что позволит сделать систему значительно более устойчивой к киберугрозам.
Проект Verona
Корпорация Microsoft разрабатывает новый язык программирования, который ориентирован на создание приложений, не подверженных наиболее распространенным проблемам безопасности, пишет Zdnet.
Новый язык базируется на набирающем популярность Rust, развитием которого занимается компания Mozilla, разработчик известного браузера Firefox. Проект получил название Verona и, по данным издания, ключевое его отличие от Rust заключается в применении модели владения на основе групп объектов, а не единичных объектов. Ожидается, что исходные тексты текущих наработок в его рамках будут открыты под свободной лицензией Apache 2.0. Репозиторий проекта уже появился на принадлежащей Microsoft c 2018 г. платформе Github, но пока пуст.
Как отмечает Zdnet, Microsoft также может переписать некоторые низкоуровневые компоненты Windows 10 с использованием модифицированного Rust, чтобы исключить потенциальные проблемы, возникающие при применении языков C и C++.
Как смена языка поможет повысить безопасность
Языки C и C++ в течение десятилетий повсеместно используются в качестве инструмента разработки системного ПО и возлагают на программиста задачу управления оперативной памятью, что неизбежно приводит к возникновению ошибок, таких как обращение к участку памяти после его освобождения или, например, выход за границы буфера. По словам Мэтта Миллера (Matt Miller), специалиста Microsoft по безопасности, около 70% всех уязвимостей, обнаруженных в программных продуктах корпорации за последние 12 лет, связанны с ошибками управления памятью.

Около 70% всех уязвимостей, обнаруженных в программных продуктах Microsoft за последние 12 лет, связанны с ошибками управления памятью
В языке Rust (как, видимо, и в Verona), в отличие от C и C++, реализован механизм автоматического управления памятью на основе принципа «владения», который избавляет программиста от необходимости вручную манипулировать памятью, тем самым снижая вероятность возникновения ошибок. Стоит также отметить, что в угоду производительности в Rust не используется так называемый сборщик мусора (Garbage Collector, GC), в задачи которого входит автоматическое удаление из памяти объектов, которые более не востребованы программой.
Эксперименты Microsoft с Rust
Zdnet пишет, что Microsoft начала экспериментировать с Rust летом 2019 г. Сообщалось, что компания собирается переписать некоторые из своих продуктов с использованием этого языка программирования.
В начале ноября 2019 г. Адам Берч (Adam Burch), программист из команды разработчиков Hyper-V (системы аппаратной виртуализации для x64-систем на основе гипервизора), написал в корпоративном блоге о том, что ему поручили переписать на Rust некий низкоуровневый компонент Windows, назвать который он пока не может. По его словам, несмотря на незавершенность проекта, опыт применения Rust оказался в целом позитивным. Он также отметил, что кодовую базу новых компонентов и уже существующих, но с «чистыми интерфейсами», перевести на Rust не составит большого труда. Кроме того, Берч посетовал на отсутствие некоторых возможностей в языке по сравнению с привычным ему C, но выразил уверенность в том, что Microsoft сможет посодействовать их добавлению.
Несколько слов о Rust
Rust появился в 2006 г. как личный проекта Грейдона Хоара (Graydon Hoare), сотрудника Mozilla. В 2009 г. Mozilla начала спонсировать разработку Rust для собственных нужд, а также расширила команду для дальнейшего развития языка.
Интерес Mozilla к Rust был вызван наличием огромного числа критических уязвимостей в разрабатываемом компанией браузером Firefox, в реализации которого присутствовало свыше 4 млн строк на языке C++. Rust был создан с учетом требований безопасности и параллелизма, что сделало его подходящим выбором для переписывания многих компонентов Firefox в рамках проекта Quantum по полной переработке архитектуры браузера. Кроме того, Mozilla использовала Rust для разработки Servo, движка рендеринга HTML, который должен был заменить действующий движок рендеринга Firefox.
Инклюзивный интернет: что такое веб-доступность и как ее повысить

Помимо Mozilla и Microsoft в своих проектах Rust применяют Google, Facebook, Amazon, Dropbox, Fastly, Baidu.
В августе 2019 г. в рамках саммита по технологиям с открытым исходным кодом (Open Source Technology Summit) Джош Триплетт (Josh Triplett), ведущий инженер Intel, рассказал о том, что его компания заинтересована в том, чтобы в ближайшем будущем Rust достиг «паритета» с доминирующим в области системной и низкоуровневой разработки языком C.
В том же месяце Грег Кроа-Хартман (Greg Kroah-Hartman), один из ключевых разработчиков ядра Linux, заявил, что не станет препятствовать включению в ядро фреймворка для написания драйверов на языке Rust.
Топ-10 языков программирования в 2020 году по версии GitHub
Подводим итоги года и рассказываем, какие языки программирования оказались самыми популярнымии в 2020 году.
В 2020 году IT-индустрия продолжала развиваться. Перед новичками всё ещё стоит вопрос, какой язык программирования стоит учить.
Ответ даёт команда GitHub. Каждый год она анализирует количество поисковых запросов пользователей, которые ищут туториалы по языкам программирования. И на основе этих данных составляет рейтинг.
Рассказываем, какие языки программирования оказались самыми популярными в 2020 году. Кстати, не забывайте следить за нашим баттлом языков программирования.
1. Python
Python — бесплатный язык программирования, с открытым исходным кодом и удобными структурами данных. Он запускается на любых ОС и поддерживает множество сервисов, сред разработки и фреймворков. К тому же он подходит для новичков и его просто выучить.
Python подходит для создания веб-сервисов и мобильных приложений, вроде YouTube, Quora, Pinterest, а также программ Blender, Inkscape и Autodesk. Кроме того, Python использовали для создания видеоигр, включая Civilization IV и Vegas Trike.
2. Java
Java — стал стандартом для приложений, которые запускаются на любых платформах, включая Mac, Windows, Android, iOS и так далее. Также его используют в системах больших данных.
На Java написаны веб-приложения крупных компаний, таких как Twitter, LinkedIn, Amazon и eBay. Он также является официальным языком для создания приложений на Android.
3. Javascript
JavaScript — это одна из основ фронтенд-разработки. Его используют, чтобы сделать сайты интерактивными: добавлять всплывающие окна, эффекты и даже небольшие игры.
Кроме того, с выпуском ECMAScript 6 и таких фреймворков, как Angular, Node, Express и React, разработчики начали использовать JavaScript для создания клиентского и серверного программного обеспечения.
4. C#
С# — объектно-ориентированный язык программирования, разработанный Microsoft. Это один из самых мощных языков для платформы .NET Framework.
C# часто используют бэкенд-разработчики, в том числе в Bing, Dell, Visual Studio и MarketWatch., разработчики игр на Unity, создатели приложений для Windows, Android и iOS.
5. Cи и C++
Си был разработан еще в 1973 году и до сих пор остается одним из самых распространенных языков программирования. С++ очень близок к Си: у них схожий синтаксис, к тому же большая часть кода, написанная Си, будет справедлива и для C++.
На Cи и C++ написаны Microsoft Windows, Linux, macOS, ядра iOS и Android. А также Oracle Database, MySQL и MS SQL Server.
Cи и C++ считаются высокопроизводительными языками. Поэтому их используют в разработке приложений, для которых важна производительность. Это, например, Firefox, приложения Adobe, а также видеоигры.
6. PHP
PHP — один из самых популярных языков программирования для бэкенда. Его используют для создания многих сайтов в интернете, включая Yahoo.
PHP считается относительно доступным языком для начинающих программистов. К тому же у PHP-разработчиков есть много специализированных онлайн-сообществ, где можно получить ответы на любые вопросы.
7. R
Приложения, написанные на R, используют крупные компании для анализа статистики и обработки и структурированных и неструктурированных данных. Также он подходит для машинного обучения.
R достаточно сложно выучить, но у него активное онлайн-сообщество, которое помогает новичкам.
8. Objective-C
Objective-C — используют для создания программного обеспечения OS X и iOS с начала 1980-х годов. Он достаточно гибкий, с простым синтаксисом и его легко освоить. Особенно, если вы знакомы с C и Java.
В 2014 году на замену Objective-C Apple представила Swift. Впрочем, Objective-C до сих пор востребован и лучше подходит для крупных проектов.
9. Swift
Swift — один из самых популярных языков программирования для разработки приложений на iOS. У него открытый исходный код и простой синтаксис, к тому же, Swift совместим с Objective-C.
На Swift написаны популярные сервисы, такие как WordPress, Mozilla Firefox, SoundCloud и Flappy Bird.
10. MATLAB
MATLAB — это инструмент статистического анализа, который применяется в различных отраслях промышленности для обработки данных. Он построен специально для ученых и инженеров.
Программисты используют MATLAB для создания приложений с использованием технологий машинного и глубокого обучения. Программы на базе MATLAB позволяют пользователям анализировать данные, создавать алгоритмы, обрабатывать изображения и проверять результаты исследований.
Его легче изучать, чем другие языки программирования. Для новичков на сайте MathWorks есть обширный раздел, посвященный ответам на вопросы о MATLAB.
