AdventOfCode2020
slimux
AdventOfCode2020 | slimux | |
---|---|---|
1 | 1 | |
0 | 0 | |
- | - | |
0.0 | 0.0 | |
over 2 years ago | over 5 years ago | |
Smalltalk | Vim Script | |
The Unlicense | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
AdventOfCode2020
-
On Repl-Driven Programming
> At the end of the day, you quit your environment and shut down. How do you ensure your interactive work is not lost and the environment is still what you expect it to be when you start again the next day. How would you compile such a program?
Modern Smalltalks have solved this problem. Smalltalk has the concept of Packages just like Java, and as you go along building your environment, even though you are modifying the Smalltalk image, you can export these packages to plain-text files, and put them in Git, just like any other language. The environment itself supports Git integration (called Iceberg in Pharo).
> Also, if significant parts of the source code are written inside the REPL, wouldn't the lack of modern IDE features be a hassle? No syntax highlighting, no code completion, no code inspections etc. Or are there tools that offer those?
The command-line REPLs that other languages have are NOT what you get in Smalltalk. I believe the author means the entire interactive environment, and the "style" of development is REPL, not the actual UI. The Smalltalk "IDE" is just as powerful as any other IDE, including code completion, automatic generation of certain getters/setters, renaming methods/classes, finding uses, jumping to declarations and even refactoring within methods. The difference between a normal IDE for Java is that this "IDE" is pervasively available, including in breakloops and the debugger. Since the system is live, there is no separate notion of debugging, the debugger is always there, and you can use all the editor IDE features when stopped in a debugger. You no longer have to deal with a crippled debugging environment way different from your authoring environment. It truly is mind-blowing!
I highly recommend giving Pharo Smalltalk a spin (by following their MOOC or similar). This video is also worth a watch - https://www.youtube.com/watch/baxtyeFVn3w
I did most of this year's Advent Of Code in Smalltalk and saved it in Git just like any other language. Someone else can then import it into their image. https://github.com/nikhilm/AdventOfCode2020.
Note that the source code looks very verbose, but you never actually interact with the source like that. The source is just a serialization. Your actual environment only ever shows you UI elements and entire IDE windows describing your classes and individual methods.
The only thing I miss in Pharo is that it doesn't have Vim keybindings :)
slimux
-
On Repl-Driven Programming
I use a vim plugin called slimux to send code from vim into a REPL running in another tmux pane. It works really well.
Here's the fork that I'm currently using https://github.com/grusky/slimux
I use it with python and node.is and MySQL and psql
It's great because it can work with any REPL.
I used to use jupyter notebooks but almost exclusively use slimux now unless I need to some data visualisation or computer vision.
VS code's ipython REPL is quite good and has support for images and graphs.
What are some alternatives?
Nvim-R - Vim plugin to work with R
vim-slime - A vim plugin to give you some slime. (Emacs)
preplish - A Perl 5 REPL written in Bash
cloture - Clojure in Common Lisp
jupyter - An interface to communicate with Jupyter kernels.