Перейти к содержимому

На чем пишут десктопные приложения 2022

  • автор:

Обзор параметров разработки Windows

В этой статье содержатся сведения, необходимые для начала создания приложений для классической среды Windows.

Developer at desk

Windows предлагает широкий спектр возможностей для создания приложений, включая C++, .NET и другие новые технологии, такие как открытый код средства wSL и Rust. С таким количеством вариантов, это может быть трудно знать, где начать.

Языки и платформы

Многие приложения для Windows написаны с помощью UWP, WPF или Windows Forms, и все они остаются жизнеспособными сегодня. Сводка по использованию см. в разделе «Разработка приложений Windows»: параметры и функции.

Если приложение будет работать только в Windows, возможно, потребуется изучить пакет SDK для приложений Windows и WinUI 3. Если вам нужно, чтобы приложение было кроссплатформенным, рассмотрим .NET MAUI, прогрессивное веб-приложение (PWA) или React Native для Windows. Есть много других вариантов (вот список популярных вариантов), но выше приведены некоторые хорошие начальные точки.

Платформы Windows

Дополнительные сведения о типах приложений, которые можно выбрать, приведены на вкладках ниже.

Библиотека пользовательского интерфейса Windows (WinUI) 3 — это последняя платформа пользовательского интерфейса для классических приложений Windows, включая управляемые приложения, использующие C# и .NET, а также собственные приложения, использующие C++ с API Win32. Он все еще находится под очень активной разработкой, поэтому, хотя он может не иметь возможности соответствовать всем вашим потребностям сегодня это созревать с каждым выпуском.

Включая систему Fluent Design во все интерфейсы, элементы управления и стили, WinUI предоставляет единообразные, интуитивно понятные и доступные возможности на основе новейших шаблонов пользовательского интерфейса. WinUI 3 предоставляется в пакете SDK для приложений Windows. Пакет SDK для приложений для Windows включает единый набор API и инструментов, которые могут согласованно использоваться любым приложением Win32 на C++ или .NET на C# в различных целевых версиях ОС Windows.

Если вы уже установили необходимые средства разработчика, вы можете создать простой проект WinUI 3.

Классические приложения Win32 (иногда называемые просто классическими приложениями) — это исходный тип собственных приложений Windows, которым требуется прямой доступ к Windows и оборудованию. Благодаря этому такой тип будет лучшим выбором, если требуется самый высокий уровень производительности и прямой доступ к системному оборудованию.

Использование API Win32 с C++ позволяет достичь наивысшего уровня производительности и эффективности благодаря повышению контроля над целевой платформой с помощью неуправляемого кода, что возможно в управляемой среде выполнения, такой как WinRT и .NET. Однако такой уровень контроля над исполнением приложения требует большей осмотрительности и внимания для правильного выполнения, и позволяет извлекать выгоду из производительности разработки для производительности среды.

Вот несколько основных особенностей интерфейса API Win32 и C++ предложений, позволяющих создавать высокопроизводительные приложения.

  • Оптимизация на уровне оборудования, включающая тщательный контроль за выделением ресурсов, время существования объектов, макет данных, выравнивание, байтовую упаковку и многое другое.
  • Доступ к наборам инструкций, ориентированных на производительность, например SSE и AVX, с помощью встроенных функций.
  • Эффективное и строго типизированное универсальное программирование с помощью шаблонов.
  • Эффективные и надежные контейнеры и алгоритмы.
  • DirectX, в частности Direct3D и DirectCompute (обратите внимание, что UWP также предлагает межпрограммное взаимодействие с DirectX).
  • Используйте C++/WinRT для создания современных классических приложений Win32 с эффективным доступом к интерфейсам API среды выполнения Windows (WinRT).

У вас также есть доступ к современным возможностям платформы Windows и API, предоставляемым пакетом SDK для приложений Windows. Дополнительные сведения см. в статье Модернизация классических приложений.

WPF — это надежная платформа для управляемых приложений Windows с доступом ко всем компонентам .NET или .NET Framework, в которой используется разметка XAML для отделения пользовательского интерфейса от кода. Эта платформа создана для классических приложений, для которых требуется расширенный пользовательский интерфейс, настройка стилей и сценарии с большим объемом графики. Навыки разработки WPF похожи на навыки разработки WinUI 3, поэтому миграция из WPF в приложения WinUI 3 проще, чем миграция с Windows Forms.

У вас также есть доступ к современным возможностям платформы Windows и API, предоставляемым пакетом SDK для приложений Windows. Дополнительные сведения см. в статье Модернизация классических приложений.

Windows Forms — это исходная платформа для управляемых приложений Windows с упрощенной моделью пользовательского интерфейса с доступом ко всем компонентам .NET или .NET Framework. Это позволяет разработчикам быстро приступить к созданию приложений, даже новичкам на платформе. Это платформа быстрой разработки приложений на основе форм с большой встроенной коллекцией визуальных и невизуальных элементов управления, поддерживающих перетаскивание. Windows Forms не использует XAML, поэтому при переносе приложения в WinUI 3 пользовательский интерфейс будет полностью переписан.

