your employer knows how much they paid you and what account they paid to. They don't know your balance, where else you might be getting money from (selling science fiction short stories eh, Cosgrove?! This job should be enough for you!!), that you have donated money to the Democrats recently!! We suggested that was bad!! And lots of other things that come under banking info.
somehow i also never got the idea around these languages like lisp. I remember i studied them in school - but i quickly forgot and never got around to relearning it.
It took me probably 5 years of writing Clojure before it clicked. Once you get used to structural editing and repl driven development, it’s really hard to go back to syntactic languages.
It’s kind of like in treesitter style editing, where you can “swap these two arguments,” “select this function,” “wrap this in a try block” with a single keyboard command… but way more standardized and granular. Plus with the ability to execute anything you highlight
All that and then you realize you can store code as data (since it’s just a data structure) and run data as code.
I think most programmers don’t realize how arbitrary the difference is between code and data until they get used to using LISP.
Spot on. For me, it clicked with Common Lisp, 15 years after I graduated from university. Now, Clojure is my daily driver. And it’s extremely difficult to explain to people. I’ve gotten to the point where I don’t even try. You’re right about all the things you mentioned. Once you discover structural editing, everything else seems primitive, on the level of cavemen playing with rocks. But it’s not just one feature that makes Lisp better. It’s all of it which interrelates and creates a powerful synergy (I hate that word, but in this case it’s appropriate) that just isn’t matched by anything else. There are other languages that have a similar vibe, notably Forth and Prolog, but they are often misunderstood, too. Honestly, that’s my real test of whether someone is a senior programmer: do they understand and at least have an appreciation for these languages, even if they don’t program in them everyday.
The idea is that instead of having to learn tens of different syntactic constructs with subtle and often arbitrary differences, you just have parentheses and use them to build everything.
This is such a undervalued benefit, once you've learned s-expressions, you can basically learn a bunch of languages without having to learn completely new syntax. It'll be slightly different, with different idioms and names, but a hell of a lot easier than doing the same across every "It's like C but 50% of the syntax is different actually" language out there, which is most of them.
Is the syntax really the stumbling block for most languages? Would Rust's lifetimes or Swift's isolation rules be easier if they used more parens? Are the scoping rule differences between Emacs Lisp and Scheme easier to comprehend because the syntax is similar?
Yes, a commonly occurring stumbling block for me is trying to use one language's syntax while actually programming in another, especially when it comes to all the Algol/C-like language, I probably mix things on a daily basis.
The concepts would be easier to grok up front if they just used normal function calls instead of "And now for this special syntax that only exists for this particular feature" which just adds more things to remember, instead of just the concepts themselves.
well sometimes you get complaints in particular languages that someone has written code like they are a Java programmer, or their code is not rubyish enough, or pythonic enough, and so on.
So often people coming from one linguistic syntactical style express themselves in that style which makes their code in the new language less understandable or maintainable.
Yes it is, because as soon as programmers step out of the most basic language level (which is kinda similar in most mainstream languages) there's a bunch of wildly different concepts, with wildly different ways of writing them. Writing them in isolation might be manageable, but it's combining them effectively that gets hairy very quickly, unless one is very experienced in said language. But then, translating that to OTHER languages becomes a bar that is too high!
The kind of subtle difference I’m talking about is that in C, you have to put a semicolon after struct {…} and do {…} while (…), but not after other curly brace constructs. What would be the analogue in Janet?
The first one is pretty C-specific and for example doesn’t exist in Java. Similarly for the second one, the reason is that `while` is used for two different constructs, which for example isn’t the case in Rust. These are just accidental complexities stemming from unfortunate design decisions in C. Having a richer repertoire of syntactic constructs doesn’t by itself imply such complications.
My point was, replacing n syntactic constructs by n functions or macros doesn’t reduce the cognitive load of having to know how each construct works. To the contrary, one can argue that everything having the same syntactic form makes it more difficult to distinguish different classes of features.
> The first one is pretty C-specific and for example doesn’t exist in Java.
It was just an example, most languages have quirks like this. I don’t know about Java, but in Rust you have the turbofish operator, whose necessity stems from using the less-than sign as both an operator and a delimiter.
> My point was, replacing n syntactic constructs by n functions or macros doesn’t reduce the cognitive load of having to know each of them.
The difference is that if you don’t know a function/macro, you can just read its documentation. If you don’t know a syntactic construct, where do you look?
Another advantage is that if you want to create new functionality similar to existing language features, it won’t stick out like a sore thumb. For example, you could create an until loop:
(until (window-should-close)
(draw-screen))
# is equivalent to
(while (not (window-should-close))
(draw-screen))
In Rust, it would have to look completely different from a while loop:
until!(window_should_close(),
draw_screen());
// is equivalent to
while window_should_close() {
draw_screen();
}
Probably depends on whom you are asking. For me the essence is (1) having functions or procedures as the basic building blocks, not classes. (2) Having all the utility and higher order functions you need to deal with the functions and procedures first idea. (3) Having a very powerful syntax, that allows great semantic editing and is never ambiguous. Oh and can actually be extended in useful ways, without having to wait for a committee to decide upon "the one syntax to rule them all".
> studied them in school - but i quickly forgot and never got around
Because industry lied to you, promising "simplicity and riches". The industry didn't just overcomplicate programming. It institutionalized the complication. Why? Because complexity is a moat.
Complex frameworks need certified experts. Certified experts charge more. Companies built around expertise need the complexity to persist. So the complexity gets marketed as sophistication.
They've promised: "Java/C# will get you hired anywhere", but you're hired to write xml (these days yaml). "OOP models the real world", they said. The real world doesn't have abstract factory visitors. "Design patterns make you senior", but you only learned workarounds for language deficiencies. "Learn the framework, get the job". Framework dies, you start over. "Specialization is valuable". you're now hostage to one ecosystem.
A programmer who understands fundamentals is dangerous to this system. The fundamentals:
- a function transforms input to output.
- composition builds complexity from simplicity.
- types describe what's possible.
- effects should be explicit.
And then you realize that Lisp is the skeleton key. All that above is Lisp, or came from Lisp. Every language is either: Lisp with different syntax, or C with different syntax, or arguing between the two.
If you learn Lisp, you don't learn a language. You learn what languages are. You're no longer a consumer of a programming language or two, or a few. You are native speaker in all of them.
Pretty straight-forward, as the world as we perceive it is made of objects with attributes, interacting with each other via their methods. OOP easily fits the brain of the average person in the street.
Of course easier to explain the "strategy pattern" to a florist, instead of saying "imagine a function that takes a function". Who the hell understands functions? Such a mind-bending concept, literally nobody really knows how they work. Einstein famously complained about it. Too bad he didn't know OOP - would've been so much easier. I couldn't grok general and special relativity for so long, thank god I've found Java - it made it so much easier. I don't know what Persian mathematicians been smoking in 12th century to come up with this utterly fucked up idea of a function. And fuck Leibniz as well.
Some percentage of telephone service, service chat etc. is stuff that could be easily found via the website, I know 98% of the time when I call it is just not possible to resolve through reading the documentation on someone's site (the last 2% it is, but the site sucks so much I don't want to try) and I'm sure it's the same for you and probably for most of HN, but having worked at a help and documentation service for a major telephony provider in Denmark I do know there are statistics that in fact show most of the stuff could be found on the site, people just don't want to take the time.
At that point the main problem for a service is to figure out when they are dealing with someone who could solve the problem through the website, and when they are dealing with someone whose problem is too complicated to be solved that way. Although it also seems like many people don't want to spend the money on doing that analysis and serving their customers, as you have pointed out.
The PLC, Programmable Logic Controller, was 1968. After which it started to become possible to have automated assembly lines with a few humans monitoring specialized robots.
Yeah, that's one specialized piece of automation in a long line of automation throughout history. I'm not sure why taking humans off of the assembly line is a larger deal than taking humans out of agriculture, textile production, or printing?
The only thing that is significant is that shift brought us to reaching peak human productivity. Prior to that, humans were not able to be as productive. Consider agriculture: You might be able to be maximally productive some times of the year, but usually you were waiting on Mother Nature to do her thing. This is why wages were able to grow alongside productivity as we started moving away from a pure agrarian world — having less reliance on external factors limiting what humans could produce. Once humans reached peak human productivity their human-based measures stagnated, but productivity itself did not stop as automation advances have kept that ball rolling. Taking people off the assembly line saw them move into jobs, mostly "knowledge-based" ones, where there was no way to become even more productive. You can only sit around in so many meetings each day, so to speak.
Maybe there is a new frontier where humans can start to become more productive again. Some say that is AI, but that remains to be seen. For now, we've hit our known limit. There is no longer anything outside of human control, like waiting for a crop to grow, that limits our human productivity. The only limiting us is ourselves, and it may be a fundamental limit.
> You might be able to be maximally productive some times of the year, but usually you were waiting on Mother Nature to do her thing.
I don't know what that means. When did we have to stop waiting for crops to grow? The only thing that changed for the production side was requiring less humans as machines could do the work of many laborers.
> When did we have to stop waiting for crops to grow?
part of modern agricultural automation includes year round seasons, which means essentially you are no longer waiting for crops to grow in the way that was first discussed.
This of course is what allows us to have fresh tomatoes year round, and many other fruits and vegetables. Obviously these are not perfect, tomatoes as the example already given, quality of the automated output is significantly less in comparison to the natural - nonetheless we do not wait for many crops to grow in the same way that people did before the 1990s (when computerized climate management, hydroponics and advanced greenhouse tech took off, as some later advances on the already mentioned PLC, and enabled automation in that field of human endeavor)
> When did we have to stop waiting for crops to grow?
When we started producing more than basic things like food that are heavily dependent on the environment. In the knowledge-based economy, the only thing that meaningfully stops you from producing continually is you collapsing from exhaustion. However, even if you never got tired, you can still only produce so much per second, if you will, which caps your total productivity. That is the human limit; probably a fundamental one.
Only a tiny, tiny fraction of the population have to wait on crops growing now in order to offer that line of productivity. And of them, like myself, we can now do other productive things while we're waiting. I, for one, work in the tech industry when I'm not farming. Today, 96% of farmers in the USA are productive off of the farm in at least some capacity. Whereas, historically, farmers were busy trying to survive when they weren't being productive on the farm. Many a day were spent in the bush chopping wood so that they didn't freeze in the winter, for example. Interestingly, idle farmers staring to produce salable things during that cold winter downtime is when we first started seeing early signs of human productivity gains over the stagnant agricultural baseline.
Productivity can keep increasing beyond the human limit, but we have achieved that by introducing more and more non-human workers. Humans are already at the very top of their game, at least as we know it. 17th century farmers probably thought they were also as productive as humanly possible, so who knows what the future holds, but for now we have no idea how to make humans even more productive than they already are. We don't have any more obvious "winter downtimes" to expand into. Hence why the measure of human productivity is no longer increasing.
This was recognized a long time ago. It was the basis of the "go to college to make more money" script you may be familiar with if you are old enough to remember. It was well understood way back then that relying on human productivity gains had reached a dead end. The thinking was that colleges would enable people to move away from labor and into leveraging automation, where productivity is effectively unbounded, with college research labs having played and still playing a pivotal role in that, but somehow along the way that got twisted into "go to college to get a job", so here we are... Now people spend god knows how much money to go to college to get the same job, at the same pay, that they would have gotten anyway. Which is pretty hilarious, but also sad.
Might be a stretch to imply that the Wilhelm II was a mediocre illiberal. HIM was (for a time) interested in protecting workers' rights. However great he was, Bismarck couldn't overpower a "mediocre" populist
I was making a general point, not specifically about Bismarck.
Assume every side has great individuals in positions of power (great being here evidently in relation to ability), greatness is thus evenly balanced and not so important to the final outcome.
You see them again in the future because you dismissed them, if you do what they want you to do they will never bother you again in case you changed your mind.
the studies are set in a society in which the main way of existing in society and contributing to it is via employment.
Some generations ago females in this society were regularly without jobs but were "homemakers", in that time if one were not a homemaker and a female how was the person's feeling of well-being?
Reports conflict about that, but in that time of course females were often kept from employment by being homemakers and thus relegated to secondary status.
Perhaps the studies you look for would be related to feelings of social well-being among hunter-gatherer societies, however maybe those studies are not actually needed? Because probably now that the possibility has come up you will realize hunter-gather societies do not have traditional jobs or employment and that people were evidently able to feel happy in those societies.
Now you may respond with examples of how maintaining hunter-gatherer societies would mean death of much of population etc. because the best kind of goalpost moving is the kind that is true. Nonetheless the point should be clear that people can be happy without typical modern jobs and employment.
Whether or not a modern lifestyle and world can be constructed that does not need jobs and still keep people happy is a different question. And there we are back with something for which there are no relevant studies.
the statement is that there are studies showing that one needs a job to be happy, and asks for studies showing the opposite, implying that the lack of such studies demonstrates that one cannot be happy without jobs. That is to say arguing the need for jobs is universal.
This was in reply to a statement that argued one did not absolutely need jobs to be happy and that this seeming need in our society was in fact an argument for a problem in the society.
In such a case it seems the use of the studies set in the society is less fair than considering if there may be easily considered conditions in other societies that show the need for a job is not a universal need but actually only a local, currently defined need in our society.
My comment merely showed that if one were to try to think of any examples showing happiness requires employment some should easily spring to mind and counter studies were not needed to prove it was not a universal requirement.
black swan is not a reference to the badness of blackness but the unlikelihood of something contradicting volumes of previous data.
Thus it can change industry in a good way or a bad way, because the black swan is unprecedented and unpredicted, its consequences and their nature is unsettled.
Traditionally in economics black swan is an unpredictable negative event.
The only thing that is unsettled here still is how many more people will lose their jobs and how much cumulative loss prisoner's dilemma will generate.
I saw random people on Internet suggesting to piggyback this disaster and dip into the crazy money that it is "generating", but in a zero-sum game somebody has to lose.
As a general rule in human history unpredictable events seem negative when they happen, the greater the unpredictability the greater the negativeness seems to people when it happens because unpredictability tends to destabilize systems set up to deal with predictable things, this however does not mean that the later consequences will remain negative for ever and ever.
All that said however, probably the greatest black swan in terms of unpredictability in human history was that there were two freaking big continents in between Europe and Asia when you try to circumnavigate the globe.
on edit: probably should be "the greater the unpredictability and the more things the unpredictable event connects to the greater the negativeness seems to be", because obviously the platypus while completely unexpected affected basically nothing at all.
Unpredictable positive events usually just don't get attention. Something good just happened, okay, that's good. People just don't pay attention.
Technically black swan might not be negative, but for all practical reasons, "black swan event" is what people call impactful unpredictable negative events and they expect those events to be negative. In other words, it is a synonym for "a disaster" of sorts, only "economical".
they do get attention, but generally people don't dwell on how unpredictable they were. Operation Warp Speed got covid vaccines out within ~1 year. Initial predictions were more in the >= 5 years time range. Fast covid vaccines were very much a "white swan" event, but reporting around it wasn't "this is so unlikely to have worked out" etc.
An unexpected event being "good" doesn't make it a "white swan". The historical context for black swans is that Europeans had only ever seen white swans, which were native to the Old World, and so there was assumption among them that all swans were white: the black swan in European culture was a symbol for something impossible. That is, until they made contact with Australia, and first encountered the black swan. One who had derived from induction the mistaken assumption that all swans were white was proven wrong with a single observation, and the European models and cultural symbols had to be updated.
The description I remember is the idea of holding the belief “all swans are white” until one encounters a black swan, and having to update their beliefs accordingly. What does this mean about swans?
But maybe that’s not the intended meaning either? It’s an interesting expression.
reply