Теги → c++

«Rust — будущее системного программирования, С — новый Ассемблер» — выступление одного из ведущих инженеров Intel

На недавно прошедшем Саммите по технологиям с открытым исходным кодом (Open Source Technology Summi — OSTS) Джош Триплетт (Josh Triplett), ведущий инженер Intel, рассказал о том, что его компания заинтересована в том, чтобы в ближайшем будущем Rust достиг «паритета» со всё ещё доминирующим в области системной и низкоуровневой разработки языком C. В своём выступлении под заголовком «Intel и Rust: будущее системного программирования» он также рассказал об истории системного программирования, о том, как C стал языком системного программирования «по умолчанию», какие возможности Rust дают ему преимущество над C и как в ближайшем будущем он сможет полностью заменить C в данной области программирования.

 Ведущий инженер Intel Джош Триплетт выступил на Открытом саммите по технологиям с открытым исходным кодом с потрясающим докладом о том, как, по его мнению, Rust в ближайшем будущем заменит C как язык для системного программирования, и Intel готова в этом поучаствовать

Системное программирование — это разработка и управление программным обеспечением, которое служит платформой для создания прикладных приложений, обеспечивая взаимодействие последних с процессором, оперативной памятью, устройствами ввода-вывода и сетевым оборудованием. Системное программное обеспечение создаёт специальную абстракцию в виде интерфейсов, которые помогают создавать прикладное ПО, не вникая в детали того, как работает непосредственно «железо».

Сам Триплетт определяет системное программирование как «всё, что не является приложением». Оно включает в себя такие вещи, как BIOS, прошивки, загрузчики и ядра операционных систем, различные виды встроенного низкоуровневого кода, а также реализации виртуальных машин. Интересно, что Триплетт считает, что веб-браузер — это тоже системное программное обеспечение, поскольку браузер давно стал бóльшим, чем «просто программой», превратившись в самостоятельную «платформу для веб-сайтов и веб-приложений».

В прошлом большинство системных программ, в том числе BIOS, загрузчики и прошивки, писались на языке ассемблера. В 1960-х годах начались эксперименты по обеспечению аппаратной поддержки языков высокого уровня, что привело к созданию таких языков, как PL/S, BLISS, BCPL и ALGOL 68.

Затем, в 1970-х годах, Деннис Ритчи (Dennis Ritchie) создал язык программирования C (Си) для операционной системы Unix. Созданный на языке программирования B, не имевшим даже поддержки типизации, C был наполнен мощными высокоуровневыми функциями, которые лучше всего подходили для написания операционных систем и драйверов. Несколько компонентов UNIX, включая его ядро, были в конечном итоге переписаны на C. В дальнейшем многие другие системные программы, включая базу данных Oracle, большую часть исходного кода Windows и операционную систему Linux, были также написаны на C.

C получил огромную поддержку в данном направлении. Но что именно заставило разработчиков перейти на него? Триплетт считает, что для того, чтобы замотивировать разработчиков перейти с одного языка программирования на другой, последний прежде всего должен обеспечить новые функции без потери старых возможностей.

Во-первых, язык должен предлагать «достаточно впечатляющие» новые функции. «Он не может быть немного лучше. Он должен быть значительно лучше, чтобы оправдать усилия и время инженеров, необходимое для перехода», — объясняет он. По сравнению с языком ассемблера у С было много вещей, которые он мог предложить. Он поддерживал в некоторой степени безопасную типизацию, обеспечивал лучшую переносимость и производительность с высокоуровневыми конструкциями, а также генерировал в целом намного более читаемый код.

Во-вторых, язык должен обеспечивать поддержку старых возможностей, а это значит, что в истории с переходом на C разработчики должны были быть уверены, что он не менее функционален, чем язык ассемблера. Триплетт поясняет: «Новый язык не может быть просто лучше, он также должен быть не хуже». Помимо того, что C был быстрее и поддерживал любые типы данных, которые мог использовать язык ассемблера, он также имел то, что Триплетт назвал «аварийным люком», а именно поддерживал внутри себя вставки кода на языке ассемблера.

 Триплетт на конференции Rustconf 2019, проходившей в Портленде, штат Орегон, США.

