LINUX.ORG.RU

История изменений

Исправление Kroz, (текущая версия) :

Bash хорош когда:

  • у тебя много вызовов внешних команд
  • ты не работаешь со сложными структурами данных (массивы, структуры, json)
  • размер до 500 строк

Как правило это admin/devops задачи, хотя и не обязательно.

Если кажется что bash подходит, но мы выходим за рамки перечисленного выше, то имеет смысл посмотреть в сторону Python.

Python хорош когда:

  • написание кода не есть целью, а скорее средством решения другой задачи. Например devops, QA, data scientist и т. п.
  • нужно быстро сделать небольшой PoC перед тем, как ввязываться в нормальную разработку.
  • новичку нужно научиться программированию с нуля (раньше этот сегмент занимал Pascal).

Основное достоинство Python - там есть библиотеки на любой вкус.

Java - идеальный баланс возможностей и порога входа. Плюс большой спрос на рынке труда. Идеален для тех кто хочет быстро «войти в IT» и зарабатывать на жизнь программистом, и при этом не WEB. Но имеет ряд ограничений. Например, вселяет необоснованную веру фреймворки и автоматизации, которая разбивается когда возникают такие проблемы, как, например, утечки памяти (мне ж обещали что их не будет!) или когда друг знающий SQL предлагает решение которое работает 3 секунды, в то время как твое решение на Hibernate падает по timeout. Также не самый лучший выбор для контейнеров, ибо приложения получаются ресурсоёмкими и долго стартуют, в сравнении, например, с теми же C, C++, Golang.

С# - не имел с ним дела, но, как я понял, эквивалентен Java.

Если WEB - JavaScript, естественно в комбинации с HTML и CSS. Не знаю как с php, вроде как его сейчас принято хейтить, но пусть другие подскажут. Мне кажется имеет смысл хоть немного ознакомиться.

Си:

  • небольшие нативные приложения с CLI или TUI (то есть без GUI); например, утилиты Linux
  • когда требуется максимальная скорость или минимальное потребление CPU, памяти
  • системное программирование, прошивки и т. п.
  • нет работы с UTF и text-based форматами данных (json, yaml и т. п.)
  • требует понимания как именно работает программа. Если вы хотите быть senior девелопером, неважно какого языка, вы точно должны уметь на Си.

Вообще, Си - самый универсальный язык.

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

С++:

  • по возможностям сопоставим с Java, если не круче
  • очень высокий порог входа (в отличии от Java). Притом тут опыт значит больше чем знания. Здесь одно и то же можно сделать 100500 способами, и если выбрать неверно, то будет беда. То есть тут нужно иметь компетенцию аналогичную Си + Java и даже больше. Зато после этого любой язык будет осваиваться на раз.
  • оптимально по ресурсам - от отличии от Java, и как в Си
  • можно писать большие проекты, в том числе с GUI - в отличии от Си.

С++ - это очень серьёзный уровень.

Rust - не имел с ним дела, но как мне кажется, это С++ без некоторых его недостатков.

Golang - точно нужно знать если работаешь c Kubernetes. Либы для Kubernetes лучше всего представлены именно здесь. Например, helm, operator SDK и т. п. Шустрый, хорош для контейнеров. Но, как по мне, не лишён странностей: например, зря они отказались от исключений.

Всё вышеизложенное - моё личное ИМХО, не претендующее на вселенскую правду.

Исправление Kroz, :

Bash хорош когда:

  • у тебя много вызовов внешних команд
  • ты не работаешь со сложными структурами данных (массивы, структуры, json)
  • размер до 500 строк

Как правило это admin/devops задачи, хотя и не обязательно.

Если кажется что bash подходит, но мы выходим за рамки перечисленного выше, то имеет смысл посмотреть в сторону Python.

Python хорош когда:

  • написание кода не есть целью, а скорее средством решения другой задачи. Например devops, QA, data scientist и т. п.
  • нужно быстро сделать небольшой PoC перед тем, как ввязываться в нормальную разработку.
  • новичку нужно научиться программированию с нуля (раньше этот сегмент занимал Pascal).

Основное достоинство Python - там есть библиотеки на любой вкус.

