На чем писать приложение для windows
Перейти к содержимому

На чем писать приложение для windows

  • автор:

Язык С#: где используют, что пишут, как появился и чем хорош

Изучаем под микроскопом популярный язык от Microsoft, который называется совсем не «Си решётка».

Иллюстрация: Polina Vari для Skillbox Media

Максим Сафронов

Максим Сафронов

Автор, редактор, IT-журналист. Рассказывает о новых технологиях, цифровых профессиях и полезных инструментах для разработчиков. Любит играть на электрогитаре и программировать на Swift.

C# (читается как «Си шарп») — это язык программирования от компании Microsoft. Изначально его создавали для проектов под Windows, но теперь это по-настоящему универсальный язык: на нём пишут игры, десктопные приложения, веб-сервисы, нейросети и даже графику для метавселенных.

Один из ведущих разработчиков языка — легендарный Андерс Хейлсберг, который до C# успел сделать Turbo Pascal и Delphi, а после — TypeScript (майкрософтовский JS на стероидах).

Если коротко, этот язык:

  • Кросс-платформенный — запускается почти на любом железе.
  • Объектно-ориентированный — состоит из классов и объектов, которые умеют передавать свойства друг другу.
  • Постоянно развивается — для тех, кто любит учиться.
  • Дружит с экосистемой Windows — для этого и был написан.

Есть две основных версии, зачем Microsoft стала делать свой язык программирования.

Официальная: чтобы упростить разработку приложений под Windows. А то языки в то время были сложные и плохо адаптировались под разные Windows-компьютеры.

Правдоподобная: чтобы заменить Java, на который у Microsoft не было лицензии. В итоге получился почти такой же язык, но с интеграцией под Windows. Как и Java, он основан на языке C и легко запускается на любом устройстве. А название «Си» с решёткой как бы говорит: «У нас тут не копия Java, а новый язык в линейке „Си“».

Кстати, всю эту историю о борьбе Microsoft за Java и причинах появления C# мы рассказывали в статье о Java Virtual Machine — в разделе о конкурентах JVM.

Привет, C#: пишем первую программу

Запуск любой программы на C# начинается с главной функции — Main(). В ней прописано, как программа будет себя вести дальше — что за чем пойдёт, что за что отвечает и так далее. Выполняется она из главного класса — назовём его HelloWorld. Если перевести это на программистский, получится как-то так:

В теории на Unity можно делать не только игры, но и любые проекты, где нужна 3D-графика, — метавселенные, программы для VR-устройств, дизайн интерьеров и так далее. А пишут под Unity в основном на языке C# — отличный повод выучить именно его, если видите себя в геймдеве или виртуальной реальности.

Программы для Windows

Поскольку C# — это язык от Microsoft, на нём удобно писать настольные приложения для Windows. Для этого разработчики придумали специальную платформу — называется .NET Framework. Она умеет переводить код из понятного человеку в понятный процессору — то есть компилировать.

Преимущество платформы в том, что она может исполнить любую C#-команду на любом процессоре — а на Windows работает не меньше тысячи разных моделей. Если бы не .NET, пришлось бы компилировать код под каждое железо отдельно. А ещё .NET поддерживает много плагинов, библиотек и шаблонов для наглядной разработки интерфейсов — это фактически целый мир и экосистема для программиста на Windows.

Кросс-платформенные приложения

С помощью фреймворка Mono один и тот же С#-код можно запускать в разных десктопных системах — например, в Linux или macOS. А если код надо запустить на мобильных платформах, используют версию Mono для смартфонов — Xamarin.

Допустим, мы пишем приложение для смартфона — мобильные карты. Они должны одинаково работать и на айфоне, и на Android-устройстве, но выглядеть нативно — то есть по дизайн-коду своих платформ. Вот как эту идею можно воплотить на Xamarin:

  • Проектируем дизайн приложения в визуальном редакторе.
  • Привязываем к нему логику на C#.
  • Всё это дело подхватывает Xamarin и переводит в родные для iOS и Android интерфейсы.
  • На выходе получаем целых два приложения — для Android и iPhone. А программировали мы всего один раз — удобно вышло.

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

Серверная логика веб-сайтов

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

В чистом виде сервер — это просто машина, и, чтобы она заработала, нужен специальный софт. Нередко его пишут на языках PHP и Java, но если вам нужен софт для сервера на Windows, эксперты рекомендуют именно C#. Он хорошо работает с фреймворками от Microsoft и быстро запускается на Windows-машинах.

Нейросети

В любое приложение на C# можно встраивать алгоритмы машинного обучения — например, компьютерное зрение, распознавание лиц или музыкальные рекомендации в плеере. Фишка в том, что для этого не надо глубоко разбираться в математике или Data Science. Достаточно подключить специальную библиотеку от Microsoft — ML.NET, — и она возьмёт все внутренности на себя.

А ещё с ML.NET работает кросс-платформенность — то есть алгоритмы в теории можно запускать вообще где угодно. Например, на банкомате, если надо сделать авторизацию по лицу.

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

Независимость от железа. Программисту не надо адаптировать программу под разные платформы и системы — за него это делает виртуальная машина, вшитая в .NET Framework. В итоге один и тот же код можно запускать на любых устройствах — смартфонах, компьютерах, серверах, банкоматах и даже умных часах.

Отличная совместимость с Windows. Не зря же язык разработали именно в Microsoft. Так же как Swift идеально подходит для программирования под экосистему Apple, C# прекрасно вписывается в экосистему Windows.

Управление памятью. Чтобы программа работала стабильно, её надо иногда чистить от ненужных объектов, ссылок, кэша и прочего мусора. В C# это происходит автоматически — разработчику не надо следить за расходом памяти, бороться с её утечками или удалять мёртвые куски кода.

