2010-07-27 2 views
11

C++ часто рекламируется как эволюция C, а это не так. Для того, чтобы провести аналогию для подобного языка Я ищу:Есть ли альтернативы C?

  • Perl, Python, Ruby, Groovy
  • C++, D
  • Java, C#
  • C, Fortran, Modula-2 ?, Паскаль ?, Го?, Ржавчина?

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

+11

Куда вы придумали эти «эволюции»? – jtbandes

+5

По крайней мере часть вашего помещения неисправна. Python не является и никогда не был чем-то отдаленным, как эволюция Perl. Фактически, он почти такой же старый, как Perl. –

+10

* Java -> C# *? В самом деле? – detly

ответ

5

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

+2

Да, кажется, это самая близкая вещь, о которой я слышал о потомке C. Единственное сомнение заключается в его роли во встроенном пространстве. –

+2

Я с трудом могу поверить, что язык с автоматическим управлением памятью может сидеть бок о бок с C. На самом деле я не верю. «Бок о бок» я не имею в виду производительность.Я имею в виду семантику. –

+0

Если это удастся, я думаю, что Google может дать неплохой прогресс для GO в встроенном пространстве. ARM уже есть. – Incognito

5

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

picture

+3

Более современные языки на 2500 языках http://www.levenez.com/lang/ – stacker

+0

Обратите внимание, что «потомками» C являются C++, C# и Obj-C. Не языки, которые мне нужны. –

+0

@Matt: вы не сказали *, что * вы после. Все, что вы сказали, это «Я хочу, чтобы что-то делало то, что c делает, а не c». * – dmckee

4

Паскаль был бы эквивалент, так бы Modula-2.

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

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

+0

Да, они кажутся пятнами на одной и той же парадигме. –

3

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

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

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

6

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

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

+0

Я уже знаю это. Go является перспективным как альтернатива C. –

+1

На самом деле, мы * * сели и разработали язык, специально предназначенный для замены C. Я считаю, что есть другие, которые разработали с такими же намерениями. Наша версия является модификацией Modula-2, идеальной базой для замены C, другие начали с самого C. Но да, люди понимают, что C является основной частью проблемы и ее нужно будет заменить. Не по динамическим сборкам мусора, а по чем-то, что может заменить все или большую часть того, что C делает для системной реализации, в идеале typafe. – trijezdci

+0

«Никто не может сделать все ...» Я не могу согласиться с этим. Что касается компьютеров, насколько я знаю, вы можете делать все с помощью сборки, C или C++. – Andrew

Смежные вопросы