Download - picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo
BorgLisp : All The Best Ideas All At Once
Kjell E Godo
BorgLisp Agenda
Overview Plan Goals Plan Approach Features LambdaLisp Characteristics AssemblerLisp Characteristics Mixing Lisp Dialects Long-Term Goals Next Steps Business Plan
Overview : What is BorgLisp?
BorgLisp assimilates all other languages as Lisp dialects with mixing and OOP macros
So if a good idea happens in any other lan-guage it can be easily included in BorgLisp
BorgLisp is Social Programming online BorgLisp is proprietary first and soon open
source so no hostile capture can happen BorgLisp is a super set of Smalltalk at first BorgLisp is initially a game programming
website that teaches coding ( Scratch )
BorgLisp Prehistory
BorgLisp comes from a hatred of all things unSmalltalk but Smalltalk not good enough
BorgLisp was inspired by Cola which mixes Lisp and Smalltalk and VistaSmalltalk
BorgLisp crystallized recently but started in 2005 in the book Lisp In Small Pieces
BorgLisp initially is on Dolphin Smalltalk BorgLisp uses about 100 Classes or less Each Lisp expression gets 1 Compiler and
1 Evaluator Class into the Parse tree
Near-Term Goals
Kid First Then Rest : Social Programming website teaches programming. Real time extreme programming online offered later
Initial website hosts game programming where the game is to make new games
Social Programming is like extreme pro-gramming but online and in real time
In Social Programming each code owning coder has an audience which can make suggestions in real time online
Long-Term Goals
BorgLisp online realtime agile distributed programming with Futures/Options for voting and Forums that can be attachedto any Object
BorgLisp is the fastest most expressive most powerful so you never have to leave it
BorgLisp can spawn other BorgLisps of various shapes and sizes which can solve any programming problem
Main Approach Make the best language by assimilating all
other languages ( as Lisp dialects )
Use Smalltalk like Class Hierarchies ( the most reflective best Hierarchies )
Use Lisp syntax and OOP implementedmacros ( macro::: aProgrammer a b c )
Approach Detail
Every language assimilated as a Lisp LambdaLisp SmalltalkLambdaLisp
SmalltalkLisp PrologLisp HaskellLisp C-Lisp AssemblerLisp MSIL-Lisp etc all mixable
LambdaLisp uses Smalltalk for primitives Everything is an Object ( multiple compilers,
browsers, debuggers, name spaces, hierarchies, compilation targets )
OOP macros across all Lisp dialects Modular Resizeable Retargetable
Language Lisp Dialects
LambdaLisp SmalltalkLambdaLisp SmalltalkLisp PrologLisp HaskellLisp OcamlLisp StandardMLLispCommonLisp ErLangLisp C++Lisp PascalLisp DelphiLisp RubyLisp GoLisp PearlLisp YaccLisp SedLisp AwkLispJavaLisp C#Lisp C-Lisp AssemblerLisp MSIL-Lisp
Etc etc etc
Language Lisp Dialects
Strengths and Advantages
BorgLisp does real time extreme program-ming with programmers in different loca-tions which provides a larger pool of pro-grammers to potential users
BorgLisp assimilates all other languages making them smart by an ability to mix
BorgLisp always assimilates the best ideas all at once to make a language system 10 times better than any good enough lan-guage like Java or C#
LambdaLisp Characteristics
LambdaLisp is Scheme plus Smalltalk SmalltalkLambdaLisp is Methods only Functions discouraged or outlawed Message: ( at:put: anArray 1 anObject ) Call: ( in:at:put: anArray 1 anObject ) Message: ( at:put- array 1 obj1 obj2 obj3 ) Call: ( in:at:put-- array 1 obj1 obj2 obj3 ) Special forms let letStar lambda define etc All of Smalltalk usable from LambdaLisp Most message selectors are variables ( # )
LambdaLisp Message Sending
GenericFunction Message dispatch ( GF ) Smalltalk uses Dictionary of < Symbol
Method > pairs in Classes LambdaLisp: ( reclineOn: chair deck ) Smalltalk: ( chair reclineOn: deck ) LambdaLisp uses Dictionary of < Class
Method > pairs in GF All Method subClasses included in GF Unique leaf Method special case no lookup Object Method special case Array lookup
LambdaLisp Experience
LambdaLisp tail call optimization was hard Had to make special debugging windows
for compile time activation stack and source code selections to see where I'm at
Probably spent way too much time on tail call optimization ( let … ) ( letStar … ) ( lambda … ) interactions but it's done
The rest of it should go easy Not sure how social programming should
work. How to scale it. Need TCP/IP help.
AssemblerLisp Characteristics
Looks like lisp encoding of machine lan-guage with all addressing modes implemen-ted and tested for the Intel ADD instruction
( add ( intoFrom: EAX ( at ( - BPX stackVar1 ) ) ) )
The OOP macro system can generate AssemblerLisp for dialects like C-Lisp
Now we need to implement all the other Intel instructions according to a pattern
Dialects That Could Be Added
Since all languages are in BorgLisp that in-cludes hardware design languages
Domain specific dialects that deal with ge-netics and etcetera will also be in there
When BorgLisp is more written in itself then new domain specific dialects should be easy to implement
If BorgLisp gets momentum it can ask other language implementers for BorgLisp dia-lects of their languages
Mixing The Dialects
( … ( prolog … ( assembler … ) … etc … ) ( haskell … ( java … ( c … ) ) … ( c# … ) ) The initial language designation is popped
off the front to select the dialect compilers Then compilers work as usual on ( … ) Each expression Compiler Class is associ-
ated with one main Evaluator Class Each Compiler creates one Evaluator The design is very scalable to new dialects PrologLisp is mostly coded but not tested
BorgLisp Next Steps of Action
BorgLisp needs an angel investor to get it going as a social programming app
Once it gets going it should attract all lan-guages to itself upgrading them all to smart
After 5 years the business model goes open source with BorgLisp written in itself
BorgLisp will assimilate and obsolete all other languages within 5 years if funded
The best ideas finally win over the good enough ideas and tired old traditions
Business Plan
BorgLisp is online with a rental business model. So that's all programmers * $3/m = $3M/m. ( 3% : $90K/m = $1M/yr = 5people + $500K cloud rentals )( back of envelope )
Social programming. Social game making BorgLisp can never go obsolete because it
always assimilates all other languages BorgLisp eventually goes open source so
there is no danger of a hostile capture to potential users