Триплетт на конференции Rustconf 2019, проходившей в Портленде

Триплетт считает, что C сейчас становится тем, чем был язык ассемблера много лет назад. «С — это новый Ассемблер», — заявляет он. Теперь разработчики ищут новый язык высокого уровня, который не только решит накопившиеся в C проблемы, исправить которые уже невозможно, но и также предложит новые впечатляющие возможности. Такой язык должен быть достаточно убедительным, чтобы заставить разработчиков перейти на него, должен быть безопасным, обеспечивать автоматическое управление памятью и многое другое.

«Любой язык, который хочет быть лучше, чем C, должен предлагать гораздо больше, чем просто защиту от переполнения буфера, если он действительно хочет стать убедительной альтернативой. Разработчики заинтересованы в удобстве использования и производительности, в написании кода, который не требует пояснений и выполняет больше работы за меньшее количество строк. Также необходимо решить проблемы безопасности. Простота использования и производительность неразрывно с нею связаны. Чем меньше кода вам нужно написать для достижения чего-либо, тем меньше у вас возможностей, чтобы допустить какие-либо ошибки, связанные с безопасностью или нет», — объясняет Триплетт.

Сравнение Rust и C

Ещё в 2006 году Грейдон Хоар (Graydon Hoare), сотрудник Mozilla, начал писать Rust как личный проект. А в 2009 году Mozilla начала спонсировать разработку Rust для собственных нужд, а также расширила команду для дальнейшего развития языка.

Одна из причин, по которой Mozilla заинтересовалась в новом языке, заключается в том, что Firefox был написан на более чем 4 миллионах строк кода C++ и имел довольно много критических уязвимостей. Rust был создан с учетом требований безопасности и параллелизма, что делает его идеальным выбором для переписывания многих компонентов Firefox в рамках проекта Quantum по полной переработке архитектуры браузера. Также Mozilla использует Rust для разработки Servo, движка рендеринга HTML, который в будущем заменит текущий движок рендеринга Firefox. Многие другие компании начали использовать Rust для своих проектов, включая Microsoft, Google, Facebook*, Amazon, Dropbox, Fastly, Chef, Baidu и многие другие.

Rust решает одну из наиболее важных проблем языка C. Он предлагает автоматическое управление памятью, поэтому разработчикам не нужно вручную выделять, а затем освобождать её для каждого объекта в приложении. Что отличает Rust от других современных языков, так это то, что он не имеет сборщика мусора, который автоматически удаляет из памяти неиспользуемые объекты, а также среды выполнения, необходимой для его работы, как, например, Java Runtime Environment для Java. Вместо этого у Rust есть концепции владения, заимствования, ссылок и времени жизни. «В Rust есть система декларирования вызовов объекта, позволяющая указать, использует ли его владелец или это просто заимствование. Если вы просто заимствуете объект, компилятор будет следить за этим и гарантировать, что оригинал останется на месте, пока вы ссылаетесь на него. А также Rust проследит, что объект будет удалён из памяти сразу по завершении его использования, вставляя соответствующий вызов в код во время компиляции без дополнительных затрат времени», — рассказывает Триплетт.

Отсутствие собственной среды выполнения также можно считать положительной чертой Rust. Триплетт считает, что языки, которые выполняются с её помощью, сложно использовать в качестве инструмента для системного программирования. Как он поясняет: «Вы должны инициализировать эту среду выполнения, прежде чем сможете вызвать любой код, вы должны использовать эту среду выполнения для вызова функций, и сама среда выполнения может запускать дополнительный код за вашей спиной в неожиданные моменты времени».

Также Rust стремится обеспечить безопасное параллельное программирование. Те же функции, которые делают его безопасным для памяти, отслеживают такие вещи, как то, какому потоку принадлежит какой объект и какие объекты могут передаваться между потоками, а какие нуждаются в блокировке.

Все эти функции делают Rust достаточно убедительным, чтобы разработчики смогли выбрать его как новый инструмент для системного программирования. Однако, с точки зрения параллельных вычислений Rust пока ещё немного отстаёт от C.

