What New Language After Ruby?

Ooops, I’ll have to update the FAQ :wink:

If there’s enough interest I’ll write something on the Ruby Garden Wiki.

*** Where can I download an implementation of the Japanese language?
It is free? Is it open-source?

Japanese was thoughtfully crafted to run with little (ie “no”) resources
but what you already have. There’s no download to be made. You already
have all what is needed. The reference implementation is (mostly)
open-source, and has been thoroughly documented.

Several vendors have released distributions of the Japanese language.
The preferred form is the book, but there are several other offers out
there.

You may also receive an intensive (immersion) course of Japanese by
traveling to the land where it is most used (which, by a funny
coincidence, is Japan). There, people love this language so much they’ll
hardly use any other! You might find some rubyists, though.

*** How can I do (C code snippet) in Japanese?

Beware! Some languages don’t map naturally to Japanese, and attempting
to “translate” directly from other languages will produce deceiving
results.

See http://www.engrish.com for several examples of what happens when you
mix other languages with Japanese.

Another example:

pseudo code in English:
return the value of the successor of the element referred to by a

(sorry but this charset can’t show the code in Japanese)
literal translation of the code in Japanese to English pseudo code:
To with A reset the value of the successor of the element which has been
related

As you can see, although you can express it as such in Japanese, it
isn’t as elegant as the natural way (it’s like using Ruby only in a
procedural way).

···

On Thu, Aug 22, 2002 at 04:48:46AM +0900, William Pinelo Marin wrote:

really ?

where is japanese programing language for download ?


_ _

