# Compiling ATS to C is a big selling point

**URL:** <https://discourse.ats-lang.org/t/compiling-ats-to-c-is-a-big-selling-point/437>\
**Category:** Google Group\
**Created:** [December 26, 2013, 4:27pm UTC](https://discourse.ats-lang.org/t/compiling-ats-to-c-is-a-big-selling-point/437 "2013-12-26T16:27:36Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![gmhwxi](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@gmhwxi](https://discourse.ats-lang.org/u/gmhwxi)\
**Post date:** [December 26, 2013, 4:27pm UTC](https://discourse.ats-lang.org/t/compiling-ats-to-c-is-a-big-selling-point/437/1 "2013-12-26T16:27:36Z")

</div>

I am answering some questions posted here:

[https://groups.google.com/forum/?fromgroups=#!topic/ats-lang-users/yg50Xr6ECAc](https://groups.google.com/forum/?fromgroups=#!topic/ats-lang-users/yg50Xr6ECAc)

I have been stressing that there is no semantic gap between ATS and C.  
What I mean essentially is that one can visualize a C program one wants to  
write and then write it in ATS. This is very important for low-level  
programming.

Of course, we can compile pretty much any programming languages into C. For  
instance, we can compile ML into C. However, it is in general difficult to  
write a C program in ML because of the great semantic gap between these two  
languages.

So simply compiling to C is probably not enough for low-level programming.  
We need precision. We need to be able to generate the kind of C programs  
that require minimal run-time support (which is present primarily for  
bridging semantic gap).

–Hongwei
