История изменений
Исправление 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 и т. п. Шустрый, хорош для контейнеров. Но, как по мне, не лишён странностей: например, зря они отказались от исключений.
Всё вышеизложенное - моё личное ИМХО, не претендующее на вселенскую правду.