Re: Syllabus for Seed Developer Qualifications [WAS Re: Some considerations about AGI]

From: Kevin Osborne (kevin.osborne@gmail.com)
Date: Thu Feb 02 2006 - 07:21:57 MST


> OCaML is one plausible candidate. Pretty fast, compileable & interpretable.
> It's an Object Oriented dialect of CaML which is a dialect of ML. SML
> doesn't have lots of nice features, like variables, but OCaML (and CaML?)
> slips them back in. Also, ANSI C can be embedded into the code. (So the
> docs say. I'm not familiar enough to judge.)

Must say I use a nice p2p app written in Objective CaML, but I thought
it would be too obscure to mention - my bad!

> Have you looked at Alice, from Stanford University? Still in the early
> stages, but it looks like it supports parallelism in a quite interesting
> fashion. Check out "Promises". Nice!

will do; though new/experimental languages have certain advantages
(evolution says they'll be better) they also have certian
disadvantages; like the necessity to write your own API modules for
solved problems (sorts, collections, tcp/ip, unicode, math, remoting,
etc) - this is not to say that any newer-language-of-your-choice
doesn't have some or all of these features; but does in have
http://cpan.org/authors/id/D/DC/DCANTRELL/Acme-Scurvy-Whoreson-BilgeRat-1.0.readme
 ? :-)

> Also: If you think of "subsets of some other language" as not worth
> considering, please think again. Languages can be made much better by
> removing some feature that's just too dangerous.

subset as I'm meaning it refers to the available API. What I'm trying
to get at is that I might in the course of developing 'workhorse' AGI
code need to:
- write code that will parse the pixels of a scanned exponential
graph, generate the data model it represents and call various math
functions against the result
- fire off a gazillion threads on multiple servers across the globe
which share resources and scheduling to achieve a given computation
result; the initiation of which can instantaneously load and run new
code segments without requiring user tweaking of the distributed
clients (e.g. stopping the target application server on the
distributed client, updating the class library and restarting - I'd
consider this to be a pretty severe disadvantage)
- parse the source code and OS/chip specific binaries of all known
langauges to define a functional model that can be applied against
mathematical proofs and then regenerated in any other language
- text transliteration, conversion and parsing supporting unicode
languages and all known file formats
- web/net spidering to grok every online resouce possible via every
known protocol; tcpip, p2p, X.25, SOAP, SNMP etc
- mature persistent storage support incl. database connection pooling
and driver/api support for the big rdbms', LDAP,bdb etc

For the above examples a language like say Java has pretty much all
the prerequisites in the API or free, stable 3rd party libraries; I
wouldn't need to write any workhorse code for the operations
themselves (e.g. the Java 2D API could parse an image of a graph from
any one a host of image file formats and could generate pixel plot
metadata with relative ease) - just the higher functional code for
achieving the result. When I say one language is a subset of another,
I mean it's available module library for solving known tasks is not as
broad. So when I say 'Python is a subset of Java', I'm saying is
doesn't have the breadth of API that Java does - I think this is a
fair comment. Python definitely does more than just web operations,
and has it's champions (Google is a great example) but as a programmer
who favours his LAMP flavoured in Perl I'm always going to be a little
biased :-)

And in regards to 'dangerous' language features, I could posit that
our future code-writing AGI will have no problem using such features
very, very effectively. Backing away from something because of a
percieved lack of skills, especially in others, belies a certain
neurotic attitude that could well be holding the development timeline
back. If our AGI will be able to do it, we should be trying to improve
our collective engieering skills until we can do it too.

... the next few paragraphs go _way_ OT; search to ':skip' to, well, ...

