[ANN] Falcon - powering innovation

Discussion in 'Ruby' started by Kless, Apr 11, 2009.

  1. Kless

    Kless Guest

    If anybody is interesed in new technologies, you'll love this new
    language called Falcon [1], which has been open sourced ago little
    time.

    Falcon is a scripting engine ready to empower mission-critical
    multithreaded applications. It provides six integrated programming
    paradigms: procedural, object oriented, prototype oriented,
    functional, tabular and message oriented. You use what you prefer.

    To know more about its design, read the interview to the Falcon author
    that has published ComputerWorld Australia [2].


    [1] http://www.falconpl.org/
    [2] http://www.computerworld.com.au/article/298655/-z_programming_languages_falcon?fp=2&fpid=
    Kless, Apr 11, 2009
    #1
    1. Advertising

  2. Kless

    Ghost Steven Guest

    Re: Falcon - powering innovation

    On the first page I was greated withy this example:

    > "Hello world!"


    ...which would suggest it uses the greater then sign as a printf. So
    then what if I write something like this:

    if a > some_function()

    Am I say: "if (a) printf(some_function())" or is this just all the
    condition line, such as: "if (a > some_function())". Code syntactic
    sugar is nice to have, but not when I welcome in all sorts of cases of
    ambiguity.


    --
    Posted via http://www.ruby-forum.com/.
    Ghost Steven, Apr 11, 2009
    #2
    1. Advertising

  3. Kless

    Marc Heiler Guest

    Re: Falcon - powering innovation

    To compile it one needs cmake. Unfortunately I was not able to build it.

    The Io Language has a similar problem - I can not compile it.

    I am sorry to say, but this is frustrating for me.

    Python, Ruby and Perl all compile here from source for me without ANY
    problem.
    I think new languages should put big emphasis to try to stay on par with
    the existing scripting languages. Maybe Falcon is better than i.e.
    python, but if I am too stupid to compile it, whereas ruby python and
    perl all work nicely (as opposed to compiling Falcon or Io), then I just
    stick to what gives me less problems.

    That being said, Falcon seems to have some really cool ideas. Who knows,
    maybe one day ruby learns from falcon :)
    --
    Posted via http://www.ruby-forum.com/.
    Marc Heiler, Apr 11, 2009
    #3
  4. Kless wrote:

    > If anybody is interesed in new technologies, you'll love this new
    > language called Falcon [1], which has been open sourced ago little
    > time.
    >
    > Falcon is a scripting engine ready to empower mission-critical
    > multithreaded applications. It provides six integrated programming
    > paradigms: procedural, object oriented, prototype oriented,
    > functional, tabular and message oriented. You use what you prefer.
    >
    > To know more about its design, read the interview to the Falcon author
    > that has published ComputerWorld Australia [2].


    Nice language (I like all new languages :). Please don't read any of my
    words as criticism.

    The Falcon Facts Table [1] is not 100% right about Ruby.

    * Document Template: There was eruby in the past (maybe it still exists)
    that was a binary. Other than that, "Document Templating" can be emulated by
    this one-liner:

    ruby -rerb -e"puts ERB.new(STDIN.read).result" < rubyfile.rhtml

    And then, I don't think this is an important fact and should definitively
    not be built into the language itself.

    * Multithreading: Ruby 1.8 had portable multithreading (it even worked under
    DOS a decade ago). Ruby 1.9 has native OS threads, which are a lot more
    scalable than green threads of Ruby 1.8. But basically the same applies as
    for Python. I guess JRuby is a lot more scalable in this regard.

    * Embeddability: You can embed Ruby into a C application in 10 lines of
    code. But usually you write wrappers of a C library and call it from Ruby.
    What you can't do is to embed multiple instances of Ruby into your
    application (you can do that with Rubinius).

    * C Dynamic Library Interface: Ruby ships with "dl", with which you can
    access dynamic libraries.

    * Compile time metaprogramming: I don't see a huge difference to Ruby's
    metaprogramming here. You can do exactly the same with evaluating strings,
    e.g.

    def makeClassWithProp(name, property)
    eval %{
    class #{name}
    attr_accessor #{property}
    end
    }
    end

    * Procedural programming: Well, methods are very similar to procedures. If
    you write methods in the toplevel (without a class declaration), they are
    part of class Object. I don't see a huge difference to procedures :)

    * Functional Programming: I'd give Python here a clear "yes", as Python's
    methods are actually functions. You can definitively pass other functions as
    parameters to functions in Python. In Ruby, there are also functions
    ("blocks") that you can pass to methods. So I'd give Ruby at least a partial
    here and Python a clear "yes".

    * Prototype-oriented: Ruby has singleton methods.
    a = Array.new
    def a.new_method
    "hallo"
    end
    p a.new_method # => "hallo"
    Array.new.new_method #=> method missing

    So this is at least a "partial", like Python :)

    * Direct binary data access: Both Python and Ruby have libraries that ship
    by default that deal with this. In Ruby this is done by methods #pack and
    #unpack.

    * Virtual filesystem: There is open-uri, a library which provides kind-of
    virtual filesystem:

    ruby -ropen-uri -e'puts open('http://www.ruby-lang.org/').read'

    ----

    IMHO, Falcon mixes too many things into one language, without having a clear
    advantage over languages like Python or Ruby (at least I haven't seen a
    clear feature that Python or Ruby doesn't have). I like Ruby because of it's
    simplicity and well-thought-out underlying model (everything is an object),
    and not to forget the principle of (matz's) least suprise in the core
    libraries. Having too many concepts in a language is not always a good
    thing.

    Regards,

    Michael

    [1]: http://www.falconpl.org/index.ftd?page_id=facts
    Michael Neumann, Apr 11, 2009
    #4
  5. Re: Falcon - powering innovation

    >
    > * Compile time metaprogramming: I don't see a huge difference to
    > Ruby's
    > metaprogramming here. You can do exactly the same with evaluating
    > strings,
    > e.g.
    >
    > def makeClassWithProp(name, property)
    > eval %{
    > class #{name}
    > attr_accessor #{property}
    > end
    > }
    > end


    Actually, this is a hack already. (Warning, the parameter order is
    1.9 only).

    def self.makeClassWithProp(name, superclass = Object, property)
    c = Class.new(superclass) {
    attr_accessor property
    }
    const_set(name, c)
    end

    Is a nice and clean way to get that working. This generates a Subclass
    to the Module/Class this Method is defined in.

    Regards,
    Florian

    --
    Florian Gilcher

    smtp:
    jabber:
    gpg: 533148E2
    Florian Gilcher, Apr 16, 2009
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Carlos Santana
    Replies:
    0
    Views:
    286
    Carlos Santana
    Aug 14, 2003
  2. Kless
    Replies:
    4
    Views:
    284
  3. Kless
    Replies:
    0
    Views:
    276
    Kless
    Apr 11, 2009
  4. Kless

    [ANN] Falcon - powering innovation

    Kless, Apr 11, 2009, in forum: C Programming
    Replies:
    5
    Views:
    373
    Richard Tobin
    Apr 12, 2009
  5. Kless

    [ANN] Falcon - powering innovation

    Kless, Apr 11, 2009, in forum: Javascript
    Replies:
    0
    Views:
    103
    Kless
    Apr 11, 2009
Loading...

Share This Page