3 ms·
Programming languages do matter but not as much as many people think f.ex. the HN crowd has a soft spot for LISP, and most of the don't even have proper paralle
by pdimitar 3y ago
Programming languages do matter but not as much as many people think f.ex. the HN crowd has a soft spot for LISP, and most of the don't even have proper parallel execution (and no I am not talking OS threads, having direct access to those should honestly be removed at one point). And sure, Racket and a few others are "Working on having an actor model". Wake me up when they achieve it. I am betting on somewhere in the 2030s, best case scenario.
A combination of a good and restrictive language compiler (Rust, OCaml, Haskell) and an amazing runtime (Erlang) is the sweet spot that everyone should be aiming at.
If anything, I am very tired of seeing yet another LISP dialect -- or any other language really, come to think of it now -- being announced. Many of us the programmers love to play and going to check on these languages is IMO taking away precious mind-share.
If anything, in my eyes it's exactly because programming languages matter is the reason why we should have less of them. We should start folding some languages inside others. (Or abandon them.)
- nick_ 3y agoJust FYI: Swift has actor model. Pony is built around actor model.
- pdimitar 3y agoSure. But now we get to the really hairy problem: library coverage and community support. That's why I think most languages should start converging together already. IMO we the programmers scatter ourselves too much.
- nick_ 3y agoOn that I totally agree.
- pdimitar 3y agoThen my apologies to you and everyone else who replied to me: I really should have just said "I feel we scatter our attention and energy too much and we don't collectively evolve our craft as much as I believe we are capable of".
- nick_ 3y agoNo worries! Apologies for being overly curt.
- dannyobrien 3y agowhat would "proper parallel execution" look like in a Lisp? A library or a more fundamental form? Something with the GC?
- samsquire 3y agoThere's a language called PARLANSE which is a parallel LISP. http://www.semdesigns.com/products/parlanse/index.html http://www.semdesigns.com/products/parlanse/index.html
- Jtsummers 3y agoAlso MultiLisp, QLisp, *Lisp, and others. Parallel lisps are not a new concept, though they were often written with specific machines in mind (*Lisp for instance).
- pdimitar 3y agoIt's not about them being a new concept. Do we have Erlang actors or Golang goroutines there? Are they fully safe like Erlang's actors or Rust's futures would be (provided you don't use escape hatches)? If not, they remain toys.
- Chris_Newton 3y agoIf anything, in my eyes it's exactly because programming languages matter is the reason why we should have less of them. We should start folding some languages inside others. (Or abandon them.) As a counterpoint, the programming industry is vast, so the opportunity cost of using tools that are not as good as they could be is also very high. If we don’t continue to explore new possibilities, how will we make those tools better? How can we learn what is worth keeping, what to combine, what to abandon? I believe there is huge potential in finding better programming languages and better programming models for them to describe. We are still at the stage where we are worrying about whether our programs are even behaving correctly. Sometimes we get as far as worrying about performance. There is a lot of talk about productivity but it is relatively rare that we consider language design as a way of expressing our ideas more efficiently or making it easier for someone else to understand them later. If we look at languages like Haskell or Erlang or Rust, these have certainly been used professionally, but in the long term their most important contribution might be the ideas they introduced to wider audiences rather than anything written in those languages themselves.
- pdimitar 3y agoAs a counter-counter point, I hear your sentiment a lot, I work for 22 years in the profession now -- and I am a fairly average programmer so I don't claim any credentials or anything. ...And I've never seen your sentiment work. Nobody is really learning anything, people just want to tinker with stuff and never read history or even best practices. All I see are people going in circles forever. Maybe there's a smaller percentage of much clever programmers out there. I wouldn't know because I never (so far) attempted to do anything beyond web apps (though I do regret that a lot and might yet change it). And maybe these people are truly evolving the art. I mean we have Golang, Rust, WASM, and others so I know these people exist. But somehow that almost never penetrates the broader programming community. Maybe Rust is the only true example because people started wanting to have sum types in their day-job languages -- which I view as a good thing. Such sentiments have the potential to gain enough critical mass to have language designers reconsider their initial choices (f.ex. Elixir is working on an optional type checker, one that's stricter and more descriptive and correct than the one coming with Erlang). So I don't know. I wish you are correct but after 22 years in the sidelines the only true improvements I've seen are Elixir / Golang (in terms of transparent parallelism where Elixir wins over Golang but Golang is still much better than almost everything else out there as well) and Rust (for the aforementioned compile-time guarantees and other ones like memory safety). Outside of that though? Nope. "Hey let's have one more JS framework, we didn't have a new one this month" is something I've seen a lot of, not to mention the eternally growing list LISP interpreters because apparently that's the peak of our collective intelligence and ambition. :( I just get sad. HN is a place where a supposed intellectual elite gathers but they don't seem to be interested in anything beyond their pet language that will never have even 1% of the goodness that a much-derided language like Golang has. And I view that as a waste of energy and time, and as a very sad thing in general.
- PartiallyTyped 3y agoI support abandoning dynamic typing.
- pdimitar 3y agoSame. The dynamic typing helps with prototyping but all MBAs have consistently proven they are NOT willing to have the prototype rewritten in something better later.
- PartiallyTyped 3y agoI found that it is better to ask for forgiveness than permission.
- pdimitar 3y agoSame, by the way. I am ashamed that I didn't do it more often over the course of a 22-year long career. I really should change that.
- 8n4vidtmkvmk 3y agoI just launched 2 experiments to production this week without going through the launch approval process. I'm such a rebel.
- Tarq0n 3y agoI don't think static typing is the right way to go for every kind of application (imagine doing data analysis without dynamic typing), but every dynamic programming language should ideally support progressively adding types to a codebase.
- stellalo 3y ago> Programming languages do matter but not as much as many people think f.ex. the HN crowd has a soft spot for LISP, and most of the don't even have proper parallel execution I don’t understand how the argument about LISP would imply that programming languages matter “not as much as many people think”
- pdimitar 3y agoI mean that people over-fixate on syntax or language quirks, but when you start writing for (and deploying for) production then it turns out that many others things are much more important. And I wish people were more practical in our area and they are often not, they are like kids who only want to play even. And even though I am eating down votes I will keep saying it: fangirling over LISP I view as a collective drag and to the detriment of the entire programming area. Obviously I am not a world dictator saying what should people spend their time on. I am saying that if you want to truly move the art forward, well, we have 5000 other problems that are at least 100x more important than "oh look I can code a basic LISP interpreter". My opinion, obviously, but it's also one that I would not be easily dissuaded from.
- spit2wind 3y ago> I am saying that if you want to truly move the art forward, well, we have 5000 other problems that are at least 100x more important than "oh look I can code a basic LISP interpreter". How does one "move the art forward" without understanding the landscape first? That is, an individual can't know what "forward" means without understanding where they currently are. There isn't a finite number of people over a fixed period of time doing all this. Just because something "is known" to humanity doesn't mean it's known by every individual presently. Each generation must rediscover what previous generations knew, either through raw insight or by knowledge transfer. People aren't born with computing knowledge :) Viewed this way, how many people in the world, presently, have sufficient knowledge to "move the art forward"? How many have the means? I'd put it at a few hundred. Maybe you're one of them? You explicitly say you can't be easily disuaded from your opinion, so maybe I'm just spitting into the wind. However, rather than talk down on people doing the hard work of learning where they're at in history, being excited my genuinely exciting things, and taking the necessary steps to "move the art forward", maybe you could assist them by sharing your experience? Or, simply move the art forward yourself :) PS: Play is exactly what's needed. That's how humans learn and discover :) But maybe we need to play more efficiently? ;)
- medo-bear 3y ago> Wake me up when they achieve it. I am betting on somewhere in the 2030s, best case scenario (slap) (wake-up sleepy) common lisp has actors for a while now
- gumby 3y agoIt’s simply a reflection of the immaturity and terribleness of the state of the art in programming languages. People eventually got around to things like restricting bytes to be eight bits, using a standard character set, and so on. Eventually we will find some language factors that “stick” (e.g. abandon the stupid distinction between statements and expressions) which will become baseline and the space of variation will diminish.
- pdimitar 3y agoYeah, your comment is likely the answer. I am just bitter why is all that happening so darned slow. I really hoped that 22 years in my career I would've seen certain problems disappear forever (as in, be solved, formalized, nailed, and never ever discussed again). But alas, nope.
- gumby 3y agothe idea that a byte was 8 bits and not some dynamic length bitstream took at least 20 years, so don't get too excited. So many ideas from Lisp have slowly become mainstream (lambdas, closures, GC, interpreters with dynamic typing, languages both interpreted and compiled...) that I feel like any convergence is far off.
- medo-bear 3y agorepl based development, or until people see how cool structural editing really is
- gumby 3y agoAgree on the REPL and exploratory programming! But can’t agree on the structured editing side. I used to do use structured editing (D-Edit on the Interlisp-D machines) and found it annoying, but perhaps that was due to the mandatory mouse use. The structured editing built into emacs is pretty good mainly because it’s an option you can use at any time rather than a single paradigm. Also the only way to use comments in a structure-based system is to extend the syntax of the language, and that is awful IMHO.
- matheusmoreira 3y agoI made my own lisp because it was the simplest, easiest language to parse and implement. Lisps are essentially frontends for C data structures. I wanted to get some ideas working and that was the easiest way. Still one of the most fulfilling projects I've made. > We should start folding some languages inside others. (Or abandon them.) Who's "we" though? No one decides what we work on unless they pay us for that privilege.
- pdimitar 3y agoWe who want to achieve stuff, not play all our careers. :/
- matheusmoreira 3y agoWhat's the difference between play and achievement? Someone running the so called "toy" in the production server?
- pdimitar 3y agoYou can put a program with 50 lines and 10 bugs in production. :) To me "production" also means "runs reliably over long periods of time, does not fall over under load, and has no unexpected panics". Well, and also "makes full use of the available computing resources and prevents lag as much as possible". "Toy" is basically "I am such a huge fan of LISP, I am convinced that the world absolutely needs one more interpreter!".