C in Danger (and thus Higher-Level Languages?)
jakob.engbloms.se
jakob.engbloms.se
(1) C is in danger of actually dying, as in: going away (2) C is in danger of losing some share of application development.
I think #1 is just not true. Almost every close-to-metal programming uses C. Yes, it is true that not many developers do this close-to-metal programming (which would include kernel development, driver development and embedded development), however, this close-to-metal development is very, very important, because it is the foundation to all application development. And at the moment, C and C++ are the foundation to the close-to-metal programming. Thus, C and C++ are pretty much the foundation of application development. Maybe hidden, but certainly alive and important.
On the other hand, C has already lost a lot of shares in application development, if you define application as some custom buissness application, maybe web-based, maybe gui-based and I certainly agree that C will lose more shares in this area. And I have to say, this is a good thing. The focus for C is just different from the focus one needs for such application development, because for higher level application development, maintainability and extensibility are more important than using every cpu cycle and every memory byte to the most effect.
tl;dr: In my opinion, C is a small important layer in the stack and not in danger in the area C was made for.
Maybe this is true on android, but iPhone is a great platform for c programmers.
void *result = objc_msgSend(target, sel_registerName("message:"), argument);
This would enable languages/environments like Scheme and Mono to operate on the iPhone.
C is going to be there universally until the cpu hardware changes dramatically, such that it maps one to one to some other language. That's where the universality is coming from. C maps directly to what cpu understands.
The write-once, run-anywhere ideals have only applicationst hat work beautifully on the original platform they were developed on, and poorly on others (eclipse on mac, skype (before they re-wrote it for mac), itunes on windows, etc.)
I'm all for nativeness.
Pascal usage greater than actionscript? Delphi on the rise and javascript dropping? Python dropping? Go already larger than actionscript?
I don't buy any of that.
I suppose the easiest version is a Blub that does only what they all can easily do language-wise and mobile-API-wise.
edit: HA http://xmlvm.org/overview/ I just tasted some throw-up.
But I was very disappointed when I checked out the Android SDK the other day and noted that it required me to use Java.
how many people do you know who write kernel (or other low-level OS code)? i think there are now more and more devs writing apps than systems code, which means a rise in the use of higher-level languages (just my wild speculation)
Until Apple, Microsoft, Google and others start writing their operating systems in Java/C# instead of C, I wouldn't worry.
Lisp machines, I think, proved the concept that, if your CPU is clever enough, even the low-level code can retain a high-level of abstraction.
Sadly, I have none to play with. Someday I intend to correct that.
"The Technical Strategy Incubation team is looking for a senior software architect to lead development of the Kernel for a novel operating system. Because this is an incubation, the candidate must have a high tolerance for uncertainty. Experience in startups is a plus.
Our Kernel is a non-traditional design divided between a native C++ microKernel and additional managed C# operating system functionality which is injected into each independent hardware address space. The system uses lightweight isolation and capabilities as the basis for security, is built from the ground up for safe concurrency, and enforces unusual principles like "no unsafe shared memory." ..."
Keep in mind the runtimes those languages require is written in some flavor of C. Even with Squeak, where the VM is written in a subset of Smalltalk, it's transformed into C and then compiled to run natively.
Having said that, I have, long, long ago, designed a stack-based architecture that would run something very close to Forth. Got me an A+.
He specifically mentioned the difficulty with things like erland, couchdb, and firefox.