Существуют ли альтернативы C?

С++ часто рекламируется как эволюция C, а это не так. Чтобы провести аналогию с языком, который я ищу:

  • Perl, Python, Ruby, Groovy
  • С++, D
  • Java, С#
  • C, Fortran, Modula-2?, Pascal?, Go?, Rust?

Предлагаются ли какие-либо предлагаемые или внедренные языки в одну и ту же (огромную) нишу, как C, с целью быть альтернативой, сохраняя при этом всю применимость к ОС, высокую производительность, встроенную и другие роли?

Ответ 1

Возможно, Google Перейти на язык будет. По крайней мере, я надеюсь, что команда Google Go надеется, что это станет.

Ответ 2

Я думаю, что проблема с этим вопросом и последующим обсуждением заключается в том, что очень редко используются языки, предназначенные для замены других. Конечно, когда вы пытались разъяснить и защищать некоторые из ваших группировок, они имеют схожие наборы функций или выполняют подобные вещи, но, в конечном счете, я не думаю, что кто-то собирается сесть и написать язык, предназначенный для замены другого. Скорее всего, разработчики языка хотят достичь цели и будут выбирать аспекты определенных языков, которые уже делают это. Например, взгляните на Go, который предназначен для того, чтобы немного ускорить процесс программирования систем сверхвысокой производительности, возможно, конкурирует с C немного. Однако, если вы посмотрите FAQ в миссии проекта, они не хотят заменять C, а просто увеличивают его и решают проблемы, с которыми он сталкивается (например, управление зависимостями, чтобы назвать одно) (так что, возможно, это ответ вам "ищу" ).

Итак, действительно ли что-то является эволюцией чего-то другого, полностью зависит от перспективы, с которой вы исследуете и оцениваете эволюцию. С++ можно рассматривать как эволюцию C, поскольку он ввел новый набор функций (программирование OO), которые многие считают шагом вперед в проектировании систем, сохраняя при этом аналогичный синтаксис и совместимость с кодом C. Тем не менее, это не совсем эволюция, потому что в ней также отсутствуют некоторые функции, которые делают C языком, используемым сегодня сегодня. Ни один язык не может делать все (кроме, может быть, Lisp;-) Я ребенок, я ребенок) и никогда не будет. Ни один язык не имеет компромиссов. Абстракции, которые упрощают веб-разработку, - это те же абстракции, которые делают невозможным разработку систем низкого уровня (или непомерно трудно). Поэтому я действительно думаю, что трудно сказать, что X - это эволюция Y. Скорее я бы сказал: "Я хочу сделать W, и я знаю, что могу использовать язык X, но есть ли что-то, что лучше меняет мои цели A, B и C?" К сожалению, языки программирования не являются достаточно черными и белыми, чтобы делать широкие заявления вроде этого и, как и каждое решение, которое вы принимаете при программировании, о компромиссах.

Ответ 3

На следующем рисунке будет сказано больше, чем я мог бы написать:

picture

Ответ 4

Pascal был бы эквивалентным, так же как Modula-2.

Mozilla также имеет новый язык под названием Rust, это действительно хороший современный язык, ориентированный на те же приложения, что и C/С++

https://www.rust-lang.org/

Ответ 5

C действительно имеет более чем одну нишу. Для низкоуровневых системных программ C заменяет языки ассемблера, специфичные для платформы, и ничто не бросает вызов C в этом домене. С++ был бы единственным возможным кандидатом, там (BeOS, многие драйверы устройств и т.д.).

C был/используется также для высокопроизводительного численного кода. В этой области FORTRAN все еще имеет край, и есть много других претендентов (С++, Matlab, Numpy, Fortress, Scala).

На некотором уровне C является самым низким общим знаменателем, который имеет кросс-платформенную переносимость.