У вас также есть доступ к современным возможностям платформы Windows и API, предоставляемым пакетом SDK для приложений Windows. Дополнительные сведения см. в статье Модернизация классических приложений.

На универсальной платформе Windows (UWP) предоставляется система общих типов, интерфейсы API и модель приложений для всех устройств под управлением UWP. Вы можете не только использовать UWP для создания классических приложений для компьютеров под управлением Windows — UWP также является единственной платформой с поддержкой написания собственных универсальных приложений для выполнения на Xbox, HoloLens и в Surface Hub. Приложения UWP могут быть собственными или управляемыми.

UWP — это платформа с широкими возможностями настройки, которая использует разметку XAML для отделения пользовательского интерфейса (представления) от кода (бизнес-логики). UWP подходит для классических приложений, которым требуется расширенный пользовательский интерфейс, настройка стилей и сценарии с большим объемом графики. UWP также имеет встроенную поддержку Системы дизайна Fluent для работы с UX по умолчанию и обеспечивает доступ к API Windows Runtime (WinRT).

У вас не будет доступа к API, предоставляемым пакетом SDK для приложений Windows. Чтобы использовать пакет SDK для приложений Windows, потребуется перенести приложение UWP в WinUI 3. Дополнительные сведения см. в статье о переходе на SDK для приложений Windows.

Варианты кросс-платформенной поддержки

WinUI также служит основой для кросс-платформенных технологий, обеспечивающих великолепные возможности Windows с использованием разных языков программирования. .NET MAUI и React Native для Windows используют возможности WinUI в Windows, а также включение выполнения в других операционных системах. Еще один кроссплатформенный вариант, прогрессивный веб-приложения (PWAs), — это веб-сайты, которые работают так же, как установленные, собственные приложения в Windows и других поддерживаемых платформах, в то время как обычные веб-сайты в браузерах.

  • .NET MAUI
  • Прогрессивные веб-приложения (PWA)
  • React Native для Windows

Мультиплатформенный пользовательский интерфейс приложений .NET (MAUI) — это кросс-платформенная архитектура с открытым кодом для создания приложений Android, iOS, macOS и Windows, которые используют собственный пользовательский интерфейс и службы каждой платформы из единой базы кода .NET. Так как .NET MAUI ориентируется на использования собственных возможностей платформ, это решение использует WinUI 3 и пакет SDK для приложений Windows для реализации последних возможностей для пользователей в Windows. Благодаря этому приложения получают все необходимое с WinUI 3, а также возможность взаимодействовать с другими платформами.

.NET MAUI для Windows станет отличным выбором, если:

  • Вы хотите сохранить как можно больший объем кода .NET в мобильных и классических приложениях.
  • Вы хотите поставлять приложения на другие компьютерные и мобильные платформы, помимо Windows, с поддержкой собственных возможностей платформы.
  • Вы хотите использовать C# и (или) XAML для создания кросс-платформенных приложений.
  • Вы используете Blazor для веб-разработки и хотите включить все или одну часть этого решения в мобильное или классическое приложение.

Дополнительные сведения о .NET MAUI см. по следующим ссылкам:

  • Документация по .NET MAUI
  • .NET MAUI на GitHub
  • Стратегия развития .NET MAUI
  • Создание приложений Windows с помощью MAUI .NET
  • Ресурсы для обучения .NET MAUI
  • Серия видео: .NET MAUI для начинающих
  • Build 2022: создание собственных приложений для любого устройства с помощью .NET и Visual Studio

Прогрессивные веб-приложения (PWAs) предоставляют доступ к открытым веб-технологиям для обеспечения кроссплатформенного взаимодействия. PwAs предоставляют пользователям возможность работы с приложением, настроенным для своих устройств. PWAs — это веб-сайты, которые постепенно расширены для работы как установленные, собственные приложения на вспомогательных платформах (включая Windows), в то время как обычные веб-сайты в других браузерах.

При установке в Windows ЦС так же, как и другие приложения. Например:

  • PWA можно добавить в меню .
  • PWA можно закрепить на панели задач.
  • ЦП может обрабатывать файлы.
  • ЦС могут выполняться при входе пользователя.
  • PVA можно отправить в Microsoft Store, где миллионы пользователей Windows могут обнаруживать и легко устанавливать их вместе с другими приложениями Windows.

Дополнительные сведения о создании ЦС см. по следующим ссылкам:

  • Обзор ПП
  • Публикация PWA в Microsoft Store
  • Повторное взаимодействие пользователей с значками, уведомлениями и push-сообщениями
  • Создание мини-приложений на основе PWA
  • Демонстрации прогрессивных веб-приложений
  • PWABuilder — помощь разработчикам в создании и публикации ЦП

React Native — это платформа разработки, которая позволяет создавать кросс-платформенные приложения. React Native для Windows предоставляет поддержку React Native для пакетов SDK Windows 10 и Windows 11, позволяя использовать JavaScript для создания собственных приложений Windows для всех устройств, поддерживаемых Windows 10 и Windows 11, включая ПК, планшеты, трансформеры, Xbox, устройства смешанной реальности и т. д.

