SPUG: Tmojo | Net::FTPServer | FreeTDS | ramblings about type safety

Aaron W. West tallpeak at hotmail.com
Fri Apr 23 18:28:39 CDT 2004

Some interesting recent finds. I'd like to hear if anyone's tried tmojo.


What is Tmojo?

Tmojo is a flexible Perl-based dynamic content generation engine. It enables
Web Application Developers to quickly build rich, dynamic web-sites in a
completely object-oriented environment.





Monolith is a revolutionary web application architecture, which changes the
way applications are delivered over the web. And it's written entirely in C,
so it can serve hundreds of thousands of hits a day from an old 486.

Net::FTPServer is a powerful, configurable, extensible and secure FTP
server, with millions of users worldwide.


FYI: I found this page because of my interest in Ocaml ( www.ocaml.com ), a
fast,l efficient functional language which Doug Bagley's language comparison
page drew me to ( http://www.bagley.org/ ). His comparison also shows that
Perl is faster than Java for some things (although not matrix
multiplication; heavy math is a strong point of C, C++, Fortran, OCaml, for


But I've yet to get OpenPAM to build under Cygwin (so I can install
Authen::PAM, a dependency of Net::FTPServer). I know, I should just run




But I didn't find there to be any performance boost to using TDS to retrieve
records, so I'll probably stick with ODBC (DBI -> DBD::ODBC).


(Just ignore the rest of this message, as I babble about type-safety...)

This is better than what I wrote below:


Maybe static type-safety isn't that important... it's implemented "cleanly"
in type-inferring languages (ML-family, Haskell, maybe Dylan, perhaps
Clean), and shouldn't get in the way too often in them, although there are
things you can't do like create generic containers (a list can't have both
ints and strings in it, for example. Lisp and Perl (arrays) allow that,
SML/OCAML don't.)


My own observations on language features, with regards to type-safety:

Assembler: the least type-safe of all

Forth: Not type safe: you can push a couple of integers and pop them back as
a float.

C: Not type safe

Pascal: Type safe, by putting chains on the programmer and tying him to his

Ada: Like Pascal?

C++: potentially quite type-safe, especially if using templates/STL
(properly), but all type information has to be specified, and there's the
potential of dangerous downcasts in an inheritance hierarchy.

Perl: not really type-safe, but stores some type information with each
variable and tries to take care of many of the nasty details for you. But be
careful to understand the behavior so that you know what will happen,
otherwise you may get type-related errors at runtime.

ML: SML / OCAML: Very type-safe, using type inference. ( www.ocaml.com )

Clean: also type-safe ( www.clean.org )

Prolog and other logic languages: ??? I think types are rather restricted in
these languages.

Haskell: type-safe

Dylan: supports static or dynamic typing

Java: type-safe, but annoying

SQL: very type-safe: all conversions have to be specified explicitly. But
very few types are supported and types can't generally be created
(Postgresql being a possible exception, as well as the upcoming MS SQL
Server: Yukon)


Excel: Well, not a language, but... Ugh. How many times have you had strings
turn into numbers when parsing a tab-delimited file? I think it should
default to "Text".

More information about the spug-list mailing list