Строгая типизация. Когда вы объявляете переменную в C#, надо сначала указать, что в ней лежит — строка, число или массив. Так разрабатывать чуть дольше, зато ваш код работает предсказуемо — числа взаимодействуют с числами, строки со строками и так далее. В языках со слабой типизацией свободы и драйва больше, но есть шанс пропустить ошибку, которая всплывёт в готовой программе.

Большое сообщество. На С# пишут более миллиона программистов по всему миру. В соцсетях полно чатов и сообществ «шарпистов», где можно задать вопрос, обсудить сложную тему или найти готовое решение. В теории можно даже найти ментора, который поделится знаниями и поможет быстрее освоить язык.

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

На российском hh.ru мы нашли около 4 тысяч вакансий для разработчиков на C#. Больше всего предложений в Москве и Петербурге — это неудивительно, ведь там сосредоточена львиная доля энтерпрайза, где C# является стандартом. В основном компании ищут программистов для разработки бэкенда и десктопных программ, но есть варианты и в геймдеве, и в больших данных.

Интересно, что стажёры, которые только пришли в профессию, могут получать в районе 40 тысяч рублей в месяц. А если у новичка хорошая теоретическая база или уже есть какой-то опыт разработки, можно сразу пробоваться на Junior-позиции — там зарплаты уже около 64 тысяч рублей. Среди крупных компаний, которые готовы брать джунов-шарпистов, — Сбербанк, «МТС», Ozon и Kaspersky.

Более опытным Middle-разработчикам компании готовы платить в районе 120–150 тысяч рублей, а сеньорам и тимлидам — от 234 тысяч. Но такие программисты должны не только хорошо кодить, но и кое-что понимать в управлении командой и проектом.

Подходит ли С# новичку?

Если вы ищете язык для старта в программировании, обязательно рассмотрите С# — он популярен, широко распространён и официально поддерживается Microsoft. Его используют тысячи компаний, поэтому новичок может довольно быстро получить оффер. Особенно понравится язык тем, кто хочет делать 3D-графику на Unity или писать программы для Windows.

Погружаемся в Windows 10 Mobile. Как писать и отлаживать программы для новой ОС

Есть мнение, что в реальной жизни смартфоны с ОС от Microsoft встречаются так же часто, как люди с отчеством «Артёмович». Странная (мягко говоря) политика «Корпорации зла» в отношении седьмого и восьмого семейств мобильной операционной системы отвратила множество пользователей от экспериментов с «окошками» для смартфонов, и сейчас корпорация всерьез взялась за исправление своего имиджа в этой пользовательской нише. Как подпольный фанат Microsoft я надеюсь, что у них все получится — «десятка» шагает по планете, ее главный козырь — одно ядро для всех платформ, и поэтому у нее есть все шансы перетянуть на себя хорошую часть мобильного рынка. А как программист я с удовольствием сделаю для тебя вводную статью по разработке под эту мобильную ось, чтобы ты всегда был готов к росту ее популярности :).

Обзор архитектуры

Благодаря общему ядру и системе выполнения приложений UWP однажды написанное приложение будет работать на всех девайсах под управлением Windows 10. В этот диапазон входят:

  • настольные компьютеры;
  • серверные системы — ОС Windows Server 2016;
  • ноутбуки — MS Surface Book;
  • планшеты — MS Surface Pro;
  • смартфоны — Lumia;
  • игровые приставки — Xbox One;
  • очки дополненной реальности — MS HoloLens;
  • настенные планшеты — MS Surface Hub;
  • умные часы — MS Band 2.

Список внушительный. Кроме того, UWP не ограничивается только исполнением прикладных программ, также она на ядерном уровне поддерживает работу драйверов. Это позволяет создавать драйверы, которые функционируют на различных устройствах, при условии, что конкретный компонент, для которого предназначен данный драйвер, один и тот же.

UWP поддерживает драйверы как уровня ядра, так и пользовательского уровня. Подсистема включает интерфейсы драйверов устройств (Device Driver Interface — DDI), из числа которых драйвер для UWP может использовать.

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

Инструменты разработчика

Для написания, отладки, развертывания и тестирования приложений под Windows 10 Mobile тебе понадобится Visual Studio 2015 (кто бы сомневался). Этим летом вышел третий апдейт. Категорически рекомендую! Основной его багфикс — это уменьшенное потребление памяти по сравнению со вторым апдейтом.

Также тебе понадобится Windows 10 Anniversary Update SDK: он включает все необходимые инструменты для разработки приложений под весь парк устройств, работающих на Windows 10. Если же используется VS 2015 с третьим обновлением, тогда в нее уже входит новейший SDK.

Одно из главных новшеств — это чернила Windows (Windows Ink). С помощью этого API можно двумя строчками кода добавить поддержку пера. Для этого существуют два объекта управления: InkCanvas и InkToolbar.

Новый Cortana API упрощает реализацию управления голосом. Компонент Cortana Actions в новом API позволяет создавать новые фразы/выражения.

Биометрическая аутентификация Windows Hello теперь стала доступна веб-разработчикам в браузере Edge.

Средство для моделирования пользовательских интерфейсов Blend for Visual Studio 2015 предоставляет расширенные возможности построения интерфейса по сравнению с VS. С его помощью на языке XAML можно создавать макеты всех поддерживаемых приложений: прикладных, веб, универсальных, мобильных и так далее. Также он содержит конструкторы для дополнительных задач, среди них создание анимации и управление поведением элементов.

Способы создания приложений для Windows 10 Mobile

Основной способ создания приложений для смартфонов с Windows 10 Mobile — это разработка универсальных (UWP) приложений (свиток Visual C# → Windows → Universal мастеры создания проекта).

Однако он не единственный. Как ты знаешь, в Visual Studio 2015 встроен Xamarin, с его помощью тоже можно создавать приложения для Windows 10 Mobile, одновременно для Android и iOS, меняя интерфейс и оставляя программную логику на C# (Visual C# → Cross-Platform).

Кроме языка Visual C#, равнозначно может быть выбран Visual Basic или Visual C++. VS 2015 позволяет создавать универсальные приложения с помощью JavaScript (JavaScript → Windows → Универсальные приложения). Их также можно развернуть на устройстве с Windows 10 Mobile.

Инструменты для работы с унаследованными проектами

За долгую историю операционной системы Windows для нее было создано колоссальное количество самых разных приложений. С выходом Windows 8 и WinRT (а позже Windows 10 и UWP) старые классические приложения остались в прошлом, поскольку только в настольных Win 8 и Win 10 поддерживаются классические Win32-, COM-, .NET-приложения. От этого в Microsoft стало грустно. Но ребята смекнули, что могут разработать конвертер, который будет преобразовывать старые приложения для новой продвинутой UWP-подсистемы. Из этого родился Desktop App Converter.

Скачать его можно отсюда. Текущее состояние продукта — предварительная версия. Уже сейчас он позволяет преобразовывать классические приложения, написанные для Win32 и .NET 4.6.1, в приложения для платформы UWP.

Преобразованное приложение сохраняет функциональность предка плюс обретает возможности UWP-приложений: удобную установку, обновление, удаление. Также оно получает другие средства современных Windows-программ: push-уведомления, живые плитки, способность выполняться в качестве фоновой задачи, широкий диапазон контрактов. Одна из самых привлекательных возможностей — это продажа унаследованных приложений в Windows Store.

Desktop App Converter представляет собой приложение с интерфейсом командной строки. На входе оно получает: путь к дистрибутиву приложения, которое планируется преобразовать, путь к файлу-результату и путь к файлу — образу системы. Последний будет использован для чистой установки конвертируемой программы.

На выходе Desktop App Converter выдает каталог со всем установленным при инсталляции стаффом и два файла: манифест и файл регистрации приложения. После этого с помощью другой тулзы командной строки из образованного контента создается установочный файл UWP-приложения AppX. Затем это приложение можно установить в операционку и пользоваться им, как любым другим универсальным приложением, в том числе на Windows 10 Mobile.

После этого парни из Microsoft подумали: для iOS есть множество крутых мобильных приложений, было бы неплохо дать разработчикам возможность запилить их под нашу мобильную ось. Так появился проект с открытым исходным кодом Windows Bridge for iOS.

Преобразование Xcode-проекта выполняется в два шага. Сначала надо добавить подсветку синтаксиса языка Objective-C в Visual Studio: установить расширение objc-syntax-highlighting.vsix из папки winobjc\bin. Затем с помощью утилиты командной строки vsimporter.exe надо преобразовать проект на Xcode в проект на VS. После этого полученный sln-файл можно открыть в студии, где синтаксис Objective-C будет подсвечен. Можешь построить и запустить приложение, оно будет выполняться так же, как все другие Windows-программы.

VS с подсветкой синтаксиса Objective-C

Другие статьи в выпуске:

Xakep #213. FUCK UAC

  • Содержание выпуска
  • Подписка на «Хакер» -60%

Разрази меня гром, как это удивительно — видеть в Visual Studio корректно подсвеченный код Objective-C!

Для компиляции кода Obj-C используется свободный компилятор Clang. Поскольку на выходе получается стандартное UWP-приложение, его можно запустить на мобильном устройстве в среде Windows 10 Mobile. В одной программе может быть код на C++ и на Obj-C.

Вывод OpenGL на эмуляторе смартфона Windows 10 Mobile

Если у тебя есть проект для прошлой версии Windows Phone, то есть 8.1 (или 8.0), то, когда ты его откроешь в VS 2015, студия автоматически обновит проект, чтобы он соответствовал требованиям универсального приложения Windows (UWP). Будет преобразована не только разметка пользовательского интерфейса на XAML, но и вместе с ней программная логика на JS/C++/C#/VB. Если в коде были вызовы подсистемы WinRT, тогда они будут преобразованы в вызовы UWP.

Есть еще распространенный тип приложений — игры. iOS и Android визуализируют посредством низкоуровневого интерфейса OpenGL. С другой стороны, на Windows 10 Mobile для вывода изображения в играх используется DirectX 11. Получается несовместимость. Но есть решение — открытый проект ANGLE. ANGLE (Almost Native Graphics Layer Engine) — движок почти нативного графического слоя — позволяет пользователям Windows бесшовно запускать OpenGL ES приложения на аппаратуре, работающей с DirectX 11. Это достигается путем преобразования вызовов с OpenGL ES API на DirectX 11 API. ANGLE полностью поддерживает следующие три типа приложений:

  • универсальные приложения для Windows 10 (Universal Windows apps);
  • приложения для Windows 8.1 и Windows Phone 8.1;
  • классические приложения для рабочего стола Windows (Windows desktop applications).

Более подробно вопрос рассматривается в моей книге «Волшебство момента вращения» (опять ты книгу свою пиаришь! Ну лаадно, заслужил. — Прим. ред.).

Подключение смартфона

По умолчанию устройство подключается в режиме «Только зарядка», поэтому в параметрах надо переключить на режим передачи данных. Также этот вопрос появится в момент подключения девайса к ПК. В отличие от седьмой версии мобильной системы сейчас для передачи данных не нужна посредническая программа Zune, смартфон появляется в системе как дополнительное устройство, и навигация вместе с передачей данных доступна с помощью проводника. Кроме того, в параметрах смартфона в меню «Обновление и безопасность» в подменю «Для разработчика» надо установить «Режим разработчика», который позволяет запускать на смартфоне любые приложения, а не только из Windows Store.

Режим разработчика

В Windows 10 есть утилита «Диспетчер телефонов». С ее помощью можно посмотреть состояние устройства: степень зарядки аккумулятора, сколько места занимают определенные коллекции данных (фото, видео), импортировать фото/видео и так далее.

Диспетчер телефонов

Если сейчас из студии попытаться запустить приложение, то тебя ждет неминуемая трабла. Дело в том, что требуется сервис IpOverUsbSrc. От имени администратора открой консоль и введи туда команду net start IpOverUsbSvc .

Консоль с выполненной командой

Сервис запустится, и ты получишь возможность развертывать приложения на своем смартфоне прямо из студии по USB.

Реальный пример

Теперь, когда у нас есть реальный девайс, можно поиграть с разными датчиками, с которыми было или невозможно, или затруднительно работать на симуляторе. Однако замечу, что для WP и/или WM создан крутой симулятор, надо только оперативы побольше, чтобы он шустро бегал. Между тем с реальным устройством и реальными данными иметь дело удобнее и лучше.

По сравнению с другими гаджетами смартфоны от Microsoft для меня интересны благодаря двум компонентам: это большой набор датчиков вместе с соответствующими API и либа Imaging SDK, с помощью которой можно быстро делать впечатляющие эффекты к изображениям и видео. При обработке изображений используются возможности GPU, поэтому процессинг видеопотока происходит на лету. Как первый, так и второй компонент унаследованы от Nokia.

Датчики

API для работы с датчиками раньше носил имя SensorCore, но с выходом Windows 10 был помечен как устаревший и теперь, после обновления, входит в пространство имен Windows.Devices.Sensors платформы UWP. Датчики используются для отслеживания физической активности и перемещений пользователя смартфона.

Всего в Windows 10 Mobile поддерживается 12 сенсоров:

  • акселерометр;
  • датчик действий;
  • высотомер;
  • барометр;
  • компас;
  • гигрометр;
  • инклинометр;
  • датчик света;
  • датчик положения в пространстве;
  • шагомер;
  • бесконтактный датчик;
  • датчик простого положения в пространстве.

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

Описание работы с каждым датчиком можно выделить в отдельный разговор, поэтому сегодня мы рассмотрим только один сенсор — датчик действия. Во включенном состоянии он способен определить действия, которые выполняет пользователь. В частности, этот датчик используется в фитнес-приложениях, он позволяет контролировать, чем занимается юзер: стоит, идет или едет на автобусе вместо того, чтобы пробежать это расстояние. Yurembo на себе протестировал гаджет: действия определяются без сбоев.

Сенсор активности так же, как и другие датчики, работает в фоновом потоке и сохраняет данные за прошедшие десять дней активности или бездействия :). Его можно отключить в выпадающем сверху экрана меню (вызывается проведением пальца сверху вниз), деактивировав значок «Местонахождение».

Выключение датчика действия

Чтобы проверить работу датчика, создай новое UWP-приложение, в качестве заготовки выбери Blank App. Она одна имеется в числе визуальных приложений, другие можешь скачать, прямо не выходя из мастера создания проекта: «В сети → Шаблоны → Visual C#».

Придай форме альбомный вид и помести на нее шесть компонентов TextBox и кнопку (см. рис. ниже).

Макет

Имена первых трех текстовых меток не имеют значения, а те, куда будут выводиться данные, назовем (сверху вниз): valueActivity, valueConf, valueTimeStamp. Создай обработчик нажатия кнопки и перейди в C#-код. Добавим два пространства имен:

using Windows.Devices.Enumeration; using Windows.Devices.Sensors;

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

Во втором пространстве имен находятся классы всех поддерживаемых датчиков.

Далее нам надо создать объект GUID устройства. В класс MainPage добавь такую строчку:

Guid ActivitySensorClassId = new Guid("9D9E0118-1807-4F2E-96E4-2CE57142E196");

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

В обработчике события нажатия кнопки первым делом нам надо получить информацию о датчике активности, выяснить, присутствует ли он в данном смартфоне:

var deviceAccessInfo = DeviceAccessInformation.CreateFromDeviceClassId(ActivitySensorClassId);

Так мы инициализируем объект класса DeviceAccessInformation на основе идентификатора класса устройства, как мы обсуждали выше, и сохраняем в переменную deviceAccessInfo.

Далее проверяем статус доступа к устройству:

if (deviceAccessInfo.CurrentStatus == DeviceAccessStatus.Allowed) 

При наилучшем раскладе статус имеет значение Allowed (на что мы, собственно, надеемся, поскольку иначе дальнейшее выполнение бессмысленно), то есть доступ разрешен. Статус устройства может иметь еще три значения:

  • Unspecified — доступ не определен;
  • DeniedByUser — запрещено пользователем;
  • DeniedBySystem — запрещено системой.

В случае успеха мы создаем объект класса ActivitySensor, который представляет датчик активности. Делаем это через асинхронный вызов метода GetDefaultAsync класса:

var activitySensor = await ActivitySensor.GetDefaultAsync();

Проверяем значение переменной activitySensor на равенство null и в случае отрицательного результата получаем текущие показания счетчика, сохраняя их в переменную класса ActivitySensorReading, которую впоследствии можно распарсить:

ActivitySensorReading reading = await activitySensor.GetCurrentReadingAsync();

Проверяем эту переменную, чтобы она не была равна null, извлекаем из нее значения и помещаем их в соответствующие текстовые поля:

if (reading != null)

