Есть так много вариантов, если вы хотите начать программировать в 2019 году, что ваш мозг взорвется, если вы не знаете их сходства и их основных идей за кулисами. И особенно, если вы не имеете в виду, что вы хотите разработать, прежде чем начать, чтобы выбрать правильный инструмент с самого начала. Вот несколько вариаций.
- Вы можете научиться разрабатывать для облака (на стороне сервера). Возможно, вам не потребуется изучать какое-либо программирование пользовательского интерфейса — только логика для баз данных, управление сервером, бизнес-логика для масштабирования и т. д.
- Есть некоторые устройства, которые предоставляют услуги без подключения к Интернету и вообще без экранов. Если они из сверхпростых — у них может быть какая-то физическая кнопка, которая выполняет эту работу.
- Другие просто устройства какой-то интернет-адаптер плюс еще что-то, что управляется из интернета — просто динамик (для музыки), электрический адаптер (для выключения/включения питания) или с микрофоном, динамик, который может слушать вам и выполнить некоторые функции сервера/облака или/и дать вам какой-то ответ.
Существует несколько форм-факторов в зависимости от размера экрана:
- Функциональные телефоны 2–3 дюйма, с 12 клавишами, 10 цифрами, #$
- КПК - 4–6 дюймов с полной клавиатурой или очень небольшим количеством специализированных клавиш.
- Маленький смартфон — 3–4,5 дюйма
- Средний смартфон — 4,5–5,5 дюйма
- Большой смартфон/фаблет — 5,5–7 дюймов
- Маленький планшет — 7–8 дюймов
- Большой планшет — 10–11 дюймов
- Нетбук/ноутбук 10–12 дюймов
- Ноутбук — 13–17 дюймов
- Базовый рабочий стол — 15–40 дюймов
- Проекторы или действительно большие экраны — 40+ дюймов, видеодисплеи или проектор с зумом нестандартного размера.
Что касается платформ, вот несколько вариантов для вас:
- (Java) Мидлет-приложения для телефонов с функциями — уменьшение поиска
- Приложения Blackberry или приложения для Windows Phone — уменьшение поиска
- Приложения для Windows Mobile — сокращение поиска
- Приложения для iPhone и iPad (iOS)
- Приложения для Android — для телефонов, планшетов и компьютеров (Chrome OS)
- Приложения для Windows — командная строка или использование METRO (сенсорного) API или ориентирование на обычный интерфейс рабочего стола.
- Приложения Mac OS — командная строка или использование инфраструктуры какао
- Приложения для Linux — командная строка или с использованием Qt, или любого другого
https://en.wikipedia.org/wiki/List_of_widget_toolkits - Веб-сайты и приложения — не заставляйте меня начинать с вариантов
Если вы пытаетесь создать приложение с голосовой поддержкой, самые популярные варианты:
- Кортана
- Сири
- Алекса
Вот некоторые наборы инструментов для программирования, SDK, фреймворки, предназначенные для вышеуказанных форм-факторов с использованием некоторых платформ:
- Мобильное программирование
- Нативные, iOS — Swift и Objective C, Android — Java, Kotlin, Windows Mobile — C#
- Кроссплатформенность — Flutter, NativeScript, ReactNative, Xamarin, Ionic.
- Гибрид — Cordova / PhoneGap, Appcelerator, Sencha Touch и многие другие, которые предлагают некоторый уровень над веб-браузером.
- Настольное программирование
- Кроссплатформенные наборы инструментов — Python, Qt, Java, .Net Core,
- Нативные комплекты — .Net, Windows Forms, Cocoa, Qt (или любой другой фреймворк выше Linux X Server).
- Веб-программирование
- PHP
- Питон (Джанго)
- Go
- Java (JSP, JSF, Struts, GWT, Spring и т. д.…..)
- .Net (.Net Framework или .Net Core)
- Рубин на рельсах)
- JavaScript (NodeJS)
- Веб-программирование на стороне клиента
- Языки
- Обычный Javascript
- Дартс
- Машинопись
- Ява (GWT)
- Фреймворки
- JQuery
- Угловой
- Вью
- Реагировать
- Метеор
- Эмбер
- полимер
Помимо всего вышеперечисленного, вот некоторая смесь парадигм и подходов к разработке, которые так или иначе присутствуют во всех вышеперечисленных (примеры будут в основном связаны с Java, поэтому список будет очень сокращен):
- ООП — самый популярный — (PHP в более новых версиях, Java, .Net и т. д.)
- Процедурные — старые и уменьшающиеся (PHP, JSP)
- Функциональный (+ реактивный), NodeJS, Java Spring Flux и т. д.
Вот еще парадигмы и подходы:
- HTTP-сервер, обслуживающий интерфейс + простые серверные скрипты — PHP, JSP, CGI;
- На основе компонентов — JSF, Vaadin, GWT
- На основе MVC — Struts, Spring, Play Framework
- Монолитный подход — все в одном пакете
- Micro Service — каждая функциональность в отдельном пакете (выполняется в собственном контейнере или виртуальной машине)
Итак, удачи в выборе того, что изучать, если ваша цель — изучение программирования. Если у вас есть цель написать какую-то бизнес-логику, которая делает что-то полезное — хватайте что угодно и действуйте. В противном случае вы наполняете себя.