News for hackers. Stuff that matters.
Re:Lisping at JPL Revisited by mwcampbell on Saturday January 28, 2023 @09:38AM (#34557840)
> Different people like different things, and that's OK. Drink whatever is the best fit for your palate, and code in whatever is the best fit for your brain.

Doesn't this ignore the need to work together and build on each other's work? To me, that's not about companies being able to treat programmers as interchangeable, but about us collectively building higher, i.e. building towers of Babel rather than suffering from the curse of that story.

Re:Lisping at JPL Revisited by Twisol on Saturday January 28, 2023 @09:42AM (#34557865)
Take one: We need people moving together just as much as we need scouts who can push ahead and find the best paths for the rest of us.

Take two: Working in the best fit for your brain is not incompatible with working with others -- enough companies are Java shops, why can't there be CL shops? (There are assuredly Clojure shops at the very least.)

Take three: Not everything has to be about work. Programming is a skill, not an occupation; there are lots of ways to apply programming as a skill that don't require you to build large edifices in teams.

Re:Lisping at JPL Revisited by jvanderbot on Saturday January 28, 2023 @09:57AM (#34558009)
And how nice when those scouts lay groundwork that is useful for others, rather than creating something only they can use?

Yes, you may think better in lisp than c++, but that doesn't help your team when you created something and moved right along. Better to speak the same language.

Re:Lisping at JPL Revisited by yakubin on Saturday January 28, 2023 @10:29AM (#34558333)
Better for the others, but is it better for the scouts? Too often individuals are treated as drones obliged to work for a collective, which feels entitled to the work of the drones. From your perspective, they're not a good team mate. From their perspective, they're not part of your team.
Re:Lisping at JPL Revisited by jvanderbot on Saturday January 28, 2023 @10:38AM (#34558405)
I think this example is being carried to extremes unproductively.

All being equal, it's better to have a team writing code that is useful to the system or project or whatever ASAP.

If an individual insists on prototyping in a language that nobody else can use, then they should either carry that prototype into the team's ecosystem, or start prototyping in that ecosystem and learn to be productive that way.

If option A, let's hope that "write twice" is fast enough that they are productive. If option B, they may take a productivity hit but will probably catch up.

The third option of "I'll do lisp you do <teams ecosystem>" is not very pro-social. Come integration and debugging and maintenance time, that Lisp-er is not in a position to help. That's an undue burden in the rest of the team.

Re:Lisping at JPL Revisited by yakubin on Saturday January 28, 2023 @10:48AM (#34558509)
I think you're excessively hung up on the example of everything happening within a single team inside a single company or some such thing, when the author of the submission wrote about making a choice for themselves. You don't start coding in Lisp out of nowhere when working in a Java shop on a CRUD app. But if you're charting your own course, it's great to be able to choose whatever suits you best.

I can't count the number of times someone published their open source project and inevitably people in the comments started questioning their language choices, because they wouldn't be able to use it in their "team", and how that choice is ultimately harmful for "the community". Now, you're not doing that exact thing here. I'm just thinking about how all that focus on "the team" and "the community" often goes too far.

Personally, I'm not going to do anything in Common Lisp, but I'm always happy seeing other people doing their projects in that language (and many others).

Re:Lisping at JPL Revisited by jvanderbot on Saturday January 28, 2023 @11:14AM (#34558783)
> I think you're excessively hung up on the example of everything happening within a single team inside a single company or some such thing, when the author of the submission wrote about making a choice for themselves.

That's fair.

> I can't count the number of times someone published their open source project and inevitably people in the comments started questioning their language choices, because they wouldn't be able to use it in their "team", and how that choice is ultimately harmful for "the community".

Yep - not paying means not entitled to anything. I agree there.

Re:Lisping at JPL Revisited by Twisol on Saturday January 28, 2023 @10:26AM (#34558309)
I was referring to the discipline as a whole, not scouting at the granularity of a single team. Also refer to take three: working in an industrial team is not a prerequisite for an application of programming to be valid.

But to your very specific point: I have in the past developed prototypes in Rust whilst on a Java-only team. It's actually a good thing: these prototypes were meant to be thrown away, so working in a different language (and one that helped me model things effectively) meant we were forced to throw it away then write it right in Java once we knew what we were doing.

(We did the same thing for another feature, but it was someone else and they preferred Python. Again, we were able to prototype more rapidly and then implement a solid solution in Java once we knew how things should shake out.)

Re:Lisping at JPL Revisited by tlavoie on Saturday January 28, 2023 @01:46PM (#34560279)
Another thing that is good to encourage is portable data. It's good for its own reasons, and it makes that sort of exploratory environment much more flexible.

I've reimplemented a few side projects more than once, using common data back-ends because I can. I find it helps for say, messing with a new programming language, because I can apply it to a task I'm already familiar with.

Re:Lisping at JPL Revisited by fithisux on Saturday January 28, 2023 @11:14AM (#34558789)
So we are doing now what the others do? It defies any reason.
Re:Lisping at JPL Revisited by AnimalMuppet on Saturday January 28, 2023 @02:53PM (#34561041)
If you are part of a team, then yes, do what others do. And no, it doesn't defy reason. Code is written once, but it's maintained for a long time.

Or it's thrown away. But if it's thrown away because nobody else on the team knows that language, that's pretty wasteful. And if you make someone on the team learn a new language just to maintain that one program that's also wasteful. The person who insisted on using their language is optimizing for their own programming, but actually slowing down the team as a whole. We have words for that kind of behavior; they aren't compliments.

Now, in any given instance, it could be that the program is much easier to write in one language, and more difficult (or even impossible) to write in others. But even in that case, if you're in an organization, you need to get buy-in from the team or management or both, rather than just doing your own thing because you can make it work. Otherwise, your program may work, but it's an orphan. You need the organization to be willing to maintain your special program, or it dies.

Re:Lisping at JPL Revisited by spfzero on Saturday January 28, 2023 @04:32PM (#34562160)
Sometimes hard to predict whether something that works well for you would, or would not, work well for others, and whether others could, or could not use it.
Re:Lisping at JPL Revisited by 082349872349872 on Saturday January 28, 2023 @09:51AM (#34557958)
Take four: what, specifically, about ergolib should prevent anyone from building on top of something written with it?

[Edit: A programmer should be able to Reverse Polish Notate, nested-paren a tree, reduce some arrays, make references in nested scopes, evaluate without mutation, send a message, spin up a fail-fast supervision tree, produce finite answers from infinite graphs, synchronously react, rendezvous with logic variables, combine the above. "Specialization is for insects."]

Re:Lisping at JPL Revisited by jvanderbot on Saturday January 28, 2023 @09:57AM (#34558005)
Maintainability. If you're the only person who can edit the library, you've just created a bus factor that would be unacceptable to most project managers.
Re:Lisping at JPL Revisited by Twisol on Saturday January 28, 2023 @10:32AM (#34558356)
As a complement to my other reply to you, I'll note that I developed a simulation system in Java (a very common language), and strove to keep it small, avoid complexity, and generally make it approachable -- but for a long time I remained the only one who understood how the system worked, because you simply had to understand the business domain in order to understand why things worked the way they did.

This is my personal opinion, but I think that domain expertise is a much stronger component of bus factor than language choice is. You can write unmaintainable code in any language. But good code often still has prerequisites to understanding. Meanwhile, if you have the domain expertise, you can get quite far in understanding semi-bad code just by pattern matching on manifestations of your domain.

Re:Lisping at JPL Revisited by ravi-delia on Saturday January 28, 2023 @10:15AM (#34558201)
I mean, that specific library isn't really all that hard to work with. It's not doing anything completely crazy, just somewhat unusual. But in general I think it's probably better to keep the crazy custom environment to personal projects- at least for awful utility macro libraries like mine.
Re:Lisping at JPL Revisited by jvanderbot on Saturday January 28, 2023 @10:19AM (#34558239)
Narrowing down on a single library is one thing. Maybe case by case it's ok. In general if someone showed up and said "I will prototype everything in lisp and you can take it from there" I'd say they are a bit egotistical and not being much of a help to the org. Prototypes are 1% of the work.

And I say this as someone whose full time job was to do research prototypes of robotics libraries for a while.

Re:Lisping at JPL Revisited by BaculumMeumEst on Saturday January 28, 2023 @06:59PM (#34563302)
not only project managers. i love lisp but i dont use it for hobby projects partially because i don’t want to maintain libraries in a small ecosystem where they are often abandoned
Re:Lisping at JPL Revisited by mwcampbell on Saturday January 28, 2023 @01:15PM (#34559959)
The fact that you adapted the famous Heinlein quote for programming just goes to show me a problem with that quote. Recall that the original quote mentioned programming itself as one of the many things that a human should know how to do. But your adaptation illustrates that programming alone is deep enough to merit its own specializations. So just as, IMO, specialization is not just for insects but also for humans living in a functioning, populous civilization, specialization is also fine and expected for programmers, particularly since our numbers have grown over the decades. And to bring this back to my original point, yes, this means that we shouldn't all be writing lowest-common-denominator code in mainstream languages. But I still think it's a good idea to avoid needless fragmentation.
Re:Lisping at JPL Revisited by 082349872349872 on Saturday January 28, 2023 @01:42PM (#34560232)
Fair enough; I think I'm describing the horizontal bar of the "T" and you're pointing out the vertical, and we differ on the amount of fragmentation ergolib represents. (Despite not using CL on the daily, upon perusing ergolib's source I found it a relatively straightforward mod-con library, so I don't think it necessarily fragments)

(But I was pretty serious about that list: I would hope a programmer just out of school would have heard of all of them, and expect anyone experienced to have done most of them, if not necessarily in the languages that make each one easy. Similarly, from Heinlein's original list, I currently lack only practical experience in planning invasions [though I have theoretic hex-board experience], butchering hogs [though I have a friend who has offered to teach me], and dying gallantly [though I have "I am just going outside and may be some time" as an example to follow should the occasion arise])

Re:Lisping at JPL Revisited by sph on Saturday January 28, 2023 @10:52AM (#34558557)
I'm waiting for WebAssembly components to be standardised then I don't care anymore. The idea is to create "libraries" written in any language that can be used by any other language, with WASM being the low level ABI.

When that happens, I can go all in with Lisp because I care about my personal productivity (I have always been a lone wolf programmer) yet still being able to use code written by anyone in their comfy language.

As I get older, I find I just want to mold and bend the computer to my every will, and Lisp is the tool to do so. That the resulting code is hard to understand for a junior engineer is not my concern.

But one thing is for sure: I want to be able to create any abstraction, and I am done writing glue code, writing yet another PostgreSQL library for yet another language. How many date/time libraries have been written since the invention of UNIX? Imagine the amount of wasted time, money and effort. Then multiply by the number of languages that have been invented because the syntax of the previous one is too inflexible.

I stand by the Lindy effect: the longer something has been around, the longer it will survive.

Looking forward to Wasm Components to use a language from 1960 to its full potential. Then the goal is to have a WASM-native Lisp that can dynamically load any other WASM library, and I don't have to write yet another date/time library ever again nor care about junior engineers getting confused by crazy macros in my code.

(I have been suffering from the Lisp curse for 6 months and counting. Please send help.)

Re:Lisping at JPL Revisited by SkyMarshal on Saturday January 28, 2023 @11:29AM (#34558924)
I sympathize, but if you're working for a company then somebody is either going to need to be able to read and understand your Lisp code, or the WASM it generates, in order to maintain it after you move on to some other company.
Re:Lisping at JPL Revisited by turtleyacht on Saturday January 28, 2023 @02:11PM (#34560520)
sph probably has a clause in there to own the code. A traveling salesman among a graph of corporate nodes. Their own tools, always honed; their own solutions, always at hand.
Re:Lisping at JPL Revisited by xwolfi on Saturday January 28, 2023 @11:07PM (#34564798)
But owning the code doesnt mean removing the runtime after he "blessed" the company with his proprietary "help" and some poor underpaid sob now has to "only maintain" the work of the great master.

He'll code it in C or Java or Javascript and that'll be it thank you very much, so that we can maintain it forever.

Re:Lisping at JPL Revisited by sph on Sunday January 29, 2023 @01:44AM (#34565576)
Not sure what this subthread is worried about. I never said I was going antisocial and forcing Lisp upon my fellow coworkers.

I just said that, where I have complete control (i.e. on personal projects, or companies I bootstrap) I will choose Lisp because I wouldn't have to care for junior employees.

This forum is so preoccupied by only considering something that could be understood by a team of thousand average-skilled engineers, and only the easiest to understand languages matter, which is why all Lisp discussions devolves into mentioning how hard it is to adopt in large corporate teams.

The power of Lisp is inversely proportional to the headcount, and sometimes you're the only one working on a project, so you want max velocity and flexibility. Not everything has to be optimised for a FAANG development model.

Re:Lisping at JPL Revisited by SkyMarshal on Monday January 30, 2023 @12:03PM (#34582753)
Ah I misunderstood. You mentioned junior engineer and I interpreted the context as being in a company. But for personal projects, or any other ones with like-minded contributors, more power to you! I try to do all mine in Haskell fwiw, for similar reasons :).
Re:Lisping at JPL Revisited by turtleyacht on Sunday January 29, 2023 @01:45PM (#34571255)
That's a good point, the maintenance burden of vendor libs. It may not necessarily be closed source, but for other reasons--hard math, unfamiliar language, or domain depth--might as well be a proprietary blob.

However, re-reading sph's comment above and seeing their response below, this truth table may help fill in context for me (thinking aloud and all that):

  A: Running Lisp stuff for personal
     and/or own startup
  B: Embedding the libs as a B2B solution
  C: Maintenance overhead

  A  B  C   A & B & C
  T  T  T   SkyMarshal and xwolfi's comment
  T  T  F*  I agree there would be a cost
  T  F* T   sph using for own stuff or biz
  T  F* F   Same as above
  F* T  T   N/A
  F* T  F   N/A
  F* F  T   N/A
  F* F  F   N/A
The asterisk (*) above meaning we can abort there since it wouldn't make sense to proceed to the other values.

So then B is where things went one way or the other. And admittedly, I must have assumed B.

Re:Lisping at JPL Revisited by WalterBright on Saturday January 28, 2023 @03:54PM (#34561741)
> How many date/time libraries have been written since the invention of UNIX?

Indeed. This service (especially the time zones) should be part of the standard operating system API.

Re:Lisping at JPL Revisited by sph on Saturday January 28, 2023 @05:38PM (#34562762)
What I mean is that I should be able to use TensorFlow, or a Ruby library or Qt6 from any other platform and language, without someone having to write bindings to it or porting it wholesale. We've been wasting thousands of man years just rewriting the same code everywhere, with the quality of implementation being dependent on how popular the language is. So you get the best libraries on Java, and smaller ecosystems never reach critical mass because there's no good libraries. This is unsustainable.

I really am hyped for WASM components.

Re:Lisping at JPL Revisited by anon291 on Sunday January 29, 2023 @12:42AM (#34565278)
Wasm is just java for people who weren't around for Java.

Unfortunately, making a new isa is the easy part. The hard part is defining the abi.

.net came closest. Wasm is focusing on the wrong problem.

Re:Lisping at JPL Revisited by bitwize on Saturday January 28, 2023 @06:29PM (#34563109)
The standard operating system API should provide abstractions for all general real-world objects the machine is expected to represent or interact with: dates, times, durations, recurrences, abstract time concepts like "the second Monday of every month except when it falls on a holiday", people, places, events, to-do lists...

These are things that businesses have to deal with every day. The fact that we don't have those things, standard, as a part of a programmer's toolkit is a great failure of language and OS designers.

https://web.archive.org/web/20180223094826/http://www.xent.c...

Re:Lisping at JPL Revisited by WalterBright on Saturday January 28, 2023 @06:39PM (#34563180)
As a language designer and implementer, I have spent a lot of hours writing time&date code, and disagree that I'm to blame for them not being standard.

I've also released them with a Boost license, so anyone can use them for any purpose.

Re:Lisping at JPL Revisited by johnbernier on Saturday January 28, 2023 @04:27PM (#34562111)
The JVM lets you program in whatever you want to and then use code written in whatever comfy language (Java, C/C++ via native interop, Kotlin, etc) or a Lisp dialect (Clojure). I frequently use Java and Clojure together in the same project to great satisfaction, but I know what you mean anyways. We need WASM to get around the web question. I just hope it can fulfill the promise you have set upon it.
Re:Lisping at JPL Revisited by pjmlp on Sunday January 29, 2023 @06:12AM (#34567029)
We already had it 10 years ago with PNaCL but then politics happened.
Re:Lisping at JPL Revisited by winter_blue on Sunday January 29, 2023 @05:04AM (#34566631)
I've been JVM languages sharing libraries, but is the WASM ABI going to be rich enough to support that?

We (sadly) rarely see languages that target binary (whether x86 or ARM or just LLVM) sharing libraries. Partly it's because the .so and .dll interfaces only support the C ABI, and the absence of a rich well-defined OOP abstraction.

But, yea, I'm not totally sure if a low level WASM ABI would lead to a rich ecosystem of multi-language libraries, unless the WASM ABI is at a high enough level that it defines higher-order functions, classes, etc.

Re:Lisping at JPL Revisited by sph on Tuesday January 31, 2023 @04:02AM (#34592926)
WASM has a low level ABI, but that's the thing WASM components are trying to rectify. Components is a proposed spec that builds on top of WASM.

Imagine a .so library with a native concept of high level objects that can be understood and passed between libraries written in different languages.

Re:Lisping at JPL Revisited by pjmlp on Sunday January 29, 2023 @06:11AM (#34567020)
I have been doing that in JVM and CLR ecosystems for about 20 years now, somehow it is a novelty in WebAssembly, latest trend is even to re-invent application servers.
Re:Lisping at JPL Revisited by nemoniac on Sunday January 29, 2023 @07:02AM (#34567309)
I haven't been keeping up so maybe someone who has can comment but doesn't WebAssembly have a similar problematic relationship to tail calls and deep recursion as the JVM does?
Re:Lisping at JPL Revisited by brudgers on Saturday January 28, 2023 @11:07AM (#34558700)
When collaborating by the mechanisms you describe is not a priority, it is reasonably sound engineering practice to ignore those mechanisms.

Though there are tradeoffs (and assuming 10x programmers exist) a ten-ex programmer can replace a team of ten one-ex programmers and eliminate mechanisms facilitating intra-team efficiency from the process.

Anyway, to me the Tower of Babel is a metaphor of collective action...building construction requires teamwork. Icarus is better for lone wolves.

Re:Lisping at JPL Revisited by jcelerier on Saturday January 28, 2023 @11:51AM (#34559123)
exactly, in the author's vision the individual matters more than the group ; I couldn't disagree more with this.