Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ć Programming Language - Compile C# subset to C, Java, C#, JS, AS, Perl and D (sourceforge.net)
102 points by gjndrtjh on June 16, 2013 | hide | past | favorite | 70 comments


If I ever create a programming language, I will call it either ♫ (pronounced music) or . (pronounced dot).

That's one thing brainfuck didn't get right. Even they couldn't predict how incredibly stupid programming language naming would become :)


Great, another programming language we can't google!

Please rename it to Membranous language.


It's great name. Of course if you come from Poland or other Central Europe Country. Then all you need is type ALT + c. In Polish keyboard mode.


Or for that matter, type. At least C♯ has "C#".

Maybe we can use C' ?


At least in OS X, you can type Ć by holding C and pressing 2:

http://i.imgur.com/6xCSVW5.png


I don't have this functionality. Could you explain if I have to enable something for it to work? It would be a great help, since I have that letter in my last name...


I was going to say that on OS X 10.6 and earlier, you can type Option+E, then type C, but it turns out that doesn’t work. Option+E only lets you add the ´ to vowels, like Á. I confirmed that using the Keyboard Viewer (search for it in System Preferences).

However, you can create a custom keyboard layout with Ukelele (http://scripts.sil.org/ukelele), in which you replace some character you never use (option+something) with Ć. I use a custom layout myself, in which I swapped some keys around so it’s easier to type smart quotes ‘ ’ “ ”.


Opt+E, C works fine in US Extended keyboard mode, which supports a lot more accented letters. US Extended is also required for writing in certain obscure Latin-based writing systems, such as Esperanto or Chinese Pinyin.


You need OS X 10.7 or later. To enable:

    defaults write -g ApplePressAndHoldEnabled -bool true
To disable:

    defaults write -g ApplePressAndHoldEnabled -bool false


It's on by default on OS X Lion+.


Alternative names for Ć are "ci" and "cito".


Who's "we"? Your OS only supports 7-bit ASCII or what?

https://www.google.com/search?q=%C4%86%20programming%20langu...


Yeah, but most people in the US will be too lazy to type that character when writing about it.

Also, look at the author's own examples. They already have to resort to calling it "ci" in code and on the command line (and in URLs).


> Yeah, but most people in the US will be too lazy to type that character when writing about it.

Five decades of having everything built around their convenience does that


This is a really interesting project. However...

It's licensed under GPLv3 -- in my experience, that's an instant turnoff for most .NET (C#/F#/VB.NET) developers. If you changed the license to something like Apache 2.0, I think you'd get much more interest; not only new users, but new contributors too.


What's wrong with GPLv3? I thought the only thing that changed from v2 was preventing tivotization?


GPL (2 and 3) is completely hostile to commercial (i.e. proprietary) use. In a big middle finger to business, v2 even describes a hypothetical businessperson as "Ty Coon, President of Vice".


I think he means commercial use in closed-source projects. So it's not v2 vs v3, but GPL vs Apache or MIT.


Yes, that's what I meant.

Most -- nearly all -- major open-source projects written in C# (or other .NET languages) are permissively licensed. Yes, that means people could just grab the code and use it in their own closed-source projects without giving back; but, as far as I've seen, most devs are happy to contribute back to the projects they use in whatever way they can.


It's not just commercial use. Non-permissive open source licenses are also frequently incompatible with one another [1].

[1] http://www.gnu.org/licenses/license-list.html#GPLIncompatibl...


Does it matter here from a user standpoint? The compiler is strictly licensed but the user's work - Ć code and generated code - shouldn't be tied to any predefined license, or am I missing something?


Nice idea, but please give it a name that makes the language easy to discuss and search for.

There's no way I'm going to work on Monday and discussing: 'did you see that new language that I have no idea how it's pronounced that was on HN?'


Almost all other languages have ASCII names. How do you think South Koreans, Japanese, Chinese, etc refer to them? They figured it out, just like you would, if you wanted to.


ASCII may be American in origin, but it's become the global standard, and it's all we have in common. Even Japanese keyboards have ASCII character input.


The name of something makes a big difference in the USA though. If it sounds ridiculous or has a non-obvious pronunciation, people won't take it seriously.

Rationalize all you want...the issue makes it a non-starter for many people.


I doubt name makes a bigger difference than usefulness.


A lot of the English language is a showcase of non-obvious pronunciations (ex: "finite" [fi-night] vs. infinite [in-fee-nith]), so that seems like a strange complaint.


"ci" or "cito". As in http://cito.sourceforge.net


See also the C~ language that the author of Scintilla created for the purpose of building a retargetable text editor component:

http://www.scintilla.org/SWPortability.html

He wrote his text editor component in C~, then compiled it down to C++, Java and C#. Kind of interesting - I actually used SinkWorld in a product once.


That's awesome. I remember I spent some time rewriting the code I had from C# into Java and wishing there was a way for me to just write it once and reuse in multiple places. Just so that I do not have to patch multiple locations as I add features.

Maybe Objective C for the next iteration? :)


Pronunciation: http://www.asusilc.net/scr101/les1/s1glas.htm

"ch or tch as in: church, fetch, pronounced softer than the English sound"


I'd say it's more like 'ci' (sounds closer to 'ty') in Italian 'ciao' and less like 'ch' in 'change'.


In American English (and perhaps other dialects), Italian 'ciao' is an allophone with English 'chow'. (Really two allophones, 'ch' and 'ow'). Most Americans won't be able to hear a difference.


"ciao" and "chow" are homophones, not allophones. Allophones are different phonetic representations of the same phoneme found in complementary distribution. For example, [t] and [th] and [ɾ] and [ʔ] are allophones of /t/ (the first in 'cat', the second in 'tack', and the third and fourth in 'cutter' , depending on your regional variant. Also, the initial phoneme in Italian "ciao" is for all purposes identical to the one in English "chow" (the vowels are a bit different) - it is written as: /tʃ/


I really like this concept. It would make a good counterpart to Haxe.


This is great. Glad to see Perl support as I'm working in both these days. I have a C# DLL I'm planning on porting and I think I'll give this a whirl. If it can do a good port I'll be very impressed.


Does it do garbage collecting in all the target languages? The question is mainly about C, cause I can imagine it can rely on native garbage collector when targeting Java, Perl, etc.


It only has manual memory management. No GC.

But if you don't target C, you can just skip using "delete".


Right, from the documentation (albeit hidden in the Arrays section):

Since there is no garbage collection in C, you must free the dynamically allocated array with delete. delete translates to C as free and nothing in other (garbage-collecting) languages.


Time to start working on Č I guess.


We've all got a language in our back pocket, haven't we?

My first thought on seeing this name was that I ought to rename my project "Ç".


Great idea, but why another new language? Why not just pick a subset of C#? (or Java, or D, but subjectively speaking, C# is the most "friendly" language from that list)


It is a subset of C#. And giving that subset a name is much easier than talking about »that subset of C# that compiles cleanly to Java, D, Perl and C«.


Great then ...though even C#-- (ala http://en.wikipedia.org/wiki/C--) would be better than using a non-English character/accent


Except when the name is Ć.


Cee acute? Doesn't strike me as that horrible.


...unless you have no idea what "acute" means or you've never seen it in your life, because you haven't been exposed to French or English musical notation before (which applies for, I'd bet, over 80% of programmers worldwide :) )


But most programmers probably have studied basic geometry.


And? There are a lot of diacritics to choose from if you don't know all their names, and that's assuming you even catch on that it's supposed to be a diacritic.


or c// ( or c|| ) which would graphicaly show it's a subset of # ...


or C cute ?


Cutesy || CuteC


It's pretty horrible. I'm not even sure that's what it's called because I can't find the actual word "acute" on that page.

Furthermore - look at what they have to resort to calling it in code, on the command line and in URLs: ci.


I guess I’m of the very few ones in this thread who know how to pronounce this name :D


What was the need for this?


Second statement from the article:

Ć is a new language, aimed at crafting portable programming libraries, with syntax akin to C#


That's the purpose, is there really such a need?


Right. Who would ever want to be able to write libraries that can run on any platform?


I'm not saying there isn't a need, but I'm interested in knowing of another need. Hasn't this been done in C already? C pretty much runs anywhere, after all. What exactly does this bring to the table?

Sorry that people thought I was being negative (as per all the downvotes - you people really aught to comment), I'm just curious as to why other languages don't fill this gap.


>C pretty much runs anywhere, after all. What exactly does this bring to the table?

1. No, C doesn't run everywhere. I can't compile C to Java, C#, JS, AS, Perl and D. Or compile it to any other language (PHP, Objective-C, Pascal, ...) just by writing 500 lines of generator.

Look how huge project Emscripten is: 1 537 390 lines according to Ohloh. But JS generator for Ć is only 457 lines.

2. C# is easier than C. You can write Ć in Visual Studio C#, the best, easiest and fastest IDE in the world.


1. A compiler translates from a higher level language to a lower level language.

2. I disagree. They have the same level of complexity, C# possibly more if you use advanced concepts. And you can write C in Visual Studio...


To avoid the downvotes acknowledge that the article already declares the purpose and ask for more details. As it is you come across as not having read it, but opining negatively.

To your question - in my case I had a server returning XML/JSON output and on the client side I needed to parse the output and convert it into an object model, collect changes and ship the. Back to the server. That was a lot of boiler-plate code we ended up repeating in java, C#, javascript, and C++. We used C++ version in lieu of Objective C and it was a pain with memory management mismatch.


If you have a C# back-end and a web front-end being able to write validations in this, that can run in both places, is one obvious use-case that I can think of.


C# is nicer than c, and writing bindings for c libraries in other languages is not fun.


I would say that I like C++ more than I like C#. C and C# are entirely different beasts.


I don't think the goal is optimal performance. It think it's popularity and ease of use, and c# is popular, reasonably easy to use, and low level enough to make it possible to translate it easily to many languages.


If they just wanted the name to be a variation of 'C', they could have called it 'Ç', since I'm guessing that most people can type that easily with their keyboards.


Why not support floating point number type?


I asked the language creator. Float, double, short types are going to be added within 1 month. 64 bit integers are not possible because Javascript doesn't have them.





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: