On 2013-10-17, at 9:49 AM, Junia Magellan junnia@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