При использовании React Native для Windows вы пишете основную часть кода приложения или весь код на JavaScript или TypeScript, а платформа создает собственное приложение XAML UWP. Если приложению требуется вызывать API платформы, обычно это можно сделать с помощью одного из многих модулей сообщества или, если нужный модуль еще не существует, вы можете легко написать собственный.

Ниже приведены некоторые преимущества React Native для Windows:

  • Вам нужно обеспечить максимально возможное совместное использование кода на разных платформах или у вас есть веб-свойства, с которыми требуется совместно использовать код.
  • Высокая производительность разработки и оптимизированный внутренний цикл благодаря быстрому обновлению.
  • Основные характеристики приложения (производительность, доступность, интернационализация) находятся на уровне характеристик собственного приложения UWP.
  • У вас есть опыт работы с JavaScript или TypeScript, а также желание использовать эти языки.
  • Вы хотели бы использовать библиотеки JavaScript в npmjs.com, а также многие собственные библиотеки.
  • Приложение будет использовать характерные для платформы элементы управления, вид, анимацию и цвета, благодаря чему оно воспринимается естественно в Windows. Кроме того, при использовании приложений React Native для Windows не нужно идти на компромиссы в отношении набора API, которые они могут вызывать, так как платформа позволяет вызывать API платформы, а также писать собственные диспетчеры представлений и собственные модули.
  • Большое и растущее сообщество, а также множество модулей сообщества.

Дополнительные сведения об использовании React Native для Windows см. по следующим ссылкам:

  • Репозиторий React Native для Windows на сайте GitHub
  • Собственные модули в React Native для Windows
  • Справочник по API
  • Каталог модулей сообщества
  • Дополнительные ресурсы

На каких языках программирования пишут backend?

На каких языках программирования пишут backend?

Дмитрий Степанов

Дмитрий Степанов Системный архитектор ABCSolutions (бренд Goodt)

Во frontend лидирует JavaScript, а в backend все разнообразнее. Технологий десятки, для каждой задачи — своя. Разбираемся, какие языки в backend-разработке используют чаще всего. В бэкенде выделяются несколько востребованных языков: PHP, Java, Python, Ruby, JavaScript, C# и Go. Например, JavaScript активно используется для создания динамичных веб-приложений, в то время как Python славится своей простотой и расширенной библиотекой. Ruby с фреймворком Ruby on Rails подходит для быстрой разработки, в то время как Java обеспечивает надежность и масштабируемость. C# ориентирован на Windows-платформу, а Go – на высокую производительность. PHP остается одним из основных выборов для создания динамических веб-страниц на серверном языке. Для небольших проектов выбор языка программирования для серверной части может показаться незначительным. Времена сложных конфигураций и XML ушли в прошлое, а с современными MVC-фреймворками разработчики могут легко создать простое приложение на практически любом из указанных языков. Однако, при более серьезных задачах стоит учитывать особенности каждого языка и его способность эффективно решать поставленные задачи.

Каким должен быть язык для backend?

Backend переводится с английского как «задний, дальний край» и означает внутреннюю, серверную часть сайта или приложения, которая не видна пользователю. Она соединяет клиента и базу данных и отвечает за взаимодействие между сервером и интерфейсом. Во frontend главное требование к языку — способность работать в браузере, в backend важны удобство, скорость и производительность. А еще — то, насколько язык подходит для конкретной задачи.

Освойте профессию
«Fullstack-разработчик на Python»
Fullstack-разработчик на Python

Fullstack-разработчики могут в одиночку сделать IT-проект от архитектуры до интерфейса. Их навыки востребованы у работодателей, особенно в стартапах. Научитесь программировать на Python и JavaScript и создавайте сервисы с нуля.

картинка - 2023-03-14T190323.524

Профессия / 12 месяцев
Fullstack-разработчик на Python
Создавайте веб-проекты самостоятельно
4 116 ₽/мес 7 483 ₽/мес

dffsdd (3)

Универсальной технологии не существует: под каждую выбирается своя, со своими преимуществами и недостатками. Для больших проектов обычно выбирают Java, средних — PHP, а быстро развивающихся стартапов — Ruby или Go. Почему так — читайте дальше.

PHP

По данным W3Techs, в 2022 году это один из самых знаменитых веб-языков, на котором написано 77,4% всех сайтов в мире. На момент появления у PHP не было аналогов. Ни один язык не мог динамически подгружать данные и «собирать» их в веб-страницы. Сейчас появились другие технологии, но PHP — по-прежнему классика.

Преимущества

  • Популярность и относительная простота изучения. PHP дружелюбен к новичку, прощает ошибки, легко устанавливается и настраивается по сравнению с рядом других сред.
  • Язык динамически типизируется, разобраться в его основах легко, а большое сообщество и количество материалов упрощают изучение.