Триплетт собирается создать специальную рабочую группу, которая займётся внедрением в Rust необходимых функцией, чтобы он смог полностью сравняться, превзойти и заменить C в области системного программирования. В теме на Reddit, посвящённой его выступлению, он сообщил, что «группа FFI/ C Parity находится в процессе создания и ещё не начала работу», пока что он готов ответить на любые вопросы, а в будущем обязательно опубликует ближайшие планы по развитию Rust в рамках его инициативы для всех заинтересованных лиц.

Можно предположить, что в первую очередь группа FFI/ C Parity займётся улучшением поддержки многопоточности в Rust, внедрением поддержки BFLOAT16, формата представления чисел с плавающей запятой, который появился в новых процессорах Intel Xeon Scalable, а также стабилизацией вставок кода на Ассемблере.


* Внесена в перечень общественных объединений и религиозных организаций, в отношении которых судом принято вступившее в законную силу решение о ликвидации или запрете деятельности по основаниям, предусмотренным Федеральным законом от 25.07.2002 № 114-ФЗ «О противодействии экстремистской деятельности».

Обновление рейтинга языков программирования: C# теряет популярность

На официальном сайте компании TIOBE, специализирующейся на контроле качества программного обеспечения, появился обновлённый рейтинг языков программирования по данным на текущий месяц.

Рейтинг TIOB наглядно демонстрирует популярность современных языков программирования и обновляется один раз в месяц. Он строится на основе данных, собранных по всему миру о количестве квалифицированных инженеров, доступных обучающих курсах и сторонних решениях, расширяющих возможности языка и упрощающих работу с ним. Для расчёта рейтинга используются популярные поисковые системы, такие как Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube и Baidu. При этом важно отметить, что индекс TIOBE не говорит о том, какой язык хуже или лучше, или на каком языке написано больше строк кода, но может быть использован для планирования изучения какого-либо языка на основе данных о его популярности и востребованности в мире, а также для выбора языка для создания нового продукта вами или вашей компанией.

 Топ 15 языков программирования по версии TIOBE

Топ 15 языков программирования по версии TIOBE

В этом месяце C++ вернул себе третье место, сместив на позицию вниз Python. Это ни в коем случае не говорит о том, что Python находится в упадке, так как, несмотря на это, Python бьёт все рекорды по популярности почти каждый месяц. Просто спрос на C++ также вырос за последний год. При этом ему ещё далеко до пика своей славы в начале этого столетия, когда его рыночная доля составляла более 15 %. В то время задержки в выпуске нового стандарта — C++0x (рабочее название C++11), вместе с традиционной сложностью этого языка и проблемами в безопасности, значительно снизили популярность C++. После выпуска в 2011 году C++11, новый стандарт сделал язык намного проще, безопаснее и выразительнее. Потребовалось несколько лет, пока стандарт был полностью принят сообществом, а его поддержка добавлена во все популярные компиляторы. Теперь, когда стандарты C++11, C ++14 и C++17 полностью поддерживаются GCC, Clang и Visual Studio, популярность C++ возрождается за счёт его возможностей в написании низкоуровневого кода с максимальным быстродействием.

 Динамика изменения популярности языков программирования за 17 лет

Динамика изменения популярности языков программирования за последние 17 лет

МФТИ и «Яндекс» помогут освоить язык программирования C++

Московский физико-технический институт (МФТИ) и компания «Яндекс» открыли на платформе Coursera обучающую онлайн-программу «Искусство разработки на современном C++».

Курсы помогут освоить язык программирования C++. Отмечается, что программа включает в себя большое количество практических заданий и лекций от ведущих разработчиков и опытных преподавателей.

В общей сложности предусмотрены пять онлайн-курсов, каждый из которых длится не более шести недель. Слушателю предстоит чередовать просмотр коротких видеоматериалов с решением практических заданий. В курс включены как задачи и тесты, необходимые для получения сертификата, так и дополнительные необязательные задачи — для тех, кто хочет потренироваться побольше.

Вести курсы будут авторы программы. Они имеют большой опыт преподавания в вузах, летних школах и Школе анализа данных «Яндекса».

