[gambit-list] Post: Compare the productivity of computer languages

Marc Feeley feeley at iro.umontreal.ca
Fri Oct 18 09:12:02 EDT 2013


On 2013-10-17, at 9:49 AM, Junia Magellan <junnia at gmail.com> wrote:

> Dear list members,
> I am the main investigator of a group that is carrying out an experiment, which  compares the productivity of computer languages.
> For instance, one may wish to see if a Python programmer is more productive than a Scheme programmer with the same ability.
> 
> Here is the spoiler: The volunteers associated with the project were not able to run sqlite3 from Gambit. It seems that the bindings are old, or not well documented. I would appreciate a link to bindings that work out of the box, is the case of both Bigloo and Racket.
> 
> We therefore need to put in place a measurement theory that provides for the programmer's ability. In this case one can be sure of an equal ability to that of a Scheme programmer. [The research group is 
> working with the following languages: C, Java, C#, Common Lisp SBCL)
> and Scheme (Racket and Bigloo).]
> 
> To measure a programmer's ability, the group uses the Rasch model.  The same model is also used for measuring the ability of a computer language to increase a programmer's productivity.
> 
> For the time being, the group is working with the above cited  languages.  If the reader is unfamiliar with measurement theory, she is invited to visit my page concerning the subject:
> 
> 
> strues.org/languages
> 
> 
> Although the page contains original ideas from members of the my research group, it should be noted that there are however mathematical patches borrowed from other researchers, such as Rasch. This lack of originality is in itself not a problem as the page has been constructed purely as an  internal report. Of course, in the final paper, due credit will be given through appropriate citations.
> 
> To everybody's surprise, Python has not shown itself as being the most productive language, while Scheme has, followed closely by sbcl. Python occupies a distant third place.
> 
> The volunteers are using Racket and Bigloo to program in Scheme. The
> fact is that everybody found Gambit difficult to use to solve the kind of problems associated with the measurement items. Therefore, nobody is using Gambit.
> 
> The first difficulty with Gambit is that it does not run out of the box in all hosting services. A member of the group tried to fix the issue by  consulting this list, but was not successful. Finally, the problem was solved after consulting Manuel Serrano and a member of the Racket user list.
> So a volunteer has installed a simple Gambit powered page on Hostgator.
> We would like thank Manuel Serrano and André for helping us with this task.

It would be useful if you shared the solution with us.  Was it a problem with the hosting service or Gambit?  Did you have to modify Gambit, or give it special options, or start it in a special way?

> The other difficult concerns connections to an sql server, while Bigloo and Racket provide out of the box connections, Gambit requires installation of external libraries and bindings to sqlite3, for example, Twenty three volunteers tried to perform the installation and everybody failed. 

Here too it would be useful to know what you tried.  Twenty three failed attempts is quite impressive!  Are these students or professional programmers?

Have you looked at https://github.com/wolneykien/gambit-sqlite3 ?

The makefile seems to be tailored to Linux, so I rewrote a more portable makefile, and this allowed me to run the unit tests successfully.  Here's what I did, from the root of the Gambit sources:

% git clone https://github.com/wolneykien/gambit-sqlite3.git
% cd gambit-sqlite3/sqlite3
% rm Makefile
% cat > Makefile
BASENAME=sqlite3

all: $(BASENAME).o1

$(BASENAME).o1: $(BASENAME).scm $(BASENAME)-common.scm $(BASENAME)-ffi.scm
	gsc -ld-options "-lsqlite3" $(BASENAME).scm

check: $(BASENAME).o1 $(BASENAME)-test.scm
	gsi $(BASENAME).o1 $(BASENAME)-test

clean:
	rm $(BASENAME).o1
^D
% make
% make check
gsi sqlite3.o1 sqlite3-test
	passed.
	passed.
	passed.
(time (run-tests))
    14 ms real time
    3 ms cpu time (1 user, 2 system)
    no collections
    51904 bytes allocated
    245 minor faults
    no major faults

> Does anybody on this list know where I can find sources of gsi with 
> sqlite3? As I would like to generate gsi with sqlite3 included, as in Racket.

That can be done like this:

% cat > gsi-with-sqlite3.scm
(include "sqlite3.scm")
(include "../../gsi/_gsi.scm")
^D
% gsc -exe gsi-with-sqlite3.scm 
% gsc -exe -ld-options "-lsqlite3" gsi-with-sqlite3.scm 
% ./gsi-with-sqlite3 sqlite3-test.scm 
./gsi-with-sqlite3 sqlite3-test.scm 
	passed.
	passed.
	passed.
(time (run-tests))
    13 ms real time
    3 ms cpu time (1 user, 2 system)
    no collections
    51904 bytes allocated
    257 minor faults
    no major faults

This was done on OS X, but due to the portable nature of the makefile, it should also work on linux and Windows (the only problem I can see is the linking with the sqlite3 C library).

> By the way, I am insisting on adding Gambit to the Scheme compiler set used in the experiment, because Gambit has a nice optional
> infix syntax. I would like to check whether this alters my results. 

It will be interesting to see if the infix syntax helps.

Marc



More information about the Gambit-list mailing list