views:

325

answers:

6

C++ is often touted as the evolution of C, which it is not. To draw an analogy for the kind of language I'm looking for:

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

Do any proposed, or implemented languages fit in the same (enormous) niche as C, with the intention of being an alternative, while maintaining all the applicability to OS, high performance, embedded and other roles?

[community wiki candidate]

+16  A: 

Perfection has no room to evolve :)

efritz
And that is called stagnation. Do we really want that? ;)
PeterK
@PeterK - actually, it's called "optimisation" :P
detly
While it's amusing, and comforting to see other people also love C. I really am interested in knowing of any similar languages :)
Matt Joiner
Depends on your environment - a stagnated shark beats your highly evolved little furry monkey butt if the environment happens to be the ocean
Martin Beckett
stacker
Also I believe they got operator precedence wrong, and I think I read they'd change that too.
Matt Joiner
+1 for greatest truth and justice.
Dacav
R..
+3  A: 

A picture say more than I want to write

stacker
More current with 2500 languages http://www.levenez.com/lang/
stacker
Notice the "descendents" of C are C++, C# and Obj-C. Not the languages I'm after.
Matt Joiner
@Matt: you haven't said *what* you are after. All you've said is *"I want something that does what c does but isn't c."*
dmckee
+1  A: 

Pascal would be an equivalent, so would Modula-2.

Keith Nicholas
Yes, these do seem to be spot on the same paradigm.
Matt Joiner
+2  A: 

C has more than one niche, really. For low-level systems programming, C replaced platform-specific assembly languages, and nothing has really challenged C in that domain. C++ would be the only other possible candidate, there (BeOS, many device drivers, etc.).

C was/is also used a lot for high performance numerical code. In that domain, FORTRAN still has the edge, and there are many other challengers (C++, Matlab, Numpy, Fortress, Scala).

At some level, C is the lowest common denominator that has cross-platform portability.

Drew Hall
+4  A: 

May be Google GO will be at least Google team believes that it would be ...

Incognito
Yeah Go does seem to be the closest thing I've heard of to a C descendent. The only doubt is its role in embedded space.
Matt Joiner
I can hardly believe a language with automatic memory management can sit side by side with C. In fact, I don't believe it. By "side by side" I don't mean performance. I mean semantics.
trinithis
If it will succeed I think Google can give quite good progress for GO in embedded space also. ARM is there already.
Incognito
@Matt, or in any space.
Michael Aaron Safyan
@trinithis What makes you not to believe it ? You can have garbage collector for C/C++. Of course it is not supported in runtime, but you can have something kind of that.
Incognito
@Michael Aaron Safyan What you mean in any space?
Incognito
@trinithis: Good point, automatic garbage collection is very un-Clike
Matt Joiner
@trinithis, @Matt: That is why we are talking about evolution. It must not be exactly the same.
Incognito
@Incognito: Then just use Java. Otherwise use Ada.
Longpoke
@Longpoke can't get your point. What you want to say?
Incognito
@Incognito: If you want a low level language that's evolved, use Java, but it has garbage collection which introduces nondeterminism, although this a simple fix, just use the real time extensions. Otherwise you can just use Ada which has no GC by default, is much safer than C, and just as fast. In any case, these two languages are evolved compared to C. C also has no safety, which is the only "advantage" of C, and I think that's what OP is trying to find, another language that is nothing more than an abstract assembler (probably because C just sucks.)
Longpoke
@Icognito, I meant that Matt's concern about Go in the embedded space is somewhat premature as it still has to prove itself in the server, desktop, laptop space... not in terms of capability -- it is definitely a powerful language -- but in terms of traction and popularity.
Michael Aaron Safyan
@Michael OK, I get it. IMHO it will easily get up on server side... as for desktop I am a little suspicious.
Incognito
+3  A: 

I think the problem with this question and subsequent discussion is that very rarely are languages intended to replace others. Sure, as you attempted to clarify and defend some of your groupings, they share similar feature sets or accomplish similar things, but ultimately, I don't think anybody is going to sit down and write a language that is designed to replace another. What is far more likely is that language designers want to accomplish a goal and will pick and choose aspects of certain languages that already do that. For instance, take a look at Go which is designed to up the ante a bit with regards to ultra-high performance systems programming which, arguably, competes with C a bit. However, if you look at the FAQ on the mission of the project, they aren't seeking to replace C, but simply augment it and address issues it faces (such as dependency management to name one) (so perhaps this is the answer you're looking for).

So really, whether something is an evolution of something else, depends entirely on the perspective from which you examine and evaluate the evolution. C++ can be considered an evolution of C because it introduced a new feature set (OO programming) that many consider a step forward in systems design while still retaining a similar syntax and compatibility with C code. However, it is not entirely an evolution because it is also missing some features that make C a language currently used today. No one language can do everything (except for maybe Lisp ;-) I kid, I kid) and never will. The abstractions that make web development easy are the same abstractions that make low-level systems development impossible. So I really think it's hard to say X is an evolution of Y. Rather, I would say "I want to do W and I know I can use language X but is there something that accomplishes my goals of A, B, and C better?" Unfortunately programming languages aren't black and white enough to make sweeping statements like that and like every decision you make in programming, it's about trade-offs.

Chris Thompson
I already know this. Go is promising as a C alternative.
Matt Joiner