From: rh@smds.com (Richard Harter)
Newsgroups: comp.lang.misc
Subject: Re: Assessing a language
Date: 8 Jan 93 06:58:19 GMT
Reply-To: rh@ishmael.UUCP (Richard Harter)
Organization: Software Maintenance & Development Systems, Inc.

In article <nharvey.726365226@probitas> nharvey@probitas.cs.utas.edu.au (Nicole Harvey) writes:

>hi,
>   I posted the following article to another newsgroup, and I was told this had
>been already been discussed in this newsgroup. Did anyone save the responses?
>Is there a FAQ for this newsgroup?

>   I am involved in assessing a language. Does anyone know of a standard
>set of problems that I could use to judge the languages compabilities?
>   Can anyone think of a problem that represents a real need in a language?
>For example, we have tested it for the eight queens problem to show that 
>it can do state space searches. We have also made sure it can generate the 
>Fibonacci numbers. Can you think of any other well known problems?
>   What things do you expect to be able to write relatively simply using any
>language? I would like to hear from people working in all areas. 

This is a good question.  One standard way to tackle language assessment
is to have a check list of features, e.g.

->	Does it have recursion?
->	Garbage collection?
->	Strong typing/Weak typing/No typing
->	Arithmetic
->		Machine equivalents
->		Big nums?
->		Other
->	What database access facilities?
->	User defined types?
->	Objects?
->	What intrinsic data structures?
->	Lazy evaluation?
->	Application specific features?
->	I/O
->		Language intrinsic/Libraries
->		Ports/handles/file names/file numbers
->	Access to OS
->	Level and type of modularity
->	Syntax structure
->		Algebraic
->		Lispish
->		Stack language
->		Muddled
->	Consistency of language syntax?
->	etc.

One trouble with a features check list (besides the inevitable
religious wars) is that it doesn't tell you much about how
convenient or inconvenient the language is to use and what
applications it is really good for.  The merit of a good problem set
is that it puts a language to the test.  The problem set should cover
a wide variety of applications, and yet each problem should be fairly
simple.  Here are some problems for different areas:

1.	General language strength

1.1	Write a program that, when run, prints itself.
1.2	Write an interpreter for the language in the language
1.3	Write a symbolic debugger for the language

2.	Arithmetic/mathematical

2.1	Write an FFT library routine
2.2	Write a matrix inversion routine
2.3	Write a random number generator
2.4	Compute pi to one thousand digits
2.5	Write a Runge-Kutta routine and a Newton/Raphson
	routine that work together as co-routines.

3.	Tree search

3.1	Solve the eight queens problem
3.2	Write an equivalent of the UNIX find utility

4.	Data record processing

4.1	Read a file of formatted records and print totals for
	specified fields.
4.2	Read a file of formatted records which has names in one
	field and data in another.  Print totals and name for
	each distinct name.
4.3	Do 4.1 and 4.2 for various formatting conventions.

5.	String processing

5.1	Read a file created with a text editor such as vi which has
	line feeds after each line.  Prepare this file for input to
	a word processor, i.e. remove line feeds within a paragraph.

5.2	Process a file of text and capitalize the beginning character
	in each sentence.

5.3	Find all words in a file of text that are present in more than
	one case format, e.g. Polish and polish.

6.	Database communication

6.1	Do a query to a database with an SQL interface.

This is just a start on a list.  I would be mightily interested in
seeing people improve the list.
-- 
Richard Harter: SMDS Inc.  Net address: rh@smds.com Phone: 508-369-7398 
US Mail: SMDS Inc., PO Box 555, Concord MA 01742.    Fax: 508-369-8272
In the fields of Hell where the grass grows high
Are the graves of dreams allowed to die.
Newsgroups: comp.lang.misc