Другие языки программирования и технологии
Java или же C?
Что лучше,для простого,но хорошего программирования.Также хотел спросить: На Java можно создавать низкоуровневые программы например ОС?
C - язык, созданный университетскими хакерами для себя, с упором на мощь и гибкость.
Java - язык, созданный для посредственных программистов, работающих в корпорациях, с упором на то, чтобы они не отстрелили себе ноги.
Поэтому C популярен сам по себе, а Java гальванизируется теми же корпорациями, причём некоторые из них уже отказались от самого языка, но не отказались от исполняющей среды JVM (используют Kotlin, Scala, Clojure и др. языки на JVM).
На C написаны операционные системы, в силу этого на нём пишут драйвера и прочие низкоуровневые вещи. Он представляет гарантии по расположению полей в памяти и по накладным расходам на скомпилированный код. Т.к. это компилируемый язык, на нём также пишут алгоритмы, которые должны выполняться быстро (речь именно о константном факторе, не об асимптотике, которую можно эффективно писать на любом языке). Системы реального времени (хард реалтайм) пишут на C и др. компилируемых языках.
На Java никогда не пишут низкоуровневые программы или хард реалтайм, но в настоящее время уже свободно пишут высокопроизводительные системы, расчёты, где важна скорость исполнения (современный JIT нередко обгоняет по производительности машинного кода и статические компиляторы, и самих программистов), софт реалтайм. Также пишут ПО, которое не страшно доверить выпускникам видеокурсов и колледжей: тонкие интеграционные прокладки между системами, логику обработки бизнес-процессов на готовом движке (где каждый шаг сводится к паре-тройке интеграционных вызовов и перекладке полей из структуры в другую структуру). Одно время писали "толстых" клиентов на свинге, но сейчас везде браузеры и веб, так что это неактуально.
Не лишним будет отметить, что люди, принимающие решения по выбору стека, часто путают алгоритмические оптимизации с низкоуровневыми, поэтому распространённой многолетней традицией, является, например, выбор C для потоковой обработки видео, в которой основная проблема - дефицит алгоритмов, а не скорости исполнения отдельных операторов языка. Но в этой реальности приходится жить.
И C, и Java позволяют писать высокоуровневый код с применением CSP Хоара, лямбда-исчисления, комбинаторной логики и др. математики, которую не во всяком ВУЗе преподают. Разница в том, что для C такого инструментария нет, и разработчику придётся писать всё с нуля (погугли "десятое правило Гринспена"), а для Java он процентов на 20 реализован в языке и стандартных компонентах (Java-комитет активно сопротивляется введению таких вещей, а если вынужденно вносит их в язык, то максимально кривым образом из всех возможных). Но как я выше указал, для JVM существуют другие языки, код на которых свободно интегрируется с Java-кодом.
Рынок вакансий для Java шире, чем для C, но эта широта обманчива: более 90% позиций Java-разработчиков - это написание рутинного кода в системах, где неважен технологический результат. А это - и общество коллег-быдлокодеров, и дурные правила игры ("как обойти сонар", "почему ты закрыл всего 19 задачек в Жире, а твой сосед Вася - 22", "как заставить OpenAPI сгенерить то, что мне нужно, если гугл ничего по этой проблеме не выдаёт" и прочие квесты, не имеющие отношения к инженерной деятельности), и с каждым годом ухудшающиеся перспективы когда-либо вылезти из этой колеи и найти нормальную работу. На C искать хорошие вакансии проще, т.к. меньше шлака. Соответственно, и требования к среднему C-разработчику - выше: нужно разбираться в алгоритмах и в том, как устроена машина, и в том как на языке низкого уровня реализовать конструкции высокого уровня, чтобы не утопить разрабатываемый продукт в Тьюринговской трясине.
Java - язык, созданный для посредственных программистов, работающих в корпорациях, с упором на то, чтобы они не отстрелили себе ноги.
Поэтому C популярен сам по себе, а Java гальванизируется теми же корпорациями, причём некоторые из них уже отказались от самого языка, но не отказались от исполняющей среды JVM (используют Kotlin, Scala, Clojure и др. языки на JVM).
На C написаны операционные системы, в силу этого на нём пишут драйвера и прочие низкоуровневые вещи. Он представляет гарантии по расположению полей в памяти и по накладным расходам на скомпилированный код. Т.к. это компилируемый язык, на нём также пишут алгоритмы, которые должны выполняться быстро (речь именно о константном факторе, не об асимптотике, которую можно эффективно писать на любом языке). Системы реального времени (хард реалтайм) пишут на C и др. компилируемых языках.
На Java никогда не пишут низкоуровневые программы или хард реалтайм, но в настоящее время уже свободно пишут высокопроизводительные системы, расчёты, где важна скорость исполнения (современный JIT нередко обгоняет по производительности машинного кода и статические компиляторы, и самих программистов), софт реалтайм. Также пишут ПО, которое не страшно доверить выпускникам видеокурсов и колледжей: тонкие интеграционные прокладки между системами, логику обработки бизнес-процессов на готовом движке (где каждый шаг сводится к паре-тройке интеграционных вызовов и перекладке полей из структуры в другую структуру). Одно время писали "толстых" клиентов на свинге, но сейчас везде браузеры и веб, так что это неактуально.
Не лишним будет отметить, что люди, принимающие решения по выбору стека, часто путают алгоритмические оптимизации с низкоуровневыми, поэтому распространённой многолетней традицией, является, например, выбор C для потоковой обработки видео, в которой основная проблема - дефицит алгоритмов, а не скорости исполнения отдельных операторов языка. Но в этой реальности приходится жить.
И C, и Java позволяют писать высокоуровневый код с применением CSP Хоара, лямбда-исчисления, комбинаторной логики и др. математики, которую не во всяком ВУЗе преподают. Разница в том, что для C такого инструментария нет, и разработчику придётся писать всё с нуля (погугли "десятое правило Гринспена"), а для Java он процентов на 20 реализован в языке и стандартных компонентах (Java-комитет активно сопротивляется введению таких вещей, а если вынужденно вносит их в язык, то максимально кривым образом из всех возможных). Но как я выше указал, для JVM существуют другие языки, код на которых свободно интегрируется с Java-кодом.
Рынок вакансий для Java шире, чем для C, но эта широта обманчива: более 90% позиций Java-разработчиков - это написание рутинного кода в системах, где неважен технологический результат. А это - и общество коллег-быдлокодеров, и дурные правила игры ("как обойти сонар", "почему ты закрыл всего 19 задачек в Жире, а твой сосед Вася - 22", "как заставить OpenAPI сгенерить то, что мне нужно, если гугл ничего по этой проблеме не выдаёт" и прочие квесты, не имеющие отношения к инженерной деятельности), и с каждым годом ухудшающиеся перспективы когда-либо вылезти из этой колеи и найти нормальную работу. На C искать хорошие вакансии проще, т.к. меньше шлака. Соответственно, и требования к среднему C-разработчику - выше: нужно разбираться в алгоритмах и в том, как устроена машина, и в том как на языке низкого уровня реализовать конструкции высокого уровня, чтобы не утопить разрабатываемый продукт в Тьюринговской трясине.
" простого,но хорошего программирования" не бывает, как коня в вакууме. Постарайтесь выражать мысль конкретнее что ли. Каждый их этих синтаксисов имеет и будет иметь в среднесрочной перспективе свой вес, а вот что Вас интересует надо спрашивать у себя
Конечно С , Java уже давно уходит в закат.
Сергей Замешаев
Так C старше Java.И почему уходит,если у него все же есть популярность?
Сергей Maestro
Что там куда уходит вопрос праздный. Скорее их роль размывается
Ты хочешь, чтобы мы за тебя это решили?
Java, потому что его используют для разработки сайтов и приложений
Сергей Замешаев
Можете написать более подробный ответ,почему вы выбрали именно Java?
Похожие вопросы
- Перетаскивание Java-программы и C++-программы с Windows на Linux, пара вопросов
- Не могу выбрать между C# и Java
- C# или Java, что выбрать?
- Написать игру на Java или C.
- Я программист java,c++,c#,cи, нужен ли я кому нибудь?
- Почему до сих пор кто-то учит C, Java, C++ и JavaScript?
- Какой язык язык лучше C# или Java?
- Насколько сложены PHP, JavaScript, Java, C++?
- Пожалуйста! Помогите выбрать: java или c
- Хочу программировать с чего начать Мне 19 лет Small basic-C-C sharp-Python-Java-MySQL