Как выбрать язык программирования для изучения?
Факторы выбора
- Уровень и опыт изучающего
 - Цели изучающего
 - Желаемая специализация изучающего
 - Ситуация на рынке труда
 
Факторы выбора
- Уровень и опыт изучающего
 - Цели изучающего
 - Желаемая специализация изучающего
 - Ситуация на рынке труда
 
- Сложность языка и библиотек
 - Возможности языка и библ.
 - Область применения языка (возможная и желательная)
 - Востребованность языка
 
→
→
→
→
Многое субъективно
За более-менее объективное суждение можно принять наиболее широко поддерживаемые мысли/мнения, распространенные в среде специалистов высокого уровня
Я рассказываю с оттенком своего мнения
Что такое язык программирования на самом деле?
Язык программирования —
 формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических
правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.
Обычно язык воспринимается шире
- Синтаксис (лексика+синтаксис+семанитика)
 - Транслятор (компилятор и/или интерпритатор)
 - Среда исполнения
 - Стандартная библиотека (фреймворк)
 - Популярные библиотеки и фреймворки
 
О каких языках пойдет речь?
- Assembler
 - C/C++
 - Java, C#
 - PHP, Perl, Python, Ruby, JS
 - (Спец.языки, например, 1С)
 
Assembler
- Уровень и опыт изучающего
→ Сложность языка и библиотек
 - Цели изучающего
→ Возможности языка и библ.
 - Желаемая специализация изучающего
→ Область применения языка (возможная и желательная)
 - Ситуация на рынке труда
→ Востребованность языка 
- Высокая сложность, требуется высокий уровень по железу и основам
 - Работа на низком уровне, системное программирование, управление железом
 - Операционные системы, встраиваемые системы, драйвера, специализированное железо и т.д.
 - Востребованность относительно низкая, но очень мало хороших специалистов
 
С/С++
- Уровень и опыт изучающего
→ Сложность языка и библиотек
 - Цели изучающего
→ Возможности языка и библ.
 - Желаемая специализация изучающего
→ Область применения языка (возможная и желательная)
 - Ситуация на рынке труда
→ Востребованность языка 
- Высокая сложность, требуется глубокое понимание базы, алгоритмов, архитектуры ЭВМ; внимательность и усидчивость
 - Низкий и средний уровень, системное программирование, высокопроизводительные подсистемы
 - Операционные системы, встраиваемые системы, высокопроизводительные программы и компоненты
 - Востребованность средняя, в основном требуются специалисты с опытом
 
Java, C#
- Уровень и опыт изучающего
→ Сложность языка и библиотек
 - Цели изучающего
→ Возможности языка и библ.
 - Желаемая специализация изучающего
→ Область применения языка (возможная и желательная)
 - Ситуация на рынке труда
→ Востребованность языка 
- Средняя или низкая сложность, легко начать, легко изучать
 - Высокий уровень, прикладные программы, развитый GUI, энтерпрайз
 - Интерфейс, службы для Windows, web-приложения (бэк-энд), тестирование
 - Востребованность высокая, требуются программисты разного уровня
 
Perl
- Уровень и опыт изучающего
→ Сложность языка и библиотек
 - Цели изучающего
→ Возможности языка и библ.
 - Желаемая специализация изучающего
→ Область применения языка (возможная и желательная)
 - Ситуация на рынке труда
→ Востребованность языка 
- Высокая сложность самого языка, но работа на высоком уровне (в отличие от Assembler)
 - Прикладные программы, автоматизация
 - Unix, автоматизация, Web-приложения (бэк-энд), тестирование
 - Востребованность низкая, язык устарел и отмирает
 
PHP, Python, Ruby
- Уровень и опыт изучающего
→ Сложность языка и библиотек
 - Цели изучающего
→ Возможности языка и библ.
 - Желаемая специализация изучающего
→ Область применения языка (возможная и желательная)
 - Ситуация на рынке труда
→ Востребованность языка 
- Низкая сложность языка, низкий порог вхождения, легкость использования
 - Прикладные программы, автоматизация
 - Web-приложения (бэк-энд), автоматизация, Unix, тестирование
 - Востребованность высокая, специалистов много (кроме Ruby)
 
JS (JavaScript)
- Уровень и опыт изучающего
→ Сложность языка и библиотек
 - Цели изучающего
→ Возможности языка и библ.
 - Желаемая специализация изучающего
→ Область применения языка (возможная и желательная)
 - Ситуация на рынке труда
→ Востребованность языка 
- Низкая сложность языка, низкий порог вхождения, некоторая сложность правильного использования
 - Прикладные программы
 - Web-приложения (прежде всего фронт-энд, но и бэк-энд тоже)
 - Востребованность высокая, специалистов не много
 
Специальные языки
- Уровень и опыт изучающего
→ Сложность языка и библиотек
 - Цели изучающего
→ Возможности языка и библ.
 - Желаемая специализация изучающего
→ Область применения языка (возможная и желательная)
 - Ситуация на рынке труда
→ Востребованность языка 
- Обычно все относительно просто
 - Прикладные программы, работа с определенной платформой
 - Информационные системы, энтерпрайз
 - По-разному, но в среднем невысокая
 
Какой язык выбрать?
- Первый — лучше простой и прикладной
 - Очень полезно изучить C/C++
 - Для работы полезно Java, C#, PHP, Python,
Ruby, JS в зависимости от предпочтений - Все, что связано с вебом, набирает обороты
 - Спец.языки хороши для специалиста
в некоторой предметной области 
Лучше всего изучить несколько языков, при этом
2–3 знать хорошо и практиковать
О языках программирования
By Valer Leontyev
О языках программирования
Человек, который хочет изучить программирование, сталкивается с выбором языка, который он будет изучать. На чем основывать этот выбор? Разница между языками большая, плюсов и минусов у каждого хватает и объективно сравнить их между собой невозможно. В начале карьеры легко сделать неправильный выбор, из-за которого в какой-то момент захочется вообще бросить изучение. Я хочу представить свой способ субъективного сравнения языков и дать свои небольшие рекомендации.
- 2,507