Java - идеальный баланс возможностей и порога входа. Плюс большой спрос на рынке труда. Идеален для тех кто хочет быстро «войти в IT» и зарабатывать на жизнь программистом, и при этом не WEB. Но имеет ряд ограничений. Например, вселяет необоснованную веру фреймворки и автоматизации, которая разбивается когда возникают такие проблемы, как, например, утечки памяти (мне ж обещали что их не будет!) или когда друг знающий SQL предлагает решение которое работает 3 секунды, в то время как твое решение на Hibernate падает по timeout. Также не самый лучший выбор для контейнеров, ибо приложения получаются ресурсоёмкими и долго стартуют, в сравнении, например, с теми же C, C++, Golang.

С# - не имел с ним дела, но, как я понял, эквивалентен Java.

Если WEB - JavaScript, естественно в комбинации с HTML и CSS. Не знаю как с php, вроде как его сейчас принято хейтить, но пусть другие подскажут. Мне кажется имеет смысл хоть немного ознакомиться.

Си:

  • небольшие нативные приложения с CLI или TUI (то есть без GUI); например, утилиты Linux
  • когда требуется максимальная скорость или минимальное потребление CPU, памяти
  • системное программирование, прошивки и т. п.
  • нет работы с UTF и text-based форматами данных (json, yaml и т. п.)
  • требует понимания как именно работает программа. Если вы хотите быть senior девелопером, неважно какого языка, вы точно должны уметь на Си.

Вообще, Си - самый универсальный язык.

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

С++:

  • по возможностям сопоставим с Java, если не круче
  • очень высокий порог входа (в отличии от Java). Притом тут опыт значит больше чем знания. Здесь одно и то же можно сделать 100500 способами, и если выбрать неверно, то будет беда. То есть тут нужно иметь компетенцию аналогичную Си + Java и даже больше. Зато после этого любой язык будет осваиваться на раз.
  • оптимально по ресурсам - от отличии от Java, и как в Си
  • можно писать большие проекты, в том числе с GUI - в отличии от Си.

С++ - это очень серьёзный уровень.

Rust - не имел с ним дела, но как мне кажется, это С++ без некоторых его недостатков.

Golang - точно нужно знать если работаешь c Kubernetes. Либы для Kuberntes лучше всего представлены именно здесь. Например, helm, operator SDK и т. п. Шустрый, хорош для контейнеров. Но, как по мне, не лишён странностей: например, зря они отказались от исключений.

Всё вышеизложенное - моё личное ИМХО, не претендующее на вселенскую правду.

Исправление Kroz, :

Bash хорош когда:

  • у тебя много вызовов внешних команд
  • ты не работаешь со сложными структурами данных (массивы, структуры, json)
  • размер до 500 строк

Как правило это admin/devops задачи, хотя и не обязательно.

Если кажется что bash подходит, но мы выходим за рамки перечисленного выше, то имеет смысл посмотреть в сторону Python.

Python хорош когда:

  • написание кода не есть целью, а скорее средством решения другой задачи. Например devops, QA, data scientist и т. п.
  • нужно быстро сделать небольшой PoC перед тем, как ввязываться в нормальную разработку.
  • новичку нужно научиться программированию с нуля (раньше этот сегмент занимал Pascal).

Основное достоинство Python - там есть библиотеки на любой вкус.

Java - идеальный баланс возможностей и порога входа. Плюс большой спрос на рынке труда. Идеален для тех кто хочет быстро «войти в IT» и зарабатывать на жизнь программистом, и при этом не WEB. Но имеет ряд ограничений. Например, вселяет необоснованную веру фреймворки и автоматизации, которая разбивается когда возникают такие проблемы, как, например, утечки памяти (мне ж обещали что их не будет!) или когда друг знающий SQL предлагает решение которое работает 3 секунды, в то время как твое решение на Hibernate падает по timeout. Также не самый лучший выбор для контейнеров, ибо приложения получаются ресурсоёмкими и долго стартуют, в сравнении, например, с теми же C, C++, Golang.

С# - не имел с ним дела, но, как я понял, эквивалентен Java.

Если WEB - JavaScript, естественно в комбинации с HTML и CSS. Не знаю как с php, вроде как его сейчас принято хейтить, но пусть другие подскажут. Мне кажется имеет смысл хоть немного ознакомиться.

Си:

  • небольшие нативные приложения с CLI или TUI (то есть без GUI); например, утилиты Linux.
  • потенциально ресурсоёмкие приложения, когда требуется максимальная скорость или минимальное потребление CPU, памяти.
  • системное программирование, прошивки и т. п.
  • нет работы с UTF и text-based форматами данных (json, yaml и т. п.)
  • требует понимания как именно работает программа. Если вы хотите быть senior девелопером, неважно какого языка, вы точно должны уметь на Си.