side note: I find myself calling 'bullshit' whenever anyone denegrates
thier peers and/or society in this implicit way - e.g 'most
programmers can't do pointers/gotos/language-feature-x' or 'most
people are stupid, useless bovines'. It's not the fault of the
greater group that your message stinks - sometimes we all get to be
the Crazy Person. I have a host of things I feel all sorts of
inclinations to believe in (AGI,
Rationality-as-a-replacement-for-religion (Dawkins), Aether,
agrav=FTL, nationalism-is-evil,
all-humans-can-be-considered-biologically-equivalent) but I realise
that some of my cherished favourites are probably hokum,and that if
they're not gaining any kind of traction with the majority then
there's a good chance I'm flat wrong. We've got where we are today via
a collective effort, and the world is full of nutty, beautiful little
fruits from the tree-of-humanity and that the vast majority are
affable and sensible sorts with just as much curiostiy and wonder as
me. Denigrating the intelligence others also calls into question where
you fit in the bell curve; and that maybe in certain areas it is *you*
(and me) who are 'blissfully incompetent'
(http://abcnews.go.com/Technology/DyeHard/story?id=1291826)

further, _very_ OT comment, while I have the inclinatation to
braindump: have we previosuly considered genetically modifiying other
mammals to achieve a greater level of global intelligence? Big Cats,
Dolphins & Elephants (others anyone?) all have certain faculties that
are almost certainly more highly evolved than ours (Elpahant memory?)
and these 'lower' mammals could show great promise in being
genetically modified to talk, think and have usable digits or
(possibly bio-mechanic/electronic) actuators. Also, we can do this
modification, including cloning, without breaking any kind of law or
statute as is the case with genetically modifying humans. It could be
that a super-intelligent talking Tiger could be genetically
predisposed to solving FTL; That enchanced dolphins could be
quantum-math savants, and that elephants could be unparalled
estimators and correct-judgement perceivers. We all have kidneys,
right? Would it be so hard so 'hoist' them? Could the payoff be worth
it? surely the more heterogenous the thought spectrum the greater the
chance of breakthroughs? And yes, I want to boink leopard-head girl
:-)

:skip

> However, the real problem is: "Where are you going to get your programmers?".
> This is why so many projects settle on C or Java, despite all their many
> problems. Even when you're paying good money most people are reluctant to
> learn a new language. (I'm currently finding myself reluctant to learn OCaML
> for a somewhat similar reason. It looks like a lot of effort for an
> uncertain return.)

this is a fair point; while we all need a Linus (Ben Goertzel seems to
be our version of "Pimpin' T" here) we also need a development
community. Taking the Linux kernel as an example of a huge community
project, here's some stats for us all to think about:
# of Kernel contributors: 418 (2002,. from
http://www.firstmonday.org/issues/issue9_6/tuomi/#t5. Contrast this
however with significantly fewer at
http://www.kernel.org/pub/linux/kernel/people/; can anyone elaborate?)
# of SLOC: 6,000,000 (kernel; 2.6, from
http://en.wikipedia.org/wiki/Source_lines_of_code; take note that of
the Vista count: 50M!)
# of Linux kernel testers: google was not forthcoming - anyone?.
another interesting stat would be how many testers Microsoft employs
(I read an older Mac figure of 500) and how many beta testers they
supply CTP's to

> Unfortunately, they're a bit slow. If you use them, figure you'll need
> twice the CPU cycles to reach breakthrough as with an efficient language,
> like C, D, or SML.

Moore's law makes efficency kind of irrelevant. If the language has
the potential to deliver the goods in terms of 'it turns out to be so
much easier to develop AGI bootstrap code in language x' then it
should be considered.

> Also, why include Perl? It deserves to be dismissed for
> the same reasons, and to the same degree, as Python and Ruby.

Perl does have a pretty impressive API; even outside the standard
distribution there's another 10,000 modules on CPAN
(http://cpan.org/modules/01modules.index.html). Also, the Parrot VM
they're building for Perl6 has lofty goals both for the language
(check out the Synopses, Apocalypses and Exegeses) and for the Parrot
VM the interpretable language list includes Python & Lisp and would
you know it - Basic :-) (from: http://www.parrotcode.org/languages/)
and it's also been implemented in Haskell (http://www.pugscode.org/)

> No comments on C#, but if you don't consider programmer availability, then I'd
> plunk clearly for D (unless you go for something experimental like Alice).
> If you do... SIGH ... it's pretty much GOT to be C, C++, or Java. Perhaps
> the gcj subset of Java (so it's actually compileable to native code).

I'd posit there a plenty of perl hackers out there; remember when it
was the only 'write (carefully) once, run anywhere' game in town
before Java came along? And if Parrot can eventually run all the
languages it says it will (these include .NET/Java bytecode) then
maybe we _don't_ need to select a langauge per se as opposed to a VM
or framework.

Having said that, .NET supports 40 languages, including pretty much
_all_ the usual suspects
(http://en.wikipedia.org/wiki/Microsoft_.NET#.NET_languages) and the
number of coders who can write windows apps must outnumber non-windows
developers by some kind of ridiculous margin, significantly increasing
the potential developer pool...



This archive was generated by hypermail 2.1.5 : Wed Jul 17 2013 - 04:00:55 MDT