Есть так много вариантов, если вы хотите начать программировать в 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 — каждая функциональность в отдельном пакете (выполняется в собственном контейнере или виртуальной машине)

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