Вообще, Си - самый универсальный язык.

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

С++:

  • по возможностям сопоставим с Java, если не круче
  • очень высокий порог входа (в отличии от Java). Притом тут опыт значит больше чем знания. Здесь одно и то же можно сделать 100500 способами, и если выбрать неверно, то будет беда. То есть тут нужно иметь компетенцию аналогичную Си + Java и даже больше. Зато после этого любой язык будет осваиваться на раз.
  • оптимально по ресурсам - от отличии от Java, и как в Си
  • можно писать большие проекты, в том числе с GUI - в отличии от Си.

С++ - это очень серьёзный уровень.

Rust - не имел с ним дела, но как мне кажется, это С++ без некоторых его недостатков.

Golang - точно нужно знать если работаешь c Kubernetes. Либы для Kuberntes лучше всего представлены именно здесь. Например, helm, operator SDK и т. п. Шустрый, хорош для контейнеров. Но, как по мне, не лишён странностей: например, зря они отказались от исключений.

Всё вышеизложенное - моё личное ИМХО, не претендующее на вселенскую правду.

Исправление Kroz, :

Bash хорош когда:

  • у тебя много вызовов внешних команд
  • ты не работаешь со сложными структурами данных (массивы, структуры, json)
  • размер до 500 строк

Как правило это admin/devops задачи, хотя и не обязательно.

Если кажется что bash подходит, но мы выходим за рамки перечисленного выше, то имеет смысл посмотреть в сторону Python.

Python хорош когда:

  • написание кода не есть целью, а скорее средством решения другой задачи. Например devops, QA, data scientist и т. п.
  • нужно быстро сделать небольшой PoC перед тем, как ввязываться в нормальную разработку.
  • новичку нужно научиться программированию с нуля (раньше этот сегмент занимал Pascal).

Java - идеальный баланс возможностей и порога входа. Плюс большой спрос на рынке труда. Идеален для тех кто хочет быстро «войти в IT» и зарабатывать на жизнь программистом, и при этом не WEB. Но имеет ряд ограничений. Например, вселяет необоснованную веру фреймворки и автоматизации, которая разбивается когда возникают такие проблемы, как, например, утечки памяти (мне ж обещали что их не будет!) или когда друг знающий SQL предлагает решение которое работает 3 секунды, в то время как твое решение на Hibernate падает по timeout. Также не самый лучший выбор для контейнеров, ибо приложения получаются ресурсоёмкими и долго стартуют, в сравнении, например, с теми же C, C++, Golang.

С# - не имел с ним дела, но, как я понял, эквивалентен Java.

Если WEB - JavaScript, естественно в комбинации с HTML и CSS. Не знаю как с php, вроде как его сейчас принято хейтить, но пусть другие подскажут. Мне кажется имеет смысл хоть немного ознакомиться.

Си:

  • небольшие нативные приложения с CLI или TUI (то есть без GUI); например, утилиты Linux.
  • потенциально ресурсоёмкие приложения, когда требуется максимальная скорость или минимальное потребление CPU, памяти.
  • системное программирование, прошивки и т. п.
  • нет работы с UTF и text-based форматами данных (json, yaml и т. п.)
  • требует понимания как именно работает программа. Если вы хотите быть senior девелопером, неважно какого языка, вы точно должны уметь на Си.

Вообще, Си - самый универсальный язык.

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

С++:

  • по возможностям сопоставим с Java, если не круче
  • очень высокий порог входа (в отличии от Java). Притом тут опыт значит больше чем знания. Здесь одно и то же можно сделать 100500 способами, и если выбрать неверно, то будет беда. То есть тут нужно иметь компетенцию аналогичную Си + Java и даже больше. Зато после этого любой язык будет осваиваться на раз.
  • оптимально по ресурсам - от отличии от Java, и как в Си
  • можно писать большие проекты, в том числе с GUI - в отличии от Си.

С++ - это очень серьёзный уровень.

Rust - не имел с ним дела, но как мне кажется, это С++ без некоторых его недостатков.

Golang - точно нужно знать если работаешь c Kubernetes. Либы для Kuberntes лучше всего представлены именно здесь. Например, helm, operator SDK и т. п. Шустрый, хорош для контейнеров. Но, как по мне, не лишён странностей: например, зря они отказались от исключений.

