The perens in lisp dilects is there for a reson... macros

Francis C. wrote:

Ok, so how about this for a hypothesis?

sending purchase orders, etc etc, and knit them together into larger
systems
using a pure functional language. This captures the intuition that no
program should ever get too “large” in terms of function points, but also
the distinction between functional components (which are most easily
written
imperatively) and large-scale process definitions (which are most easily
written functionally).

  1. Hmmm … can/should the “top-level” part of this be done in Ruby as
    well?

  2. “Can your programming language do this?”

  1. Can “MapReduce” be implemented in Ruby?

http://labs.google.com/papers/mapreduce.html

Why the heck should Erlang programmers have all the fun?

On Mon, Aug 14, 2006 at 06:16:52AM +0900, M. Edward (Ed) Borasky wrote:

  1. “Can your programming language do this?”

Can Your Programming Language Do This? – Joel on Software

Actually, that’s one of my “tests” for whether or not I’m likely to like
a particular language.

On 8/14/06, Chad P. [email protected] wrote:

On Mon, Aug 14, 2006 at 06:16:52AM +0900, M. Edward (Ed) Borasky wrote:

  1. “Can your programming language do this?”

Can Your Programming Language Do This? – Joel on Software

Actually, that’s one of my “tests” for whether or not I’m likely to like
a particular language.

Likewise - the ability to abstract control structures easily and
cleanly is up there with structured programming on my list of
must-haves.

martin

On Mon, Aug 14, 2006 at 02:58:39PM +0900, Martin DeMello wrote:

Likewise - the ability to abstract control structures easily and
cleanly is up there with structured programming on my list of
must-haves.

In particular, that entire essay is basically a demonstration of lexical
closures.

On Thu, Aug 10, 2006 at 05:12:37PM +0900, Francis C. wrote:

This thread has probably gone on long enough :wink: but as I read it, what
you’re saying here amounts simply to “let’s take what’s good from each
approach and apply it generally.” Can’t argue with that.

Yeah, that one’s usually difficult to argue. Since the first time I
started working with a language that allowed (actually encouraged)
prefix notation, I’ve wished for other languages I’ve used to allow it
as well (such as Perl, et cetera – though I suppose I could write a
module to handle that, or possibly even find one in CPAN).

on this thread try to relate this benefit of functional languages to
non-functional ones.

My commentary about a functional “style” being largely centered around
syntax wasn’t meant to indicate that only the syntax of functional
programming should be borrowed. In fact, while there are certain
syntactic features that might be borrowed from functional languages for
certain purposes in Ruby, I think Ruby’s syntax is pretty much perfect
for it as it is. It might be nice to borrow a little more from its
semantic structure, too, though.

I’m not really sure how that could be accomplished without causing
problems for some of the excellent characteristics already embodied by
Ruby, though. If we made Ruby too “functional”, it would just be a Lisp
dialect anyway – and while Lisp is great, so is Ruby.

To answer someone else, the ability to automatically process programs is
why I’m interested in mini-languages (DSLs) written in Ruby that are
non-Turing complete, because they may be decidable, if designed
properly. That opens the way (in theory) to the kind of automatic
correctness analyzers that you see in pure functional programming. The
potential economic benefit is staggering. What proportion of your
programming time do you spend debugging today?

That certainly sounds useful.

If people see the distinctions between “functional” and “non-functional”
languages purely in syntactic terms, then this whole discussion is
really no deeper than yet another Ruby vs. Python debate.

I’m really not a fan of Python. It’s just . . .

Oh, wait, scratch that – I don’t want to start a flame war.

[email protected] wrote:

I think Ruby is slightly older than Java, isn’t it? :slight_smile:
Maybe … Java is 1.5 and Ruby is 1.8.5, so by that measure, yes. I
suppose I need to look up the history of Ruby. But I remember jumping on
Java in the 1.1 days many years ago as a language I thought was vastly
superior to Perl 4, and taking flames for saying so. The Perlists had
their revenge though; I wrote one program in Java and that was it.

You may have me beat. My first was BASIC on a PDP-8, followed by
BASIC and assembler on a PDP-10. I think at least the '10 had
integrated circuits :slight_smile:
I once had a boss who claimed to have worked on an IBM 1620. I think he
was trying to impress us as being a “real programmer just like us.” The
lab where I worked on a 1620 got rid of it in 1964 … I’m guessing he
was in junior high school then. :slight_smile:

As for language geekdom: I feel like I used to be more than I am now,
but it’s more because Ruby stuff is keeping me so busy than because
Ruby satisfies all my language interest. In fact I’ve never wanted
Ruby to take on Lisp macros, Python whitespace, Java-style typing,
C-style comments, and all the rest of it. Maybe there should be one
or more kitchen-sink languages out there, but they should be written
from scratch for that purpose.
A long time ago some computer scientist defined two types of languages
– “core” languages and “shell” languages. Lisp, Scheme and Forth are
great examples of core languages … just a few simple core concepts
from which you can build mighty software. And the classic shell
languages are PL/I and Ada … just about anything you’d ever want to do
is built into the language.

The languages most of us use these days are in between. The core is
bigger than the core of Lisp or Forth – it includes strings, various
floating point numbers and math functions, arrays and usually hashes,
and usually objects, classes of objects and methods. What Ruby has that
many of them lack, however, is more or less explicit use of classical
computer science concepts, usch as lambda and continuations.

Hi –

On Mon, 7 Aug 2006, M. Edward (Ed) Borasky wrote:

[email protected] wrote:

I think Ruby is slightly older than Java, isn’t it? :slight_smile:
Maybe … Java is 1.5 and Ruby is 1.8.5, so by that measure, yes.

No, I meant older as in… older :slight_smile: Ruby’s birthday is traditionally
February 1994 (I can’t remember the exact day), and I seem to remember
that that predates Java, but I’m not sure.

David

Hi –

On Mon, 7 Aug 2006, M. Edward (Ed) Borasky wrote:

Programmers these days usually have to use
geeks, the kind of folks who like to learn about the general concepts of
programming languages, learn lots of different ones, and compare them.

That may be because of Ruby’s youth relative to other general-purpose
languages. I remember the same phenomenon when Java was a young language.

I think Ruby is slightly older than Java, isn’t it? :slight_smile:

I’m personally a language geek and have been since … well, let’s
just say that the first code I wrote in my life was for a machine
built from vacuum tubes that had only an assembler. :slight_smile:

You may have me beat. My first was BASIC on a PDP-8, followed by
BASIC and assembler on a PDP-10. I think at least the '10 had
integrated circuits :slight_smile:

As for language geekdom: I feel like I used to be more than I am now,
but it’s more because Ruby stuff is keeping me so busy than because
Ruby satisfies all my language interest. In fact I’ve never wanted
Ruby to take on Lisp macros, Python whitespace, Java-style typing,
C-style comments, and all the rest of it. Maybe there should be one
or more kitchen-sink languages out there, but they should be written
from scratch for that purpose.

Here’s what I think is a classic and still very relevant post by Dave
Thomas about the design of Ruby and the process of change:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/12606

David

M. Edward (Ed) Borasky wrote:

[email protected] wrote:
For that matter, how did Google get its name, and does it have
anything to do with Barney Google? :slight_smile:

Google comes from the name of the number 10^100 which is called a
googol. Ackording to wikipedia Google originally was a misspelling of
this.