Недостатки

  • Из-за динамической типизации PHP бывает непредсказуемым и неочевидным при чтении.
  • Его нелегко масштабировать, поэтому для быстро меняющихся проектов язык подходит плохо.
  • По сравнению с другими технологиями он достаточно медленный — и в работе, и в скорости отладки.
  • Опытные программисты часто ругают PHP за архитектуру: язык развивался не целенаправленно, а хаотично, поэтому некоторые принципы кажутся нелогичными.

Применение

Это универсальный язык для веб-разработки. На PHP написано огромное количество «старых» проектов, например Википедия, Viber или Facebook*.

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

О том, почему в 2023 году стоит учить PHP и как это сделать, мы рассказали в статье.

Станьте веб-разработчиком и найдите стабильную работу на удаленке

C# + ASP.NET

ASP.NET — это фреймворк от Microsoft для разработки веб-приложений, который работает с языком C# и платформой .NET, а также с Visual Basic и F#. Он бесплатный, и кроссплатформенный. По рейтингу W3Techs сейчас он второй по популярности после PHP — на нем написано 7,7% сайтов.

C# похож похож на Java, но в нем есть некоторые функции C++, которых нет в Java. C# проще С++: например, в нем есть сборщик мусора, который облегчает работу программиста. Это быстрый, высокоуровневый язык, но не самый простой для входа в IT.

Visual Basic, наоборот, простой и ориентированный на ООП. Он очень наглядный, поэтому часто применяется для прототипирования, но у него есть минус: язык требует много ресурсов.

Преимущества

  • ASP.NET — мощный фреймворк, который реализует архитектуру MVC.
  • C# — универсальный язык общего назначения: его также используют в gamedev и в разработке десктопных приложений.

Недостатки

  • Это сложный инструмент для новичков, который требует много ресурсов.
  • Продукт полностью принадлежит компании Microsoft. Только она занимается его поддержкой, поэтому ASP.NET — технология, сильно зависимая от поставщика.

Применение

ASP.NET используют крупные компании. На нем написан StackOverflow, незаменимый инструмент разработчика, а также сайты Microsoft и Starbucks.

Посмотреть примеры кода на C# и прочитать про другие базовые инструменты можно в статье.

Ruby + Ruby on Rails

Ruby — язык общего назначения. Его часто используют в веб-разработке с фреймворком Ruby on Rails. «Рельсы», как их еще называют, реализуют архитектуру MVC. Они были прорывными: технологии переняли другие фреймворки. Ruby — язык «для людей», на нем приятно и удобно писать, он поддерживает концепцию объектно-ориентированного программирования.

Достоинства

  • На Ruby можно быстро создать работающий проект: код на нем не избыточен и пишется легко.
  • Объектно-ориентированный подход приводит в порядок сущности в коде, а инструменты «рельсов» автоматизируют типовые задачи.
  • Язык открытый. Ruby активно развивает сообщество, поэтому он обновляется и модифицируется.

Недостатки

  • Ruby не так популярен, как предыдущие технологии, но зато разработчики на нем очень ценятся.
  • У языка не очень высокая производительность, но ее хватает для большинства задач.

Применение

Ruby on Rails часто выбирают стартапы, которым важно быстро создать работающий проект. Фреймворк используют для создания MVP — минимально жизнеспособного продукта. Но на нем работают и «старые» проекты: Kickstarter, Airbnb и другие. Язык был на пике популярности в начале 2000-х, с тех пор хайп спал и Ruby стабильно развивается в своей нише.

Java

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

Достоинства

  • Это язык со строгой типизацией, которая нравится многим программистам.
  • Для Java есть множество фреймворков и разнообразных библиотек.
  • Язык универсален благодаря виртуальной машине и байт-коду — инструментам, которые позволяют работать под любой платформой. Например, язык подходит для мобильной разработки на Android.
  • У Java большое и открытое сообщество.

Недостатки

  • Язык не так дружелюбен к новичку, как многие другие, а подробность кода может запутать — некоторые считают его избыточным, слишком объемным.
  • Из-за особенностей Java в коде много повторяющихся участков.
  • Платформы для программирования требовательны к ресурсам.

Применение

Язык часто используют в банках, страховых компаниях, розничных сетях. На Java написаны PayPal и eBay, Amazon и другие гиганты рынка. Код на нем можно встретить в Airbnb, Pinterest и прочих проектах.

О том, как стать Java-программистом с нуля, мы рассказали в статье.

Станьте Java-разработчиком
и создавайте сложные сервисы
на востребованном языке

Scala

Язык основан на Java, но более современный. У него есть преимущества Java вроде байт-кода и виртуальной машины, но синтаксис лаконичнее, а структуры — сложнее. Scala — язык с сильным функциональным уклоном, а Java — в первую очередь объектно-ориентированный.

Достоинства

  • Язык мощный и кроссплатформенный, как Java, но код на нем лаконичнее и изящнее.
  • У Scala нет многословности — особенности Java, за которую его часто критикуют.
  • Scala на 20% быстрее предшественника.
  • В Scala можно интегрировать код на Java: языки совместимы друг с другом.

Недостатки

  • Язык сложный в изучении.
  • Иногда Scala называют преемником Java, но пока он не так популярен, как «родитель». Для него меньше фреймворков и библиотек, а сообщество уже.

