[#6954] Why isn't Perl highly orthogonal? — Terrence Brannon <brannon@...>

27 messages 2000/12/09

[#7022] Re: Ruby in the US — Kevin Smith <kevinbsmith@...>

> Is it possible for the US to develop corporate

36 messages 2000/12/11
[#7633] Re: Ruby in the US — Dave Thomas <Dave@...> 2000/12/19

tonys@myspleenklug.on.ca (tony summerfelt) writes:

[#7636] Re: Ruby in the US — "Joseph McDonald" <joe@...> 2000/12/19

[#7704] Re: Ruby in the US — Jilani Khaldi <jilanik@...> 2000/12/19

> > first candidates would be mysql and postgressql because source is

[#7705] Code sample for improvement — Stephen White <steve@...> 2000/12/19

During an idle chat with someone on IRC, they presented some fairly

[#7750] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

Stephen White wrote:

[#7751] Re: Code sample for improvement — David Alan Black <dblack@...> 2000/12/20

Hello --

[#7755] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

David Alan Black wrote:

[#7758] Re: Code sample for improvement — Stephen White <steve@...> 2000/12/20

On Wed, 20 Dec 2000, Guy N. Hurst wrote:

[#7759] Next amusing problem: talking integers (was Re: Code sample for improvement) — David Alan Black <dblack@...> 2000/12/20

On Wed, 20 Dec 2000, Stephen White wrote:

[#7212] New User Survey: we need your opinions — Dave Thomas <Dave@...>

16 messages 2000/12/14

[#7330] A Java Developer's Wish List for Ruby — "Richard A.Schulman" <RichardASchulman@...>

I see Ruby as having a very bright future as a language to

22 messages 2000/12/15

[#7354] Ruby performance question — Eric Crampton <EricCrampton@...>

I'm parsing simple text lines which look like this:

21 messages 2000/12/15
[#7361] Re: Ruby performance question — Dave Thomas <Dave@...> 2000/12/15

Eric Crampton <EricCrampton@worldnet.att.net> writes:

[#7367] Re: Ruby performance question — David Alan Black <dblack@...> 2000/12/16

On Sat, 16 Dec 2000, Dave Thomas wrote:

[#7371] Re: Ruby performance question — "Joseph McDonald" <joe@...> 2000/12/16

[#7366] GUIs for Rubies — "Conrad Schneiker" <schneik@...>

Thought I'd switch the subject line to the subject at hand.

22 messages 2000/12/16

[#7416] Re: Ruby IDE (again) — Kevin Smith <kevins14@...>

>> >> I would contribute to this project, if it

17 messages 2000/12/16
[#7422] Re: Ruby IDE (again) — Holden Glova <dsafari@...> 2000/12/16

-----BEGIN PGP SIGNED MESSAGE-----

[#7582] New to Ruby — takaoueda@...

I have just started learning Ruby with the book of Thomas and Hunt. The

24 messages 2000/12/18

[#7604] Any corrections for Programming Ruby — Dave Thomas <Dave@...>

12 messages 2000/12/18

[#7737] strange border-case Numeric errors — "Brian F. Feldman" <green@...>

I haven't had a good enough chance to familiarize myself with the code in

19 messages 2000/12/20

[#7801] Is Ruby part of any standard GNU Linux distributions? — "Pete McBreen, McBreen.Consulting" <mcbreenp@...>

Anybody know what it would take to get Ruby into the standard GNU Linux

15 messages 2000/12/20

[#7938] Re: defined? problem? — Kevin Smith <sent@...>

matz@zetabits.com (Yukihiro Matsumoto) wrote:

26 messages 2000/12/22
[#7943] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

Kevin Smith <sent@qualitycode.com> writes:

[#7950] Re: defined? problem? — Stephen White <steve@...> 2000/12/22

On Fri, 22 Dec 2000, Dave Thomas wrote:

[#7951] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

On Fri, 22 Dec 2000, Stephen White wrote:

[#7954] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

David Alan Black <dblack@candle.superlink.net> writes:

[#7975] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

Hello --

[#7971] Hash access method — Ted Meng <ted_meng@...>

Hi,

20 messages 2000/12/22

[#8030] Re: Basic hash question — ts <decoux@...>

>>>>> "B" == Ben Tilly <ben_tilly@hotmail.com> writes:

15 messages 2000/12/24
[#8033] Re: Basic hash question — "David A. Black" <dblack@...> 2000/12/24

On Sun, 24 Dec 2000, ts wrote:

[#8178] Inexplicable core dump — "Nathaniel Talbott" <ntalbott@...>

I have some code that looks like this:

12 messages 2000/12/28

[#8196] My first impression of Ruby. Lack of overloading? (long) — jmichel@... (Jean Michel)

Hello,

23 messages 2000/12/28

[#8198] Re: Ruby cron scheduler for NT available — "Conrad Schneiker" <schneik@...>

John Small wrote:

14 messages 2000/12/28

[#8287] Re: speedup of anagram finder — "SHULTZ,BARRY (HP-Israel,ex1)" <barry_shultz@...>

> -----Original Message-----

12 messages 2000/12/29

[ruby-talk:7045] Re: Why isn't Perl highly orthogonal?

From: "Jake Baker" <jbaker@...>
Date: 2000-12-11 15:14:28 UTC
List: ruby-talk #7045
> it depends on what you mean by length.  C programmers typically think
> about the actual number of bytes they use, so length could mean a
> couple of different things depending on the context.

I am a C programmer - it's my day job. So let me clear up some (mis)understandings:

1 - A string is not an array in C. An array in C is a very specific thing, and is often misunderstood. An array in C is a thing declared as a fixed number of data items in size. That is only what an array is - nothing else. eg: "int array[10];" declares an array; "int *p;" does not.

2 - Array references decay transparently into pointers and vice-versa; hence, any sequence of memory can be iterated through either as an array (using array[X] notation) or as a pointer (using *(array + X) notation).

3 - C has no well-defined string type. Instead, there is a string library, which operates on 0-terminated pointers to char. A string is just a region of memory - this region could be an array, or it could just be a chunk of memory you choose to treat like a string.

4 - Arrays and strings in C are not orthogonal - which is why strings have their own library. To get the number of characters in a string, you use strlen(p); to get the number of bytes in an array, you use sizeof(array). To get the number of elements in an array (a fuzzy concept in C), you would have to use something like (sizeof(array) / sizeof(array[0])).

5 - You will note that strlen(p) IS NOT THE SAME as sizeof(p). If p is a pointer, sizeof(p) returns 2 or 4 or something. If p is an array, sizeof(p) returns the number of bytes in the declared array. strlen(p), on the other hand, returns the number of characters in the 0-terminated run of characters pointed at by p.

6 - string constants can be used to initialize arrays, such as `char s1[] = "Hello world!"`; however, they can also have a pointer set to them like `char s2 = "Hello world!"`. In these examples, strlen(s1) == strlen(s2) == 12; however, sizeof(s1) == 13 but sizeof(s2) == 4

Therefore, those who are arguing that the desire to treat arrays and strings orthogonally comes from a legacy C inheritance are wrong.

IMO, the desire for orthogonality comes from the fact that both strings and arrays are SEQUENCE types. A good OO language will have a common set of operations for sequence types. For example, true string to list orthogonality really only exists in one language that I know of: Python:

s = "Hello world!"
a = [1, 2, 3, 4, 5]

len(s)  <- 12
len(a)  <- 5
s[1:3]  <- "el"
a[1:3]  <- [2, 3]

In fact, one could argue that the separation of functionality for arrays and strings is an inheritance from C, rather than the other way around. Actually, though, the function "substr" does not occur in the standard C library; therefore, I suspect this legacy function comes from something like BASIC, where it does occur.

 - Jake B.

In This Thread

Prev Next