Всё вышеизложенное - моё личное ИМХО, не претендующее на вселенскую правду.

Исправление Kroz, :

Bash хорош когда:

  • у тебя много вызовов внешних команд
  • ты не работаешь со сложными структурами данных (массивы, структуры, json)
  • размер до 500 строк

Как правило это admin/devops задачи, хотя и не обязательно.

Если кажется что bash подходит, но мы выходим за рамки перечисленного выше, то имеет смысл посмотреть в сторону Python.

Python хорош когда:

  • написание кода не есть целью, а скорее средством решения другой задачи. Например devops, QA, data scientist и т. п.
  • нужно быстро сделать небольшой PoC перед тем, как ввязываться в нормальную разработку.
  • новичку нужно научиться программированию с нуля (раньше этот сегмент занимал Pascal).

Java - идеальный баланс возможностей и порога входа. Плюс большой спрос на рынке труда. Идеален для тех кто хочет быстро «войти в IT» и зарабатывать на жизнь программистом, и при этом не WEB. Но имеет ряд ограничений. Например, вселяет необоснованную веру фреймворки и автоматизации, которая разбивается когда возникают такие проблемы, как, например, утечки памяти (мне ж обещали что их не будет!) или когда друг знающий SQL предлагает решение которое работает 3 секунды, в то время как твое решение на Hibernate падает по timeout. Также не самый лучший выбор для контейнеров, ибо приложения получаются ресурсоёмкими и долго стартуют, в сравнении, например, с теми же C, C++, Golang.

С# - не имел с ним дела, но, как я понял, эквивалентен Java.

Если WEB - JavaScript, естественно в комбинации с HTML и CSS. Не знаю как с php, вроде как его сейчас принято хейтить, но пусть другие подскажут. Мне кажется имеет смысл хоть немного ознакомиться.

Си:

  • небольшие нативные приложения с CLI или TUI (то есть без GUI); например, утилиты Linux.
  • потенциально ресурсоёмкие приложения, когда требуется максимальная скорость или минимальное потребление CPU, памяти.
  • системное программирование, прошивки и т. п.
  • нет работы с UTF и text-based форматами данных (json, yaml и т. п.)
  • требует понимания как именно работает программа. Если вы хотите быть senior девелопером, неважно какого языка, вы точно должны уметь на Си.

Вообще, Си - самый универсальный язык.

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

С++:

  • по возможностям сопоставим с Java, если не круче
  • очень высокий порог входа (в отличии от Java). Притом тут опыт значит больше чем знания. Здесь одно и то же можно сделать 100500 способами, и если выбрать неверно, то будет беда. То есть тут нужно иметь компетенцию аналогичную Си + Java и даже больше. Зато после этого любой язык будет осваиваться на раз.
  • оптимально по ресурсам - от отличии от Java, и как в Си
  • можно писать большие проекты, в том числе с GUI - как в Java, и в отличии от Си.

С++ - это очень серьёзный уровень.

Rust - не имел с ним дела, но как мне кажется, это С++ без некоторых его недостатков.

Golang - точно нужно знать если работаешь c Kubernetes. Либы для Kuberntes лучше всего представлены именно здесь. Например, helm, operator SDK и т. п. Шустрый, хорош для контейнеров. Но, как по мне, не лишён странностей: например, зря они отказались от исключений.

Всё вышеизложенное - моё личное ИМХО, не претендующее на вселенскую правду.

Исправление Kroz, :

Bash хорош когда:

  • у тебя много вызовов внешних команд
  • ты не работаешь со сложными структурами данных (массивы, структуры, json)
  • размер до 500 строк

Как правило это admin/devops задачи, хотя и не обязательно.

Если кажется что bash подходит, но мы выходим за рамки перечисленного выше, то имеет смысл посмотреть в сторону Python.

Python хорош когда:

  • написание кода не есть целью, а скорее средством решения другой задачи. Например devops, QA, data scientist и т. п.
  • нужно быстро сделать небольшой PoC перед тем, как ввязываться в нормальную разработку.
  • новичку нужно научиться программированию с нуля (раньше этот сегмент занимал Pascal).