Применение

Как и Java, Scala считается «языком для энтерпрайза», поэтому на нем написаны крупные платформы. Самые известные примеры — Twitter и LinkedIn, а также частично Тинькофф.

Kotlin

Как и Scala, язык основан на Java и работает под виртуальной машиной. Но сейчас интерес к нему выше, чем к Scala: он более простой и удобный. Kotlin разработала компания JetBrains как менее многословную и более компактную альтернативу Java. Язык полюбил и начал продвигать Google. Сейчас Kotlin — официальный стандарт для разработки под Android. Но на нем пишут и backend.

Достоинства

  • Kotlin лаконичнее и быстрее Java и Scala. Код на нем понятен и легко читается.
  • Это современный и мощный язык, поэтому он популярен в современной разработке.
  • В Kotlin можно использовать любые библиотеки Java.

Недостатки

  • Большинство технологий для Kotlin создано для мобильной разработки, хотя существуют и для backend.
  • Код на Kotlin компилируется в среднем на 30% медленнее, чем на Java.

Применение

Наиболее известные примеры — Adobe и Shazam, а также сайт Spring — популярного фреймворка для Java. Язык частично используется в серверной части Amazon. Часто backend на Kotlin выбирают молодые компании, которым сразу нужен современный и удобный инструмент.

Python

Удобный и лаконичный Python называют «языком для математиков и машинного обучения». На нем также пишутся сайты и десктопные приложения. Python поддерживает разные парадигмы написания кода, у него понятный и четкий синтаксис, который подходит для множества задач.

Достоинства

  • Язык легко начать изучать.
  • Python универсален: разработчику открыты все дороги.
  • Красота: язык лаконичный и изящный, код на нем понятный и легко читается.
  • Для Python есть много хороших фреймворков, например Django, которые позволяют быстро создать форум, интернет-магазин, блог и т.п.

Недостатки

  • Производительность Python ниже, чем у аналогов: это не самый быстрый язык, а на сервере скорость бывает критична.
  • В нем сложно работать с асинхронностью и многопоточностью. Такая же проблема есть и у PHP.

Применение

Для Python много «математических» и «научных» фреймворков, он хорошо подходит для сложных расчетов. Поэтому проекты, связанные с активными вычислениями, часто выбирают его. Но это не единственный вариант. На Python написана часть Instagram*, Netflix, Uber и Pinterest.

Узнать больше о языке, популярном у новичков, можно в нашей статье.

C++

C++ — универсальный язык, который используют в огромном количестве сфер, от системного программирования до GameDev. Иногда он встречается и в backend.

Достоинства

  • Это старый язык, который известен высокой скоростью, функциональностью и эффективностью.
  • C++ универсален.
  • Для языка есть множество разнообразных фреймворков и библиотек, в том числе для веб-разработки.

Недостатки

  • Сначала C++ не использовался для веб-разработки, поэтому фреймворков для backend не много, а некоторые хостинги сайтов плохо его поддерживают.
  • C++ — очень сложный язык, на котором тяжело писать и легко ошибиться. Быстро и хорошо запрограммировать серверную часть сайта не получится.

Применение

Обычно язык нужен для оптимизации, чтобы сервис работал быстро. Backend, полностью написанный на C++, считается редкостью: обычно на нем пишут часть, требовательную к скорости. Язык часто использует Яндекс.

О том, кому и для чего нужен C++, мы подробно разобрали в статье.

Rust

Rust — относительно новый и современный язык от компании Mozilla. Он поддерживает несколько парадигм программирования и работает очень быстро. Rust часто сравнивают с Go, но первый сложнее, хотя производительнее.

Достоинства

Это быстрый и мощный язык, по надежности сравнимый с Haskell, а по скорости — с C++. Из-за достоинств он входит в топ любимых языков программирования разработчиков по всему миру.

Недостатки

  • Несмотря на то, что Rust проще C++, его сложно изучать, особенно работу с объектами. Популярная парадигма ООП поддерживается не до конца.
  • Язык очень быстро развивается и порой серьезно меняется за короткий промежуток времени.
  • Некоторые разработчики ругают его документацию: она сложная, избыточная и запутанная, в ней нелегко разобраться.

Применение

Rust отлично подходит для сложных вычислений, на нем можно писать крупные проекты вроде браузерных движков. Код на нем хорошо оптимизирован. Сейчас Rust можно встретить в энтерпрайзе и различных высоконагруженных сервисах, где активно идут вычисления: в FinTech, blockchain, EdTech и пр. На Rust написаны сервисы Mozilla, высоконагруженные части Twitter и Dropbox.

Go (Golang)

Современный и «модный» язык от Google, который еще не успел завоевать большой процент рынка, но уже популярен в веб-разработке.

Достоинства

  • Go — быстрый, легкий и понятный язык с лаконичным синтаксисом, который похож на C.
  • Это язык со строгой статической типизацией и поддержкой горутин: позволяет выполнять несколько строк кода одновременно.
  • Go активно развивается, разработчики на нем нужны во многих компаниях.
  • У него простой интерфейс, поэтому язык не сложно изучать.