Сейчас доступны три курса — так называемые белый, жёлтый и красный пояса. Позднее будут открыты ещё два курса — коричневый и чёрный пояса. В состав последнего войдут темы, без которых представление о C++ будет неполным: это таблицы виртуальных методов, виртуальные деструкторы, неопределённое поведение, шаблоны с произвольным числом аргументов и пр.

Зарегистрироваться на курсы можно здесь.

Технологии, которые вдохновляют на изучение Python

Python используют на «горячих» направлениях: машинное обучение, big data, создание криптовалют и блокчейнов, разработка высоконагруженных сайтов. На этом языке пишут инженеры Google, ученые и стартаперы. Почему он нравится IT-новаторам и ради каких инструментов стоит учить Python сегодня?

Экспериментаторы от науки и бизнеса ценят Python за возможность быстро создавать прототипы приложений, тестировать и перестраивать код «на лету». Сервис Jupyter Notebook позволяет запускать Python в браузере, тестировать блоки кода в любой последовательности, сохранять лог и делиться им с сообществом на GitHub.

Фреймворки и библиотеки Питона экономят время и не дают начинающим утонуть в технических мелочах. Язык стоит выучить хотя бы ради них:

  • Django – фреймворк для разработки сайтов средней и высокой сложности – позволяет в 2 строчки кода подключать админку, работать с СУБД, настраивать кеширование и безопасность, генерировать и редактировать формы. Там, где PHP-код сайта был бы запутанным и громоздким, Python сохраняет ясность и простоту. Поэтому на нем работают веб-проекты Яндекс и Mail.Ru.
  • Pandas обеспечивает глубинный анализ (data mining) при работе с big data и другими структурированными данными. Помогает ученым находить закономерности, а бизнесу – тренды.
  • Sage – арсенал инструментов для математических вычислений и их визуализации. Заменяет мат. пакет Mathematica и аналоги.
  • Scikit-learn – работает с алгоритмами машинного обучения, помогает создавать искусственный интеллект, который анализирует ситуацию на основе прошлого опыта.

Когда Питона недостаточно

Си ускоряет вычисления, а Питон – разработку. На этой волне появилась надстройка Cython, которая компилирует Питон-код в модули на C и С++.

Альтернативная реализация Питона под названием PyPy действует иначе: динамически компилирует Python-скрипты в машинный код во время исполнения. PyPy ускоряет программы и позволяет написать новый интерпретатор Питона под конкретный проект.

Путь Питона

Чтобы не заблудиться в мире Python, начинайте с практики в интересующей сфере. Веб, наука, финансы – выбирайте свое и учитесь у кодеров с опытом. Не гонитесь за теорией, которую пока не готовы переварить. В этом смысле поступление в вуз оттягивает начало карьеры. Учиться можно и под крылом крупной IT-компании. GeekUniversity – онлайн-университет от GeekBrains и Mail.Ru – за год готовит Python-разработчиков уровня middle, дает им практику и знакомит с работодателями из числа своих партнеров: МТС, Тинькофф, Avito и др.

Если вы уже знаете другой язык, выучить основы Python можно за пару недель, а собрать портфолио – за полгода экспресс-обучения. Только помните: чем больше у языка сообщество, тем сложнее выделиться на общем фоне. Единственный способ стать высокооплачиваемым гуру – выкладываться больше других.

«Яндекс» и МФТИ помогут получить навыки программирования на C++

«Яндекс» и Московский физико-технический институт (МФТИ) объявили о запуске онлайнового курса «Основы разработки на C++: белый пояс», который поможет получить навыки программирования на популярном языке.

Курс посвящён знакомству с языком программирования С++. Занятия ориентированы на тех пользователей, которые обладают базовыми понятиями программирования — знают, что такое переменные, циклы, условные операторы, — но не имеют опыта написания программ на C++.

Курс разработан ведущими специалистами «Яндекса» и преподавателями Школы анализа данных. Слушатели познакомятся с основами C++ и научатся базовым приёмам, с помощью которых можно решать практические задачи.

