Slashdot Mirror


Red Hat Releases Ceylon Language 1.0.0

First time accepted submitter Gavin King writes with news that the Ceylon language hit 1.0 "Ceylon 1.0 is a modern, modular, statically typed programming language for the Java and JavaScript virtual machines. The language features, an emphasis upon readability and a strong bias toward omission or elimination of potentially-harmful constructs; an extremely powerful type system combining subtype and parametric polymorphism with declaration-site variance, including first-class union and intersection types, and using principal types for local type inference and flow-dependent typing; a unique treatment of function and tuple types, enabling powerful abstractions; first-class constructs for defining modules and dependencies between modules; a very flexible syntax including comprehensions and support for expressing tree-like structures; and fully-reified generic types, on both the JVM and JavaScript virtual machines, and a unique typesafe metamodel. More information may be found in the feature list and quick introduction." If you think Ceylon is cool, you might find Ur/Web interesting too.

159 comments

  1. Cool! by warrax_666 · · Score: 5, Interesting

    One of the few languages in recent times with an interesting type system which isn't just a trivial rehash of existing (in practice) ones.

    --
    HAND.
    1. Re:Cool! by ron_ivi · · Score: 5, Interesting

      I'd like to see a type system that can help enforce units (like mass * distance = force). If it were really lightweight (in typing) to create types with meaningful units, it could protect you from accidentally adding things like Mbits with MBytes.

    2. Re:Cool! by Just+Some+Guy · · Score: 5, Interesting

      You'd love Haskell.

      --
      Dewey, what part of this looks like authorities should be involved?
    3. Re:Cool! by naasking · · Score: 2

      There are plenty of these around. F# has one. Check out their papers on dimension checking.

    4. Re:Cool! by Anonymous Coward · · Score: 1

      trivial rehash of existing (in practice) ones.

      This is no time to be bashing Objective-C

    5. Re:Cool! by coolsnowmen · · Score: 2

      Well, force = mass * distance/time^2, but that probably wasn't your point. (or perhaps it was HAH!)

      I tried to do that once, it turnes out to get pretty complicated if you don't have compleate symbolic manipulation library at your disposal. Simple unit */ another unit was easy, but then when they were hard to simplify because one unit was to the (1/3) power, my c++ class system couldn't handle it.

      I eneded up simply requiring out group to always put units on their variable names so we could follow the code easily. So, now I always to int interval_ms = 5000; or float box_distance_km = 10; (Time and length were the most common errors)

    6. Re:Cool! by MouseTheLuckyDog · · Score: 1, Insightful

      Been there done that in C++. Check Barton and Nackman.

    7. Re:Cool! by amiga3D · · Score: 3, Funny

      I swear I thought that said Cylon language and I started thinking, first Klingon and now Cylon?

    8. Re:Cool! by Anonymous Coward · · Score: 0

      Ceylon, like the tea. Not Cylon, like our new robot overlords, which I, for one, welcome!

    9. Re:Cool! by Anonymous Coward · · Score: 5, Funny

      You'd love Haskell.

      I hear a lot of scheme-brained hares saying this.

      But I assure you, you're wrong.

    10. Re:Cool! by ebno-10db · · Score: 2

      I find one of the most effective techniques is just to enforce the rule that any variable that represents a physical quantity must have the units appended to it, using std SI notation, like massCannonBall_kg, or distanceToOuthouse_m. It also helps to insist that all units be base units. With floating point, why use _kOhm or _MOhm, when you can just use _Ohm for everything? It eliminates confusion and errors to stick to base units, and you can easily convert for convenient user I/O.

    11. Re:Cool! by suy · · Score: 1

      Thanks for the hint, but I've found the Wikipedia page on it (and the first results on the web) not very exciting. However, Software for Infrastructure from Stroustrup has a really cool example on how to do it very pretty. It uses user-defined literals to create expressions such as "Speed s = 10m/2s".

    12. Re:Cool! by jbolden · · Score: 1

      I was about to write that too. Type enforcement like he is asking for is trivial in Haskell. So seconded.

    13. Re:Cool! by Anonymous Coward · · Score: 0

      You suck. Never heard of MLT dimensions?

    14. Re:Cool! by Anonymous Coward · · Score: 0

      Wouldn't it be better to enforce mass * acceleration = force ? ;-)

    15. Re:Cool! by ebno-10db · · Score: 1

      I can see enforcing types for say, current and resistance, but what about the fact that current times resistance is voltage? I can see having a voltage type too, but do you have to write the rules for every combination of units that result in a different unit, or is there a more clever way to handle that?

    16. Re:Cool! by CurryCamel · · Score: 1

      like massCannonBall_kg, or distanceToOuthouse_m. It also helps to insist that all units be base units. With floating point, why use _kOhm or _MOhm, when you can just use _Ohm for everything?

      Because kOhm is the natural unit, just like kg? Or is that domain specific?

    17. Re:Cool! by ebno-10db · · Score: 1

      kg is a troublesome case. You can debate whether it's better to use grams or kg as the base unit, but I'd argue kg is the base unit in the MKS system. Not so for kOhms.

    18. Re:Cool! by serviscope_minor · · Score: 1

      I'd like to see a type system that can help enforce units (like mass * distance = force). If it were really lightweight (in typing) to create types with meaningful units, it could protect you from accidentally adding things like Mbits with MBytes.

      C++11 has very good support for this. You could do it in C++98 with operator overloading and templates, but the syntax was horrid. Combine that with auto type declarations and user defined literals and you're golden.

      --
      SJW n. One who posts facts.
    19. Re:Cool! by Anonymous Coward · · Score: 0

      You'd have to write the operator functions that performed those calculations, e.g. provide an implementation for '*' that took one Current and one Resistance parameter, and returned a Voltage result.

      You wouldn't implement '+' for those, because it doesn't make sense to add the two types.

    20. Re:Cool! by Anonymous Coward · · Score: 0

      You could do this in C++ using classes and overloaded operators.
      However, I get your point that it would be nice to have a light-weight way of doing this that works more at the native type level of languages.
      Perhaps something like:

      typedef float kg; // mass
      typedef float km; // distance
      typedef float N; // force
      allow N = kg * km;

      i.e. kg + km would raise a compile error.

    21. Re:Cool! by Immerman · · Score: 1

      I'm not the only one.

      So, do you suppose Ceylon is the language that the Cylons were written in?

      --
      --- Most topics have many sides worth arguing, allow me to take one opposite you.
    22. Re:Cool! by Decker-Mage · · Score: 2

      Actually, you're probably better off implementing the whole job lot of the physical sciences in scalars, vectors, tensors, yada, yada. Then it wouldn't be anywhere as difficult to figure out which type you get out the other side of the equations. Especially when dealing with cross-products and phasing.

      --
      "[I]t is a wise man who admits the limits of his knowledge or skill, and that pretending either causes harm." --Terry Go
    23. Re:Cool! by EETech1 · · Score: 1

      Or try Frink!

      c2.com/cgi/wiki?FrinkLanguage

      From the above link:
      One of the distinguishing characteristics of Frink is that it tracks units of measure through all calculations. This allows all values to contain a quantity and its units of measure. Frink understands how different units of measure interrelate, such as a length cubed is a volume, or power multiplied by time is energy. Different units of measure can be mixed in calculations, and Frink automatically ensures that the calculations lead to a result with the expected dimensions.

        height = 3 feet
        gravitation = 9.80665 m/s^2
        mass = 60 kg
        potential_energy = height * gravitation * mass
        println[potential_energy -> joules] // Display in joules
        The standard distribution comes with a data file which contains thousands of the most common units of measure, along with common data such as masses of elementary particles, planetary data, and historical measures. The standard data file uses the SI base units as its fundamental units of measure.

    24. Re:Cool! by jbolden · · Score: 2

      1/2 and 1/2.

      Haskell allows types to be in a hierarchy. A => X(A)
      So for example you could have acceleration defined as an adjustment type time(distance).
      And then you could define a function to take A(B) and Y(A) to Y(B) in an abstract way.

      map for example takes a function from a to b, an array of a (i.e. a structured type on top of a) and returns an array of b.
      number class is a good example of this sort of hierarchical layering.

      So yes, you can do it to some extent in Haskell. If you want to go further Qi or Shen both offer a type system fully programmable in a prolog.

    25. Re:Cool! by Anonymous Coward · · Score: 0

      there is a fascinating library for the Ada language that does this: http://www.dmitry-kazakov.de/ada/units.htm

      i'd never paid much attention to Ada before, but i stumbled across this library somehow a few months ago and it really piqued my curiosity

    26. Re:Cool! by Anonymous Coward · · Score: 0

      Ruby could easily do this as most operators are methods on objects and not true operators. Ruby doesn't allow for operator overloading but that isn't a problem.

      Enforcing this sort of thing means more code, more bugs and more processor cycles wasted.

  2. Shite by Hognoxious · · Score: 5, Insightful

    The language features, an emphasis upon readability and a strong bias toward omission or elimination of potentially-harmful constructs

    Like that comma?

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    1. Re:Shite by somersault · · Score: 1

      Well, technically it would have been better being altered to a colon if the semi-colon separated list were to parse correctly.. though a human brain would just issue a warning rather than an error here.

      --
      which is totally what she said
  3. Buzzword much ? by Anonymous Coward · · Score: 1

    I'm sorry, I'd really like to be interested by this, but the second and last sentence is just the usual marketing bullshit that each newest language has been serving us in the past years.

    So, here comes the usual question we always end up asking when such a thread shows up: could you give us a simple and clear explanation of what is so good about it as well as the traditional comparison of advantages/disadvantaged of this language with other similar ones.

    Thanks

    The Internet

  4. Enough already. by lasermike026 · · Score: 1

    There are to many programming languages.

    1. Re:Enough already. by oodaloop · · Score: 0

      There are to many programming languages.

      Especially when you haven't mastered English yet.

      --
      Tic-Tac-Toe, Global Thermonuclear War, and relationships all have the same winning move.
    2. Re:Enough already. by Mitchell314 · · Score: 4, Insightful

      Honestly, I'd be happy with just a C variant with built-in string support.

      --
      I read TFA and all I got was this lousy cookie
    3. Re:Enough already. by Tumbleweed · · Score: 1

      Honestly, I'd be happy with just a C variant with built-in string support.

      Doesn't D have that?

    4. Re:Enough already. by Mitchell314 · · Score: 1

      D is probably closer to C++ than C.

      --
      I read TFA and all I got was this lousy cookie
    5. Re:Enough already. by angel'o'sphere · · Score: 0

      Then write yourself or ask a friend a c++ string class with the "operator overloading" you need. Then use a c++ compiler to compile your C code.

      OTOH ... the languages you use limit the way how you think about problems and hence it limits your solutions and approaches.

      I hope you have at least managed ONE single high level language (and no, C is not a high level language, it is a portable assembler, that is all)

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    6. Re:Enough already. by Anonymous Coward · · Score: 0

      Having more languages is better than having fewer. For people like you who don't like choice, you can just pick the first one on the list. Some of us like exploring new things.

    7. Re:Enough already. by narcc · · Score: 1

      That was painful. Really. I can't believe that anyone, even you, could write such total nonsense.

      What's with the bit about the Sapir–Whorf hypothesis in the middle of that screed? Have you been drinking?

    8. Re:Enough already. by jandrese · · Score: 2

      If I was making a language that was C with a few more features, I wouldn't stop at just better string handling. I would also include a method of inspecting the heap so a function passed a pointer knows just how much storage is available at that pointer. I would also steal C++'s single line comment delimiter (//), and pass by value mechanic. I'd also build a first class regex utility into stdlib, but that's just me.

      --

      I read the internet for the articles.
    9. Re:Enough already. by ReAn1985 · · Score: 4, Informative

      D does!. But D also has so many neat features.

      D is wonderful, and it can interop with C / C++ or write inline ASM for you micro-optimists out there.

    10. Re:Enough already. by ebno-10db · · Score: 1

      How many new languages really have anything new or interesting? Most just seem like whatever struck the author as a "best of" list. I'm learning Haskell out of curiosity, because it's genuinely different from other languages I know. However, knowing Perl and Python, learning Ruby or Lua strikes me about as interesting as watching paint dry. You can argue until hell freezes over about the pros and cons of different ones, but is there really that much difference? I'm not worried about saying that, because I'm wearing my Nomex undies today. If it makes any Ruby or Lua fans happy though, I'd feel the same way about learning Python if, for example, I already knew Ruby or Lua.

    11. Re:Enough already. by ebno-10db · · Score: 4, Insightful

      There are too many programming languages.

      Some people describe the recent increase in the number of languages as the Cambrian explosion, but what we need now is a mass extinction.

    12. Re:Enough already. by Anonymous Coward · · Score: 0

      Horses for courses, young man, horses for courses. FORTH must you learn. (scheme, try, out, too).

    13. Re:Enough already. by RDW · · Score: 1

      Having more languages is better than having fewer.

      Tell that to the guys who were trying to build that great big tower in the land of Shinar! Enki might agree, though.

    14. Re:Enough already. by ebno-10db · · Score: 1

      The the extent I've looked at it, D seems like a great language. Maybe it doesn't get much attention because it's not one of the new cool (i.e. rehashed) languages, but it'd fill an important role. In many ways it's C++ done right. That fills the need for a language that's higher level than C, without all the historical baggage and minefield complexity of C++, and compiles to fast binary. I know lots of people these days say Java (or whatever your favorite slower language is) is fast enough, programming costs outweigh hardware costs, blah, blah, blah. In many cases that's true, but there are still plenty of cases where a 2x speed improvement is very important. Binary executables ain't dead.

      One thing I'm curious about though is whether D can pull off the "have your cake and eat it too" approach of using garbage collection by default, but being able to disable it when needed. Does it have a set of libraries that can do both, or are they all heavily GC dependent?

      Lastly, will it ever become popular? The two ways I can think of are that it becomes so popular in the FOSS community that it starts migrating over to workplaces, or if a major company champions it for their own use (the #2 D guy Alexandrescu works at Facebook).

    15. Re:Enough already. by Teancum · · Score: 2

      The one really useful "new" language that I've seen this past decade has been Scratch, something that I think could be turned into a production language (as opposed to the tutorial language that MIT uses it for). There have been some attempts to do just that by some other 3rd party developers, but it certainly isn't widespread and they largely take clues from what MIT is doing with the base language.

      The GUI development environment is definitely useful, and I like how Scratch does multi-threaded applications like breathing air... it really is built into the language in a very basic and fundamental way. That in particular is something which should be leveraged more.

      Beyond that, I would agree that most of the new languages I've looked at seem to be a rehash of C in some fashion with a few variations that either try to remove semicolons or do some other interesting things but still are just variants on the same general syntax philosophy. I'm an old Delphi programmer that has been sort of left behind as that programming community has shrunk to just a few diehard fans and I haven't really found anything to replace that kind of programming environment of hand-crafted gems that could do just about anything you wanted including rewriting base classes in the compiler (assuming that was something you felt necessary for that particular project).

    16. Re:Enough already. by Anonymous Coward · · Score: 0

      > Some people describe the recent increase in the number of languages as

      Well some people describe the phenomenon as twinkie.

      Neither comment is interesting at all.

      Why are toy languages are given such attention, despite not having a great deal of software written. What constitutes "a lot" anyway? Why do we care about this new language more than Leaf (http://leaflang.org/) ? or Scala or Groovy or Clojure? Is it because it's Redhat? What about Google's Go? what about Dart? what about Microsoft's C#? It would be great if we actually saw some science to explain why language choices are made. That would include code analysis and derived conclusions. Alas, we have another cobbled language with specific interests that may or may not achieve wide adoption and there's no evidence to support it will go either way.

      Traditionally, a language dies from lack of adoption. Nobody uses it, nobody will maintain it. Bitrot loses it to history. No need to kill languages nor is there a way for them to be killed, per se, so the mass extinction analogy is also awkward. If you want to kill languages a bit quicker, the unexplored path is to statistically demonstrate what is good about a language and what is bad. It doesn't have to be a subjective task. We have unimaginable amounts of code to analyze. Where are the PHDs on this subject?

    17. Re:Enough already. by Anonymous Coward · · Score: 0

      You can roll your own smart pointers of course; but I agree it'd be nice if there was a standard way of doing it. The default C behavior is unbounded. They could add a type qualifier "bounded" that would make all the pointers bloated. Alternatively, you could make smart pointers the default and require programmers to specified an "unbounded" type qualifier to get the old behavior back; but people might hate it when they recompile their programs with the latest standard and bigger pointers.

      This reminds me of the "restrict" keyword they added so that C could make FORTRAN-like assumptions about aliasing and go faster. In this regard, C made the safer assumption!

      They already "stole" the // comments in C99

      Yeah, they could endorse one type of regex; but there are already a handful of top regex libs you can just link. I used to think a larger standard library was a good idea; but then you just get something like Java where people are expected to use only the standard functions. I think it might kill creativity in C.

    18. Re:Enough already. by Anonymous Coward · · Score: 0

      D is nice, it just doesn't have the momentum of the other languages, nor the vast library resources, nor tools, that other languages have.

    19. Re:Enough already. by Anonymous Coward · · Score: 0

      Java gives about 1/2 the performance and 10x the memory usage of c++. C++, when using it's modern features, isn't any harder than Java.

    20. Re:Enough already. by leaen · · Score: 1

      There are to many programming languages.

      We should write new one that to unite them all.

    21. Re:Enough already. by Anonymous Coward · · Score: 0

      There are too many programming languages.

      Some people describe the recent increase in the number of languages as the Cambrian explosion, but what we need now is a mass extinction.

      Nice. I think the likely survivors could be C, Java, C++. And some extremophiles like Fortran and assembler (if you want to call assembler a programming language).

    22. Re:Enough already. by Anonymous Coward · · Score: 0

      I don't know why something like the template mixin (or templates in general) excites people. The Lisp people have this one nailed. Their macros can do all of that, and in a much cleaner way. In general I don't like to generate code unless I have to. Used unwisely it just leads to bloat. At least when it comes to Lisp people in the community will tell you that macros should be used sparingly. In C++ people gush about templates which are just hobbled macros...

  5. Why use this? by Anonymous Coward · · Score: 0

    Why would anyone want to learn yet another language? What's the benefit for people to invest more time into learning a language?

    I understand the basics of a language are usually pretty easy to pick up: read the syntax quick sheet, and you are good to go. But it still means a drop in productivity for a while.

    What makes them think people will want to use this? I guess, they already have enough users, since this is a version 1.0 release .. ?

    1. Re:Why use this? by Anonymous Coward · · Score: 0

      I think your approach will be difficult for Scheme (closures) or Haskell (monads).

    2. Re:Why use this? by TechyImmigrant · · Score: 1

      > What's the benefit for people to invest more time into learning a language?

      In this case it lets you use a different language than Java in a JVM. That has to be a good thing, regardless of the language.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    3. Re:Why use this? by Anonymous Coward · · Score: 0

      Why would anyone want to learn yet another language?

      Because some languages are superior for some tasks, and if you don't know about them, you're making your life harder.

      I'm not arguing that Ceylon is superior in any regard (I've yet to use it), but I am arguing that learning new languages can greatly benefit you in the long run.

      I used to think I knew all the languages I'd need. Then I discovered Erlang and found it to be the best solution in some cases, vastly superior (for those specific problems) to any other languages I knew at the time. After that, I stopped thinking I knew it all and decided to evaulate new languages more often.

    4. Re:Why use this? by ebno-10db · · Score: 2

      Haskell is a truly different language, but what's the big deal about Python vs. Ruby Vs. Lua?

    5. Re:Why use this? by Anonymous Coward · · Score: 0

      Op here. Hahah yes I agree.. I don't know Haskell, but we learned Scheme in our freshman CS class, and boy did it turn us upside down (at least it did, for me).

      After that class, though, I was really much more 'receptive' to new language styles and concepts.. it really helped me understand recursion well, too. And.. BUBBLE DIAGRAMS. Lol.

    6. Re:Why use this? by ebno-10db · · Score: 1

      Then I discovered Erlang and found it to be the best solution ...

      We should recognize a new class of Language Wars for functional languages. Allow me the honor of firing the opening salvo: Erlang sucks, Haskell rulez! (not that I know Erlang, but why should I bother to learn it when it's such a lousy language).

    7. Re:Why use this? by Anonymous Coward · · Score: 0

      There is a rather large difference between those languages.

    8. Re:Why use this? by Anonymous Coward · · Score: 0

      With Scala, JRuby, and Clojure it is hard to see what this new language brings to the table.

    9. Re:Why use this? by TechyImmigrant · · Score: 1

      Have they done C yet?

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    10. Re:Why use this? by Anonymous Coward · · Score: 0

      If you can't see there are significant differences between Python, Ruby and Lua, GTFO

  6. So...Off-brand Scala? by Anonymous Coward · · Score: 3, Interesting

    Reading the language description, I don't see anything notably distinct from Scala. If anything, Ceylon seems a bit clunkier. The one upside appears to be baked in translation into JS, but others have already provided a Scala -> JS parser.

    1. Re:So...Off-brand Scala? by Anonymous Coward · · Score: 0

      There is one benefit of Ceylon over Java: they don't allow operator overloading. I'll agree that the Ceylon type system syntactically seems clunkier than Scala's, though.

    2. Re:So...Off-brand Scala? by Anonymous Coward · · Score: 0

      First class union and intersection types
      First class module system
      Syntax that's geared toward readability
      First class IDE support

      Yep... no differences at all.

  7. its good... by Anonymous Coward · · Score: 0

    *puts on sunglasses* ..but its no c++

    1. Re:its good... by Anonymous Coward · · Score: 0

      And it's good that it's not C++.

  8. Fits partially with tradition by Anonymous Coward · · Score: 0

    This fits only partially with the long tradition of companies creating languages. C started at AT&T, JavaScript started with Netsscape, Java came from Sun.

    What's missing is that it isn't shipping with some other major system. C had Unix. JavaScript had the browser. Java had Sun's server ecosystem.

    This isn't shipping with something everybody uses, so it might have a hard time. Compare and contrast with BASIC shipping on 8-bit computers. BASIC sucked; but it was there so you used it.

    The other great language tradition is individual programmer itch-scratching (Ruby, Perl).

    This one doesn't seem to fit well with either tradition. Union types and a cleaner version of XML inside the language don't seem to be that compelling. I think obscurity is a safe bet; but then it usually is for new languages.

    1. Re:Fits partially with tradition by Anonymous Coward · · Score: 0

      So what sort of "language tradition" does PHP fall under?

      I think we need a third kind of language tradition: the one where you take simply what you like from other languages and dump it all together into a singular clusterfuck.

    2. Re:Fits partially with tradition by DuckDodgers · · Score: 1

      We're sitting here bitching about how much PHP sucks while Mark Zuckerberg sits on billions of dollars an application still mostly built on the language.

      I love language wars, but the truth is while fanatics like me are looking for the perfect blend of our favorite features and abstractions from Lisp/Haskell/Scala/C++/APL/Ceylon/Clojure/Python/Ruby/Perl6/J, the people using PHP, Python, Perl, Java, and especially C and C++ rule the world.

    3. Re:Fits partially with tradition by Anonymous Coward · · Score: 0

      Yeah. What else are people going to use except whatever already is out there? There are programming languages, and there are people who use them.

      You seem to have this idea that those two distinct notions are somehow connected.

    4. Re:Fits partially with tradition by ebno-10db · · Score: 1

      So what sort of "language tradition" does PHP fall under?

      The tradition of using PCP. Did you think that the name similarity is a coincidence?

    5. Re:Fits partially with tradition by ebno-10db · · Score: 1

      If you want billions, the choice of language doesn't matter. If you've ever seen the Curious George movie though, you'll understand that the real money is in parking garages.

    6. Re:Fits partially with tradition by narcc · · Score: 4, Insightful

      Pure practicality?

      PHP didn't even start out as a programming language. Even now, you can happily look at it as a bunch of stuff that makes it easy for people make dynamic websites. It is clearly quite successful. It's successful because it was really good at doing the job it was, er, "designed" to do.

      PHP, then, would fall neatly under the "successful languages" category.

      Hate it all you want. Bitch and moan on Slashdot 'till your fingers bleed. It's not going away any time soon. There is no alternative that is even half as easy to set up and use. There is no suitable replacement. That "unusable" language just happens to be the best thing around.

      I point out this obvious fact because it drives morons incapable of forming their own opinions crazy. With any luck, they'll stop polluting every programming related thread with their miserable whining.

    7. Re:Fits partially with tradition by DuckDodgers · · Score: 1

      We debate the merits of programming languages because we seek the most efficient tool for writing useful software with acceptable performance and quality. That's the core concept of the discussion - blast or praise features of language X because you think it makes the development process slower, or the likelihood of high quality better, or the runtime performance unacceptably low.

      And it's a fun discussion to have, I really enjoy it. But eventually I realized I was spending so much effort seeking the perfect tool that I was neglecting to build anything with the tools I already acquired.

    8. Re:Fits partially with tradition by Anonymous Coward · · Score: 0

      The tradition of eating shit?

  9. Ceylon? by rssrss · · Score: 3, Funny

    Shouldn't it be Sri Lanak?

    --
    In the land of the blind, the one-eyed man is king.
    1. Re:Ceylon? by Anonymous Coward · · Score: 0

      Ceylon is also a name of a tea (which is pretty nasty to be honest).

    2. Re:Ceylon? by unixisc · · Score: 1

      Or they could have called it 'Serendipity' if the language is that good

    3. Re:Ceylon? by rssrss · · Score: 4, Interesting

      Serendib is the Arabic name for the Island, and Serendip in Persian. A Persian folk tale "The Three Princes of Serendip" became known in England through a 16th century Italian translation. The protagonists of that story were in the habit of discovering of things they were not seeking. In 1754 Horace Walpole, English writer and parliamentarian, coin the English word "serendipity" to capture that happy characteristic.

      Taprobane, a Greek name for the island, would be another literary allusion.

      --
      In the land of the blind, the one-eyed man is king.
    4. Re:Ceylon? by unixisc · · Score: 1

      A tea originating from Ceylon - Sri Lanka, as the GP pointed out

    5. Re:Ceylon? by Anonymous Coward · · Score: 0

      That would be related to "Sharan Dweep" in Sanskrit literally "Refuge Island".

      Remember, Latin and Sanskrit predate everything else in Eurasia and share a common, though vaguely-defined, parent.

  10. I can see HR all over it... by deimios666 · · Score: 2

    Ceylon developers wanted with at least 5 years experience with the language.
    Submit your resume till December 1st, 2013...

    --
    I think, therefore you are.
    1. Re:I can see HR all over it... by SQLGuru · · Score: 1

      Out of mod points, but a virtual +1 for you, sir.

    2. Re:I can see HR all over it... by ebno-10db · · Score: 1

      Not unreasonable - they're looking for people who understand time travel.

    3. Re:I can see HR all over it... by unixisc · · Score: 1

      You'll have people coming out of the woodwork claiming to have been a part of the team that created the language

  11. Comparison to Java by TheloniousToady · · Score: 1

    Since Ceylon seems to be Java inspired, I looked for a comparison of the two but didn't find one. Wikipedia's entry about it says, "The project is described to be what a language and SDK for business computing would look like if it were designed today, keeping in mind the successes and failures of the Java language and Java SE SDK." That nice, but can anyone here supply some details?

  12. Ur/Web? by Anonymous Coward · · Score: 0

    Ur/Web is really, really, really cool! I don't see what it has to do with Ceylon though - a better link would have been to Scala or to Kotlin.

    1. Re:Ur/Web? by Kongming · · Score: 1

      Not sure why parent is modded down, Ur/Web does have relatively little to do with Ceylon.

      --
      (no sig)
  13. But.. by TechyImmigrant · · Score: 1

    >combining subtype and parametric polymorphism with declaration-site variance, including first-class union and intersection types, and using principal types for local type inference and flow-dependent typing; a unique treatment of function and tuple types, enabling powerful abstractions; first-class constructs for defining modules and dependencies between modules; a very flexible syntax including comprehensions and support for expressing tree-like structures; and fully-reified generic types, on both the JVM and JavaScript virtual machines, and a unique typesafe metamodel

    But how do I make it *do* something?

    It's all very well being able to lock down what something is, but programmer cannot live on types alone.

    --
    I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    1. Re:But.. by Anonymous Coward · · Score: 0

      but programmer cannot live on types alone.

      So, you have never met a Haskell programmer, then?

    2. Re:But.. by TechyImmigrant · · Score: 1

      I tried Haskell once. Only once.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    3. Re:But.. by ebno-10db · · Score: 1

      Only once.

      That's the point - you can never re-assign to a variable.

    4. Re:But.. by TechyImmigrant · · Score: 4, Funny

      Only once.

      That's the point - you can never re-assign to a variable.

      It felt like a kick in the monads.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
  14. Concurrency by emorning9707 · · Score: 4, Insightful

    I have no interest in a new language that has concurrency story at all.
    Any new language needs to address the biggest development challenge of this time - coding for multiple cores.

    1. Re:Concurrency by emorning9707 · · Score: 1

      I have no interest in a new language that has concurrency story at all.

      Should be 'has no concurrency story', geez....

    2. Re:Concurrency by lavaforge · · Score: 1

      Is it really the language's job to bake that in? Akka should run on Ceylon without much issue, unless they've really changed things since I last looked at it.

    3. Re:Concurrency by emorning9707 · · Score: 1

      Is it really the language's job to bake that in?

      Why build a better type system, or any type system at all, when I can just call everything an Object?
      A better type system makes it easier for developers to create correctly working, and efficient, code.
      Coding for concurrency is very difficult and a proper concurrency approach (ala Go or Rust) make it much easier for developers to develop correctly working, and efficient, code.
      Add-on libraries like Akka make things a little easier but can't help nearly as much as a properly designed concurrency architecture.

    4. Re:Concurrency by Anonymous Coward · · Score: 0

      ERROnoR:
      out of order log write detected

    5. Re:Concurrency by Anonymous Coward · · Score: 0

      Well, if you don't make concurrency the job of the language AND the OS, you only will have the same non scalable piss poor performance we've had so far, were running two programs each spawning threads step on each other.

      http://gradha.github.io/articles/2013/10/40-years-later-we-still-cant-be-friends.html

  15. harmful constructs by Alomex · · Score: 2, Insightful

    Any language that states as a goal: omission or elimination of potentially-harmful constructs, but keeps the awful C construct:

    if (x = 3)
    { ...
    }

    is not really serious about elimination of harmful constructs.

    1. Re:harmful constructs by Anonymous Coward · · Score: 2, Informative

      That example does not compile in Ceylon with a compile error that disproves your claim:

                  expression must be of boolean type: Integer is not assignable to Boolean

                  variable value x = 3;

                  if ( x = 4 )
                  {

                  }

    2. Re:harmful constructs by preflex · · Score: 4, Informative

      That example does not compile in Ceylon with a compile error that disproves your claim:

      expression must be of boolean type: Integer is not assignable to Boolean

      variable value x = 3;

      if ( x = 4 ) {

      }

      if(x=true) ...

      This is still bad.

    3. Re:harmful constructs by Volguus+Zildrohar · · Score: 1

      For some reason, I always hate it when people choose an explicit

      if (boolean == true)

      rather than just

      if (boolean)

      I'm glad those people have to hunt for extra bugs ;)

      --
      When confronted with one problem, some think "I'll use recursion". Now they are confronted with one problem.
    4. Re:harmful constructs by Alomex · · Score: 1

      how about

      if (parityA=(parityB xor parityC))

      is that an extra bug? of course not. It's a buggy construct which luckily gets caught often by the type checker, but still shouldn't be there.

    5. Re:harmful constructs by Anonymous Coward · · Score: 0

      I don't mind that construction if the variable name doesn't clearly indicate it's a Boolean. For example:

      if (hasDoohickey)...

      is fine, but

      if (doohickey) ....

      sucks for readability, even when you know "doohickey" is a Boolean.

    6. Re:harmful constructs by kybred · · Score: 1

      For some reason, I always hate it when people choose an explicit

      if (boolean == true)

      rather than just

      if (boolean)

      I'm glad those people have to hunt for extra bugs ;)

      Absolutely! If you give the boolean variable a good name it makes the code read logically:

      if (thing_is_valid)
      {
              do_stuff();
      }

    7. Re:harmful constructs by Anonymous Coward · · Score: 0

      Depends on the language. In a proper language only false and null should evaluate to false.

  16. Re:Brain Dead by squiggleslash · · Score: 2

    3.14 * 10 == 3.140?

    (And what would that have to do with anything anyway? And actually, the popularity of the phrase "You're comparing apples to oranges!" shows that, actually, people do think in types, and get annoyed when others treat one type as another unthinkingly.

    --
    You are not alone. This is not normal. None of this is normal.
  17. Misread the title by Anonymous Coward · · Score: 0

    "Cylon" language.

    That would be a mixed blessing. On the downside, near-genocide by a treacherous world-wide WMD strike. On the upside, a chance to score some hot skinjob action.

    Nah, who am I kidding. No Cylon is that desperate for anything (secrets, access, weird geek fetishes).

  18. Re:Brain Dead by shawnhcorey · · Score: 1

    People can learn to think in types. But that's a learnt ability, not a natural one.

    --
    Don't stop where the ink does.
  19. Re:Brain Dead by squiggleslash · · Score: 1

    Really? So when someone goes to the supermarket, puts 5 oranges in their cart, they wouldn't notice if the store manager were to wait until they're not looking, and replace the oranges with peanuts?

    People actually think in types ALL THE TIME. You have to unlearn types as part of the process of learning how to program, learning how to turn real world situations into generic rules.

    So no, you have it totally wrong. Yes, type safety trips up many programmers, although for the most part it's not that they can't understand it, or fail to know what to do when their program doesn't compile, it's just annoying being reminded there's a bug in their app.

    --
    You are not alone. This is not normal. None of this is normal.
  20. Re:Brain Dead by SCHecklerX · · Score: 0

    Like javascript? 1+2 = 12?

    If you are not going to have strong types, then you must use a different operator for string concatenation vs. math. The above is one reason I can't stand javascript.

  21. By your command... by meeotch · · Score: 2

    ...line.

  22. Thank goodness by fyngyrz · · Score: 3, Funny

    ...for Python.

    I can continue to completely ignore the incredible, writhing mess that is java and its ecosystem.

    Go ahead, mod me down, then go back to fighting with Java. I'll just continue being productive. :)

    --
    I've fallen off your lawn, and I can't get up.
    1. Re:Thank goodness by Anonymous Coward · · Score: 0

      And by productive, you mean counting indentation spaces to figure out where the spurious, erratic logic bug is in your software.

    2. Re:Thank goodness by RightSaidFred99 · · Score: 5, Insightful

      No, he probably means writing gobs and gobs and gobs of difficult to support and debug software. But yours is right too,

      Fuck using a scripting language for anything beyond a "script".

    3. Re:Thank goodness by fyngyrz · · Score: 2

      you mean counting indentation spaces

      No; I've always written code in an indent-structured manner, it's both natural to me and an aid, not a detriment, to my coding. I've even written (and had published) technical magazine articles on it, back in the day when that actually meant something. If your style (and I use that word loosely) is K&R or some other inherently indent-unfriendly method where braces or other forms of structure are visually unbalanced and code that is structurally dependent isn't visually dependent, then sure, Python is probably a pain your ass. But for me, I always put code in deeper visually when it is deeper structurally, and that makes it much easier, rather than more difficult, to debug.

      In my code, indent means dependent. The editor makes sure I can see the indentation properly. This is basically all one needs to manage a language that incorporates the idea of indent into the code. If you're not comfortable with that, there are a plethora of languages that are right with your ideas, and by all means, enjoy them. Me, I'm perfectly happy with Python, and in no way suffering either your imaginary indent-based bugs or the "difficult to support and debug" software imagined by your respondent, below.

      --
      I've fallen off your lawn, and I can't get up.
    4. Re:Thank goodness by fyngyrz · · Score: 1

      Fuck using a scripting language for anything beyond a "script".

      Wow, wish I'd known that when I wrote my aurora-prediction system, my demonstration database, my point of sale system, and my meter generation software. I didn't know it was supposed to be difficult, so I committed the ultimate sin of writing, debugging and using these things quickly and easily. I just didn't know I was supposed to struggle with something more difficult. Can you ever forgive me?

      --
      I've fallen off your lawn, and I can't get up.
    5. Re:Thank goodness by RightSaidFred99 · · Score: 1

      More difficult...than what? Do you know how easy Java and C# are? But good luck maintaining that spaghetti code. I'm sure it is _totally_ secure too.

    6. Re:Thank goodness by Anonymous Coward · · Score: 0

      That should be __totally__, not _totally_. ;)

    7. Re:Thank goodness by Mathinker · · Score: 1

      Last time I checked, it's possible to write spaghetti code in any language. Of course, there are some languages in which it is impossible to write anything _but_ spaghetti code, but he wasn't talking about them.

  23. Re:Brain Dead by shawnhcorey · · Score: 1

    In Perl: my $x = 1 + 2; my $y = '1' . '2'; Yup, not using arithmetic operators for anything but arithmatic is a good idea.

    --
    Don't stop where the ink does.
  24. Re:Brain Dead by Kongming · · Score: 4, Insightful

    People do not think in types.

    Piaget would disagree with you.

    http://en.wikipedia.org/wiki/Schema_(psychology)

    --
    (no sig)
  25. 5 Years Experience by Anonymous Coward · · Score: 0

    Hi, I'd like to hire a Ceylon Developer. It's entry level for $10/hour. They just need 5+ years experience.

    mkay, thx, goodbye.

    - HR

  26. Re:Brain Dead by shawnhcorey · · Score: 1

    Consider: int x; What happens here? x = 3.1415; Does x hold the correct value? No. But if x was a scalar, then: x = int( 3.1415 ); says exactly what is happening. Type safety places restrictions on what can be done and programmer have to memorize the rules because they're not natural to his thinking. It's because of all the things that programmers have to memorize that programming is hard. The more things a programmer have to remember, the more bugs he will create. Having to write int() every time he wants an integer: 1. decreases bugs, and 2. makes the code more readable. Types are not natural; they were created to make compiler writing easier. They do not make programming easier, just the opposite. They make programming harder because the force the programmer to remember more things.

    --
    Don't stop where the ink does.
  27. Re:Brain Dead by shawnhcorey · · Score: 1

    I'm not sure these schema are restrictive enough to be a type in programming.

    --
    Don't stop where the ink does.
  28. Re:Brain Dead by ebno-10db · · Score: 1

    Speak for yourself. Like most people I learned the difference between integers and reals, and between numbers and the notation for numbers, before high school.

  29. Syntax is everything! by Anonymous Coward · · Score: 2, Funny

    Haven't you heard! We discuss this all the time behind the bike shed!

    1. Re:Syntax is everything! by ebno-10db · · Score: 1

      The farmer's daughter joins you behind the bike shed and you want to debate programming languages? New hypothesis: geeks rarely get lucky because they don't even realize when it's offered to them.

      P.S. There was a good Big Bang Theory episode about that.

    2. Re:Syntax is everything! by Anonymous Coward · · Score: 0

      She sounds like a whore. Good riddance.

    3. Re:Syntax is everything! by Anonymous Coward · · Score: 0

      what, the farmer's daughter couldn't possibly want to join the debate?

      maybe you're not getting lucky because you think women are objects for your amusement and they aren't interested in playing along

  30. Red Hat's plans by Kongming · · Score: 5, Interesting

    I am curious as to Red Hat's practical motivations for creating this language. Specifically, do they plan on integrating it in their existing business or projects in any way?

    --
    (no sig)
    1. Re:Red Hat's plans by bill_mcgonigle · · Score: 1

      If they could use Ceylon over python for the system tools, that'd be a godsend. I know there are some good python programmers out there, but everybody writing Redhat system tools isn't a good python programmer. Node.js is coming along nicely, and that'd be a great combination.

      Hrm, maybe next time I need to poke the hornet's nest...

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    2. Re:Red Hat's plans by Anonymous Coward · · Score: 0

      The JVM is nice for a lot of things but is fail for system tools.

    3. Re:Red Hat's plans by Kongming · · Score: 1

      A bit late, but Ceylon creator Brian Krig answered the following question in an interview posted today:

      Finally, going forward, do you think that going forward, Red Hat will start coding more in Ceylon?

      The first step for us will be to bring some of our pieces that we have in the JBoss ecosystem that we delivered as pieces of the application server, and repackage them, and make them modular, and make those modules for the Ceylon platform.

      At the same time as that, we're taking Ceylon, and we're enabling deployment to Openshift. Once we have then the capabilities that we have in JBoss, also for Ceylon, then it's going to be a lot more interesting - what can we do in Ceylon that we can currently do in JBoss?

      People often ask me, does RedHat use Ceylon to build internal projects, and I'm always kind of like, I don't quite understand, we don't have internal projects, we're a product company!

      --
      (no sig)
    4. Re:Red Hat's plans by Frequanaut · · Score: 1

      no

  31. Potentially by Art3x · · Score: 1

    elimination of potentially-harmful constructs

    When did English speakers fall in love with the word potentially?

    We already have a single word for potentially harmful: it's called dangerous.

    Even worse is the infestation of the phrase could potentially, which means the same thing as could.

    1. Re:Potentially by Anonymous Coward · · Score: 0

      i thought the synonym for potentially harmful amongst engineers was "useful".
      gasoline is potentially harmful. it is also useful.

    2. Re:Potentially by Anonymous Coward · · Score: 0

      Dangerous could be deadly where potentially harmful cannot.

    3. Re:Potentially by OdinOdin_ · · Score: 1

      You are not an English speaker yourself. Well as an English speaker...

      Adding "potentially" to the sentence can often be used by technical/engineering people to better describe a scenario of risk. Since other non-technical/non-engineering people look to the statement to fully understand the situation, so it needs to be described as either being a matter of fact, or a matter of professional opinion, or a matter open to debate.

      So to describe something as "potentially" is attempting weight the risk, without claiming it as a matter of fact.

      I agree with the other poster, potentially harmful != dangerous. On the basis that for me potentially harmful is unlikely to be dangerous (as in less than 50% risk), and "dangerous" is more likely to result in danger (greater than 50% of risk). Again we (the engineers/technical people) are weighting our response via the use of language in this way.

  32. Re:Brain Dead by AvitarX · · Score: 1

    adding the '0' is not natural, it's a learned trick.

    I'd argue that multiplication beyond adding stones and counting isn't natural though.

    --
    Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
  33. Re:Brain Dead by ebno-10db · · Score: 1

    People can learn to think in types. But that's a learnt ability, not a natural one.

    So fractions and decimals are a natural way to think? Most kids in the earliest grades could disabuse you of that notion.

  34. Re:Brain Dead by ebno-10db · · Score: 1

    Consider: int x; What happens here? x = 3.1415

    Hopefully you get an error.

    BTW, you rounded wrong. Pi to 4 decimal places is 3.1416. However, in order to round 3.1415926 to 4 decimal places "correctly", you should specify the exact type of rounding you want to use. In that case it probably wouldn't matter, but there are plenty where it does. The cumulative effect of rounding a number of numbers can be significant (pun intended).

    It's because of all the things that programmers have to memorize that programming is hard.

    People learn the difference between integers and reals in grade school.

    Having to write int() every time he wants an integer: 1. decreases bugs, and 2. makes the code more readable.

    That's an argument for static typing. It forces you to specify that you're converting between a float and an int. Better yet if the function used to convert specifies the type of rounding, rather than the C style "I guess that cast truncates - what about negative numbers?".

    Types are not natural; they were created to make compiler writing easier.

    On the contrary. The easiest thing in the world is to specify implicit conversion rules, as C is so full of. Newer languages took that out for the sake of the programmers.

  35. YABL by iliketrash · · Score: 3, Funny

    Yet Another Brace Language

    1. Re:YABL by real-modo · · Score: 1

      YAML

      Yet another meh language.

  36. Re:Brain Dead by Jack9 · · Score: 1

    In programming, our challenges includes some tightly coupled issues. Identifying and removing errors to large programs and keeping code complexity to a minimum. Strict typing usually eliminates a number possible errors. Unexpected autoboxing is one of them, depending on the strength of the type system. You describe adding a 0 to a string, which is how people think for a simple domain. A type is a domain. An int will (in most languages) not contain .01 nor 1i nor A. Representative values notwithstanding. So I understand your point, but I disagree that people do not think in types.

    Strict typing, for the most part, increases notation complexity in naming (z = ArrayList[T,H,G] vs y=ArrayMap[L,P], ad nauseam) and an added layer of boilerplate conversion code/functions for moving between types explicitly. I'm really surprised there aren't more PHDs getting proper staticians to correlate this from the glut of Java code flying about. This is a tradeoff any time you trade compiler checking for the conversion code that had to be written to support the types being used. You have to decide if that's worth the cost of a programmer's time (let's not talk about the programmer's sanity). I think it's a great tradeoff, in many languages. Type systems aren't trivial to maintain in a language and I don't envy maintainers.

    Some languages are still developed saying they don't have a strict type system. While I don't have an example for Perl, PHP definitely has a demonstrable wishy-washy type system, it's just hidden from most developers.
    $z=1.5*2;
    $y=array(1,2,4,5);
    $t = array_key_exists($z,$y); // error! because $z is a float
    Since you can't have float keys, where's the autobox there? Another function, array_slice, doesn't care and converts it to int.
    At some point the compiler has to figure out if the value is representative or not. Every language has a strict type system at some level so, I have to disagree that it's brain dead to have one.

    The question is, should it be a tool for the programmer to ensure code correctness or just a set of rules that usually ignore? One leads to, among other things, more robust and reliable large systems with an added benefit to prolonging the useful life of a programmer (old programmers usually end up in java because the compiler/IDE catches many problems) and the other path can lead to more rapid development, more intimate knowledge of the language to avoid behaviors like subtle bugs, and more flexibility in reusing code. Instead of a bunch of utility methods or conversion code for handling different possible types, you just use 1. I prefer languages without type systems because I primarily write and work on smaller systems, but I see the value in larger projects that use them. I'm not sure it's useful to call one side weaker than the other where there's no solid criteria for what's "best".

    --

    Often wrong but never in doubt.
    I am Jack9.
    Everyone knows me.
  37. Gavin needs a beard by jomegat · · Score: 1

    Unless Gavin King grows some serious facial hair, Ceylon is a doomed language.

    --

    In theory, practice and theory are the same. In practice, they're not.

  38. PHP is there so you use it by tepples · · Score: 1

    PHP is like BASIC: it's there so you use it. I can think of a few entry-level shared web hosts that support PHP but not Perl, Python, Ruby, or Java "for security reasons".

  39. Sri Lanka (Not Ceylon) by Frankie70 · · Score: 2

    Sri Lanka was Ceylon
    Now it's Sri Lanka, not Ceylon
    Been a long time gone, Ceylon
    Now it's subcontinental delight on a moonlit night

    Every gal in Ceylon
    Lives in Sri Lanka, not Ceylon
    So if you've a date in Ceylon
    She'll be waiting in Sri Lanka

  40. Gavin King by cowwoc2001 · · Score: 1

    The fact that Gavin King (of Hibernate fame) is heading up the project is terrible news. The guy has a horrible track record of disparaging users for report bugs. Definitely not professional, and a sure way to burn a community.

  41. Re:Brain Dead by Anonymous Coward · · Score: 0

    Now ask someone to add a number of dollars to a temperature. They will respond type error.

    Most people consider decimal to have a string interface, which is not incorrect.

  42. Re:Brain Dead by Anonymous Coward · · Score: 0

    Nah. They'd babble incoherently, and then resort to calling me poopy-head for not agreeing with their assertion that they should be able to exchange their orange for a candy-bar.

    A hammer ia a natural tool for bashing nails. That doesn't do much for keeping a beginner's thumbs from being sore..

    That being said, those people who get too involved in types are as dangerous as those who want to get rid of them entirely.

  43. Readability by wonkey_monkey · · Score: 1

    The language features, an emphasis upon readability

    Not inserting superfluous commas, would be a good place to start.

    --
    systemd is Roko's Basilisk.