Какой язык программирования мне следует изучить? Это вопрос, который я вижу размещенным в Интернете ВСЕ ВРЕМЯ. Я энтузиаст Pythonista и Machine Learning, поэтому я всегда говорю Python. Однако мы все знаем, что реальный ответ зависит от того, что вы хотите сделать. Вы должны выбрать то, что вы хотели бы делать. Работа занимает примерно половину времени бодрствования, и если вам не нравится то, чем вы занимаетесь ПОЛОВИНУ времени бодрствования, вы не будете счастливы. Если ваша цель — просто «Я хочу работать программистом», я предлагаю вам подумать о том, чего вы действительно хотите. Это действительно работа программиста или вы просто хотите больше денег?

Разработка приложений

Приложения стали популярными в 2010-х годах с появлением смартфонов. Поскольку компании модернизируются, количество приложений увеличивается. Существует четыре основных платформы приложений для разработки. Есть iOS, Android, OSX и Windows. Конечно, есть и другие платформы приложений, но они относительно небольшие. Обратите внимание, что если вашему приложению необходимо подключиться к серверу, вам также придется запрограммировать это. Если только вы не работаете с кем-то, кто этим занимается.

Мобильные приложения

Люди разрабатывают две платформы мобильных приложений — iOS и Android. Facebook создал для этого фреймворк JavaScript/TypeScript под названием React Native. React Native обещает позволить вам создавать нативные мобильные приложения, переносимые на обе платформы. По большей части это правда. Однако, если вы хотите сделать что-то конкретное для этой мобильной ОС, вы захотите использовать для этого родной язык. Для iOS это Swift. Разработка под Android гораздо более открыта и может выполняться на Java, Kotlin, C#, Python или JavaScript. Я бы предложил Java или Kotlin из соображений производительности.

Настольные приложения

Как и в случае с мобильными приложениями, существуют две основные платформы для настольных приложений. ОС X и Windows. По правде говоря, любой файл в формате `.exe` может быть запущен на любой платформе. Однако приложения OSX почти всегда разрабатываются на Objective-C. Это родной язык Mac OS. Приложения для Windows, как и приложения для Android, можно разрабатывать практически на любом языке. Самые популярные языки для приложений Windows зависят от варианта использования. Например, C++ почти всегда выбирают для разработки видеоигр из-за его скорости. C также очень популярен для настольных приложений Windows из-за его скорости и настраиваемости. В последние годы мы также наблюдаем рост популярности Python. Для этого есть две основные причины: а) Python на самом деле является C под капотом, и б) было выпущено ОГРОМНОЕ количество библиотек Python из-за того, насколько легко Python читать и писать.

Веб-разработка

Здесь выигрывает JavaScript/TypeScript. TypeScript — это просто оболочка JavaScript, которая заставляет печатать. Вам придется изучить HTML/CSS для веб-разработки, но давайте развеем распространенное заблуждение — это не языки программирования. HTML расшифровывается как Hyper Text MARKUP Language, а CSS расшифровывается как Cascading STYLE Sheets. Есть и другие способы веб-разработки, но платформа React для JavaScript и TypeScript просто потрясающая. Python с Flask или Django также является популярной альтернативой, но далеко не такой популярной. Почему JavaScript лучше? JavaScript работает в браузере, а Python работает на стороне сервера.

Бэкэнд (серверная часть)

Большинство языков программирования, о которых вы слышали, таких как C, C++, C#, Python, Java и т. д., являются серверными языками. Наиболее популярными языками, используемыми в крупных технологических компаниях (FAANG), являются Java и C или C++. Если вы конкретно хотите получить работу в Google, вы также можете попробовать Go. В последнее время популярность Go также выросла за пределами Google, и я лично считаю, что это довольно круто. Тем не менее, сообщество вокруг него, вероятно, недостаточно велико, чтобы большинство новичков могли в него вникнуть и быть достаточно хорошими, чтобы разрабатывать на нем настоящие программы в разумные сроки.

Важным аспектом разработки серверной части в крупных компаниях (и компаниях среднего размера) является масштаб. Масштабирование становится реальной проблемой, когда ваше приложение достигает определенного размера аудитории. По этой причине, и только по этой причине, Java и C/C++ — это то, что нужно. Для крупномасштабных веб-приложений Java с Spring/Springboot/Spring MVC очень востребован, поскольку он может масштабироваться до более чем 100 000 транзакций в секунду (TPS). С другой стороны, C не нуждается во внедрении зависимостей, предоставляемом этими Java-фреймворками. Он также может масштабироваться до высокого TPS. Это просто немного сложнее в использовании.

В меньшем масштабе, или если ваше приложение не требует высокой TPS, или если вы хотите работать в стартапе, Python — это то, что вам нужно. Python — не один из самых популярных языков программирования, но, вероятно, самый популярный язык для стартапов. Гибкость, расширяемость и простота использования Python делают его идеальным для быстрого развертывания проверки концепций, минимально жизнеспособных продуктов и хорошо масштабируются для большинства потребностей стартапов. Большинству приложений не требуется 100 000 транзакций в секунду, а Python легко справляется с 10 транзакциями в секунду.

AI/ML

Python легко выигрывает здесь. Tensorflow и Pytorch для обучения моделей машинного обучения буквально созданы для Python. Это две самые большие используемые библиотеки машинного обучения. Огромное количество библиотек для машинного обучения и искусственного интеллекта в Python делает его лучше, чем любой другой язык. Пространство AI/ML настолько развито с помощью Python, что теперь вы можете выполнять сложные задачи обработки естественного языка всего в нескольких строках кода.

Наука о данных

Наука о данных — еще одна область, в которой доминирует Python. Python является языком по умолчанию для создания проектов по науке о данных по тем же причинам, что и для AI/ML. Python имеет много хороших библиотек, построенных вокруг науки о данных, потому что область науки о данных тесно переплетена с областью машинного обучения. Библиотеки, такие как `pandas`, `numpy` и `matplotlib`, упрощают обработку больших данных и создание красивых графиков. Python также является кодом по умолчанию для сценариев обработки данных в конвейерах извлечения, преобразования, загрузки (ETL) в крупных технологических компаниях.

Краткий обзор отрасли

Существует МНОЖЕСТВО различных языков, которые вы можете выучить, и МНОЖЕСТВО различных профессий и ролей, доступных в индустрии программного обеспечения. Этот пост охватывает все основы, но вы всегда можете погрузиться глубже в кроличью нору.

В целом, двумя самыми популярными языками в 2021 году и трендами 2022 года являются Python и JavaScript. Если вы хотите заниматься веб-разработкой, изучите JavaScript. Если вы хотите делать что-то еще, изучайте Python. Самым большим исключением из этого является то, что если вы хотите заниматься бэкэнд-разработкой, вам следует изучить Java или язык на основе C.

Дальнейшее чтение