Linked by R_T_F_M on Thu 13th Sep 2012 21:19 UTC
FreeBSD "For the past several years we've been working towards migrating from GCC to Clang/LLVM as our default compiler. We intend to ship FreeBSD 10.0 with Clang as the default compiler on i386 and amd64 platforms. To this end, we will make WITH_CLANG_IS_CC the default on i386 and amd64 platforms on November 4th."
Thread beginning with comment 535291
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[8]: C++
by boldingd on Sun 16th Sep 2012 03:06 UTC in reply to "RE[7]: C++"
boldingd
Member since:
2009-02-19

Since when? COM is all about libraries.

Your COM components can exist in separate executables, for more security. In this case a kind of local RPC is used.

However, most COM components are actually dynamic libraries that get dynamically linked with your application and follow the same format as C++ VMT. No communication going on here.

In Windows 8 COM got extended. Now with WinRT, COM makes use of .NET metadata for language interoperation.

If Metro succeeds, many Windows developers believe Win32 might be in the legacy path, with WinRT taking over the full spectrum of Windows APIs.


I'm not a Windows dev, but from what I'm reading, COM isn't a calling convention, it's an object serialization technique. You're right that it will help different OOP languages on the same underlying platform swap objects easily, but that's not the only problem I'm talking about. That works because COM support is pushed into the language run-time and underlying platform, and handled by the compiler; things change when one of the languages you're using isn't object-oriented or doesn't have usable COM bindings, like Fortran, Ada or C. Exactly the reason that C is the common language for multi-language linking is that C linking is the lowest common denominator among calling conventions, and that's still going to be true even on a platform that makes heavy use of COM in its low-level APIs.

C got developed, because of UNIX. If UNIX had failed in the market, most probably no one would be talking about C today.

Now UNIX got successfull, everyone wanted to have UNIX like utilities and C started to be ported everywhere.

The day, operating system vendors start using another language for systems programming, like Microsoft is doing now with Windows 8, then C starts to loose its influence in this area as well. At least in the desktop area.

If the operating system vendor does not offer you a C compiler, or C like APIs, then there is not a C interface to talk about.

You FORTRAN compiler, Ada compiler will need to support another type of interface.

This is nothing new. From what I know, there are no C like interfaces in mainframe systems, and you are forced to use whatever call convention the OS vendor decided upon.


"C exists because of Unix" is historically true, but you're missing the point. The reason that C came into existance was that B and BCPL - and pretty much all low-level system languages - sucked. C became popular because there was a huge need for a portable, high-level language that could still be used for low-level work. C and Unix answered real needs in the market that nobody else did; it's not as if they became popular by coincidence or clever marketing.

Reply Parent Score: 2

RE[9]: C++
by moondevil on Sun 16th Sep 2012 06:23 in reply to "RE[8]: C++"
moondevil Member since:
2005-07-08

Exactly the reason that C is the common language for multi-language linking is that C linking is the lowest common denominator among calling conventions, and that's still going to be true even on a platform that makes heavy use of COM in its low-level APIs.


You keep avoiding to answer how you would use C linkage if the operating system would no longer offer it.

"C exists because of Unix" is historically true, but you're missing the point. The reason that C came into existance was that B and BCPL - and pretty much all low-level system languages - sucked.


No, the UNIX authors did not like the other system programming languages. Algol 68 and PL/I were two that could have been used.

There were operating systems already written in those languages, so I doubt that they really sucked.

But I was not there, so my conclusion might be completely false.

Reply Parent Score: 2

RE[10]: C++
by boldingd on Mon 17th Sep 2012 08:19 in reply to "RE[9]: C++"
boldingd Member since:
2009-02-19

You keep avoiding to answer how you would use C linkage if the operating system would no longer offer it.


OK, here: modern Linux doesn't even strictly use C calling and linkage. The reason that C is used as the linking standard at the seams of some multi-language projects is that C is the lowest-common denominator between different function call models. C-style calling and linking is extremely simple; it can be mapped onto the actual calling-and-linking in use on any platform, and for almost any language, there is a subset of that language that can be mapped onto C calling conventions.

Using COM for object interchange and leaving the rest up to the compiler is compute until you want to link in a module written in a non-OOP language or compiled by a different compiler suite. Then you're back to a C-style interface and C calling conventions. Not because it's the platform's normal calling and linking conventions, but because it's a patch of common ground between the function-call models used in different compiled languages.

Which isn't even to say that all multi-language projects will just do everything as extern C and call it a day; for some languages and platforms, other techniques (like COM interchange) will be better. But C as the basic, universal model of calling a function will never go away completely, and your eager and self-assured predictions of C's decline and demise in the coming years are comically premature.

No, the UNIX authors did not like the other system programming languages. Algol 68 and PL/I were two that could have been used.

There were operating systems already written in those languages, so I doubt that they really sucked.

But I was not there, so my conclusion might be completely false.


Yeah, I'm going to stick with Thompson and Richie's contemporary assessment of the available languages, especially given that Richie was dissatisfied enough with his existing alternatives to create a whole new language.

Also, C had plenty of its own selling-points. I've written C and FORTRAN, and I can tell you which I'd rather use for a new project. C was quicker and cleaner than anything it was competing against, and its portability was another major asset (FORTRAN compilers had a tendency to have syntax and operators specific to the platform they where designed for).

I don't know why Algol and PL/I never gained traction. I've only heard PL/I mentioned as a historical footnote, but I don't know how it stacked up against it's contemporaries. As for Algol, bear in mind that it had already been released and largely failed in the market (yes it was used, yes it was still around, no, it had not displaced FORTRAN) when C got out into the wild in the late 70's.

NB that I am just under 30 and was not around for any of the above. I just payed attention in Programming Languages. ^.^

Reply Parent Score: 2