Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 28 additions & 13 deletions docs/LEARNING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,45 @@

There are many great resources for learning Factor.

* Documentation is an important part of every good Factor vocabulary. Consequently, Factor's amazing and extensive docs are available offline, searchable right from the GUI Listener, or on the command line. These same docs, equally searchable, can be found online. <br /> <http://docs.factorcode.org>
* Documentation is an important part of every good Factor vocabulary. Consequently, Factor's amazing and extensive docs are available offline, searchable right from the GUI Listener, or on the command line. These same docs, equally searchable, can be found online. <br /> <https://docs.factorcode.org>

* Factor's GitHub repository hosts a Wiki. <br /> <http://github.com/factor/factor/wiki>
* Factor's GitHub repository hosts a Wiki. <br /> <https://github.com/factor/factor/wiki>

* Björn Lindqvist, one of Factor's developers, has a repo full of interesting tips and tricks. It's not updated very often and is WIP (and much of its content is being moved to the GitHub Wiki), but it's still very cool stuff. <br /> <http://github.com/bjourne/playground-factor>
* Björn Lindqvist, one of Factor's developers, has a repo full of interesting tips and tricks. It's not updated very often and is WIP (and much of its content is being moved to the GitHub Wiki), but it's still very cool stuff. <br /> <https://github.com/bjourne/playground-factor>

* [Learn X in Y Minutes](http://learnxinyminutes.com) is a good resource for many languages, and Factor is no exception. Its tutorial is not *extensive* by any means, but it is a good reference and enough to get you started. <br /> <http://learnxinyminutes.com/docs/factor>
* [Learn X in Y Minutes][learn-x-in-y-minutes] is a good resource for many languages, and Factor is no exception. Its tutorial is not *extensive* by any means, but it is a good reference and enough to get you started. <br /> <https://learnxinyminutes.com/docs/factor>

* [Rosetta Code](http://rosettacode.org/wiki/Rosetta_Code) is a [programming chrestomathy ](https://en.wikipedia.org/wiki/Chrestomathy) site. On it, among the hundreds of other languages, is [Rosetta Code:Factor](https://rosettacode.org/wiki/Category:Factor), where you can find solutions to many problems, and compare with languages you know. It also serves as a good reference and starting point for solutions. <br /> <http://rosettacode.org/wiki/Category:Factor>
* [Rosetta Code][rosetta-code] is a [programming chrestomathy ][chrestomathy] site. On it, among the hundreds of other languages, is [Rosetta Code:Factor][rosetta-code-factor], where you can find solutions to many problems, and compare with languages you know. It also serves as a good reference and starting point for solutions. <br /> <https://rosettacode.org/wiki/Category:Factor>

Lastly and maybe leastly,

* The [Concatenative Wiki](concatenative.org/wiki/view/Factor). Note that while it has good content and it's not wrong by any means, it's not really updated and [is being phased out](https://github.com/factor/factor/issues/706) in favour of the GitHub Wiki above.
* The [Concatenative Wiki][concatenative-wiki]. Note that while it has good content and it's not wrong by any means, it's not really updated and [is being phased out][phasing-out] in favour of the GitHub Wiki above.

* [Stack Overflow](http://stackoverflow.com/questions/tagged/factor-lang). There's not a large community (okay, about three users including yours truly) but ask there if you're really, truly stuck and someone will surely help you out.
* [Stack Overflow][stack-overflow]. There's not a large community (okay, about three users including yours truly) but ask there if you're really, truly stuck and someone will surely help you out.

* The [Mailing List](http://concatenative.org/wiki/view/Factor/Mailing%20list). Here, you can ask about anything Factor-related and a collaborator will answer helpfully.
* The [Mailing List][mailing-list]. Here, you can ask about anything Factor-related and a collaborator will answer helpfully.

* [Factor is on IRC](http://concatenative.org/wiki/view/Concatenative%20IRC%20channel)! Come join us; we're happy to help.
* [Factor is on IRC][irc-channel]! Come join us; we're happy to help.

* Learn and read about [Joy](http://enwp.org/Joy_%28programming_language%29), [Forth](http://enwp.org/Forth_%28programming_language%29) and concatenative / stack-based programming in general.
* Learn and read about [Joy][joy], [Forth][forth] and concatenative / stack-based programming in general.

* Learn and read about the [Common Lisp Object System](http://enwp.org/Common_Lisp_Object_System). The CLOS is widely regarded as the most advanced and innovative object model in the world, and Factor's object model is heavily based on and inspired by it.
* Learn and read about the [Common Lisp Object System][clos]. The CLOS is widely regarded as the most advanced and innovative object model in the world, and Factor's object model is heavily based on and inspired by it.

* In a lot of ways, Factor is a Lisp. It's a postfix, point-free, functional, inside-out-and-backwards funny-looking one, but many ideologies are the same. Because of this, it may be beneficial to learn a Lisp, preferably a Lisp-1 in which functions and variables share a namespace (because functions are values in functional programming). Yours truly humbly recommends [Scheme](http://schemers.org), or, for something more modern and usable, [Racket](http://racket-lang.org), a descendant of Scheme.
* In a lot of ways, Factor is a Lisp. It's a postfix, point-free, functional, inside-out-and-backwards funny-looking one, but many ideologies are the same. Because of this, it may be beneficial to learn a Lisp, preferably a Lisp-1 in which functions and variables share a namespace (because functions are values in functional programming). Yours truly humbly recommends [Scheme][scheme], or, for something more modern and usable, [Racket][racket], a descendant of Scheme.

Finally, Factor is written almost entirely in Factor. So, read the source code, and search the docs for words you don't know.
Finally, Factor is written almost entirely in Factor. So, read the source code, and search the docs for words you don't know.

[learn-x-in-y-minutes]: https://learnxinyminutes.com
[rosetta-code]: https://rosettacode.org/wiki/Rosetta_Code
[chrestomathy]: https://en.wikipedia.org/wiki/Chrestomathy
[rosetta-code-factor]: https://rosettacode.org/wiki/Category:Factor
[concatenative-wiki]: https://concatenative.org/wiki/view/Factor
[phasing-out]: https://github.com/factor/factor/issues/706
[stack-overflow]: https://stackoverflow.com/questions/tagged/factor-lang
[mailing-list]: https://concatenative.org/wiki/view/Factor/Mailing%20list
[irc-channel]: https://concatenative.org/wiki/view/Concatenative%20IRC%20channel
[joy]: https://enwp.org/Joy_%28programming_language%29
[forth]: https://enwp.org/Forth_%28programming_language%29
[clos]: https://enwp.org/Common_Lisp_Object_System
[scheme]: https://schemers.org
[racket]: https://racket-lang.org