Недостатки

  • Пока что Go уступает по популярности другим языкам для backend.
  • Несмотря на то, что сам язык простой, в нем много сложных инструментов.

Применение

Go — эффективный, многопоточный язык, который подходит для создания быстрых и нагруженных приложений. На Go написаны сайты Тинькофф, Domino’s, а также такие проекты, как Docker и Kubernetes.

JavaScript + Node.js

JavaScript известен как язык для frontend, потому что браузеры полностью поддерживают только его. Но он тоже может использоваться для написания серверной части сайта. Платформа Node.js позволяет запускать JS на backend без браузера. Это не единственная ее полезная возможность, поэтому Node.js используют не только бэкендеры.

Достоинства

  • JavaScript — очень гибкий язык с малым количеством настроек.
  • Для него не нужно долго настраивать специальную среду, потому что код можно выполнить в любом браузере.
  • У JavaScript простой и понятный синтаксис, огромное сообщество, поэтому язык часто выбирают новички.

Недостатки

  • JavaScript динамически типизируется, поэтому может вести себя непредсказуемо, а проекты на нем бывает сложно масштабировать. Эта проблема частично решается с помощью TypeScript — доработки языка со строгой типизацией.
  • Из-за гибкости JS может работать довольно медленно.
  • Популярность приводит к высокой конкуренции на ранних этапах «входа» в профессию.

Применение

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

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

Что из перечисленного выбрать?

Хотите создать высоконагруженный проект? Подойдет Java или C#. Планируете писать на чем-то «классическом» и неизменно востребованном? Выбирайте PHP. А если хотите писать на простом и развивающемся языке с перспективой перехода в DataScience и ML, то стоит присмотреться к Python. Помните, что один большой проект может быть написан на нескольких языках — хотя бы тот же eBay или Airbnb.

Смотрите, что востребовано на рынке и к каким технологиям лежит душа. Если вам нравится язык, то и достичь на нем вы сможете большего.

* Принадлежит компании Meta, деятельность которой признана экстремистской в России.

6 языков программирования, которые будут популярны в 2022

Уже сейчас можно спрогнозировать, какие языки программирования будут популярны в 2022 году. Рассмотрим рейтинги IEEE, TIOBE и GitHub.

Уже сейчас можно спрогнозировать, какие языки программирования будут популярны в 2022 году. Такую оценку дают соответствующие рейтинги, которые взвешивают все «за» и «против» языков, опираясь на статистику, собранную за месяцы и кварталы. Рассмотрим наиболее известные рейтинги и сделаем прогноз на начало 2022 года.

Также приглашаем вас принять участие в батле языков программирования от Tproger, который уже стартовал. Все раунды батла вы найдёте здесь.

TIOBE

Как известно, в октябре 2021 года произошла настоящая революция — Python потеснил Java, заняв первое место в индексе популярности языков программирования по версии TIOBE.

Тем не менее неожиданностью это ни для кого не стало, ведь за последние годы Пайтон набрал популярность и стал чуть ли не самым универсальным языком программирования. По-прежнему Python наиболее востребован в Data Science и бэкенд-разработке, но также он подходит для геймдева, создания десктопных и мобильных приложений.

Как же ситуация изменилась в ноябре? Можно заметить, что PHP вылетел из десятки лучших, уступив место языку R и Swift. Когда-то PHP позиционировался как главный язык для бэкенда, но сейчас он столкнулся с сильной конкуренцией в данной области: Java (Spring), JavaScript (Node.js), Python (Django). Это не значит, что язык мёртв, но эксперты считают, что следует ожидать дальнейшего спада.

Другие интересные изменения в языках программирования, которые могут перекочевать в таком составе в 2022 год:

  • По сравнению с прошлым годом, Swift поднялся с 13 на 10 позицию
  • Язык Ассемблера — с 12 на 8
  • Fortran — с 32 на 17
  • Напротив, язык R упал с 9 на 11 место
  • Perl — с 14 на 18
  • Go — с 16 на 19

GitHub

Самый популярный сервис для хостинга IT-проектов недавно опубликовал сводный отчёт Octoverse, в котором представлены данные по разным направлениям разработок. Вся статистика сформирована на основе проектов и пользователей GitHub.

За 2021 год аудитория веб-сервиса выросла на 17 млн, в том числе и среди российских разработчиков, которых стало на 25% больше (с 1,5 млн пользователей в 2020 до 2 млн в этом году).

Но самое интересное — это изменение популярности языков, которыми пользуются разработчики.

Неизменным лидером в течение уже нескольких лет на GitHub остаётся JavaScript. Python ещё в 2019 году обошёл Java и удерживает позицию. Java на третьем месте.

Из любопытных изменений:

  • TypeScript в 2020 году стремительно взлетел на 4 место, и пока что сохраняет его за собой.
  • В этом году Shell поднялся с 9 места на 8.
  • А вот язык Си, напротив, опустился с 8 на 9 место.

IEEE

Институт инженеров электротехники и электроники обновил свой рейтинг, который определил потенциально популярные языки программирования в 2022 году.

