[#91151] Python 25 times as popular as Ruby !? — llothar@... (Lothar Scholz)

Hey,

112 messages 2004/02/01
[#91154] Re: Python 25 times as popular as Ruby !? — Dan Doel <djd15@...> 2004/02/01

Lothar Scholz wrote:

[#91197] ruby way to enumerate users — "Robert K." <anon@...>

Hi,

29 messages 2004/02/01
[#91200] Re: ruby way to enumerate users — "Robert Klemme" <bob.news@...> 2004/02/01

[#91210] Re: ruby way to enumerate users — "Robert K." <anon@...> 2004/02/01

>

[#91213] GUI toolkit — Robert <bobx@...>

Has the community decided on a "standard" Ruby GUI toolkit? I know the

21 messages 2004/02/01

[#91225] Rubyx (linux distro created using ruby) - Bootstrap volunteers required — Andrew Walrond <andrew@...>

Rubyx is almost ready to go public :)

11 messages 2004/02/01
[#91229] Re: Rubyx (linux distro created using ruby) - Bootstrap volunteers required — "Zach Dennis" <zdennis@...> 2004/02/01

I'm here to be used and abused, ever since the post on ./ I've put aside a

[#91251] Method Reflection — Benedikt Huber <benjovi@...>

I'm quite new to ruby and was amazed by the powerful reflection

12 messages 2004/02/02

[#91269] test::unit caller stack feature request — Simon Strandgaard <neoneye@...>

A typical call stack of mine look like the following.

18 messages 2004/02/02

[#91274] Silly question — Brad <BCoish@...>

All:

27 messages 2004/02/02

[#91286] code that has been reached — Simon Strandgaard <neoneye@...>

Does there exists a tool for Ruby which records which parts

28 messages 2004/02/02

[#91307] Ruby Web Application Framework Roundup — Gavin Kistner <gavin@...>

I'm trying to decide which Ruby web application framework to use (if

64 messages 2004/02/02
[#91312] Re: Ruby Web Application Framework Roundup — Kirk Haines <khaines@...> 2004/02/02

On Tue, 3 Feb 2004, Gavin Kistner wrote:

[#91317] Re: Ruby Web Application Framework Roundup — Chris Morris <chrismo@...> 2004/02/02

Kirk Haines wrote:

[#91322] Re: Ruby Web Application Framework Roundup — Kirk Haines <khaines@...> 2004/02/02

On Tue, 3 Feb 2004, Chris Morris wrote:

[#91411] Re: Ruby Web Application Framework Roundup — gm@... (George Moschovitis) 2004/02/03

paul vudmaska <paul@vudmaska.com> wrote in message news:<401ECA9F.4070903@vudmaska.com>...

[#91310] OpenGL — Martin larsson <morg@...>

Hello

12 messages 2004/02/02

[#91315] role pattern lib for ruby — shasckaw <shasckaw@...>

Hello there,

46 messages 2004/02/02
[#91349] Re: role pattern lib for ruby — "Its Me" <itsme213@...> 2004/02/02

See Ruby Object Teams http://sourceforge.net/projects/robjectteam/

[#91358] Re: role pattern lib for ruby — shasckaw <shasckaw@...> 2004/02/03

Thansk for the link, it looks interesting but it is perhaps too complex

[#91542] Re: role pattern lib for ruby — shasckaw <shasckaw@...> 2004/02/04

shasckaw wrote:

[#91543] what is aspect-oriented s/w? (was Re: role pattern lib for ruby) — Sam Roberts <sroberts@...> 2004/02/04

Is there a description of it somewhere?

[#91570] Re: what is aspect-oriented s/w? (was Re: role pattern lib for ruby) — Pit Capitain <pit@...> 2004/02/04

Sam Roberts wrote about Object Teams:

[#91571] Re: what is aspect-oriented s/w? (was Re: role pattern lib for ruby) — Pit Capitain <pit@...> 2004/02/04

Pit Capitain wrote:

[#91573] Re: what is aspect-oriented s/w? (was Re: role pattern lib for ru by) — Sam Roberts <sroberts@...> 2004/02/04

Well, that was some good links, but they're all pretty hand-wavy about

[#91593] Re: what is aspect-oriented s/w? (was Re: role pattern lib for ru by) — "T. Onoma" <transami@...> 2004/02/05

I think I can give a reasonable overall picture of AOP.

[#91323] Questions about stdout/stderr combining (for Windows & Linux) — Patrick Bennett <patrick.bennett@...>

I'm working on a build tool, and I need to execute various

12 messages 2004/02/02

[#91364] shell scripts in background (with &) - why would they stop? — Ruby Baby <ruby@...>

Shouldn't a Ruby script keep running if someone uses the "&" at the end of the command?

15 messages 2004/02/03

[#91407] RCR draft for enhanced "case..when..else..end" syntax — Guoliang Cao <gcao@...>

Hi,

41 messages 2004/02/03
[#91417] Re: RCR draft for enhanced "case..when..else..end" syntax — "Robert Klemme" <bob.news@...> 2004/02/03

[#91548] Re: RCR draft for enhanced "case..when..else..end" syntax — Austin Ziegler <austin@...> 2004/02/04

On Wed, 4 Feb 2004 00:45:07 +0900, Robert Klemme wrote:

[#91412] Image conversion ... — "Useko Netsumi" <usenets_remote_this@...>

Hi, is there any Ruby code snippets I can use to transform my photo to lower

29 messages 2004/02/03

[#91430] Arachno Ruby IDE — Yura Kloubakov <yura@...>

13 messages 2004/02/03

[#91435] ruby-serialport on Win32 — Stephan K舂per <Stephan.Kaemper@...>

Hi group,

19 messages 2004/02/03
[#91496] Re: ruby-serialport on Win32 — Mauricio Fern疣dez <batsman.geo@...> 2004/02/03

On Wed, Feb 04, 2004 at 02:15:04AM +0900, Stephan K舂per wrote:

[#91436] ARGV problems — tony summerfelt <snowzone5@...>

i seem to be having a problem with ARGV.

20 messages 2004/02/03

[#91488] eistein's riddle — "Ara.T.Howard" <Ara.T.Howard@...>

18 messages 2004/02/03

[#91565] New Computer, version, confusion — Ronald E Jeffries <ronjeffries@...>

I just got a new computer and need to get stuff moved over to it.

14 messages 2004/02/04

[#91590] An assimilators guide to Python? — "Josef 'Jupp' SCHUGT" <jupp@...>

Hi!

24 messages 2004/02/05

[#91626] HTML Parsing? — Martin Hart <martin@...>

20 messages 2004/02/05

[#91633] YAPV (Yet Another Pickaxe Version) — Gavin Kistner <gavin@...>

As promised in another thread, I am working on a new web version of the

29 messages 2004/02/05

[#91641] Fw: [XP] A Job Posting : Extreme Programmer needed. — Pit Capitain <pit@...>

I found this today on the extreme programming mailing list:

13 messages 2004/02/05

[#91652] impersonating ruby — "Robert K." <anon@...>

Hi,

14 messages 2004/02/05

[#91665] Is there any way to mark an object as "always in use" (specifically, in a C extension)? — Harry Ohlsen <harryo@...>

Some background ...

17 messages 2004/02/06

[#91680] mkfifo in Ruby 1.8? — "Basile Starynkevitch [news]" <basile-news@...>

Why is (the library call) mkfifo missing in Ruby 1.8? Is there a way

25 messages 2004/02/06
[#91735] Re: mkfifo in Ruby 1.8? — nobu.nokada@... 2004/02/07

Hi,

[#91737] pty.so: [BUG] Segmentation fault — Bob Gustafson <bobgus@...> 2004/02/07

I just installed ruby-1.8.1 and found this problem.

[#91743] Re: pty.so: [BUG] Segmentation fault — matz@... (Yukihiro Matsumoto) 2004/02/07

Hi,

[#91760] Re: pty.so: [BUG] Segmentation fault — Joel VanderWerf <vjoel@...> 2004/02/07

Yukihiro Matsumoto wrote:

[#91775] Re: pty.so: [BUG] Segmentation fault — nobu.nokada@... 2004/02/08

Hi,

[#91779] Re: pty.so: [BUG] Segmentation fault — Joel VanderWerf <vjoel@...> 2004/02/08

nobu.nokada@softhome.net wrote:

[#91682] Is 1.8.2 imminent? And detecting Rubyx version — Andrew Walrond <andrew@...>

I'm holding off an 'official' release of Rubyx (ruby based linux distro)

18 messages 2004/02/06

[#91710] Email parsing — Rove Monteux <rove.monteux@...>

Hi there.

16 messages 2004/02/06

[#91777] I卒m too dumb to program — Lester_t_linpord@... (Lester T. Linpord)

Because I危 a moron.

13 messages 2004/02/08

[#92507] Opinion: Ruby + OpenOffice.org — Daniel Carrera <dcarrera@...>

Hi guys,

17 messages 2004/02/09
[#92511] Re: Opinion: Ruby + OpenOffice.org — Bob Gustafson <bobgus@...> 2004/02/09

Check the latest issue of The Linux Journal. James Britt wrote an article

[#92631] ruby-dev summary: 22688-22826 — Masayoshi Takahashi <maki@...>

Hello all,

19 messages 2004/02/11

[#92649] (noob) cast string to array? — Koncept <user@...>

25 messages 2004/02/12

[#92692] ANN: Ruby Standard Library Documentation, v0.9.0 — Gavin Sinclair <gsinclair@...>

Hi folks,

12 messages 2004/02/12

[#92771] return from yielded block — "Ara.T.Howard" <Ara.T.Howard@...>

13 messages 2004/02/13

[#92986] A good way to do a book? — bobx@... (Bob)

http://www.sourcebeat.com/index.jsp

18 messages 2004/02/16

[#93039] Builtins RDoc tarball? — Gavin Kistner <gavin@...>

Is there a tar.gz that corresponds to

24 messages 2004/02/17
[#93042] Re: Builtins RDoc tarball? — James Britt <jamesUNDERBARb@...> 2004/02/17

Gavin Kistner wrote:

[#93048] Re: Builtins RDoc tarball? — Gavin Kistner <gavin@...> 2004/02/17

James Britt wrote:

[#93074] Re: Builtins RDoc tarball? — James Britt <jamesUNDERBARb@...> 2004/02/17

Gavin Kistner wrote:

[#93078] Re: Builtins RDoc tarball? — James Britt <jamesUNDERBARb@...> 2004/02/18

James Britt wrote:

[#93113] Re: Builtins RDoc tarball? — Gavin Kistner <gavin@...> 2004/02/18

James Britt wrote:

[#93118] Re: Builtins RDoc tarball? — Dave Thomas <dave@...> 2004/02/18

[#93055] Why's (Poignant) Guide to Ruby, Chapters 1 to 3 — why the lucky stiff <ruby-talk@...>

Greetings. Man, I'm giddy about this announcement. My blood is visibly

24 messages 2004/02/17

[#93104] how to raise warning? — Szymon Drejewicz <drejewic@...>

How to raise warning?

20 messages 2004/02/18

[#93162] speed benchmarks comparing Ruby to Py/Perl/PHP/etc? — Ruby Baby <ruby@...>

I know Ruby wasn't created to make a fast-running language.

12 messages 2004/02/19

[#93180] Ruby to Parrot compiler — Mark <msparshatt@...>

Is there anyone working on a compiler for compiling Ruby code to work on

28 messages 2004/02/19

[#93193] proposal: let kind_of take more arguments — Simon Strandgaard <neoneye@...>

It just hit me.. why not let kind_of? take more arguments?

21 messages 2004/02/20

[#93243] Instance variable capitalization — Jim Freeze <jim@...>

I have a question about how ruby-like is it to capitalize

12 messages 2004/02/20

[#93260] Introducing myself and my interest in ruby — Larry Felton Johnson <larryj@...>

This is just a note introducing myself to the list, and

75 messages 2004/02/20
[#93855] Re: Introducing myself and my interest in ruby — gabriele renzi <surrender_it@...1.vip.ukl.yahoo.com> 2004/02/27

il Sat, 28 Feb 2004 02:32:13 +0900, Mark Hubbart <discord@mac.com> ha

[#93857] Re: Introducing myself and my interest in ruby — Mark Hubbart <discord@...> 2004/02/27

On Feb 27, 2004, at 11:19 AM, gabriele renzi wrote:

[#93858] Re: Introducing myself and my interest in ruby — Hal Fulton <hal9000@...> 2004/02/27

Mark Hubbart wrote:

[#93874] Ruby Compiler [was Introducing myself and my interest in ruby] — "Curt Hibbs" <curt@...> 2004/02/28

Hal Fulton wrote:

[#93936] FreeRIDE 0.6.0-1 -- a Windows Update — "Curt Hibbs" <curt@...> 2004/02/29

Until now, the FreeRIDE debugger did not work under windows. We now have a

[#93298] Puzzling... — "Ruby Tuesday" <rubytuezdayz@...>

Hi, I have these 2 files, one work and the other does not.

41 messages 2004/02/20

[#93321] Calling JDBC from with Ruby — Michael Davis <mdavis@...>

I am building a web application for a client in Ruby. The application is working but now needs to access data using JDBC. My client is requiring both ODBC (for Windows) and JDBC (for Sun) access to data. I am looking for an example of how to use JDBC from within Ruby. I have looked at Jruby but would prefer to write my own code rather than rely on a third party add-on that is beta, especially one that has not been updated in a while. If I write the data access portion in Java that uses JDBC, can I then write a Java wrapper that would allow Ruby to call the Java methods? Are there any examples available showing how to call a Java method from within Ruby similar to the C interface to Ruby?

21 messages 2004/02/21

[#93374] Tycho - A PIM under development — Hal Fulton <hal9000@...>

Hello, all.

17 messages 2004/02/21

[#93425] ANN: PLD RPMs of rake and ruby-dbi and a plea to packagers — Aredridel <aredridel@...>

I've just created packages (including .spec files to be used as

10 messages 2004/02/22

[#93459] Appropriate use of camelCase — Gavin Kistner <gavin@...>

Following the 'instance variable capitalization' thread, I'm convinced

46 messages 2004/02/23
[#93516] Re: Appropriate use of camelCase — "David A. Black" <dblack@...> 2004/02/24

Hi --

[#93523] Re: Appropriate use of camelCase — "NAKAMURA, Hiroshi" <nahi@...> 2004/02/24

Chunky bacon!

[#93526] Re: Appropriate use of camelCase — Kirk Haines <khaines@...> 2004/02/24

On Tue, 24 Feb 2004, NAKAMURA, Hiroshi wrote:

[#93464] Need examples comparing Ruby to Python — David MacQuigg <dmq@...>

I'm putting together a web page comparing Ruby to Python, and I need

35 messages 2004/02/23

[#93485] Ruby-gtk ? — Martin Hart <martin@...>

16 messages 2004/02/23

[#93632] proposal: debug keyword — Simon Strandgaard <neoneye@...>

A debug keyword which enables debug-output for a specific method.

13 messages 2004/02/25

[#93654] Operators +, += and = in Ruby 2 — "Robert Klemme" <bob.news@...>

12 messages 2004/02/25

[#93732] Why don't $global and @instance variables need declaration? — David Garamond <lists@...6.isreserved.com>

Sorry if the answer is obvious, but I can't find a satisfactory or more

10 messages 2004/02/26

[#93734] language contest ==> unit test framework from lisp to ruby — Piergiuliano Bossi <p_bossi_AGAINST_SPAM@...>

A few days ago I made a post (rubytalk:92963 ==> [2]) about the

13 messages 2004/02/26

[#93865] UnboundMethod#hash apparently broken in 1.8.1 — "Robert Klemme" <bob.news@...>

18 messages 2004/02/27

New paradigm of introspective OO development

From: jaredthirsk@... (Jared Thirsk)
Date: 2004-02-25 07:59:50 UTC
List: ruby-talk #93623
==  Introduction to DAF ==

  I am interested in the next generation of approaches to software
development.  Over the last decades, there has been an obvious shift
in how our most complex software is created.  We started off with
punch cards (or so I am told -- I was born in 1981 so apologies if my
history is off or my ideas are naive), punching in a stream of ones
and zeros.  The code contained only 0 and 1 and everything else was
abstracted in the mind of the programmer, even the machine-level
instructions.  Then we moved to assembly language, where code more or
less explicitly contains the machine-level instructions, while the
meaning of variables, and the control structures were still largely
abstract.  From there, with the advent of C, control structures and
variable names are now in the code.  With C++, objects are in the
code, while system-level architecture, design patterns, and object
interoperability are still mostly abstracted.

  The general trend is a move towards more intelligent code -- from
1's and 0's, to objects with explicit inheritance, interfaces, and
data members.  Each time more abstractions are made explicit in the
code, the code becomes easier to implement, test, and reuse.

  I am interested in exploring the next step (perhaps even determining
the nature of or actualizing the final step), of moving more
abstractions to code, making the code more intelligent, and easier to
develop, as the developer needs to carry less abstraction in his/her
own head.

  What I am proposing is a strictly minimalistic paradigm that
facilitates more intelligent code.  More intelligent code facilitates
better and easier-to-implement RAD design tools, as well as more
intelligently adaptive and self-aware software components.  The
working name used here is DAF, which stands for Dynamic Application
Framework.

  == Basic Concept ==

  The idea I have is for a purer form of object-oriented development,
or really, aiming for objectively pure objects that perfectly
represent any conceptual abstraction a software programmer or
architect could make, on the object / component level.  (On a system
level, abstraction arises from the interactions of the objects, and so
is beyond the scope of object definition, or object oriented
programming, but arises out of it anyway.)

  Conceptually speaking, what is an object?  It is a concept, an idea.
 It only has meaning once things are attached to it.  The decorator
pattern (or at least my concept of it), in its general conceptual
form, can be used to attach capability to objects.  Objects have two
primary capabilities: they can accept input from their environment,
and they affect their environment.  Automata such as computer code
only meaningfully affects its external runtime environment in response
to input.  (Whether various "agents" such as humans or software agents
act spontaneously is a philosophical matter requiring a theory of
reality, like the CTMU, or a semantic issue, for people who like to
think they are writing spontaneously intelligent agents.)  Taking this
into consideration, we get the general principles of interface (which
is basically equivalent to environmental input or event handling) and
implementation (internal aspect of doing something that affects the
outer world) and their natural separation.

  Thus each object intrinsically has decorators that provide
interfaces, along with implementation of those interfaces.  I think
that the progression towards easier programming will inevitably lead
and is leading towards smarter programming tools, eventually towards
the point where the programming objects themselves will support
reflexive self-modification, which could potentially be dropped at
either compilation time or runtime for the sake of proprietary opacity
or memory/CPU efficiency, where desired, or left in for the sake of
dynamically intelligent, self-aware and/or user runtime-extendable
applications.

  (There is also a shift towards using scripting languages where
certain application behavior is treated more as data than as
statically hard-wired information.  The divide between data vs code is
shrinking and will continue to shrink as our software demands more
cross-integration and adaptive capability such as self-repair,
self-optimization, and transparency of object distribution.)

  Self-modifying objects therefore require two basic decorators: one
for managing interfaces, and one for managing decorators (which
encapsulate implementors).  In DAF, there are three fundamental types
of objects, data, executable, and generic.
 - Data primitives contain a data decorator, and provide get/set
interfaces for compatible types in the host language (char*, long,
etc.), with the implementation possibly converting numeric strings to
binary integers, for example.
 - Executable primitives are guaranteed to implement an "execute"
method, which executes code in a supported language (perhaps a call to
shared library, or C code, or a lua script).
 - Generic objects are not primitives in that they contain no Data or
Executable that interface with the host machine architecture.  They
are completely abstract objects, containing nothing and having no
capability by default.
 
  == Extending Capability with Decorators == 

  Generic, or non-primitive objects must be extended to be useful. 
The DAF development environment contains a executable primitive to
create a Generic with self-modifying capabilities.  Its inextricable
interfaces provide access to both the interface manager, and the
decorator manager.  From here, all imaginable capability can be added.

  By adding a string decorator to an object, for example, the string
decorator factory will invoke operations in the Interface Manager to
add the supported Get/Set accessor interfaces to the object.  The
decorator factory will also use the object's Decorator Manager to add
a string decorator, which is responsible for handling the
implementation of the string accessor methods appropriately, and
ensuring the value is stored in memory.  (Prototypes for efficient
creation of frequently used objects is mentioned later.)

  == Refining Capability via Chain of Command == 

  Another decorator could be added, to handle thread synchronization
for the object.  A 'synchronization' decorator would be attached,
containing some kind of mutex or semaphore as its private
implementation data, and the existing interface methods for accessing
the string would be replaced by a chain of command: when GetString, or
whatever is invoked, the Interface Manager will pass execution to
locking/waiting implementation in the sync decorator, followed by the
string get implementation in the string decorator, followed by the
unlocking implementation.

  Another decorator could be added to control permissions of the
object, inserting a permission check at the beginning fo the chain of
command.  The implementation would verify a security token object's
security domain (referenced inside the decorator, described in a
central location) before the chain was allowed to continue, if at all.

  All sorts of kinds of decorators could be added to objects, such as
ones that implement transparent access of objects over the net,
time-variable caching from net or disk, database access, child
containers, parent accessors, observer pattern, documentation info,
etc.  As such, this could be seen as a sort of middleware that could
compete (once it evolves to this point, of course) with the likes of
CORBA, DCOP, ZeroC ICE, etc.  (ICE's feature list is probably the
closest match I've seen to what I envision here.)  The distinction
between DAF and these being that all capability for distributed
objects, as well as everything else, is optional, not constrained to
or focused on any one application.

  == Typing == 

  Objects are not described by a single type, but rather conform to
one or more schemata which indicate their capabilities.  A schema
comprises a set of one or more interfaces (or interface groups, not
described here), or one or more decorators, or both, with the
openendedness of DAF allowing more complex schema systems to be
implemented, such as the one used by XML (.xsd).  For convenience of
organization, a schema may include other sub-schemata.

  Schemata can be generated at runtime, against which introspective
objects can be validated.  Alternately, non-introspective objects or
non-modifiable objects can be hardcoded to indicate they implement a
certain schema.

  == Prototyping / Flyweighting ==

  Factories may be fed a particular schema to use to create an object.
 Detailed schemata may effectively be prototypes, which factories
could automatically generate for efficient creation, or which user
could manually specify.
  I won't go through all the details, but with DAF there is
opportunity to set up the creation flyweights as well as copy-on-write
objects, transparently and conveniently for the developer.

  == Full Reflexivity and Self-Documentation == 

  Documentation decorators could be added to every object prototype as
desired, at runtime (in a RAD environment) with the documentation
being physically stored in a separate location as the code.  DAF
allows for multiple group (and parent accessor) decorators,
facilitating multi-dimensional heirarchies.
  For example, a schema object could simultaneously be all of:
 - the member of a multi-level index of all schemas currently
available,
 - the member of a index of schemas provided by a certain pluggable
library,
 - the dereference point of another object's reference (perhaps
hardcoded, or cached from a schema check) indicating that object
conforms to the schema,
 - the parent object of a documentation object describing that schema,
the member of an index containing the set of objects authoritative by
an object server,
 - a member of a revision control system tracking this version of the
object
 - or any other number of examples.

  When subsystems are dropped or become irrelevant, such as a
development subsystem, all related decorators are dropped (revision
control, code documentation, etc.), and may be added again at runtime
(depending on how much introspective capabilities the objects have).

  The intent is to establish one way (via group/reference decorators)
and traceable one way (via group/parent decorators) connectivity
between objects in a way that explicitly captures the abstract
relationships between objects, moving the intelligence into the code.

  The resulting codebase becomes a self-documenting, self-accessible
network with broad scope, allowing a developer to traverse it similar
to how TheBrain traverses broad information rich networks.

  == Example Applications ==

Theoretically there should be no restriction on what couldn't be done,
the idea being that at some point, runtime dynamicity and reflection
can be traded in for runtime functionality and performance comparable
to a C program.  That said, here are a few random examples where the
dynamic capabilities might be helpful:

 - A web based knowledge base that allows arbitrary relationships
providing multilevel heirarchies.  Nodes of information could have
discussions linked to them, people's votes on appeal or validity,
external links, etc.
 - A multi-server scale or peer-to-peer computer game requiring
transparent relocation of objects, benefitting from adaptive load
balancing and self-optimization.
 - Any application where introspection is needed, applications that
learn, system doctor programs, better versions of clippy.
 - Any application benefitting from a minimal or maximal
object-oriented approach, and design patterns.

  == Flexibility ==

The idea is that DAF is a simple abstraction layer, and does not
prevent the developer from making use of existing libraries and their
APIs, or from designing 80% of their application in Java or C++ or
perl and abstracting the 20% of the high-level stuff and scripting
abilities with DAF.

In theory, DAF is just a way to abstract concepts, and should not
impose any restrictions on design.  Any run-time dynamic
self-modification and introspective abilities should be optional
similar to how C++ RTTI is optional.

  == Facilitation of Adaptivity ==

  A quick example of how introspection could facilitate Adaptive Agent
Intelligence: a group decorator (container of keyed child objects),
could have an AI agent attach itself to the "find object" interface
chain of command to profile a single or multiple algorithms for
looking up children, and either a) switch to another algorithm /
storage mechanism that is known or believed to be better, or b)record
performance of algorithms to disk so that common executions of the
application can reveal the best algorithm to use (hash table (of
varying sizes and algorithms), b-tree, map, etc.).
  In general, this kind of introspection allows profiling that can be
more automated and facilitate intelligent run-time adaptivity in code
execution.

  == Implementation ==

  DAF is a simple and obvious way of defining application in terms of
objects, interfaces and decorators.  The matter of actually executing
code is arbitrary and could be handled by any compiled or interpreted
language with sufficient bindings to the DAF specification.  If DAF
actually gets implemented, and it's up to me, I'm thinking that a BSD
or GPL licensed DAF runtime environment would be implemented using
C++, with support for executing shared libraries on Win32 / Linux /
other OS's, and bindings to a scripting language like Lua.  At some
point, it may make sense to create a dedicated language for working
with DAF for the sake of syntax convenience and aesthetics (so far
I've been creatively overloading C++ operators.)

  == Summary ==

DAF is a proposal to facilitate and make explicit the implementation
of several important design patterns, including decorators, facade,
chain-of-command, command objects (instead of parameters to executable
objects).  Generic support for observers, marshals, factories and
probably several other patterns will be provided as a part of DAF's
core decorator libraries, as will commonly useful applications such as
threading, network/database transparency, load balancing, etc.

DAF aims to ease the development and debugging bottlenecks by leverage
today's increased CPU and memory availability to make applications
fully interactive, both to use and to develop introspectively without
necessarily enforcing any of these features.  Introspection
facilitates adaptively intelligent program dynamicity to the point
where applications can start to become intelligently self-analytical.

  == Conclusion ==

  I am a recent SW engineering grad without several years of serious
programming work experience, so I present this with humility and an
open mind.  I am hoping that people can direct me to a) why this is a
bad idea, b) what is out there that already does this, or c) that this
is an avenue worth exploring, or d) same as c and that they're
interested in helping make it or e) something else.  In addition to
being someone who would like better RAD tools for software
development, I am also an independent researcher in the realm of
psychology and cognitive science, and would like to see intuitive
methods of programming that more closely represents good theory of
mind (requiring less overall time and effort from the software
developer), as well as a theory of mind (AI) that is easier to
implement in and interact with software.

I will try to monitor the forums where I post this, but if you want to
be sure to get through to me, email me at jaredthirsk123@yahoo.com
(removing the 123 for my actual address).

Regards,
Jared Thirsk
http://daf.melsib.net

In This Thread

Prev Next