Java - идеальный баланс возможностей и порога входа. Плюс большой спрос на рынке труда. Идеален для тех кто хочет быстро «войти в IT» и зарабатывать на жизнь программистом, и при этом не WEB. Но имеет ряд ограничений. Например, вселяет необоснованную веру фреймворки и автоматизации, которая разбивается когда возникают такие проблемы, как, например, утечки памяти (мне ж обещали что их не будет!) или когда друг знающий SQL предлагает решение которое работает 3 секунды, в то время как твое решение на Hibernate падает по timeout. Также не самый лучший выбор для контейнеров, ибо приложения получаются ресурсоёмкими и долго стартуют, в сравнении, например, с теми же C, C++, Golang.

С# - не имел с ним дела, но, как я понял, эквивалентен Java.

Если WEB - JavaScript, естественно в комбинации с HTML и CSS. Не знаю как с php, вроде как его сейчас принято хейтить, но пусть другие подскажут. Мне кажется имеет смысл хоть немного ознакомиться.

Си:

  • небольшие нативные приложения с CLI или TUI (то есть без GUI); например, утилиты Linux.
  • потенциально ресурсоёмкие приложения, когда требуется максимальная скорость или минимальное потребление CPU, памяти.
  • системное программирование, прошивки и т. п.
  • нет работы с UTF и text-based форматами данных (json, yaml и т. п.)
  • требует понимания как именно работает программа. Если вы хотите быть senior девелопером, неважно какого языка, вы точно должны уметь на Си.

Вообще, Си - самый универсальный язык.

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

С++:

  • по возможностям сопоставим с Java
  • очень высокий порог входа (в отличии от Java). Притом тут опыт значит больше чем знания. Здесь одно и то же можно сделать 100500 способами, и если выбрать неверно, то будет беда. То есть тут нужно иметь компетенцию аналогичную Си + Java и даже больше. Зато после этого любой язык будет осваиваться на раз.
  • оптимально по ресурсам - от отличии от Java, и как в Си
  • можно писать большие проекты, в том числе с GUI - как в Java, и в отличии от Си.

С++ - это очень серьёзный уровень.

Rust - не имел с ним дела, но как мне кажется, это С++ без некоторых его недостатков.

Golang - точно нужно знать если работаешь c Kubernetes. Либы для Kuberntes лучше всего представлены именно здесь. Например, helm, operator SDK и т. п. Шустрый, хорош для контейнеров. Но, как по мне, не лишён странностей: например, зря они отказались от исключений.

Всё вышеизложенное - моё личное ИМХО, не претендующее на вселенскую правду.

Исправление Kroz, :

Bash хорош когда:

  • у тебя много вызовов внешних команд
  • ты не работаешь со сложными структурами данных (массивы, структуры, json)
  • размер до 500 строк

Как правило это admin/devops задачи, хотя и не обязательно.

Если кажется что bash подходит, но мы выходим за рамки перечисленного выше, то имеет смысл посмотреть в сторону Python.

Python хорош когда:

  • написание кода не есть целью, а скорее средством решения другой задачи. Например devops, QA, data scientist и т. п.
  • нужно быстро сделать небольшой PoC перед тем, как ввязываться в нормальную разработку.
  • новичку нужно научиться программированию с нуля (раньше этот сегмент занимал Pascal).

Java - идеальный баланс возможностей и порога входа. Плюс большой спрос на рынке труда. Идеален для тех кто хочет быстро «войти в IT» и зарабатывать на жизнь программистом, и при этом не WEB. Но имеет ряд ограничений. Например, вселяет необоснованную веру фреймворки и автоматизации, которая разбивается когда возникают такие проблемы, как, например, утечки памяти (мне ж обещали что их не будет!) или когда друг знающий SQL предлагает решение которое работает 3 секунды, в то время как твое решение на Hibernate падает по timeout. Также не самый лучший выбор для контейнеров, ибо приложения получаются ресурсоёмкими и долго стартуют, в сравнении, например, с теми же C, C++, Golang.

С# - не имел с ним дела, но ИМХО, аналогичен Java.

Если WEB - JavaScript, естественно в комбинации с HTML и CSS. Не знаю как с php, вроде как его сейчас принято хейтить, но пусть другие подскажут. Мне кажется имеет смысл хоть немного ознакомиться.

Си:

  • небольшие нативные приложения с CLI или TUI (то есть без GUI); например, утилиты Linux.
  • потенциально ресурсоёмкие приложения, когда требуется максимальная скорость или минимальное потребление CPU, памяти.
  • системное программирование, прошивки и т. п.
  • нет работы с UTF и text-based форматами данных (json, yaml и т. п.)
  • требует понимания как именно работает программа. Если вы хотите быть senior девелопером, неважно какого языка, вы точно должны уметь на Си.

