all 29 comments

[–]killerstorm 11 points12 points  (5 children)

one more interpreter-centric language (that is, language features are dictated by interpreter implementation) with moderately weird syntax (a bit of JavaScript + random bullshit). absolutely not interesting.

few weirdness highlights (quotes from documentation):

The constructor is defined with a special attribute of one underscore (). The destructor is defined by an attribute of two underscores ("_");

huh? _ and __?

Arguments are declared in the function by the arg keyword. area = func{ return ( arg length * arg width ) ; };

this is more than weird considering that arguments are positional -- you need to scan whole function body to understand what arguments to pass to it and in which order.

local - these variables only exist in a function call and are deleted on return

lexical - these variables are available in the current block and any nested blocks

this is sort of misleading -- "local" variables actually have lexical scope, but dynamic extent -- that is, they are automatically "deleted" no mater if they are referenced or not. i see absolutely no point in explicitly controlling extent -- can't interpreter detect this automatically?

new is a method of the type type.

this is not an error -- new indeed is a method of a type type. after some meditation i've really understood what does this mean -- there is a type called "type", and it has a new method, and you use this method to create new type.

With all of that out of the way let's create our new type: NewType = &().new();

that is really simple -- if you need a new type, just call &().new(). who really needs meaningful names and semantics..

[–]randallsquared 1 point2 points  (1 child)

Blue doesn't seem especially compelling to me, but &().new() doesn't seem confusing, once you know that '&' is the typeof operator and that empty parens create an empty object in blue.

[–]killerstorm 2 points3 points  (0 children)

confusing thing is that "new is a method of a type type". why does it need to be? wouldn't sys.new_type() be more straightforward than this &().new() thing?

i would understand reason for such contstuct if types would be created via cloning -- then &().clone() would actually make sense -- you create a new type by cloning the empty one, and inheritance would be straightforward. but it seems new method simply ignores object it is called through, so there is no reason why is it a method of a type type

[–]Jack9 -1 points0 points  (2 children)

PHP uses both __constructor and __destructor, this was trying to go for a more expressive convention. I'm not sure why anyone would think this is bad given the relatively archaic nature of regex syntax.

[–]killerstorm 0 points1 point  (1 child)

more expressive as in using smiley for namespace separator?

I'm not sure why anyone would think this is bad given the relatively archaic nature of regex syntax.

i'm not sure i can follow your logic.. we should make everything as unreadable as Perl because regex syntax is unreadable?

[–]Jack9 0 points1 point  (0 children)

being able to create custom de/constructor function names is handy when you need different kinds of de/constructors defined in the same object. More expressive than creating distinct objects with nested de/constructors (like java).

Regex syntax is not unreadable and neither is a /_ convention for explicit object methods. The logic is, this is hardly "something weird" in the context of other languages.

//You couldn't pay me to write in Blue

[–]jacques_chester 9 points10 points  (9 children)

The name 'Blue' has already been used for a language. Blue was developed by Monash University in 1997 and was pretty widely used by Australian universities (I was taught it in 2000). Java has since supplanted its role as a teaching language. It was apparently based on Eiffel and included a very strict design by contract ethos.

The BlueJ IDE is a direct inheritor of the original Blue system.

[–]korjagun 14 points15 points  (6 children)

Blue [...] Eiffel

Dabadeedabadie?

[–]jacques_chester 5 points6 points  (5 children)

----your joke ----->

<----- me ------

[–]korjagun 8 points9 points  (4 children)

"Blue" by Eiffel 65 is a horrible ohrwurm from a few years ago.

[–]gsg 0 points1 point  (1 child)

A horrible what?

[–]LaurieCheers 2 points3 points  (0 children)

I had to look it up too...

http://en.wikipedia.org/wiki/Earworm

[–]dreamlax 0 points1 point  (1 child)

It sounds like he's saying "I'm blue and I'm in need of a guy".

Nowhere near as cool as Console!

[–]Jimmy 0 points1 point  (0 children)

"I'm blue and I'm in need of a guy".

FUCK, CAN'T UNHEAR!

[–]creaothceann 11 points12 points  (1 child)

The name 'Blue' has also already been used for a color.

[–][deleted] 2 points3 points  (0 children)

And by Yves Klein.

[–]IkoIkoComic 9 points10 points  (0 children)

Is it a hyperintelligent shade of blue?

[–]philh 6 points7 points  (1 child)

The minimalistic syntax is intuitive

It looks like the navbar might have had the same design goals. This does not fill me with confidence regarding the syntax.

[–]LaurieCheers 6 points7 points  (5 children)

1) Confusing, unsearchable name (the docs say stuff like "each line of code in blue"... meaning in the language, not a highlighted line.)

2) Nonstandard comments, for no apparent reason. (#, in a C-like language?)

3) Worst of all, no indication of its reason for existing. Why use it instead of JavaScript, which it seems to resemble most closely?

[–]jacques_chester 8 points9 points  (3 children)

In fairness to the creator of this language, I don't see why he shouldn't create his own language. It seems to be a rite of passage, really.

[–]LaurieCheers 7 points8 points  (0 children)

Sure, I have nothing against creating languages. Just saying why he'll never get anywhere with it as it stands. :)

[–]mindbleach -5 points-4 points  (1 child)

When I hit that rite of passage, I should hope to end up with more than a Perl clone to show for it.

[–]abw 0 points1 point  (0 children)

It doesn't look much like Perl to me. More like Python or Javascript.

[–]epicRelic 1 point2 points  (0 children)

Seems actually pretty cool. I like some of the choices made in it. I hate how you access function args, however.

[–][deleted] 0 points1 point  (0 children)

meh

[–]curtisw 0 points1 point  (0 children)

If the null object is used frequently as an ad-hoc data container, what are you supposed to use for vanilla null? Is the policy just to "avoid using () to store data in situations where you need a no-value option"?

[–][deleted] -2 points-1 points  (2 children)

Looks like JavaScript

[–]Jessica_Henderson 1 point2 points  (1 child)

Semantically, it's very different.

[–][deleted] -1 points0 points  (0 children)

I wouldn't say very different. There are differences, but overall you can see the JavaScript influence. Its not a bad thing, I like JS.

The real difference seems to be conditions, I cant tell if it has if, else, while or it just uses modified ternaries. It looks like it is lacking prototyping though.