__ __ | | ___ _ __ ___ __ _ _ __
'_ \ / | __/ __| '_ _ \ / ` | ’ \
) | (| | |
__ \ | | | | | (| | | | |
.__/ _,
|_|/| || ||_,|| |_|
Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com

Linux is obsolete
– Andrew Tanenbaum

> If you want to learn ST why not VisualWorks?

Right. Is it still free for private user?

···

On Wednesday 21 August 2002 06:13 pm, Thaddeus L. Olczyk wrote:

Probably it suffices to say that each organization, company, or
institution has its own culture and management policy, which is usually
beyond our control. Probably Ericsson is more pragmatic, but I don’t
think there are any general statistics that say functional programs are as
widely used as procedural programs.

Bill

···

========================================================================
Rafael ‘Dido’ Sevilla dido@imperium.ph wrote:

To blow away your argument that functional programs are not widely used
in industry: Ericsson generally standardized on the use of Erlang as
the language of choice for almost all of their internal development.
Besides, what kind of shop are you running, that your finance managers
have the ability to dictate to the engineers how they should do their
job? I’d think that today’s finance managers would understand that the
engineers know what their doing far better than they ever will, and they
shouldn’t try to meddle too much in that business.


Rafael R. Sevilla +63(2)8123151
Software Developer, Imperium Technology Inc. +63(917)4458925

I like the way you think. Can I
get a job on your planet?

Hal

···

----- Original Message -----
From: “Rafael ‘Dido’ Sevilla” dido@imperium.ph
To: “ruby-talk ML” ruby-talk@ruby-lang.org
Sent: Thursday, August 22, 2002 9:11 AM
Subject: Re: What New Language After Ruby?

Besides, what kind of shop are you running, that your finance managers
have the ability to dictate to the engineers how they should do their
job? I’d think that today’s finance managers would understand that the
engineers know what their doing far better than they ever will, and they
shouldn’t try to meddle too much in that business.

Thanks very much to all who gave information on Fortran vs. C. It made
very interesting reading.

Gavin

···

On Fri, Aug 23, 2002 at 01:10:47AM +0900, Gavin Sinclair wrote:

----- Original Message -----
From: “Dan Sugalski” dan@sidhe.org

Fortran: Yeah, it’s older than you are, but it still can’t be beat
for speed.

Can I ask why? People say it all the time, but I point-blank refuse
to believe that it is faster than optimised C. They’re the same
bloody thing, aren’t they? - low-level procedural languages. My
knowledge of Fortran is small, but of course everyone knows it’s used
for scientific calculations, so it may have the edge in numerical
calculations (infinite precision, …) but can’t you get a C library
that equals it? If not, why not. It’s all machine language in the
end, and not sufficiently far from that to begin with for me to
believe that the two should be any different.

When you start comparing language speeds, you really need to add some
context - which platform, compiler, etc. Fortran for science, math, or
engineering applications on supercomputer platforms as well as PC
platforms with the right compiler, is typically faster than C given the
same developer input time.

As far as I’ve been able to gather, one of the factors in this is that C
exposes certain features to the developer that Fortran doesn’t - e.g
pointers. This allowed the compiler writers to use a class of
optimizations which can be more globally applied to programs written in
Fortran. It also makes it easier to automatically parallelize (is that a
word?) than C. But that’s just my conclusions as a non-compiler writer
in either Fortran or C.

  • alan


Alan Chen
Digikata LLC
http://digikata.com

So that is really doable and worth the trouble? Can you give any good
pointers on how to do it? (No, I don’t even know FORTRAN, but I this sounds
like a fun experiment.)

– Nikodemus

···

On Fri, 23 Aug 2002 Tim.Hunter@sas.com wrote:

FORTRAN libraries. We spent a lot of time figuring out how to allow C
calls into FORTRAN routines, for the same reason people today make
Ruby call C routines: speed.

Not all functional languages are the same. For example:

Haskell and ML have static typing with powerful generics and type
inference. Scheme and LISP have dynamic, but not polymorphic, typing.

Haskell is lazy (implements normal order evaluation of function
arguments). ML, Scheme and LISP are strict (implement first order
evaluation).

Haskell is pure functional. ML, Scheme and LISP functions can have side
effects.

Haskell has curried functions, ML, Scheme and LISP do not.

Etc.

So, Haskell is further away from more everyday languages than Scheme and
LISP, while ML is somewhere between the two. For example, Java has a
mix of dynamic and static type systems, has first order evaluation of
function arguments, allows functions with side effects, and does not
support curried functions. So, Java is closer to Scheme than Haskell.
If you’re used to Java, I think Haskell is much more interesting to
learn.

Cheers,
Nat.

···

On Fri, 2002-08-23 at 15:18, William Djaja Tjokroaminata wrote:

Can anyone give me a pointer to the original reason why
pragmaticprogrammer.com chooses Haskell instead of Scheme, Lisp, or
ML? (If we just want to learn “a new thing”, any of the functional
languages will do, right? But to be both learning a new thing and being
practical, I think it is a different story.)


Dr. Nathaniel Pryce, Technical Director, B13media Ltd.
Studio 3a, 22-24 Highbury Grove, London N5 2EA, UK
http://www.b13media.com

William Djaja Tjokroaminata wrote:

Uh oh, then we may have a slight problem, Giuseppe, because for my
simplistic purpose, my GNU Emacs 21.1.1 is my ultimate editor :slight_smile: (I still
don’t know all those hidden capabilities because I never have time to
complete an Emacs book from cover to cover :slight_smile: and I don’t need any new
functionalities for now…)

What I don’t like about Emacs is Lisp --that’s the reason why I was
proposing a “port” to Poplog --that’d give POP, Prolog and Lisp as
underlying languages. (Are we going a little OT here?)

···


Giuseppe “Oblomov” Bilotta

Axiom I of the Giuseppe Bilotta
theory of IT:
Anything is better than MS

In article 021901c249f7$3acc1c00$0300a8c0@austin.rr.com,

···

Hal E. Fulton hal9000@hypermetrics.com wrote:

----- Original Message -----
From: “Rafael ‘Dido’ Sevilla” dido@imperium.ph
To: “ruby-talk ML” ruby-talk@ruby-lang.org
Sent: Thursday, August 22, 2002 9:11 AM
Subject: Re: What New Language After Ruby?

Besides, what kind of shop are you running, that your finance managers
have the ability to dictate to the engineers how they should do their
job? I’d think that today’s finance managers would understand that the
engineers know what their doing far better than they ever will, and they
shouldn’t try to meddle too much in that business.

I like the way you think. Can I
get a job on your planet?

    • Me too. where is the magical land of ph ? I just left my last
      job for precisely that reason and this was at a University were
      this kind of freedom is supposed to be one of the job perks.
    • Booker C. Bense

You can find a more “formal” description of why Fortran can be faster than
C in terms of “Restricted Pointers” in the July 1999 issue of C/C++ Users
Journal:

http://www.cuj.com/articles/1999/9907/9907d/9907d.htm

Regards,

Bill

···

==========================================================================
Gavin Sinclair gsinclair@soyabean.com.au wrote:

Thanks very much to all who gave information on Fortran vs. C. It made
very interesting reading.

Gavin

Hi,

Thanks a lot for presenting an objective comparison among the four
functional languages. In your personal opinion, which of the four
languages is the easiest to be integrated with C? At least SWIG has only
interfaces for MzScheme and Guile. Does it imply that probably Scheme is
the easiest to integrate with C, if not much easier than Haskell?

Regards,

Bill

···

==========================================================================
Nat Pryce nat.pryce@b13media.com wrote:

Not all functional languages are the same. For example:

Haskell and ML have static typing with powerful generics and type
inference. Scheme and LISP have dynamic, but not polymorphic, typing.

Haskell is lazy (implements normal order evaluation of function
arguments). ML, Scheme and LISP are strict (implement first order
evaluation).

Haskell is pure functional. ML, Scheme and LISP functions can have side
effects.

Haskell has curried functions, ML, Scheme and LISP do not.

Etc.

So, Haskell is further away from more everyday languages than Scheme and
LISP, while ML is somewhere between the two. For example, Java has a
mix of dynamic and static type systems, has first order evaluation of
function arguments, allows functions with side effects, and does not
support curried functions. So, Java is closer to Scheme than Haskell.
If you’re used to Java, I think Haskell is much more interesting to
learn.

Cheers,
Nat.


Dr. Nathaniel Pryce, Technical Director, B13media Ltd.
Studio 3a, 22-24 Highbury Grove, London N5 2EA, UK
http://www.b13media.com

Yes, calling FORTRAN from C is do-able and worth the trouble if 1)
what you’re doing is something that FORTRAN does well, such as
numerical analysis, or 2) you need to call routines that are only
available in FORTRAN.

As for how to do it, the best thing I can say is “consult your C
and/or FORTRAN compiler documentation.” Inter-programming-language
communication is extremely vendor-dependent. There are issues
regarding memory management, data types, exception handling, etc.

···

On Fri, 23 Aug 2002 11:45:27 GMT, Nikodemus Siivola tsiivola@cc.hut.fi wrote:

On Fri, 23 Aug 2002 Tim.Hunter@sas.com wrote:

FORTRAN libraries. We spent a lot of time figuring out how to allow C
calls into FORTRAN routines, for the same reason people today make
Ruby call C routines: speed.

So that is really doable and worth the trouble? Can you give any good
pointers on how to do it? (No, I don’t even know FORTRAN, but I this sounds
like a fun experiment.)

– Nikodemus

Nat Pryce nat.pryce@b13media.com writes:

Can anyone give me a pointer to the original reason why
pragmaticprogrammer.com chooses Haskell instead of Scheme, Lisp, or
ML? (If we just want to learn “a new thing”, any of the functional
languages will do, right? But to be both learning a new thing and being
practical, I think it is a different story.)

Not all functional languages are the same. For example:

Haskell and ML have static typing with powerful generics and type
inference. Scheme and LISP have dynamic, but not polymorphic,
typing.
Well that is not fully true. Common Lisp does have CLOS which does
have defmethod which are used for polymorphic calls.

Haskell is lazy (implements normal order evaluation of function
arguments). ML, Scheme and LISP are strict (implement first order
evaluation).
The default evaluation model of Haskell is lazy you can make it strict
and the defautl evaluation model of Scheme and Lisp is eager but you
can make it lazy too.

Haskell is pure functional. ML, Scheme and LISP functions can have side
effects.
Haskell does have side effects too.

Haskell has curried functions, ML, Scheme and LISP do not.
Per default yes, but this can be change at least for Lisp.

Etc.

So, Haskell is further away from more everyday languages than Scheme and
LISP, while ML is somewhere between the two. For example, Java has a
mix of dynamic and static type systems, has first order evaluation of
function arguments, allows functions with side effects, and does not
support curried functions. So, Java is closer to Scheme than Haskell.
If you’re used to Java, I think Haskell is much more interesting to
learn.
Very interesting candidated to learn are IMHO.

  • Haskell haskell.org
  • Ocaml http://pauillac.inria.fr/ocaml/ which is quite interesting
    because it combines functional language with an OO system.
  • Common Lisp because of it’s flexibility. If you like Ruby you
    usually should like Lisp too.
  • Moart/Oz as multiparadigm lanuages www.mozart-oz.org
  • Erlang. Which provides abunch of extremly useful libraries and is
    especially developed for distributed programming.

Regards
Friedrich

···

On Fri, 2002-08-23 at 15:18, William Djaja Tjokroaminata wrote:

Haskell is pure functional. ML, Scheme and LISP functions can have side
effects.

Printing to stdout cannot be done without side-effect :slight_smile:

Haskell has curried functions, ML, Scheme and LISP do not.
Really???

Gergo
±[Kontra, Gergely @ Budapest University of Technology and Economics]-+

    Email: kgergely@mcl.hu,  kgergely@turul.eet.bme.hu          |

URL: turul.eet.bme.hu/~kgergely Mobile: (+36 20) 356 9656 |
±------“Olyan langesz vagyok, hogy poroltoval kellene jarnom!”-------+
.
Magyar php mirror es magyar php dokumentacio: http://hu.php.net

Heck, I might just have been lucky… I work at a small software company
with a fairly enlightened upper management that fully understands what
it takes for us grunts to do the work we do, because they’ve been down
here in the trenches with us as well, and often come down and do useful
work as well.

This is almost all we’ve got to hold onto. Pay’s miserable, bandwidth
is ridiculously low (the whole country has less bandwidth than a typical
medium-sized hosting center owned by Exodus in their heyday; this is not
an exaggeration), and protectionist telco/government practices are
stifling further growth in this industry. With this kind of s–t flying
in our faces management can’t afford to have the hubris of the PHB’s you
guys have had to put up with.

···

On Fri, Aug 23, 2002 at 03:16:12AM +0900, bbense+comp.lang.ruby.Aug.22.02@telemark.stanford.edu wrote:

    • Me too. where is the magical land of ph ? I just left my last
      job for precisely that reason and this was at a University were
      this kind of freedom is supposed to be one of the job perks.


Rafael R. Sevilla +63(2)8123151
Software Developer, Imperium Technology Inc. +63(917)4458925

I have not used any of these languages in combination with C, so I
cannot say.

In my opinion, if you want to learn a new language to extend your
understanding of programming itself, as the aim of the Pragmatic
Programmer’s LoTY project seems to be, then Haskell is the most
interesting language because it is as far away from most mainstream
languages as a functional language can get.

On the other hand, if you just want to learn a practical language that
you can easily extend in C, and are not really interested in learning a
new programming style, why bother with any of the above? You might as
well stick with Ruby, since it supports some functional programming
styles as well as imperative OO programming.

If you want a bit of both, then buy a copy of “The Structure And
Interpretation of Computer Languages” (aka “The Wizard Book”), get a
Scheme interpreter and go through the book from beginning to end,
running all the examples and exercises along the way. IMHO, The Wizard
Book is the best book written about programming, but it’s pretty
challenging.

Cheers,
Nat.

···

On Mon, 2002-08-26 at 14:59, William Djaja Tjokroaminata wrote:

Hi,

Thanks a lot for presenting an objective comparison among the four
functional languages. In your personal opinion, which of the four
languages is the easiest to be integrated with C? At least SWIG has only
interfaces for MzScheme and Guile. Does it imply that probably Scheme is
the easiest to integrate with C, if not much easier than Haskell?


Dr. Nathaniel Pryce, Technical Director, B13media Ltd.
Studio 3a, 22-24 Highbury Grove, London N5 2EA, UK
http://www.b13media.com

Haskell is pure functional. ML, Scheme and LISP functions can have side
effects.
Haskell does have side effects too.

They’re called monads, and they’re somewhat more confusing to use than
actual references such as what we have in Scheme and OCaml, in my
experience. Unless there are real references in Haskell (which I
haven’t heard about if they do exist). That sounds like ugly business:
in a lazy language not all side effects may wind up getting evaluated
and things just get confusing.

Haskell has curried functions, ML, Scheme and LISP do not.
Per default yes, but this can be change at least for Lisp.

ML does have curried functions, at least the Caml dialect does.
Scheme and Lisp allow you to have curried functions if you so desire,
e.g.:

(define a-curried-function
(lambda (x)
(lambda (y) …))))

except that you wind up getting ugly calls that look like this

((a-curried-function foo) bar)

all over the place, making the irritating parentheses problem even worse
than it already is. :slight_smile:

Very interesting candidated to learn are IMHO.

http://caml.inria.fr/

  • Common Lisp because of it’s flexibility. If you like Ruby you
    usually should like Lisp too.

Maybe Scheme would be an easier dialect to of Lisp learn.

···

On Tue, Aug 27, 2002 at 03:21:24PM +0900, Friedrich Dominicus wrote:


Rafael R. Sevilla +63(2)8123151
Software Developer, Imperium Technology Inc. +63(917)4458925

Isn’t this stuff handled via continuations?

···

On Wed, Aug 28, 2002 at 01:30:04AM +0900, Kontra, Gergely wrote:

Haskell is pure functional. ML, Scheme and LISP functions can have side
effects.

Printing to stdout cannot be done without side-effect :slight_smile:


_ _

__ __ | | ___ _ __ ___ __ _ _ __
'_ \ / | __/ __| '_ _ \ / ` | ’ \
) | (| | |
__ \ | | | | | (| | | | |
.__/ _,
|_|/| || ||_,|| |_|
Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com

NEVER RESPOND TO CRITICAL PRESS. IT IS A GAME YOU CAN ONLY LOSE, AND IT
MAKES US LOOK BAD.
– Bruce Perens

Tue, 27 Aug 2002 15:58:31 +0900, Rafael ‘Dido’ Sevilla dido@imperium.ph pisze:

Unless there are real references in Haskell (which I haven’t heard
about if they do exist).

They aren’t in the standard but they are present in all four
implementations I know. They look quite ugly:

test :: IO Int
test = do
r ← newIORef 10
v ← readIORef r
writeIORef r (v+1)
readIORef r

That sounds like ugly business: in a lazy language not all side
effects may wind up getting evaluated and things just get confusing.

Side effects are “separate” from laziness. Laziness doesn’t affect what
side effects are effective and in what order. Values of expressions are
lazy and for a pure computation it doesn’t matter when it’s performed.
Real effects are performed by monadic commands which are performed
by a different mechanism than evaluating expressions.

I think OCaml is most practical of functional languages around.
The language isn’t so special (and it fits the machine quite well)
but it has a very good implementation.

···


__("< Marcin Kowalczyk
__/ qrczak@knm.org.pl
^^ Blog człowieka poczciwego.

In article 9dmkmu0brmhrmsivkjo2c0d0nkr5vc4euc@4ax.com,

···

Tim.Hunter@sas.com wrote:

Yes, calling FORTRAN from C is do-able and worth the trouble if 1)
what you’re doing is something that FORTRAN does well, such as
numerical analysis, or 2) you need to call routines that are only
available in FORTRAN.

As for how to do it, the best thing I can say is “consult your C
and/or FORTRAN compiler documentation.” Inter-programming-language
communication is extremely vendor-dependent. There are issues
regarding memory management, data types, exception handling, etc.

    • There’s a package floating around called cfortran that provides
      a lot of the glue necessary.
    • Booker C. Bense