Здесь также в лидерах Python, при этом здесь это уже четвёртая победа Питона подряд. В целом, первая пятёрка идентична прошлогодней: Java, C, C++ и JavaScript сохраняют свои места в топе.

В 2020 году, на фоне разгоревшейся пандемии, когда властям потребовалось обновление старых систем, в рейтинг неожиданно ворвался COBOL, сразу заняв почётное 7-е место. Однако в третьем квартале 2021 года язык скатился на 45 место.

C# показывает хорошие результаты: язык поднялся с 23 на 6 место. Эксперты связывают такой стремительный рост с релизом девятой версии C# и выходом Windows 11.

Всего в рейтинге IEEE представлено 55 языков. Данные собираются из популярных площадок для программистов, среди которых стоит выделить StackOverflow, Reddit, Google Search, а также уже упомянутый GitHub.

Популярные языки программирования 2022

Исходя из приведённых рейтингов, шестёрка самых популярных языков в 2022 году выглядит следующим образом:

  1. PythonПосле публикации отчёта TIOBE произошла настоящая революция. Пайтон наверняка надолго закрепится на первом месте как язык для Data Science, бэкенд-разработки и лёгкого вхождения в программирование.
  2. Java
    И пусть Python почивает на лаврах, Java всё ещё удерживает почётное второе. За этим языком сложный бэкенд, Android-разработка, десктоп и Big Data.
  3. C
    Си очень быстр, поскольку выполняется, по сути, на уровне процессора. На его основе пишутся операционные системы и драйверы. Также C является родителем C++, C#, Java, Objective C, Perl и других языков.
  4. C#
    С основным языком разработки Microsoft .NET Framework ничего не случится, пока живёт сам Microsoft и обновляется Windows. Также C# очень востребован в геймдеве: например, именно на нём работает движок Unity.
  5. C++
    По скорости C++ уступает лишь языку C и является №1 для разработчиков игр. C++ также активно используется в машинном обучении, в том числе в создании таких MO-библиотек, как TensorFlow.
  6. JavaScript
    Неизменный лидер фронтенда и любимчик пользователей GitHub. В ближайшее время в отношении этого языка ничего не изменится.

Пишем десктоп-приложение на Python с помощью Tkinter

Знакомимся с библиотекой Tkinter — пишем на Python кросс-платформенный калькулятор, который рассчитывает вес человека.

Иллюстрация: Merry Mary для Skillbox Media

Антон Яценко

Антон Яценко
Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.

Десктопные приложения пишут на разных языках программирования: C++, C#, C, Python и других. Начинающим разработчикам проще всего использовать Python и его библиотеки для работы над графическими интерфейсами.

Одна из таких библиотек — Tkinter. Она входит в стандартный пакет Python и позволяет создавать приложения для Windows, mac OS и Linux. Давайте разберёмся, как устроена эта библиотека, и напишем десктопный калькулятор, помогающий рассчитать вес человека.

Что такое GUI и как с ним работать в Python

GUI (Graphical User Interface) — это графический интерфейс пользователя, оболочка программы, с которой мы взаимодействуем с помощью клавиатуры и мыши. На современных операционных системах почти все программы работают с графическим интерфейсом, и мы каждый день сталкиваемся с GUI: читаем статьи в браузере, набираем текст в редакторе или играем в игры.

Противоположность графическому интерфейсу — командная строка, позволяющая управлять приложением с помощью текстовых команд. Такой интерфейс реализован в терминале macOS и командной строке Windows.

Для работы с GUI в Python есть четыре библиотеки:

Мы выбрали Tkinter, потому что она не требует дополнительной установки и позволяет быстро создавать приложения с простым графическим интерфейсом.

Знакомимся с Tkinter

Tkinter — это удобный интерфейс для работы со средствами Tk. Приложения, созданные на основе этой библиотеки, кросс-платформенные, то есть могут запускаться на разных операционных системах.

Схематично работу с Tkinter можно представить в виде четырёх шагов:

Что здесь происходит:

  • Мы подключаем библиотеку Tkinter с помощью директивы import.
  • Создаём главное окно приложения, в котором будут размещаться все графические элементы.
  • Добавляем виджеты — визуальные элементы, выполняющие определённые действия.
  • Создаём главный цикл событий — он включает в себя все события, происходящие при взаимодействии пользователя с интерфейсом.

Ключевые объекты в работе с Tkinter — виджеты. Это аналоги тегов из HTML, которые позволяют создавать интерактивные и неинтерактивные элементы, например надписи или кнопки. Всего их 18, но чаще всего используют следующие:

  • Button — кнопки;
  • Canvas — «холст», на котором рисуют графические фигуры;
  • Entry — виджет для создания полей ввода;
  • Label — контейнер для размещения текста или изображения;
  • Menu — виджет для создания пунктов меню.

Понять работу с виджетами легче всего на практике. Но прежде чем к ней приступить, обсудим идею нашего первого десктопного приложения.

Создаём калькулятор для расчёта индекса массы тела

