(скопировано из моего ответа на Quora, неправильно отформатировано)

Граница, разделяющая настольную и веб-разработку, сейчас очень узкая. Прошли те времена, когда для веб-разработки использовались только Perl или PHP, а для разработки настольных компьютеров использовались компилируемые языки, такие как C, C ++.

Но теперь все сразу изменилось. Сейчас есть очень успешные настольные приложения, такие как текстовые редакторы, Git-GUI, даже приложения, которые управляют настоящими роботами, написаны на таких языках, как JavaScript, например, Jobo SDK основан на Electron и NodeJs. Разве это не потрясающе?

С другой стороны, такие языки, как C, C ++, Go и другие статические / скомпилированные языки, широко используются в веб-разработке, а такие языки, как Erlang, которые когда-то считались используемыми только в Telephoney, теперь используются для создания серверных компонентов с высокой степенью параллелизма и устойчивые веб-приложения.

В наши дни каждый современный язык используется во многих местах.
Например, C # используется в ядре .net для создания высокопроизводительных кроссплатформенных серверных приложений для веб-приложений, а C # также используется в Xamarin для создания кроссплатформенных мобильных приложений (для iOS, Android и Windows. Phone).
Ruby используется в качестве серверной части для веб-приложений в форме многих его фреймворков, включая Rails, Sinatra, Roda и другие, а Ruby также используется как RubyMotion для создания кроссплатформенных мобильных приложений (аналогично Xamarin).
В браузере используется JavaScript (единственный язык, изначально поддерживаемый в браузере, чудовище). Он также используется для создания мобильных веб-приложений с использованием Ionic, Cordova, React-native, NativeScript. JavaScript также используется на сервере в форме NodeJ.
Python используется для создания серверных частей для веб-приложений, а также его можно использовать для создания графических интерфейсов пользователя. Python также используется для написания сценариев внутри GIMP, MaYa и Blender. Python также можно использовать для создания игр с помощью PyGame.

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

Выше был пункт №1. Теперь пункт №2;
Сейчас вы не изучаете язык, а изучаете парадигму. Если вы изучаете PHP, изучение Python или Ruby будет очень простым, потому что все три из них являются императивными, объектно-ориентированными динамическими языками.

Если вы изучаете Elixir, изучение Clojure, Elm или Haskell не будет таким сложным, потому что все эти языки являются функциональными, хотя Haskell и Elm статически типизируются с выводом типа, а Elixir и Clojure типизируются динамически (я не знаю Сам не использовал Clojure, Google сказал, что он динамически типизирован).

Выше я использовал вывод типа слова, что означает, что язык может иногда угадывать тип выражения. Сейчас эта способность есть во многих статически типизированных языках. Два из моих любимых - Go и Rust с этой способностью.
Говоря о Go и Rust, оба являются императивными, статически типизированными и скомпилированными языками, как и C. Так что, если вы знаете C, вы легко выберете любой из Иди или Ржавчина.

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

Спасибо за A2A!