# How do you pronounce C\* (programming language)?

**URL:** <https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910>\
**Category:** Factual Questions\
**Created:** [March 2, 2018, 6:36pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910 "2018-03-02T18:36:42Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![RollOutTheBarrel](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/rolloutthebarrel/32/1649_2.png) [@RollOutTheBarrel](https://boards.straightdope.com/u/RollOutTheBarrel)\
**Post date:** [March 2, 2018, 6:36pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/1 "2018-03-02T18:36:42Z")

</div>

I was browsing [Wikipedia’s list of C family programming languages](https://en.wikipedia.org/wiki/List_of_C-family_programming_languages) when I saw one I hadn’t heard of before: C\*. How is it pronounced? I know C# is pronounced “C sharp” so I don’t want to make any assumptions about how C\* is pronounced.

---

<div class="post-metadata">

**Author:** ![Mijin](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/mijin/32/9369_2.png) [@Mijin](https://boards.straightdope.com/u/Mijin)\
**Post date:** [March 2, 2018, 6:46pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/2 "2018-03-02T18:46:57Z")

</div>

I couldn’t find answer either, but I know an MRI of type T2\* is pronounced “T2 _star_”.  
And generally a raised asterisk in maths is pronounced _star_.

---

<div class="post-metadata">

**Author:** ![Mijin](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/mijin/32/9369_2.png) [@Mijin](https://boards.straightdope.com/u/Mijin)\
**Post date:** [March 2, 2018, 6:51pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/3 "2018-03-02T18:51:51Z")

</div>

…strangely even the official docs don’t seem to mention what the pronunciation is, but I notice the source files are **.cs**

---

<div class="post-metadata">

**Author:** ![Thudlow\_Boink](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/thudlow_boink/32/320_2.png) [@Thudlow\_Boink](https://boards.straightdope.com/u/Thudlow_Boink)\
**Post date:** [March 2, 2018, 6:56pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/4 "2018-03-02T18:56:39Z")

</div>

> [@Mijin](#):
>
> And generally a raised asterisk in maths is pronounced _star_.

Yes. I don’t know the official answer, but because of this, “C star” would be my first guess. Maybe my second and third guesses, too. My fourth guess would be “C splat.” My nineteenth guess would be “Starfish,” since some people call them [del]C\*'s[/del] sea stars.

---

<div class="post-metadata">

**Author:** ![Gus\_Gusterson](https://avatars.discourse-cdn.com/v4/letter/g/85f322/32.png) [@Gus\_Gusterson](https://boards.straightdope.com/u/Gus_Gusterson)\
**Post date:** [March 2, 2018, 6:57pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/5 "2018-03-02T18:57:32Z")

</div>

The C\* Programming Guide (linked from the Wikipedia article as “C\* Programming Manual”) says:

> [@](#):
>
> Chapter 1
> 
> What Is C\*?
> 
> C\* (pronounced “sea-star”) is an extension of the C programming language…

The file itself is named CStarProgrammingGuide.pdf.

---

<div class="post-metadata">

**Author:** ![Stranger\_On\_A\_Train](https://avatars.discourse-cdn.com/v4/letter/s/13edae/32.png) [@Stranger\_On\_A\_Train](https://boards.straightdope.com/u/Stranger_On_A_Train)\
**Post date:** [March 2, 2018, 6:59pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/6 "2018-03-02T18:59:22Z")

</div>

It is widely accepted that C\* is pronounced “see star”.

Why you would use this language, on the other hand, is a complete unknown.

Stranger

---

<div class="post-metadata">

**Author:** ![RollOutTheBarrel](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/rolloutthebarrel/32/1649_2.png) [@RollOutTheBarrel](https://boards.straightdope.com/u/RollOutTheBarrel)\
**Post date:** [March 2, 2018, 8:04pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/7 "2018-03-02T20:04:38Z")

</div>

Well, that clears that up. Thanks!

---

<div class="post-metadata">

**Author:** ![Sage\_Rat](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/sage_rat/32/399_2.png) [@Sage\_Rat](https://boards.straightdope.com/u/Sage_Rat)\
**Post date:** [March 2, 2018, 8:23pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/8 "2018-03-02T20:23:44Z")

</div>

> [@Stranger\_On\_A\_Train](#):
>
> It is widely accepted that C\* is pronounced “see star”.
> 
> Why you would use this language, on the other hand, is a complete unknown.
> 
> Stranger

In 1987, a language for parallel, distributed computing based on C doesn’t seem like a bad thing to know. Obviously, it would have only niche interest, but I could see some universities and military/spy agencies going for it.

---

<div class="post-metadata">

**Author:** ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)\
**Post date:** [March 2, 2018, 8:36pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/9 "2018-03-02T20:36:58Z")

</div>

> [@Stranger\_On\_A\_Train](#):
>
> It is widely accepted that C\* is pronounced “see star”.
> 
> Why you would use this language, on the other hand, is a complete unknown.
> 
> Stranger

Well, you wouldn’t _now_, to be sure, but back when Thinking Machines was a Hot New Company working in the Hot New Field of parallel supercomputers and getting Richard Feynman to help design your hardware, C\* was probably a reasonably good way to write programs which took advantage of the parallel hardware.

[Looking in more detail](https://en.wikipedia.org/wiki/C*):

> [@](#):
>
> It was developed in 1987 as an alternative language to _Lisp and CM-Fortran for the Connection Machine CM-2 and above. The language C_ adds to C a “domain” data type and a selection statement for parallel execution in domains.
> 
> For the CM-2 models the C\* compiler translated the code into serial C, calling PARIS (Parallel Instruction Set) functions, and passed the resulting code to the front end computer’s native compiler. The resulting executables were executed on the front end computer with PARIS calls being executed on the Connection Machine.

This sounds a lot like OpenMP to me, which also accepts an enhanced dialect of C (that is, C with some extra OpenMP stuff) to compile programs into a form that automatically farms itself out to work on parallel processors, whether those processors are multiple cores on a modern CPU or, in the case of the CM-2, different processors in a tightly-coupled grid.

The abstraction OpenMP provides is that of a really fast sequential computer, with certain kinds of sequential code being translated into parallel code. For example, in the OpenMP source code, it looks like you’re looping over a million-element array and doing something to each element, and OpenMP compiles that to, say a half-million different processes which each process two elements, all at the same time, and then farms that compiled code out to the half-million physical processors your cluster has.

Moving on:

> [@](#):
>
> On the CM-5 and CM-5E parallel C\* Code was executed in a SIMD style fashion on processing elements, whereas serial code was executed on the PM (Partition Manager) Node, with the PM acting as a “front end” if directly compared to a CM-2.

This is so _perfectly_ equivalent to OpenCL and CUDA, which is how modern GPGPUs are programmed: A modern GPU is called a “graphics processing unit”, and making 3D graphics go faster is indeed something they’re still used for, but what it mainly is is a lot of very wide registers and SIMD hardware which processes those registers using opcodes that treat them like vectors of floating-point values.

OpenCL and CUDA provide the abstraction that the SIMD hardware is a bunch of tiny little independent computers, with the restriction that blocks of those computers must be running the same program, albeit on different data. (SIMD stands for Single-Instruction, Multiple-Data.) For example, if you have a dozen sixteen-element arrays, and your SIMD hardware has registers wide enough to hold sixteen elements at once, your OpenCL or CUDA code would look like a program that processes a dozen values, and it would be compiled into SIMD code which does all of the same processing, just “widened” so each operation is done on sixteen things at once.

This sounds limiting, and it is, but when you find a problem which can be solved in this fashion, you get to use the _really fast_ hardware. The trick, I suppose, is that a lot of linear algebra can be done in this fashion, and linear algebra is the language of all of applied physics and great whacks of other fields, including stuff like linguistics.

C\* is obsolete, but the ideas it embodied are going strong.

---

<div class="post-metadata">

**Author:** ![Francis\_Vaughan](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/francis_vaughan/32/3093_2.png) [@Francis\_Vaughan](https://boards.straightdope.com/u/Francis_Vaughan)\
**Post date:** [March 3, 2018, 1:27am UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/10 "2018-03-03T01:27:22Z")

</div>

I really liked C\*. The CM-5 used three languages - CMF (Connection machine Fortran) which was a progenitor to modern Fortrans - especially Fortran 95 and its parallel arrays and constructs. To complete the trio, there was also \*Lisp. Pronounced star-lisp.

The critical idea of C\* was parallel prefixing - so that arrays could be addressed as both serial arrays (with the conventional postfix subscript) and as part of a distributed parallel array with a prefix subscript. This gave you explicit language level access and control of how the parallel arrays were used. Fortrans and OpenMP and the like abstract over some of this, and provide a somewhat more mathematically easy construct. C\* was not really intended for the usual linear algebra work that was grist for the mill for CMF, but was more useful for managing less structured algorithm paradigms in a data parallel manner.

I still have a large collection of most of the CM-5 and a few CM-2 manuals - which I keep on the off chance I ever need to work with some old CM code. Also just as a memento. Given we have a 128 node CM-5 in a shed as a memento as well, you might reasonably suspect some sort of mania 😃

---

<div class="post-metadata">

**Author:** ![Chronos](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/chronos/32/134_2.png) [@Chronos](https://boards.straightdope.com/u/Chronos)\
**Post date:** [March 3, 2018, 2:25am UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/11 "2018-03-03T02:25:09Z")

</div>

> [@](#):
>
> Quoth **Derleth** :
> 
> This sounds limiting, and it is, but when you find a problem which can be solved in this fashion, you get to use the really fast hardware. The trick, I suppose, is that a lot of linear algebra can be done in this fashion, and linear algebra is the language of all of applied physics and great whacks of other fields, including stuff like linguistics.

Indeed, video games have been a huge boon for scientific computing, in that the broad video game market made off-the-shelf massively-parallel vector processors economically viable. Most scientific “supercomputers” nowadays are mostly just big boxed packed full of graphics cards.

---

<div class="post-metadata">

**Author:** ![Balthisar](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/balthisar/32/2825_2.png) [@Balthisar](https://boards.straightdope.com/u/Balthisar)\
**Post date:** [March 3, 2018, 10:02pm UTC](https://boards.straightdope.com/t/how-do-you-pronounce-c-programming-language/809910/12 "2018-03-03T22:02:32Z")

</div>

Although already answered, I was going to guess “C splat.” Hopefully someone else knows the reference.