Мы напишем калькулятор индекса массы тела. ИМТ — это важный медицинский показатель, который позволяет оценить, есть ли у человека избыточный вес или ожирение. Он рассчитывается по следующей формуле: ​​

ИМТ = вес (в кг) / рост 2 (в метрах)

Результаты расчётов оценивают с помощью специальной таблицы. У врачей она имеет много градаций, мы же воспользуемся упрощённой версией:

Шаг 1

Запускаем Python и импортируем Tkinter

Писать код на Python лучше всего в специальной IDE, например в PyCharm или Visual Studio Code. Они подсвечивают синтаксис и предлагают продолжение кода — это сильно упрощает работу программиста. Весь код из этой статьи мы писали в Visual Studio Code.

Библиотека Tkinter предустановлена в Python. Поэтому её нужно только импортировать:

Шаг 2

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

Прежде чем писать код, необходимо ответить на несколько вопросов:

  • Какие данные мы хотим получить от пользователя и в каком виде?
  • Какое событие будет запускать расчёт ИМТ: нажатие кнопки, получение приложением всех необходимых данных или что-то другое?
  • Как будем показывать результат?

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

Схематично графический интерфейс нашего калькулятора будет выглядеть так:

Теперь попробуем реализовать интерфейс и работу калькулятора с помощью Python и Tkinter.

Шаг 3

Создаём основное окно и указываем название приложения

После импорта библиотеки в Python загрузим её методы:

Мы не указали размер окна, поэтому название приложения не помещается в него полностью. Исправим это с помощью метода geometry:

Шаг 4

Создаём виджет Frame для контроля за расположением элементов

В окне приложения необходимо разместить несколько элементов с нашего эскиза: два поля ввода информации с подписями и одну кнопку. Важно, чтобы поля не накладывались друг на друга и не уходили за пределы окна. В Tkinter для этого есть несколько методов:

  • pack — используется, когда мы работаем с контейнерами для элементов. Позволяет позиционировать кнопки, надписи или другие элементы внутри контейнеров.
  • place — позволяет позиционировать элементы, указывая точные координаты.
  • grid — размещает элементы по ячейкам условной сетки, разделяющей окно приложения.

Мы воспользуемся комбинацией методов pack и grid. Для начала создадим виджет Frame для размещения надписей, полей ввода и кнопок. Подробное описание работы виджета есть в документации. Мы же используем только два свойства: padx и pady.

Обозначим отступы по вертикали и горизонтали в 10 пикселей для элементов, которые будут расположены внутри Frame:

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

Добавим вторую надпись о весе аналогичным образом, но при позиционировании в grid укажем следующую, четвёртую строку:

Теперь добавим поля для ввода пользовательской информации, используя виджет Entry:

Всё получилось. Остаётся по аналогии добавить поле ввода веса:

Теперь добавим кнопку, которая будет запускать расчёт ИМТ. Сделаем это с помощью виджета Button:

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

Шаг 6

Получаем информацию из виджетов Entry и рассчитываем индекс массы тела

Напишем простую функцию и разберём её построчно:

Всё работает. Функция получает данные из полей ввода и рассчитывает индекс массы тела, показывая результат на экране.

Приведём код полностью без комментариев

from tkinter import * from tkinter import messagebox def calculate_bmi(): kg = int(weight_tf.get()) m = int(height_tf.get())/100 bmi = kg/(m*m) bmi = round(bmi, 1) if bmi < 18.5: messagebox.showinfo('bmi-pythonguides', f'ИМТ = соответствует недостаточному весу') elif (bmi > 18.5) and (bmi < 24.9): messagebox.showinfo('bmi-pythonguides', f'ИМТ = соответствует нормальному весу') elif (bmi > 24.9) and (bmi < 29.9): messagebox.showinfo('bmi-pythonguides', f'ИМТ = соответствует избыточному весу') else: messagebox.showinfo('bmi-pythonguides', f'ИМТ = соответствует ожирению') window = Tk() window.title('Калькулятор индекса массы тела (ИМТ)') window.geometry('400x300') frame = Frame( window, padx=10, pady=10 ) frame.pack(expand=True) height_lb = Label( frame, text="Введите свой рост (в см) " ) height_lb.grid(row=3, column=1) weight_lb = Label( frame, text="Введите свой вес (в кг) ", ) weight_lb.grid(row=4, column=1) height_tf = Entry( frame, ) height_tf.grid(row=3, column=2, pady=5) weight_tf = Entry( frame, ) weight_tf.grid(row=4, column=2, pady=5) cal_btn = Button( frame, text='Рассчитать ИМТ', command=calculate_bmi ) cal_btn.grid(row=5, column=2) window.mainloop()

Что дальше?

Узнать о возможностях Tkinter и особенностях работы с виджетами можно в официальной документации. А если хотите найти больше реальных примеров для практики, советуем две книги:

  • Python GUI Programming with Tkinter. Develop responsive and powerful GUI applications with Tkinter, Алан Мур.
  • Tkinter GUI Programming by Example, Дэвид Лав.

Больше интересного про код в нашем телеграм-канале. Подписывайтесь!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *