Языки программирования
На каких языках пишут приложения
Приложение редко пишут на одном языке. Обычно есть экран, логика, хранение данных, серверная часть, авторизация, уведомления, аналитика и публикация в магазине. Поэтому правильный ответ звучит так: язык выбирают не вообще для приложения, а под платформу и состав проекта
Если нужно приложение для Android, чаще смотрят на Kotlin. Если для iPhone и iPad, на Swift. Если нужно сразу Android и iOS одной командой, рассматривают Flutter на Dart или React Native на JavaScript/TypeScript. Если приложение по сути является личным кабинетом или сервисом, иногда выгоднее начать с веб-приложения или PWA
Что внутри приложения на практике
Даже простое приложение заметок или заявок состоит из нескольких частей:
| Часть проекта | Что делает | Частые технологии |
|---|---|---|
| интерфейс | экраны, кнопки, формы, навигация | Kotlin, Swift, Flutter, React Native |
| состояние | хранит выбранные фильтры, корзину, пользователя | ViewModel, Redux, Riverpod, Zustand |
| локальные данные | работает без интернета, кеширует ответы | SQLite, Room, Core Data, Hive |
| сеть | отправляет запросы на сервер | REST, GraphQL, WebSocket |
| backend | принимает заявки, хранит пользователей, считает цены | Python, Node.js, Java, Go, PHP, C# |
| база данных | хранит товары, заказы, профили, сообщения | PostgreSQL, MySQL, SQLite, Firebase |
| публикация | сборка и выпуск приложения | Google Play Console, App Store Connect |
Когда человек спрашивает, на каком языке пишут приложения, он часто представляет только экран телефона. Но бизнес-логика может жить на сервере, уведомления приходят через отдельные сервисы, платежи подключаются через SDK, а данные хранятся в базе
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Мобильные приложения: Android, iOS и кроссплатформа
Для Android стандартный современный выбор — Kotlin. На нем удобно писать нативные приложения, использовать Jetpack Compose для интерфейсов, работать с камерой, геолокацией, push-уведомлениями и системными возможностями телефона
Для iOS стандартный выбор — Swift. Интерфейсы часто делают на SwiftUI или UIKit. Swift хорош там, где приложение должно глубоко работать с экосистемой Apple: виджеты, Apple Pay, HealthKit, уведомления, камера, локальные данные
Кроссплатформенная разработка нужна, когда важно быстро выпустить одну логику на Android и iOS. Flutter использует Dart и хорошо подходит для приложений с единым дизайном: сервис записи, каталог, учебное приложение, приложение доставки, финансовый трекер. React Native использует JavaScript или TypeScript и часто удобен командам, которые уже умеют делать веб-интерфейсы
| Задача | Практичный выбор | Почему |
|---|---|---|
| приложение только под Android | Kotlin | нативный доступ к возможностям Android |
| приложение только под iPhone | Swift | нативная интеграция с iOS |
| MVP сразу под две платформы | Flutter | один проект, быстрый интерфейс, много готовых пакетов |
| команда уже пишет на React | React Native | проще переиспользовать опыт JavaScript/TypeScript |
| внутреннее приложение компании | веб-приложение или PWA | проще обновлять без магазинов приложений |
| приложение с тяжелой камерой или Bluetooth | нативная разработка | меньше ограничений и костылей |
Backend для приложения
Если приложение показывает каталог, принимает заказы, хранит профили или синхронизирует данные между устройствами, ему нужен backend. Язык мобильного приложения и язык backend могут быть разными
Типовая схема выглядит так:
экран приложения -> запрос к API -> backend -> база данных
Пример для приложения доставки:
Flutter-приложение
API на Node.js или Python
PostgreSQL для заказов
Redis для быстрых статусов
Firebase Cloud Messaging для push-уведомлений
админка для менеджера
Пример для приложения репетитора:
React Native или PWA
backend на Django/FastAPI
PostgreSQL для учеников и занятий
интеграция с Telegram для уведомлений
личный кабинет для ученика
Для небольшого проекта backend можно упростить: Firebase, Supabase, готовая CRM, no-code backend или WordPress с API. Это нормально для первого запуска, если проекту не нужна сложная логика
Веб-приложения и PWA
Многие приложения не обязаны быть нативными. Если пользователю нужно оформить заявку, вести личный кабинет, смотреть уроки, управлять заказами или пользоваться сервисом с компьютера и телефона, часто достаточно веб-приложения
Для веб-приложения обычно используют:
- HTML и CSS для разметки и внешнего вида
- JavaScript или TypeScript для интерфейса
- React, Vue, Svelte или другой фреймворк для сложных экранов
- backend на Node.js, Python, PHP, Java, Go или C#
- базу данных: PostgreSQL, MySQL, SQLite, MongoDB
PWA можно установить на экран телефона как приложение. У него есть ограничения, но для личного кабинета, каталога, расписания, образовательного проекта или внутреннего инструмента это часто дешевле и быстрее, чем отдельные нативные приложения
Десктопные приложения
Приложения для Windows, macOS и Linux тоже пишут на разных стеках. C# и .NET подходят для Windows-приложений и корпоративных инструментов. Electron позволяет сделать десктопное приложение на HTML, CSS и JavaScript. Qt используют для кроссплатформенных интерфейсов на C++ или Python
Практический выбор:
| Пример | Подходящий стек |
|---|---|
| учетная программа для Windows | C# и .NET |
| редактор заметок для разных систем | Electron и TypeScript |
| инженерная утилита с высокой скоростью | C++ и Qt |
| маленький инструмент для себя | Python и Tkinter/PySide |
Как выбрать язык под реальный проект
Начните с ответов на вопросы:
На каких устройствах будет работать приложение?
Нужно ли публиковаться в App Store и Google Play?
Будет ли офлайн-режим?
Нужны ли камера, геолокация, Bluetooth, платежи, push-уведомления?
Есть ли личные кабинеты и роли пользователей?
Нужна ли админка?
Кто будет поддерживать проект через полгода?
Если нужен быстрый MVP для проверки спроса, часто выбирают Flutter, React Native, PWA или no-code. Если приложение должно глубоко работать с устройством, лучше нативные Kotlin и Swift. Если главная ценность в данных и бизнес-логике, не экономьте внимание на backend и базе данных
Мини-примеры выбора
| Проект | Неудачный выбор | Более практичный выбор |
|---|---|---|
| приложение записи к мастеру | сразу два нативных приложения | PWA или Flutter плюс простая админка |
| банковское приложение | no-code и общая логика | нативные стеки, строгая безопасность, тестирование |
| каталог товаров без оплаты | сложный backend с микросервисами | CMS, headless CMS или простой API |
| фитнес-трекер с датчиками | только веб-страница | нативная разработка или Flutter с нативными модулями |
| учебный прототип | дорогая архитектура | Flutter, React Native или веб-приложение |
Что учить новичку
Если вы хотите делать приложения и пока не знаете направление, самый спокойный маршрут такой:
- Освойте базовый JavaScript или Python, чтобы понять переменные, условия, циклы, функции и работу с данными
- Сделайте простое веб-приложение: список задач, форму заявки, личный мини-кабинет
- Попробуйте Flutter или React Native, если хочется именно мобильный интерфейс
- Разберите работу API: как приложение получает и отправляет данные
- Подключите базу данных или готовый backend
Так вы увидите не только язык, но и весь путь приложения: экран, данные, сервер, публикация, ошибки, обновления
Что собрать для портфолио
Новичку полезнее показать не абстрактное знание языка, а готовый маленький продукт. Для приложения подойдут такие проекты:
| Проект | Что покажет |
|---|---|
| список задач с авторизацией | экраны, формы, локальное хранение, вход пользователя |
| приложение записи на услугу | форма, календарь, отправка заявки, уведомление владельцу |
| каталог товаров | карточки, фильтры, поиск, избранное |
| трекер привычек | состояние, статистика, локальная база |
| личный кабинет ученика | роли, расписание, материалы, история занятий |
Хороший учебный проект должен запускаться, иметь понятный README, несколько скриншотов и короткое объяснение архитектуры. Если это мобильное приложение, полезно показать не только экран, но и схему данных: какие сущности есть, где они хранятся, как приложение получает обновления
Когда выбранный стек начинает мешать
Стек пора пересматривать, если проект уперся в ограничения:
- no-code не дает нужную интеграцию
- PWA не закрывает работу с устройством
- кроссплатформенный фреймворк требует слишком много нативных доработок
- backend на готовом сервисе становится дорогим или тесным
- приложение сложно обновлять из-за слабой архитектуры
- команда не может поддерживать выбранную технологию
Это не значит, что первый выбор был плохим. Часто правильная стратегия такая: быстро проверить идею простым стеком, а потом переписать критичные части, когда стало понятно, что продукт действительно нужен
Частые вопросы
Можно ли написать приложение только на Python?
Можно сделать прототип, backend, скрипт, desktop-утилиту или учебное приложение. Для профессиональных мобильных приложений Python используют редко, потому что экосистема Android и iOS сильнее заточена под Kotlin, Swift, Flutter и React Native
Что выбрать для первого мобильного приложения?
Для учебного проекта удобно взять Flutter: один проект, понятный визуальный результат, быстрый запуск на телефоне. Если цель — Android-разработка как профессия, лучше идти в Kotlin. Если цель — iOS, в Swift
Нужно ли приложению знать SQL?
Если приложение хранит пользователей, заказы, уроки, товары, платежи или сообщения, SQL хотя бы на базовом уровне очень полезен. Даже если базой занимается backend-разработчик, понимание таблиц и связей помогает проектировать приложение без хаоса