Программа занятий рассчитана на пять недель. Из них четыре отводятся непосредственно на обучение: предстоит слушать видеолекции, изучать текстовые материалы и выполнять практические задания. На пятой неделе слушатели работают над собственным проектом.

Базовые материалы курса доступны бесплатно, но чтобы открыть доступ ко всем практическим заданиям и получить по окончании курса сертификат, нужно приобрести полную версию — она стоит 1680 рублей.

Нужно отметить, что это вводный курс и за ним последуют более сложные. Система обозначения трудности позаимствована из карате, где ученики двигаются от белого пояса к чёрному.

В России сформирована рабочая группа по стандартизации языка C++

Компания «Яндекс» объявила о создании в России рабочей группы по стандартизации широко распространённого языка программирования C++.

Отмечается, что язык C++ используется, в частности, для создания операционных систем, драйверов, прикладных программ и веб-сервисов. Стандарт C++ содержит его исчерпывающее описание. Разделы документа регламентируют, например, использование переменных и выражений, синтаксис и работу с памятью. От стандарта зависит, насколько удобна и эффективна разработка.

Сформированная группа будет собирать предложения к стандарту C++ от российских специалистов, организовывать их обсуждение внутри страны, а затем представлять и защищать на общих собраниях в Международной организации по стандартизации (ISO). Рабочая группа уже зарегистрирована Росстандартом — федеральным агентством, представляющим нашу страну в ISO.

«В России много высококлассных специалистов по C++. Их участие в обсуждении стандарта было бы полезно. Однако представить предложение в ISO непросто. Его нужно оформить определённым образом, а потом защитить на заседании. Рабочая группа станет связующим звеном между российскими экспертами и международным комитетом», — отметил технический директор «Яндекса» Михаил Парахин.

Язык программирования C вновь стал самым популярным среди разработчиков

Компания TIOBE Software обнародовала очередной рейтинг популярности языков программирования, формируемый путем подсчета количества их упоминаний при поиске в Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube и Baidu.

В апрельском отчете, отражающем наиболее востребованные профессиональным сообществом среды разработки ПО, язык программирования C вновь перехватил пальму первенства у языка Java, занимавшего лидирующую позицию в течение достаточно продолжительного срока и сместившегося на вторую строчку в списке. Третье место, как и годом ранее, прочно удерживает C++.

Проведенные специалистами TIOBE Software исследования зафиксировали рост интереса со стороны разработчиков к Objective-C, объектно-ориентированному языку программирования корпорации Apple, получившему в прошлом году почетный титул "язык 2011 года". Прибавив 3,85% в общем рейтинге, Objective-C вошел в четверку самых распространенных языков программирования, что обусловлено повышенным потребительским спросом на продукты Apple и увеличением числа специалистов, создающих приложения для мобильных iPhone- и iPad-устройств.

С полным отчетом TIOBE Software можно ознакомиться здесь.

Материалы по теме:

Источник:

WP7 Tango поддерживает 120 языков; грядёт возможность разработки на C++

Недавно на встрече с разработчиками в Индии, как сообщается, Microsoft представила некоторые интересные подробности. Представитель компании подтвердил присутствующим, что следующая версия Windows Phone, носящая пока кодовое имя Tango, будет поддерживать 120 языков. Для сравнения, Mango сейчас поддерживает только 35 локализаций.

Как сообщалось ранее, одна из основных задач Tango — вывод платформы Windows Phone на новые рынки, включая развивающиеся страны вроде Китая и Индии, которые ранее Microsoft не особо жаловала. Новость относительно поддержки массы новых языков в Windows Phone говорит о том, что компания, в самом деле, желает представить свою мобильную платформу на возможно более широком числе рынков. Сообщается, что iOS сейчас поддерживает лишь 34 языка, а Android — 55. Таким образом, следующая версия WP в этом отношении обещает стать рекордсменом.

Также сообщается, что один из представителей Microsoft подтвердил, что разработчики получат в «новой версии» Windows Phone возможность использования родного кода C++, однако представители компании не указали, идёт в данном случае речь о Tango, об Apollo, или же о новой версии Visual Studio.

