factor/extra/minneapolis-talk/minneapolis-talk.txt

117 lines
2.1 KiB
Plaintext
Executable File

- how to create a small module
- editor integration
- presentations
- module system
- copy and paste factoring, inverse
- help system
- tetris
- memoization
- editing inspector demo
- dynamic scope, lexical scope
Factor: contradictions?
-----------------------
Have our cake and eat it too
Research -vs- practical
High level -vs- fast
Interactive -vs- deployment
Factor from 10,000 feet
-----------------------
word: named function
vocabulary: module
quotation: anonymous function
classes, objects, etc.
The stack
---------
- Stack -vs- applicative
- Pass by reference, dynamically typed
- Stack languages: you can omit names where they're not needed
- More compositional style
- If you need to name things for clarity, you can:
lexical vars, dynamic vars, sequences, assocs, objects...
Functional programming
----------------------
Quotations
Curry
Continuations
Object-oriented programming
---------------------------
Generic words: sort of like open classes
Tuple reshaping
Editing inspector
Meta programming
----------------
Simple, orthogonal core
Why use a stack at all?
-----------------------
Nice idioms: 10 days ago
Copy and paste factoring
Easy meta-programming
Sequence operations correspond to functional operations:
- curry is adding at the front
- compose is append
UI
--
Written in Factor
renders with OpenGL
Windows, X11, Cocoa backends
You can call Windows, X11, Cocoa APIs directly
OpenGL 2.1 shaders, OpenAL 3D audio...
Tools
-----
Edit
Usages
Profiler
Easy to make your own tools
Implementation
--------------
Two compilers
Generational garbage collector
Non-blocking I/O
Hands on
--------
Community
---------
Factor started in 2003
About a dozen contributors
Handful of "core contributors"
Web site: http://factorcode.org
IRC: #concatenative on irc.freenode.net
Mailing list: factor-talk@lists.sf.net
C library interface
-------------------
Efficient
No need to write C code
Supports floats, structs, unions, ...
Function pointers, callbacks
Here is an example
TerminateProcess
process-handle TerminateProcess