picolarc the borg language and the next smalltalk: the best ideas all at once - kjell godo
DESCRIPTION
picoLARC is designed to be a collection of lisp dialects each of which mimics in style some other programming language like LambdaLisp ( Scheme + Smalltalk ) , PrologLisp , CLisp , C++Lisp , AssemblerLisp , SmalltalkLisp , MLLisp , HaskellLisp , F#Lisp , JavaLisp , C#Lisp , RubyLisp etc. A novel form of method dispatch optimizes leaf cases in LambdaLisp which could be used in Smalltalk also. It makes method lookup equivalent to Array lookup or no lookup at all in a large number of significant cases. An OOP macro system spans all the different dialects. Each dialect can be embedded into all the others except where that causes exceptions. picoLARC is to be implemented first out of Smalltalk and not C. If the Borg will exist then picoLARC will be their language. It is desiged to assimilate all other languages and perfect them by turning them into lisp dialects. Lisp is the best syntax( fullfilling all expressiveness and flexible power except the universal human need for mediocrity ). You can define parenthesis variously like indenting and CrLf if you like. It uses macro Characters. It has a tree based non text editor debugger in addition to Smalltalk like text based ones. Smalltalk has the best Class Hierarchy so each dialect builds on that in style and content. picoLARC takes the best of all languages and combines them into a perfected unified whole. Once picoLARC gets going nothing can stop it. It’s modular and clean and dirty at the same time. Give it a chance to get going. The best ideas all at once. It is a singularity and it ushers in the singularity. It only lacks momentum. A spark to get it going.TRANSCRIPT
![Page 1: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/1.jpg)
BorgLisp : All The Best Ideas All At Once
Kjell E Godo
![Page 2: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/2.jpg)
BorgLisp Agenda
Overview Plan Goals Plan Approach Features LambdaLisp Characteristics AssemblerLisp Characteristics Mixing Lisp Dialects Long-Term Goals Next Steps Business Plan
![Page 3: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/3.jpg)
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 )
![Page 4: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/4.jpg)
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
![Page 5: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/5.jpg)
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
![Page 6: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/6.jpg)
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
![Page 7: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/7.jpg)
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 )
![Page 8: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/8.jpg)
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
![Page 9: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/9.jpg)
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
![Page 10: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/10.jpg)
Language Lisp Dialects
![Page 11: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/11.jpg)
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#
![Page 12: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/12.jpg)
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 ( # )
![Page 13: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/13.jpg)
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
![Page 14: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/14.jpg)
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.
![Page 15: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/15.jpg)
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
![Page 16: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/16.jpg)
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
![Page 17: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/17.jpg)
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
![Page 18: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/18.jpg)
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
![Page 19: picoLARC the Borg Language and the Next Smalltalk: The Best Ideas All At Once - Kjell Godo](https://reader037.vdocument.in/reader037/viewer/2022100601/55720850497959fc0b8bc91a/html5/thumbnails/19.jpg)
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