Earlier quoted context omitted.
>Perhaps what you are missing is the practical part. I think that's it. Thanks, I'll take a look at common lisp, especially at projects written in it.
Not exactly what you asked for but, if you have time, I would recommend looking at Practical Common Lisp: https://gigamonkeys.com/book/ And also this blog post (which is a much smaller time commitment): https://mikelevins.github.io/posts/2020-12-18-repl-driven/
Steel – An embeddable and extensible Scheme dialect
131–140 of 192 posts
Re: Steel – An embeddable and extensible Scheme dialect
#132Earlier quoted context omitted.
May I ask, what is your personal journey of learning to code? Did you also discover Lisp/Scheme through SICP? And what have you professionally used Scheme for? I am currently going through SICP, and I am also interested in Rust, so this project is a great discovery! Maybe I can contribute to it also.
I learned to code primarily through school - I had the privilege of studying at Northwestern where a lot of the Racket people teach, so my first programming class was in Racket. I have worked through some of SICP and How to Design Programs. After Racket I learned some C, C++, and C#. Then taught myself python just independently doing some projects, ended up back taking a few classes in Racket, then one in Agda that g…
Re: Steel – An embeddable and extensible Scheme dialect
#133Earlier quoted context omitted.
That’s your choice!
People that express strong opinions about syntax come across as dummies to professionals. Doesn’t mean they are of course. Just sayin’.
Unsure if it means they are or are not dummies, though.
Re: Steel – An embeddable and extensible Scheme dialect
#134Earlier quoted context omitted.
Yeah it is a personal issue, there are people who really like Lisp syntax (I'm one of them). That doesn't mean anything bad, of course, some people like dark text on a light background, others light text on a dark background. Everyone is different and that's what makes the world so awesome. I see something like: some-var: I64 := a * b - c ^ d ^ e; ...and my brain gives out, while I find: (let ((some-var (- (* a b) (^…
How do you look at the latter and know the code structure? Are you counting parentheses? Or are you relying on conventions around white space indentation. If the latter, are you not concerned a misplaced parentheses might make the code different from it appears? There could be bugs not shown in the indentation. Most lispers I know code in eMacs or other smart editors that provide auto code formatting and colored pare…
With round brackets on the other hand, well... I think my brain just works with round brackets. Like my mind is coded in Lisp or something, I dunno. It would explain why I'm so slow: GC pauses. My mind should really be ported to SBCL or something.
Re: Steel – An embeddable and extensible Scheme dialect
#135Earlier quoted context omitted.
used to be on the same camp. now I think I get it. the language is malleable. because it is homoiconic. so while developing software, you are simultaneously writing a domain specific language for your problem. because macros. in the end, if you like your craft, you end up with a "language" that is very suitable for solving the problem you have at hand, with very little noise. the downside is, probably most others wil…
Homoiconicity is a gimmick and it's a cult.
Re: Steel – An embeddable and extensible Scheme dialect
#136Can someone explain these scheme and lisp languages to me? Every time I look at these languages, I can't grasp what you can use them for. And why one would use them. I always feel like I'm missing something. In the example scripts and code snippets, I can see that you can define functions, that you can use lists, mathematical operations, you can build some algorithms, you can print text, but it never goes further tha…
Re: Steel – An embeddable and extensible Scheme dialect
#137Should have named it Steele since it's dragging Rust users half-way to Lisp :).
Why would you want to do that? Lisp is dynamically typed and has a GC.
- When garbage collection is the optimal or near optimal memory allocation pattern for your program.
- When you care less about minimizing memory usage than minimizing implementation complexity, development speed, and compile time speed.
- When your program deals with cyclic data structures.
- When you want green threads (like Goroutines)
I can say that I would rather use Lisp to write any program that manipulates tree or graph structures simply because it has a garbage collector.
Re: Steel – An embeddable and extensible Scheme dialect
#138Earlier quoted context omitted.
It's a joke that you seem to have missed. > We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp. Guy Steele on Java
I'm familiar with the Steele quote. The manner in which C++ programmers were "dragged halfway to Lisp" concerns primarily manual memory management and all the bugginess attending thereto (Java came out before the STL and smart pointers were widely adopted). Concerns about memory safety were a significant part of the impetus for developing Java in the first place. Steele was responding to complaints that he had turned…
Java came out before the STL and smart pointers were widely adopted.
This is a strange comment.Java 1.0 was released in Jan 1996. (Java wasn't very useful before 1.1) However, Stepanov proposed STL to ANSI/ISO committee in Nov 1993, and HP released a working version to the Internet in Aug 1994.
"[W]idely adopted" is an editorial term. It is meaningless without some backing evidence. ("Never been worse" has a similar sentiment.) How do determine what counts?
I worked on enterprise C++ for years in the mid-2000s that didn't use any smart pointers. There are many huge, old enterprise C++ projects that don't use STL or smart pointers. And, there are still many huge old Java enterprise projects that use shitty cast-from-Object-type to pass around typed data, instead of generics, or something better. Not much being said here!
the most interesting thing to happen to PL design in decades
"[D]ecades" is a wild overstatement. In the last 10 years, I would vote for LLVM, which greatly improved the velocity of (experimental) programming language development. Would Rust have developed so quickly without LLVM? Probably not. Look at the speed of development in Rust, Swift, Zig, and many others that use LLVM as their backend. It is night-and-day compared to 20 years ago in a GCC-only open source compiler world. I remember the bad old days where GCC was the elephant in the room, but so hard to add and maintain frontends, that few did it. Rust has the same memory-safety guarantees with none of the drawbacks of GC
I never saw this before. Are there any counterpoints?Re: Steel – An embeddable and extensible Scheme dialect
#139Can someone explain these scheme and lisp languages to me? Every time I look at these languages, I can't grasp what you can use them for. And why one would use them. I always feel like I'm missing something. In the example scripts and code snippets, I can see that you can define functions, that you can use lists, mathematical operations, you can build some algorithms, you can print text, but it never goes further tha…
Try moving the left parenthesis of each expression over to the right by one and it may become clearer
(my-fn 1 2)
my-fn (1 2)
Re: Steel – An embeddable and extensible Scheme dialect
#140I wonder where the name came from. Being HN, here is my nitpicking imperative: Names are important. Our inheritance is wit, self-awareness, and irony; names that puncture ego and power and that appeal to joy: C, C++, GNU, Rust, Google, Yahoo!, Vim, Git, awk, etc. Others are beautiful, evocative images, like Apple and Amazon. Names communicate our culture and ideals to each other and to the next generation. Careless,…
So here is the history: 1. Guy Steele (along with Gerald Sussman) created scheme, and Steel is close to Steele, just drop the e. 2. Steel is a scheme, and I observed that scheme names have a tendency to be named things crime related: Scheme, Racket (racketeering), Larceny, etc - Not a scientific analysis at all, but I found it funny at the time that Steel sounds like "steal". 3. You made the observation, Steel sounds…