It seems like we still resort to C or C++ when we are going to do "serious" systems programming. We have some small languages which try to come up with new stuff inside systems programming such as Go and D (I have had a little experience with D and I like it a lot so far), but those aren't very widely used (Go is from 2009, so it shouldn't be that surprising but D is from 2001). There are non-language-technical reasons why these aren't so popular, such as there aren't many jobs, frameworks etc., but exclude such things and instead focus on what features should the next generation systems programming language come with?
What do you, as a systems developer, lack in the "traditional systems programming languages" (that is C, C++ etc.)? Why do these things matter now in today's world (concurrency etc. would matter, I guess)?
2 Answers 2
The next proposed systems language should feature wide adoption.
Seriously, you haven't demonstrated anything that Go lacks besides users. Most languages are chosen not because of the language itself, but because of the libraries, tools, and support available. There needs to be an ecosystem for a language to have a chance at adoption.
I've also stated before that any new language can only succeed if it capitalizes on an emerging frontier in computing. I doubt systems programming is an emerging frontier, which may explain why D never experienced the success it may have had a few decades earlier.
I hate to be a pessimist when it comes to new programming languages, but I'm afraid that no new systems language will ever be successful.
-
4Agreed! The only reason really that C and C++ would be replaced would be if they somehow weren't doing their job any more. Even if another language were to come along that did the work better most places wouldn't want to make the switch it would take to retrain, redevelop, and essentially start from scratch on almost everything.Kenneth– Kenneth03/24/2011 19:36:17Commented Mar 24, 2011 at 19:36
-
1@Kenneth C++ took off because, at the time, it was "C with classes"; ie, it was already C (and it came from C creator AT&T), but with the added benefit of object-oriented programming, which was an emerging frontier at the time. In contrast, Objective-C is rising only now because of the iPhone, which is an emerging frontier in its own right.chrisaycock– chrisaycock03/24/2011 19:43:05Commented Mar 24, 2011 at 19:43
-
2@chrisaycock: so now all we need is "C++ with
$something_cool
". What should$something_cool
be? ;)FrustratedWithFormsDesigner– FrustratedWithFormsDesigner03/24/2011 19:46:16Commented Mar 24, 2011 at 19:46 -
@Frustrated That would be C++0x. I got the impression the OP isn't asking about gradual additions to an existing language, but about a whole new language (hence citing D and Go). C++0x will probably gain traction once the compiler vendors push it. Go and D will never gain traction because no one's current pain is great enough. (Ie, the OP was proposing a hose for someone who isn't on fire.)chrisaycock– chrisaycock03/24/2011 19:54:25Commented Mar 24, 2011 at 19:54
-
@chrisaycock As I said I agree completelyKenneth– Kenneth03/24/2011 20:00:00Commented Mar 24, 2011 at 20:00
The problem encountered when creating a new systems programming language is that computer architecture has not changed that much since the early fifties. Granted, processors have gotten a lot faster and main memory sizes have grown to levels that industry pioneers could have only dreamed about sixty years ago, but modern computers are still based on an architecture that was first introduced in the 1945 by John von Neumann.
-
Well, C took off because it was the language of Unix. There were tons of other languages around long before C: PL/I, Fortran, Cobol, Lisp, APL, etc. The only reason anyone ever bothered with C in the first place was to use Unix.chrisaycock– chrisaycock03/24/2011 20:22:43Commented Mar 24, 2011 at 20:22
-
The primary difference between the languages that you mentioned and C is that C was designed specifically for system-level software development. Before C, most system-level software was developed in assembly language. Furthermore, UNIX may have introduced the world to C, but Ron Cain, CP/M, and MS-DOS made it famous. C was one of the first compiled languages to have acceptable performance on 8-bit and 16-bit processors.bit-twiddler– bit-twiddler03/24/2011 20:48:35Commented Mar 24, 2011 at 20:48
-
When C was first taking off, there were other system implementation languages (SILs). A friend of mine was working in Cybol for Control Data's Cyber series of computers. It would be interesting for somebody to look at the old SILs and try to figure out why C won so big.David Thornley– David Thornley03/24/2011 21:57:31Commented Mar 24, 2011 at 21:57
-
@David: I think you meant to say CYBIL. CYBIL did not hit the market until the eighties. I know for a fact that CDC's NOS operating system was written in primarily in COMPASS assembly language because I spent time with a pair of CDC 7600s and a pair of Cyber 170/750s. DEC also had BLISS, but RSX-11 and VMS were both written primarily in assembly language. TRIPOS was written in BCPL. However, C was the first compiled language to gain serious traction in the world of systems software development because it had the right mix of high-level and low-level language constructs.bit-twiddler– bit-twiddler03/24/2011 22:40:14Commented Mar 24, 2011 at 22:40
-
(cont) Ron Cain is the person who should be credited with making C ubiquitous. His Small-C compiler is what kick-started the use of C on microcomputers. The Small-C compiler was written in the Small-C dialect; therefore, the compiler could compile itself.bit-twiddler– bit-twiddler03/24/2011 22:41:39Commented Mar 24, 2011 at 22:41
Explore related questions
See similar questions with these tags.
thread*
pointer passed which allows any function to cheaply get access to thread-local storage, lock-free memory allocation/freeing, etc. And finally something like scope guards... not destructors because we don't want destructors in C (would change the whole type system so that it's no longer safe to do things likememcpy
), but scope guards...