Датчик способен определить семь активностей плюс одно неопределенное:

  • Idle — девайс находится в состоянии бездействия, лежит на столе;
  • Stationary — в неподвижном состоянии;
  • Fidgeting — девайс фиксирует слабое движение;
  • Walking — во время пешей ходьбы, то есть одна нога всегда соприкасается с поверхностью;
  • Running — состояние бега, то есть состояние полета, когда обе ноги во время шага находятся в воздухе;
  • InVehicle — поездка на наземном транспорте (автомобиле, автобусе, трамвае. );
  • Biking — езда на велосипеде.

Существует две степени доверенности (Confidence): Low — низкая и High — высокая.

Timestamp — временная отметка, когда были получены данные. Значение надо привести к строковому виду. В данном случае метод ToString принимает параметр ?u? , то есть преобразует объект DateTimeOffset в формат yyyy-MM-dd HH:mm:ssZ .

Для получения истории используется метод GetSystemHistoryAsync класса ActivitySensor. В качестве параметра метод получает временную метку, момент, за который надо получить историю, или два параметра: метку плюс продолжительность, тогда возвращаются данные за указанный период.

Объект класса ActivitySensor имеет событие ReadingChanged, которое возникает всякий раз, когда датчик посылает данные об изменении действий, выполняемых юзером.

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

Запуск

Если сейчас запустить приложение, то внезапно окажется, что оно не работает. Отладка показывает, что во время первой проверки состояние доступа к девайсу не определено (Unspecified). Чтобы сообщить Windows 10 Mobile, что твое приложение хочет получить доступ к датчику активности, тебе надо написать об этом в манифесте. Открой файл Package.appxmanifest в XML-редакторе, пролистай содержимое до области, ограниченной тегами , и добавь туда строчку

После этого можешь развертывать приложение, все будет работать, как надо.

Скриншот работающего на смарте приложения

Итоги

Сегодня мы много говорили о технологиях Microsoft как в аппаратном, так и в софтверном плане. Обсудили используемые для разработки софта инструменты. Затем мы рассмотрели способы создания приложений под Windows 10 Mobile. В частности, мы обратили пристальное внимание на импортирование унаследованных проектов, другими словами — возможность создания приложений для Windows 10 на основе программ из других операционных систем. Портирование классических Windows-приложений под платформу UWP вроде как вещь сама собой разумеющаяся. Но вот создание UWP-программ на основе iOS-приложений с Obj-C-кодом — это впечатляет. А главное, что эти инструменты свободные и открытые!

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

Многие сенсоры унаследованы еще от смартфонов с операционной системой Windows Phone 7.5, и работу с ними мы рассматривали еще в те давние времена, поднимай подшивку «Хакера». Другие датчики весьма новые, и нам будет интересно разобраться с их использованием и получением от них профита. Но это планы на будущее.

А сегодня мне остается пожелать тебе веселой не пасмурной осени и удачи во всех делах!

Microsoft loves Open Source

Сайт github.com каждый год подводит итог: какая компания самая активная в плане открытых исходников, другими словами — кто сделал больше всех вкладов в открытые проекты. По итогам прошедшего года такой компанией стала Microsoft. Достаточно взглянуть на страницу корпорации на сайте GitHub.

Avatar photo

Юрий Язев

Широко известен под псевдонимом yurembo. Программист, разработчик видеоигр, независимый исследователь. Старый автор журнала «Хакер».

Windows: Как создать программу

Cоздать программу самому? Это очень просто! Не верите? Давайте сделаем небольшую программу, которая станет вашей отправной точкой в мир программирования.

Многие из нас постоянно работают с программами, сложными и попроще, но многие не задумываются, а что-же на самом деле есть программа. Если описать коротко, то программа - это набор инструкций, которые отдаются компьютеру в соответствии с логикой, которую в программу заложил программист.

Не буду рассуждать на тему зачем может потребоваться писать самостоятельно программу, у каждого свои причины. Оговорюсь сразу, что в данной статье будет использоваться язык программирования C# и среда разработки Microsoft Visual Studio, у которой имеется бесплатная редакция, возможностей которой хватит "за глаза" любому.

Оглавление к статье

  1. Этапы создания программы
  2. Установка среды разработки
  3. Создание программы

1 . Этапы создания программы

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

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

  1. Определение цели, какую задачу ваша программа помочь вам решить
  2. Разработка алгоритма работы программы.
  3. Дизайн пользовательского интерфейса.
  4. Написание логики программы. На этом этапе вдыхается жизнь в вашу програму. Это и есть наиболее важный этап создания программы, для успешной реализации которого понадобится много знаний и умений.
    Где взять знания и умения? Книги, профильные сайты, курсы. Сейчас в интернете можно найти бесчисленное множество обучающих материалов, посвященных данной теме.
    Отдельно хочется упомянуть ресурсы для освоения C#:
    • бесплатную книгу Fundamentals of Computer Programming with C#
    • сайт METANIT.COM
    • Документация по C# на сайте Microsoft

2 . Установка среды разработки

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

Да, в блокноте вполне реально создать программу, но на это у вас уйдет гораздо больше времени и такими "извращениями" могут заниматься реально крутые программисты. Для остальных-же Microsoft Visual Studio - это именно тот инструмент, который будет помогать создавать новые и управлять существующими проэктами.

Из ключевых возможностей Visual Studio хочется отметить:

  • Разработка для популярных платформ Windows, Linux, MacOS
  • Веб разработка: ASP.NET, Node.js, Python, JavaScript, and TypeScript
  • Популярные языки программирования: C#, C++, Visual Basic, Python, JavaScript
  • Визуальное редактирование пользовательского интерфейса
  • IntelliSense - интеректуальный помощник при написании кода
  • Управление версиями. Интеграция с GitHub
  • Совместная разработка
  • Расширение возможностей путем установки дополнений.

Поэтому Microsoft Visual Studio - это именно то, с чего стоит начать свою карьеру программиста.

Примечание.
Ранее, когда Visual Studio не была бесплатной, как альтернативу можно было рассматривать SharpDevelop, бесплатную IDE с открытым исходным кодом, которая предоставляла функционал сходный с Visual Studio и в некоторых случаях его было достаточно для создания проэктов любой сложности. Но теперь, в виду стагнации процесса разработки SharpDevelop, и стремительного развития Visual Studio, альтернативы продукту от Microsoft просто нет.

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

3 . Создание программы

Давайте создадим программу - калькулятор. Почему-бы и нет? Изобретать велосипед - это-же так весело! 🙂 А если серъезно, то ничего зазорного в этом нет, ведь клепают-же хелловорлды во всех учебниках и не стесняются. Мы в этом плане даже чем-то лучше.

Как уже оговаривалось выше, язык программирования будет использован C#,

  1. Нажимаем кнопку Create a new project.
  2. Шаг Create new project:
    • Выбираем фильтр:
      • Язык программирования: C#
      • Платформа: Windows
      • Тип проекта: Desktop
    • Выбираем Windows Forms App (Net. Framework) - нажимаем Next
  3. Шаг Configure your project:
    Название проэкта: CalculatorApp
    Название решения: Calculator.
    Framework: Оставляем по умолчанию, на данном этапе не важно какая версия Net. Framework
  4. Нажимаем Create

Открылось главное окно Visual Studio,

Перетащите кнопку Button на форму главного окна, только что созданного проекта.

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

Настройте только что добавленную кнопку в панели свойств:

  • Свойство Text, меняем значение на Close
  • Name меняем на bnClose
  • Anchor: Bottom,Right

Добавьте обработчик события нажатия кнопки: делаем двойное нажатие на кнопке, программа автоматически создаст необходимый метод bnClose_Click. Внутри метода пишем: this.Close();

private void bnClose_Click(object sender, EventArgs e)

При нажатии кнопки Close, окно программы закроется, в след за этим завершит работу и сама программа.

Примечание
За всеми проделанными выше действиями с созданием конпки и редактирования ее свойств, лежит создание кода программы средой разработки VisualStudio.

Откойте файл Form1.Designer.cs. Как видите, все те действия, что вы делали в настройках, отображены здесь в виде кода программы:

// // bnClose // this.bnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.bnClose.Location = new System.Drawing.Point(750, 350); this.bnClose.Name = "bnClose"; this.bnClose.Size = new System.Drawing.Size(75, 23); this.bnClose.TabIndex = 0; this.bnClose.Text = "Close"; this.bnClose.UseVisualStyleBackColor = true; this.bnClose.Click += new System.EventHandler(this.bnClose_Click);

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

Примечание
Если вы поставили Visual Studio и хотите изменить язык интерфейса на другой язык, то это можно сделать в настройках программы Tools - Options - Internetional Settings. Если языка, который вам нужен нет в списке, доустановите его через Microsoft Visual Studio Installer. После этого опять откройте Tools - Options - Internetional Settings, и измените язык интерфейса.

Сделаем что-нибудь посложнее, чем просто вывод текста на экран

В большинстве учебников для начинающих программистов первая программа выводит простое сообщение "Hello world!". Мне кажется это немного тупо, так как для того, чтоб заинтересовать начинающего программиста, нужно показать нечто большее и полезное, нежели просто окно с текстом.

Для того чтоб оценить возможности языка программирования C# и .Net Framework, давайте в нашей программе реализуем возможность выполнения простейших арифметических операций. Мне кажется это будет гораздо полезней.

Итак, давайте создадим следующие элементы интерфейса программы

  • Четыре кнопки:
    • Сложение
      • Text: "+"
      • Name: bnPlus
      • Text: "-"
      • Name: bnMinus
      • Text: "*"
      • Name: bnMult
      • Text: "/"
      • Name: bnDiv
      • Оператор 1
        • Name: tbOperand1
        • Name: tbOperand2
        • Name: tbResult
        • Name: lblOperand1
        • Name: lblOperand2

        Примечание: Очень удобно использовать копирование элементов пользовательского интерфейса. Для того, чтоб это сделать, нужно выделить элементы, которые нужно скопировать и при нажатой кнопке Ctrl, потянуть мышью выделенные элементы в сторону.

        Как видите, добавлять элементы интерфейса программы весьма просто - перетягиваем их из панели инструментов (или создаем копии уже существующих) в то место окна, где должен находиться элемент, изменяем размер, свойства и положение.

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

        Высота текстового поля tbResult регулируется за счет изменения размера шрифта.

        Обратите внимание, что имя элементов назначаются автоматически и, если не давать им осмысленные имена, и при достаточно большом их количестве, очень легко потеряться в хаосе, состоящем из элементов с названиями button1, button2, button3, textBox1, textBox2, textBox3 и так далее. Сразу после создания элементов, не ленитесь, давайте им осмысленые имена - дальше, при создании обработчиков событий, имена методов будут генерироваться автоматически на основании имени элемента управления. Думаю никто не сомневается в том, что имя метода ButtonAdd_Click() гораздо более осмысленно, чем Button1Click()

        Назначим обработчики событий нажатия кнопок

        Выбираем по очереди каждую кнопку.Даблкликом создаем обработчик нажатия кнопки(Click). Если нужно добавить обработчик другого события, или выбрать уже существующий метод - следует открыть вкладку События (значок в виде молнии) и там уже выбрать необходимое событие.

        Пишем код обработчика

        private void bnAdd_Click(object sender, EventArgs e) < tbResult.Text = (float.Parse(tbOperand1.Text) + float.Parse(tbOperand2.Text)).ToString(); >private void bnSubstr_Click(object sender, EventArgs e) < tbResult.Text = (float.Parse(tbOperand1.Text) - float.Parse(tbOperand2.Text)).ToString(); >private void bnMultiply_Click(object sender, EventArgs e) < tbResult.Text = (float.Parse(tbOperand1.Text) * float.Parse(tbOperand2.Text)).ToString(); >private void bnDivide_Click(object sender, EventArgs e) < tbResult.Text = (float.Parse(tbOperand1.Text) / float.Parse(tbOperand2.Text)).ToString(); >

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

        Давайте на примере операции сложения разберем как работает наша программа.

        tbResult.Text = (float.Parse(tbOperand1.Text) + float.Parse(tbOperand2.Text)).ToString();

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

        1. float.Parse(tbOperand1.Text) - Извлекается значение свойства Text переменной tbOperand1 и передается в качестве параметра статичскому методу Parse() типа System.Single результат записывается в промежуточную переменную A
        2. float.Parse(tbOperand2.Text) - то-же самое, результат записывается в промежуточную переменную B
        3. Производится сложение промежуточных переменных (A + B) в промежуточную переменную C
        4. C.ToString() - Преобразовуется переменная C в строку. Так как любая переменная в C# это объект, то путем обращения к методу ToString() этого объекта мы можем получить его строковое представление.

        Более сложные типы, такие как DateTime, могут иметь несколько мeтодов ToString().

        Проверяем работу программы

        Нажмите кнопку Пуск на панели инструментов, или нажмите клавишу F5

        Программа работает и делает то, что от нее требовалось:

        Обратите внимание, что я пока не реализовал проверку вводимого значения в текстовое поле. Если ввести в него некорректное значение - программа выдаст сообщение об ошибке, в которой сообщается, что вы пытаетесь преобразовать в числовое значение неправильную строку:

        Давайте теперь перепишем программу, чтоб она могла выводить предупреждение, в случае, если было введено некорректное значение одного из операторов. Скопируйте следующий метод к себе в файл Form1.cs, там где находятся остальные обработчики *_Click:

        private void bnMathAction_Click(object sender, EventArgs e) < // эти переменные нужны для out параметров float.TryParse(string s, out v) float A, B; // Эта строковая переменная хранит имя кнопки, // будет использована для определения того, какая кнопка нажата string senderName = ((Button)sender).Name; // if(bool && bool) // оба метода должны вернуть истину if (float.TryParse(tbOperand1.Text, out A) && float.TryParse(tbOperand2.Text, out B)) < // Проверяем по имени какая кнопка нажата и в соответствии с выбором // вызываем требуемую арифметическую операцию switch (senderName) < case "bnAdd": tbResult.Text = (A + B).ToString(); break; case "bnSubstr": tbResult.Text = (A - B).ToString(); break; case "bnMultiply": tbResult.Text = (A * B).ToString(); break; case "bnDivide": tbResult.Text = (A / B).ToString(); break; >> else < MessageBox.Show("Неправильно введено значение оператора!"); >>

        Этот метод принимает параметр object sender, который используется для определения того, какая кнопка была нажата. Здесь использован основополагающий принцип ООП - Полиморфизм. Объект типа Button можно абстрагировать до типа object, но при этом информация, специфичная для типа Button никуда не пропала - для того, чтоб к ней обратиться, нужно sender привести к типу Button. Например:

        Button btn = new Button(); // Объект типа Button object obj = new object(); // Объект типа object // Объект типа Button является наследником типа object, поэтому возможно неявное преобразование типа object obj2 = btn; object obj3 = new Button() < Name = "bnTest", Text = "Test">; //obj3.Text = "Test 1"; // Ошибка. Нельзя напрямую обратиться к полю Text ((Button)obj3).Text = "Test 1"; // А вот так обратиться к полю Text вполне даже можно // Тип object не может стать типом Button. Рожденный ползать летать не может //Button btn2 = obj; // Ошибка. //Button btn2 = (Button)obj; // Ошибка. 

        Теперь перейдите в конструктор формы (Shift + F7) и для каждой кнопки, в качестве обработчика события Click выберите метод bnMathAction_Click.

        Если перейти к коду, то можно увидеть, что ссылок на этот метод стало четыре, а на остальные методы обработчики теперь никто не ссылается - ссылок ноль. Их можно спокойно удалить.

        В итоге вы должны получить файл Form1.cs следующего вида:

        using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CalculatorApp < public partial class Form1 : Form < public Form1() < InitializeComponent(); >private void bnClose_Click(object sender, EventArgs e) < this.Close(); >private void bnMathAction_Click(object sender, EventArgs e) < // эти переменные нужны для out параметров float.TryParse(string s, out v) float A, B; // Эта строковая переменная хранит имя кнопки, // будет использована для определения того, какая кнопка нажата string senderName = ((Button)sender).Name; // if(bool && bool) // оба метода должны вернуть истину if (float.TryParse(tbOperand1.Text, out A) && float.TryParse(tbOperand2.Text, out B)) < // Проверяем по имени какая кнопка нажата и в соответствии с выбором // вызываем требуемую арифметическую операцию switch (senderName) < case "bnAdd": tbResult.Text = (A + B).ToString(); break; case "bnSubstr": tbResult.Text = (A - B).ToString(); break; case "bnMultiply": tbResult.Text = (A * B).ToString(); break; case "bnDivide": tbResult.Text = (A / B).ToString(); break; >> else < MessageBox.Show("Неправильно введено значение оператора!"); >> > >

        Код проекта доступен на GitHub.

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

        По данным SuperJob, за год потребность в разработчиках выросла на 190%. О том, какой язык программирования выбрать и как начать с ним работать, рассказывает Владимир Языков, преподаватель курсов Нетологии и разработчик с 15-летним стажем. Да, ему и самому нравится его фамилия ��

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

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

        Владимир Языков

        Разработчик с 15-летним стажем и основатель компании Useful Web

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

        Язык программирования похож на иностранный, только с его помощью донести информацию можно не до англичанина или француза, а до компьютера. Цель начинающего программиста — научиться изъясняться так, чтобы компьютер его понимал. Для каждой задачи, платформы и операционной системы хороши определённые языки, а всего их существует около 9 000. Изучать их все не нужно, можно успешно работать всего с несколькими языками или даже с одним.

        По традиции, начиная осваивать новый язык, программист пишет на нём скрипт, который выводит на экран надпись Hello, World! Вот как это выглядит на разных языках:

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

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

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

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

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

        Условно области, где применяются языки программирования, можно разделить на две большие группы:

        • Бизнес — разработка программ, которые помогают решать конкретные проблемы людей. Например, программист может создать для продуктового магазина сервис по доставке.
        • Развлечение — языки программирования используются для создания развлекательных приложений и игр.

        Остановимся на самых популярных направлениях программирования.

        Языки для веб-разработки

        Веб-разработка имеет дело с созданием сайтов и приложений и ведётся по двум основным направлениям — фронтенд и бэкенд. Разберёмся на примере.

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

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

        Для работы во фронтенде нужны три языка: HTML, CSS и JavaScript (JS). При этом настоящий язык программирования только последний.

        JavaScript — один из главных языков фронтенда, альтернатив для него мало. Популярен также TypeScript, но он создан на основе JavaScript. Если вы хотите, например, чтобы после написания сообщения в чате, оно отображалось, без этих языков программирования не обойтись.

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

        HTML и CSS формируют структуру сайта. HTML говорит, что обозначается на странице — заголовки, абзацы, картинки и так далее, а CSS говорит, как это будет выглядеть: какие размеры должны быть у заголовков, какого они цвета, есть ли подчёркивания и так далее.

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

        С помощью бэкенда хранят и обрабатывают данные. Когда пользователя что-то заинтересовало на Ozon, он заходит в карточку товара, а потом в другую, третью и видит, что карточки очень похожи: все картинки слева, цена справа, описание и отзывы внизу. Нужный раздел уже получается найти интуитивно. Что подгружать на страницу в зависимости от ссылки, на которую пользователь нажал, — в том числе решает бэкенд.

        Чтобы реализовывать бэкенд в веб-разработке, пригодятся PHP, Python, Java, Go, С#, C++, Ruby и другие.

        PHP был особенно популярен в 2000-е годы и всё ещё находится в топ-15 самых распространённых языков, но в современных крупных компаниях вместо него теперь чаще используют Python или Go.

        Ruby часто применяется в разработках для небольших стартапов.

        Фулстек-разработчики создают сайты и приложения целиком, отвечают и за фронтенд, и за бэкенд.

        Языки для десктопа

        Поговорим о языках, на которых разрабатывают стационарные приложения — те, что предназначены для компьютеров.

        C# и C++ чаще всего используются для создания программ для Windows, игр на движке Unity, проектов для Sony PlayStation и Microsoft Xbox.

        На Java разрабатывают кроссплатформенные приложения, которые работают одновременно на Windows, Mac OS и Linux.

        Swift в основном используется компанией Apple, чтобы создавать программы для устройств на собственной операционной системе.

        Языки мобильной разработки

        Для мобильной разработки тоже используется Java. Можно вспомнить популярные в нулевых Java-игры для мобильных — те, в которые мы играли на своих первых телефонах ещё в школе.

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

        Сейчас с помощью Java создаются приложения для Android. Его альтернатива — Kotlin.

        Для iOS используется Swift. Его предшественник — Objective C, раньше Apple использовали для своих разработок именно его.

        Языки для разработки игр

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

        Высокая производительность C++ делает его одним из основных в индустрии разработки игр. На этом языке создаются сложные и ресурсоёмкие игры.

        Если вы хотите заниматься разработкой игр под Windows или на движке Unity, то C# — это хороший выбор. Благодаря своей универсальности, он отлично подходит для разработки игр на различных платформах, а также для создания 2D- и 3D-игр.

        Язык Java — основной для тех, кто хочет создавать кроссплатформенные игры. Благодаря своей философии «Написал один раз — запусти в любом месте», он является одним из самых популярных среди разработчиков, делающих игры для разных систем.

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

        Резюмируем

        Ниже сводная таблица самых популярных языков программирования по направлениям:

        Читать также

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

        Тестировщик ПО: всё о профессии

        Фронтенд Бэкенд Фулстек iOS Android Desktop QA Системное программирование Системное администрирование
        JS PHP JS Swift Kotlin C++ Java C++ PowerShell
        TS Java PHP Objective C Java C# Python C# Python
        Python Java JS JS Java JS Rust
        Go Python JS
        C# Go Rust
        JS C#
        C/C++
        Rust

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

        Курс

        Старт в программировании

        Узнать больше

        • Познакомьтесь с популярными языками программирования: JavaScript, HTML, CSS, ECMAScript
        • Научитесь писать код за две недели
        • Создайте свой первый проект — небольшую игру для индивидуального подсчёта продолжительности жизни и мотивации

        Как выбрать, какой язык учить

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

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

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

        Популярность

        Рейтинги самых популярных языков программирования публикуют регулярно. Те языки, на которые стоит обращать внимание, — на первых 10–15 позициях. Если вас заинтересовал язык, который не вошёл в топ-100, зарабатывать на нём вы вряд ли сможете.

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

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