Speaking as a Fancy Computer Science Professor at a Fancy Institution of Higher Education who teaches the course on Programming Languages:
-
@inthehands @vkc
For me, it comes down to two questions:
A) does it have a syntax?
B) does it describe intended behavior within a computed system?- Non credentialed senior developer
-
Paul Cantrellreplied to RyeNCode last edited by [email protected]
@RyeNCode If you’ll allow (a) to be broad enough to include visual languages like MAX/MSP and Labview, and extend the “describe” of (b) to say that the description must be interpretable by a machine, then I think our definitions are pretty close.
-
@padraigd @wronglang
Yeah, the “don't use abstractions” people really crack me up. Like…do you push electrons around by hand with a little pin? -
@inthehands
Light 3s of research...
Yes, obviously
Skimming MAX' wikipedia entry, the structure of the visual layout, linkage etc is all syntax. It's not textual, but so what?
Symbols and their representations and context all contribute to how a language can be interpreted by the receiver (in this case a computing system, such as a runtime, compiler or whatever) -
@RyeNCode
Agreed. I mentioned it because people get sticky about "syntax" sometimes. -
dataramareplied to Paul Cantrell last edited by [email protected]
@inthehands I used to draw the distinction between programming and not-programming exactly at Turing completeness.
Then I realized that this would imply that total functional languages are not programming languages, but Conway's Game of Life (or Minecraft) is. This is obviously silly.
-
@inthehands I understand what you're saying and I don't have any real argument - I just have a problem equivocating formatting to programming. Boldface, italics, type size, typeface, punctuation - all programming.
At some point it's not just gatekeeping - it's trying to give words actual meaning.
Writing Excel is programming - no argument. Fiber arts - weaving, knitting, crocheting - all programming.
What I get hung up on is that I expect programming to be defining an intentional sequence of commands above some arbitrary level of complexity. I know that's not satisfying but without some complexity threshold, pretty much any activity with some sort of physical manifestation is programming.
I don't argue with people about this because it's an unresolvable philosophical issue like "how much hair can you have and still be considered bald?" plus the accusations of gatekeeping. It's rarely a productive conversation. I don't find such an expansive definition of programming to be particularly useful.
Also: guys who abuse and harass women on the internet should not be allowed on the internet.
-
Paul Cantrellreplied to arclight last edited by [email protected]
@arclight Yes, of course there’s a continuum.
HTML that <i>merely</i> adds formatting markup to text is at most “little atoms of programming.” But modern HTML is hardly just that. The DOM, the box model, HTTP, forms, etc etc have intricacies that at this point are vast and overwhelming. And…
Per the point of the post you’re replying to: these things have surprising results. Human reader + machine reader + surprise = programming. And and…
-
@arclight
…let's be honest: a •lot• of the code that we write in things that are •clearly• programming languages is in fact not that complicated. As one reply pointed out, you can create DOM elements from literals in JS or in HTML; is one programming and the other not?These line-drawing questions are always an express train to Stupidtown. Instead of “Is it programming, YES OR NO?,” a better question to ask is “In what ways is this programming? What problems does that imply?”
-
-
An addendum, a useful word:
An ••ostensive definition•• is a definition by example. No bright line that distinguishes “is” from “isn’t;” instead, we have a set of examples we agree clearly fit the word, then ask, “How does this other thing resemble the examples?”
Some words are best defined ostensively. “Sandwich” is a great example. You can have silly fun playing with the boundary conditions — A quesadilla is a sandwich!! A hot dog is a taco!! — but to get pendantic about that fun is foolish.
-
Paul Cantrellreplied to Paul Cantrell last edited by [email protected]
With a word like sandwich that’s defined ostensively, instead of asking “Is it a sandwich or not? Binary yes or no!!,” it’s better to ask, “•How• is it a sandwich?”
Similarly: “How is ____ a programming language?”
How does it resemble the pattern? How does it depart from it? Which lessons we’ve learned about programming apply here? Which don’t? Will it need…technical learning? precision? testing? debugging? version control? docs? knowledge sharing? curiosity? resilience to frustration? etc.
-
@inthehands My take is that this fits into the same category of whether something is art, or music, or a game, or a sport, or drug paraphernalia, or a toy, or a tool, or a vacation. None of these are intrinsic properties of the object or activity, they're ways of engaging with it.
The reason this is even a topic to talk about arises because one can totally use a WSIWYG editor and treat HTML as "text with some parts in italics” which is _not_ a programming type interaction, but you can also do more complex stuff that has to account for a bunch of different situations both today and tomorrow, which is not materially different from the sorts of things what someone writing C++ has to do.
-
@inthehands we need a Cube Rule for languages
https://cuberule.com/ -
Thanks, @Crell, I'm glad you asked!
Nontrivial Excel usage is quite obviously programming. Come on. But beyond that:
We’d have a much better understanding of usability failures if we understood tiny UI actions as itty bitty moments of programming. We’re asking people to momentarily span the bridge between human understanding and machine execution. Pretending that bridge doesn't exist is a perennial footgun.
“What, even clicking a button, Paul?!?” Well…
Larry Garfield (@[email protected])
@[email protected] I agree about HTML and CSS, but wouldn't that definition also include Word, or Excel, or PowerPoint? Those are all giving the computer instructions that are presumably unambiguous. A definition by example (totally a legit thing) also needs counter examples to define the exclusions. A salad is not a sandwich, unambiguously.
PHP Community on Mastodon (phpc.social)
-
Paul Cantrellreplied to Paul Cantrell last edited by [email protected]
…try looking at it that way:
A button is a machine abstraction designed to accommodate human expression. It has a syntax whose underlying fabric is clicks/taps and mouse/finger motion. It assigns semantics to that syntax. Humans click the button with human intentions, and the machine executes the instructions.
It is a ~3-state DFA, a few teeny tiny itty bitty atoms of programming.
-
@inthehands @Crell the fun thing about ostensibly defined concepts is that you get edge cases that still very much can claim to be the thing, but which have mutually empty intersection. In this case: implementing NAND gates, wires, and delay lines using Venus fly traps is programming (it's creating a Turing complete device, after all), and writing a markdown document is programming (it's telling a computer how to do stuff, after all), but their intersection is empty (unless, of course, you use a lot of Venus fly traps and implement x86).
I feel like the world is more fun that way, compared to excluding random things.
-
If a UI button is a programming language, it's a tiny, trivial one. But that lens of “In what ways is this user interface a form of programming?” does open the door to insights about what experiences humans are going to have trying to use it.
We programmers understand the difficulties and the dangers of:
- compounding complexity
- mismatch between mental model and machine implementation
- error states
- unintended consequences
- solving the problem at hand using the building blocks available -
Paul Cantrellreplied to Paul Cantrell last edited by [email protected]
- not losing sight of the problem in the middle of fighting the machine
- the way social / human problems can come to a head when codified in commands given to a machine
- the way a better abstraction can change whether something is easy, flexible, error-prone, adaptable, correct
- etcViewing computer interaction as a series of increasingly programming-like steps goes a long way toward explaining why your dad can’t figure out how to change the wifi password.
-
Paul Cantrellreplied to Paul Cantrell last edited by [email protected]
Looking at things that way, @nikclayton’s reply is unironically correct:
https://mastodon.social/@nikclayton/113680873868692643I mean, seriously, formatting things with a word processor can feel a hell of a lot like getting some developer API to do this one damned thing that it just…won’t…do.
And it feels the same because •it has the same set of underlying problems•. Machines are surprising. Abstractions are surprising. Human-machine gap-bridging is hard.
-
I know, I know, the Reply Guy Armada is coming to tell me “If •everything* is programming, then •nothing• is!” Cool your jets, my friends.
Some things a very much programming, some things only slightly so. The useful question here is not “Where is the precise boundary?” but rather “How much does it belong to this family of problems, and how can we learn about it by bringing the knowledge and experience of that discipline to bear?”