Ola B. (http://ola-bini.blogspot.com)
JvYAML, RbYAML, JRuby and Jatha contributor
System Developer, Karolinska Institutet (http://www.ki.se)
OLogix Consulting (http://www.ologix.com)

“Yields falsehood when quined” yields falsehood when quined.

On Mon, 07 Aug 2006 01:51:08 +0900, M. Edward (Ed) Borasky wrote:

A long time ago some computer scientist defined two types of languages -- "core" languages and "shell" languages. Lisp, Scheme and Forth are great examples of core languages ... just a few simple core concepts from which you can build mighty software. And the classic shell languages are PL/I and Ada ... just about anything you'd ever want to do is built into the language.

Lisp is definitely not a core language. The standard is about 1100
pages,
so it contains most of of the stuff you would expect, string handling,
arrays, hashes, math functions, etc… Scheme is probably more what you
would call a core language. There are documents (SRFI’s) that describe
common implementations for libraries, but scheme implementations don’t
have to use them to be called scheme.

Kristof

[email protected] wrote:

that that predates Java, but I’m not sure.
Where can one find “a brief history of Ruby?” I’m too lazy to ask
Google, especially when Matz is on the list. :slight_smile:

For that matter, how did Google get its name, and does it have
anything to do with Barney Google? :slight_smile:

Kristof B. wrote:

On Mon, 07 Aug 2006 01:51:08 +0900, M. Edward (Ed) Borasky wrote:

Lisp is definitely not a core language. The standard is about 1100 pages,
so it contains most of of the stuff you would expect, string handling,

You seem to confuse the language Common Lisp with the mathematical
concept Lisp. Lisp is seven operators and a one-page denotional semantic
definition. That’s about as small and core as it gets.


Ola B. (http://ola-bini.blogspot.com)
JvYAML, RbYAML, JRuby and Jatha contributor
System Developer, Karolinska Institutet (http://www.ki.se)
OLogix Consulting (http://www.ologix.com)

“Yields falsehood when quined” yields falsehood when quined.

[email protected] wrote:

Whoops, I was wrong; it was 1993. See
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/382
Thanks!! In February of 1993, I was just starting on the project that
has consumed most of my “paid programming” time since then. It started
out as Korn shell augmented with “gawk” for the more complicated pieces,
then got migrated to Perl 4 as soon as I discovered Perl 4. It picked up
the R component about 2000, but it’s still mostly Perl 4. The Java 1.1
program was done in 1997.

So, going back to another thread, it looks like the “core language” of
Ruby is the object model and the Perl features. Is there by any chance a
place where I could get the Ruby 1.0 source? That might be very
interesting.

Hi –

On Mon, 7 Aug 2006, M. Edward (Ed) Borasky wrote:

February 1994 (I can’t remember the exact day), and I seem to remember
that that predates Java, but I’m not sure.
Where can one find “a brief history of Ruby?” I’m too lazy to ask Google,
especially when Matz is on the list. :slight_smile:

Whoops, I was wrong; it was 1993. See
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/382

David

On Mon, 07 Aug 2006 04:08:29 +0900, Ola B. wrote:

Kristof B. wrote:

On Mon, 07 Aug 2006 01:51:08 +0900, M. Edward (Ed) Borasky wrote:

Lisp is definitely not a core language. The standard is about 1100 pages,
so it contains most of of the stuff you would expect, string handling,

You seem to confuse the language Common Lisp with the mathematical
concept Lisp. Lisp is seven operators and a one-page denotional semantic
definition. That’s about as small and core as it gets.

No, I don’t. The post I replied to was mentioning practical programming
languages, not mathematical concepts. Lisp can mean the family of
languages, to which Common Lisp, Emacs Lisp, and scheme belong, and the
programming language Common Lisp. But since he was mentioning scheme as
a
different language, I concluded that he meant the last. But I should
have
clarified that it my post though.

Regards,
Kristof

Ola B. wrote:

semantic definition. That’s about as small and core as it gets.
Yes … I wish I could remember who made that distinction and when. In
any event, I’m guessing it was in the days of Lisp 1.5, which is
certainly a core language. IIRC Lisp 1.5 had some primitive string
handling, and some implementations even did floating point. But this was
well before Common Lisp 1, Common Lisp 2 or the ANS standard.

As I noted in an earlier post, I’m now off looking for the Ruby “core
language”. :slight_smile:

Hi –

On Mon, 7 Aug 2006, M. Edward (Ed) Borasky wrote:

So, going back to another thread, it looks like the “core language” of Ruby
is the object model and the Perl features. Is there by any chance a place
where I could get the Ruby 1.0 source? That might be very interesting.

ftp://ftp.ruby-lang.org/pub/ruby/1.0. Nothing before 1.0, as far as I
can find.

David

John W. Kennedy wrote:

were slow and cautious. (Many 1620s were instead eventually upgraded to
S/360-30 mainframes, which offered a 1620-compatibility option.)

Actually, I was off by two years. We replaced the 1620 with an 1130
towards the end of 1966. So he might well have been a freshman :).

And … our FORTRAN programs ported fairly easily. The assembly language
programs I ported by hand. Most of them got better in the process. :slight_smile:

M. Edward (Ed) Borasky wrote:

I once had a boss who claimed to have worked on an IBM 1620. I think he
was trying to impress us as being a “real programmer just like us.” The
lab where I worked on a 1620 got rid of it in 1964 … I’m guessing he
was in junior high school then. :slight_smile:

The 1620 was still a state-of-the-art product in 1964, and was IBM’s
only desk-sized machine of the era. If your lab dumped one, it was not
for obsolescence; its niche successor, the 1130, was still in the future
– and the 1130 was not compatible at all with the 1620, so upgrades
were slow and cautious. (Many 1620s were instead eventually upgraded to
S/360-30 mainframes, which offered a 1620-compatibility option.)

Hi,

In message “Re: the perens in lisp dilects is there for a reson…
macros.”
on Mon, 7 Aug 2006 03:04:47 +0900, [email protected] writes:

|Ruby’s birthday is traditionally
|February 1994 (I can’t remember the exact day),

It was 1993-02-24 for the record.

|and I seem to remember
|that that predates Java, but I’m not sure.

The first release date of the Java language white paper was somewhere
in 1994, so you might think Ruby predates Java, but in fact:

  • the development of the Java language (formerly named Oak language)
    started in 1991, if I remember correctly.
  • the first public release of Ruby was December 1995.

As a conclusion, Java is slightly older than Ruby.

						matz.