Как выбрать язык программирования для изучения?

Факторы выбора

  • Уровень и опыт изучающего
  • Цели изучающего
  • Желаемая специализация изучающего
  • Ситуация на рынке труда

Факторы выбора

  • Уровень и опыт изучающего
  • Цели изучающего
  • Желаемая специализация изучающего
  • Ситуация на рынке труда
  • Сложность языка и библиотек
  • Возможности языка и библ.
  • Область применения языка (возможная и желательная)
  • Востребованность языка

 

Многое субъективно

За более-менее объективное суждение можно принять наиболее широко поддерживаемые мысли/мнения, распространенные в среде специалистов высокого уровня

Я рассказываю с оттенком своего мнения

Что такое язык программирования на самом деле?

Язык программирования —

 формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексическихсинтаксических и семантических
правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.

Обычно язык воспринимается шире

  • Синтаксис (лексика+синтаксис+семанитика)
  • Транслятор (компилятор и/или интерпритатор)
  • Среда исполнения
  • Стандартная библиотека (фреймворк)
  • Популярные библиотеки и фреймворки

О каких языках пойдет речь?

  • Assembler
  • C/C++
  • Objective C, Swift
  • Java, C#
  • PHP, Perl, Python, Ruby, JS
  • SQL
  • (Спец.языки, например, 1С)

Assembler

  • Уровень и опыт изучающего
    → Сложность языка и библиотек
     
  • Цели изучающего
    → Возможности языка и библ.
     
  • Желаемая специализация изучающего
    → Область применения языка (возможная и желательная)
     
  • Ситуация на рынке труда
    → Востребованность языка
  • Высокая сложность, требуется высокий уровень по железу и основам
     
  • Работа на низком уровне, системное программирование, управление железом
     
  • Операционные системы, встраиваемые системы, драйвера, специализированное железо и т.д.
     
  • Востребованность относительно низкая, но очень мало хороших специалистов

С/С++

  • Уровень и опыт изучающего
    → Сложность языка и библиотек

     
  • Цели изучающего
    → Возможности языка и библ.

     
  • Желаемая специализация изучающего
    → Область применения языка (возможная и желательная)
     
  • Ситуация на рынке труда
    → Востребованность языка
  • Высокая сложность, требуется глубокое понимание базы, алгоритмов, архитектуры ЭВМ; внимательность и усидчивость
     
  • Низкий и средний уровень, системное программирование, высокопроизводительные подсистемы
     
  • Операционные системы, встраиваемые системы, высокопроизводительные программы и компоненты
     
  • Востребованность средняя, в основном требуются специалисты с опытом

Objective C, Swift

  • Уровень и опыт изучающего
    → Сложность языка и библиотек

     
  • Цели изучающего
    → Возможности языка и библ.
     
  • Желаемая специализация изучающего
    → Область применения языка (возможная и желательная)
     
  • Ситуация на рынке труда
    → Востребованность языка
  • Средняя или низкая сложность, относительно легко начать и изучить, но нужно быть внимательным для Objective C
     
  • Программирование для платформ Apple (Mac OS, iOS).
     
  • Прикладные программы, развитый GUI


     
  • Востребованность высокая, в обозримом будущем вряд ли снизится

Java, C#

  • Уровень и опыт изучающего
    → Сложность языка и библиотек
     
  • Цели изучающего
    → Возможности языка и библ.
     
  • Желаемая специализация изучающего
    → Область применения языка (возможная и желательная)
     
  • Ситуация на рынке труда
    → Востребованность языка
  • Средняя или низкая сложность, легко начать, легко изучать
     
  • Высокий уровень, прикладные программы, развитый GUI, энтерпрайз
     
  • Интерфейс, службы для Windows, web-приложения (бэк-энд), тестирование

     
  • Востребованность высокая, требуются программисты разного уровня

Perl

  • Уровень и опыт изучающего
    → Сложность языка и библиотек
     
  • Цели изучающего
    → Возможности языка и библ.
     
  • Желаемая специализация изучающего
    → Область применения языка (возможная и желательная)
     
  • Ситуация на рынке труда
    → Востребованность языка
  • Высокая сложность самого языка, но работа на высоком уровне (в отличие от Assembler)
     
  • Прикладные программы, автоматизация

     
  • Unix, автоматизация, Web-приложения (бэк-энд), тестирование

     
  • Востребованность низкая, язык устарел и отмирает

PHP, Python, Ruby

  • Уровень и опыт изучающего
    → Сложность языка и библиотек
     
  • Цели изучающего
    → Возможности языка и библ.
     
  • Желаемая специализация изучающего
    → Область применения языка (возможная и желательная)
     
  • Ситуация на рынке труда
    → Востребованность языка
  • Низкая сложность языка, низкий порог вхождения, легкость использования
     
  • Прикладные программы, автоматизация

     
  • Web-приложения (бэк-энд), автоматизация, Unix, тестирование

     
  • Востребованность высокая, специалистов много (кроме Ruby)

JS (JavaScript)

  • Уровень и опыт изучающего
    → Сложность языка и библиотек

     
  • Цели изучающего
    → Возможности языка и библ.
     
  • Желаемая специализация изучающего
    → Область применения языка (возможная и желательная)
     
  • Ситуация на рынке труда
    → Востребованность языка
  • Низкая сложность языка, низкий порог вхождения, некоторая сложность правильного использования
     
  • Прикладные программы

     
  • Web-приложения (прежде всего фронт-энд, но и бэк-энд тоже)

     
  • Востребованность высокая, специалистов не много

SQL

  • Уровень и опыт изучающего
    → Сложность языка и библиотек

     
  • Цели изучающего
    → Возможности языка и библ.
     
  • Желаемая специализация изучающего
    → Область применения языка (возможная и желательная)
     
  • Ситуация на рынке труда
    → Востребованность языка
  • Низкая сложность языка, низкий порог вхождения, некоторая сложность правильного использования
     
  • Реализация бизнес-логики на базе СУБД, энтерпрайз
     
  • Информационные системы, встроенные в СУБД, часто — банковский сектор

     
  • Востребованность низкая, но стабильная

Специальные языки

  • Уровень и опыт изучающего
    → Сложность языка и библиотек
     
  • Цели изучающего
    → Возможности языка и библ.
     
  • Желаемая специализация изучающего
    → Область применения языка (возможная и желательная)
     
  • Ситуация на рынке труда
    → Востребованность языка
  • Обычно все относительно просто

     
  • Прикладные программы, работа с определенной платформой
     
  • Информационные системы, энтерпрайз


     
  • По-разному, но в среднем невысокая

Какой язык выбрать?

  • Первый — лучше простой и прикладной
  • Очень полезно для всех изучить C/C++
  • Для работы полезны Java, C#, Objective C/Swift, PHP, Python, Ruby, JS в зависимости от предпочтений
  • Все, что связано с вебом, набирает обороты
  • SQL и спец.языки хороши для специалиста в некоторой предметной области (банковский сектор, экономика, производство, управление предприятиями)

Лучше всего изучить несколько языков, при этом
2–3 знать хорошо и практиковать

О языках программирования v2

By Valer Leontyev

О языках программирования v2

Человек, который хочет изучить программирование, сталкивается с выбором языка, который он будет изучать. На чем основывать этот выбор? Разница между языками большая, плюсов и минусов у каждого хватает и объективно сравнить их между собой невозможно. В начале карьеры легко сделать неправильный выбор, из-за которого в какой-то момент захочется вообще бросить изучение. Я хочу представить свой способ субъективного сравнения языков и дать свои небольшие рекомендации.

  • 1,912