Вообще, Си - самый универсальный язык.

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

С++:

  • по возможностям сопоставим с Java
  • очень высокий порог входа (в отличии от Java). Притом тут опыт значит больше чем знания. Здесь одно и то же можно сделать 100500 способами, и если выбрать неверно, то будет беда. То есть тут нужно иметь компетенцию аналогичную Си + Java и даже больше. Зато после этого любой язык будет осваиваться на раз.
  • оптимально по ресурсам - от отличии от Java, и как в Си
  • можно писать большие проекты, в том числе с GUI - как в Java, и в отличии от Си.

С++ - это очень серьёзный уровень.

Rust - не имел с ним дела, но как мне кажется, это С++ без некоторых его недостатков.

Golang - точно нужно знать если работаешь c Kubernetes. Либы для Kuberntes лучше всего представлены именно здесь. Например, helm, operator SDK и т. п. Шустрый, хорош для контейнеров. Но, как по мне, не лишён странностей: например, зря они отказались от исключений.

Всё вышеизложенное - моё личное ИМХО, не претендующее на вселенскую правду.

Исходная версия Kroz, :

Bash хорош когда:

  • у тебя много вызовов внешних команд
  • ты не работаешь со сложными структурами данных (массивы, структуры, json)
  • размер до 500 строк

Как правило это admin/devops задачи, хотя и не обязательно.

Если кажется что bash подходит, но мы выходим за рамки перечисленного выше, то имеет смысл посмотреть в сторону Python.

Python хорош когда:

  • написание кода не есть целью, а скорее средством решения другой задачи. Например devops, QA, data scientist и т. п.
  • нужно быстро сделать небольшой PoC перед тем, как ввязываться в нормальную разработку.
  • новичку нужно научиться программированию с нуля (раньше этот сегмент занимал Pascal).

Java - идеальный баланс возможностей и порога входа. Плюс большой спрос на рынке труда. Идеален для тех кто хочет быстро «войти в IT» и зарабатывать на жизнь программистом, и при этом не WEB. Но имеет ряд ограничений. Например, вселяет необоснованную веру фреймворки и автоматизации, которая разбивается когда возникают такие проблемы, как, например, утечки памяти (мне ж обещали что их не будет!) или когда друг знающий SQL предлагает решение которое работает 3 секунды, в то время как твое решение на Hibernate падает по timeout. Также не самый лучший решение для контейнеров, ибо приложения получаются большими и ресурсоёмкими, в сравнении, например, с C, C++, Golang.

С# - не имел с ним дела, но ИМХО, аналогичен Java.

Если WEB - JavaScript, естественно в комбинации с HTML и CSS. Не знаю как с php, вроде как его сейчас принято хейтить, но пусть другие подскажут. Мне кажется имеет смысл хоть немного ознакомиться.

Си:

  • небольшие нативные приложения с CLI или TUI (то есть без GUI); например, утилиты Linux.
  • потенциально ресурсоёмкие приложения, когда требуется максимальная скорость или минимальное потребление CPU, памяти.
  • системное программирование, прошивки и т. п.
  • нет работы с UTF и text-based форматами данных (json, yaml и т. п.)
  • требует понимания как именно работает программа. Если вы хотите быть senior девелопером, неважно какого языка, вы точно должны уметь на Си.

Вообще, Си - самый универсальный язык.

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

С++:

  • по возможностям сопоставим с Java
  • очень высокий порог входа (в отличии от Java). Притом тут опыт значит больше чем знания. Здесь одно и то же можно сделать 100500 способами, и если выбрать неверно, то будет беда. То есть тут нужно иметь компетенцию аналогичную Си + Java и даже больше. Зато после этого любой язык будет осваиваться на раз.
  • оптимально по ресурсам - от отличии от Java, и как в Си
  • можно писать большие проекты, в том числе с GUI - как в Java, и в отличии от Си.

С++ - это очень серьёзный уровень.

Rust - не имел с ним дела, но как мне кажется, это С++ без некоторых его недостатков.

Golang - точно нужно знать если работаешь c Kubernetes. Либы для Kuberntes лучше всего представлены именно здесь. Например, helm, operator SDK и т. п. Шустрый, хорош для контейнеров. Но, как по мне, не лишён странностей: например, зря они отказались от исключений.

Всё вышеизложенное - моё личное ИМХО, не претендующее на вселенскую правду.