this post was submitted on 26 Feb 2024
181 points (95.5% liked)

Programming

17313 readers
253 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 

As someone who spends time programming, I of course find myself in conversations with people who aren't as familiar with it. It doesn't happen all the time, but these discussions can lead to people coming up with some pretty wild misconceptions about what programming is and what programmers do.

  • I'm sure many of you have had similar experiences. So, I thought it would be interesting to ask.
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 3 points 9 months ago* (last edited 9 months ago) (1 children)

Read that knowing nothing of lisp before and nothing clicked tbh.

When talking about tools that simplify writing boilerplate, it only makes sense to me to call them code generatiors if they generate code for another language. Within a single language a tool that simplifies complex tasks is just a library or could be implemented as a library. I don't see the point with programmers not utilizing 'code generation' due to it requiring external tools. They say that if such tools existed in the language natively:

we could save tremendous amounts of time by creating simple bits of code that do mundane code generation for us!

If code is to be reused you can just put it in a function, and doing that doesn't take more effort than putting it in a code generation thingy. They preach how the xml script (and lisp I guess) lets you introduce new operators and change the syntax tree to make things easier, but don't acknowledge that functions, operator overriding etc accomplish the same thing only with different syntax, then go on to say this:

We can add packages, classes, methods, but we cannot extend Java to make addition of new operators possible. Yet we can do it to our heart's content in XML - its syntax tree isn't restricted by anything except our interpreter!

What difference does it make that the syntax tree changes depending on your code vs the call stack changes depending on your code? Of course if you define an operator (apparently also called a function in lisp) somewhere else it'll look better than doing each step one by one in the java example. Treating functions as keywords feels like a completely arbitrary decision. Honestly they could claim lisp has no keywords/operators and it would be more believable. If there is to be a syntax tree, the parenthesis seem to be a better choice for what changes it than the functions that just determine what happens at each step like any other function. And even going by their definition, I like having a syntax that does a limited number of things in a more visually distinct way more than a syntax does limitless things all in the same monotonous way.

Lisp comes with a very compact set of built in functions - the necessary minimum. The rest of the language is implemented as a standard library in Lisp itself.

Isn't that how every programming language works? It feels unfair to raise this as an advantage against a markup language.

Data being code and code being data sounded like it was leading to something interesting until it was revealed that functions are a seperate type and that you need to mark non-function lists with an operator for them to not get interpreted as functions. Apart from the visual similarity in how it's written due to the syntax limitations of the language, data doesn't seem any more code in lisp than evaluating strings in python. If the data is valid code it'll work, otherwise it won't.

The only compelling part was where the same compiler for the code is used to parse incoming data and perform operations on it, but even that doesn't feel like a game changer unless you're forbidden from using libraries for parsing.

Finally I'm not sure how the article relates to code being math neither. It just felt like inventing new words to call existing things and insisting that they're different. Or maybe I just didn't get it at all. Sorry if this was uncalled for. It's just that I had expected more after being promised enlightenment by the article

[–] didnt_readit 1 points 8 months ago

This is a person that appears to actually think XML is great, so I wouldn’t expect them to have valid opinions on anything really lol