Ожидается, что официальный анонс Windows Phone Tango может состояться уже во время предстоящей в конце февраля выставки Mobile World Congress 2012 в Барселоне. Возможно, к тому времени также будут известны новые подробности и относительно Windows Phone Apollo.

Материалы по теме:

Источник:

Objective-C стал "языком 2011 года" по версии TIOBE Software

TIOBE Software составила рейтинг популярности языков программирования и подвела основные итоги данного сегмента рынка за прошедший год.

Проведенные аналитиками компании исследования зафиксировали всплеск интереса со стороны разработчиков к объектно-ориентированному языку программирования Apple Objective-C, за двенадцать месяцев переместившемуся с восьмой на пятую позицию в списке, прибавившему 3,9% в общем рейтинге и получившему почетный титул "язык 2011 года". По мнению экспертов, рекордный рост рыночной доли Objective-C обусловлен повышенным потребительским спросом на продукты Apple и увеличением числа специалистов, создающих приложения для iPhone- и iPad-устройств.

Вторым после Objective-C по динамике востребованности среди профессионального сообщества стал язык C#, созданный группой инженеров под руководством Андерса Хейлсберга (Anders Hejlsberg) в корпорации Microsoft как инструмент разработки приложений для платформы.NET Framework. За прошедший год C# прибавил 2,6% аудитории и вошел в тройку самых распространенных языков программирования. Традиционными лидерами рейтинга остаются хорошо известные среды разработки Java и C.

С полным отчетом TIOBE Software можно ознакомиться здесь. Сформированный рейтинг составлен путем подсчета количества упоминаний языков при поиске в Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube и Baidu.

Материалы по теме:

Источник:

window-new
Soft
Hard
Тренды 🔥
Счётчики аналитики TikTok обнаружились на сайтах по всему интернету 47 мин.
Верховный суд США рассмотрит вопросы ответственности социальных сетей за размещаемый контент 52 мин.
Глава PlayStation Джим Райан лично донёс до европейских регуляторов опасения компании насчёт сделки Microsoft и Activision Blizzard 2 ч.
«Люди в пиджаках убили диско»: студия ZA/UM пыталась замолчать уход ключевого разработчика Disco Elysium и угрожала ему судом 3 ч.
Twitter добавила кнопку редактирования твитов, но только платным подписчикам и не везде 4 ч.
Утечка раскрыла часть будущих релизов Sony — Horizon Forbidden West на ПК, Death Stranding 2, два хоррора и не только 4 ч.
Bethesda планирует целый месяц отмечать 25-летие Fallout — с конкурсами, акциями и подарками 4 ч.
Игроки призвали CD Projekt RED выполнить обещание — петиция с требованием второго аддона для Cyberpunk 2077 набирает популярность 5 ч.
Более 35 % атакованных хакерами американских компаний теряют свыше $100 тыс., а 4 % — больше $1 млн 14 ч.
Infinix провела первый мейджор-турнир по Standoff 2 — в гранд-финале победила команда Horizon 16 ч.
ФСО и Минтранс не разрешили тестировать аэротакси в «Сколково» — слишком близко аэропорт Внуково 2 мин.
Доступные электромобили Chevrolet Bolt EV резко набрали популярность, несмотря на скандал с некачественными батареями 13 мин.
К концу года китайская BYD намерена продавать по 280 тыс. гибридов и электромобилей в месяц 30 мин.
Cooler Master представила игровое кресло Synk X с тактильной обратной связью 43 мин.
Поставки Steam Deck уже превысили 1 млн экземпляров 43 мин.
XPeng покажет широкой публике электролёт Voyager X2 уже в этом месяце — в том числе в воздухе 3 ч.
Впервые в истории в России сократился мобильный интернет-трафик 3 ч.
США готовят новые санкции против Китая в высокотехнологичной сфере — они затронут ИИ, суперкомпьютеры и не только 5 ч.
Samsung пообещала освоить 1,4-нм техпроцесс через 5 лет 5 ч.
Rivian до сих пор считает, что сможет по итогам года выпустить 25 000 электромобилей 6 ч.