Hacker News new | past | comments | ask | show | jobs | submit login
Research Shows All Our Mainstream Programming Languages Are Counter-Intuitive [pdf] (ucr.edu)
1 point by fagnerbrack 8 months ago | hide | past | web | favorite | 2 comments


Here are the things I personally learned from this:

1. Event-Driven thinking is natural to the human brain, more than imperative.

2. “unless” at the end of a sentence is not that bad. That’s mind-blowing cause I don’t have a Ruby background and I always thought unless was the same as “not not true”, but it isn’t. It depends(tm) how it’s being used.

3. Loops are hard to understand over collections. Nothing new here I guess, that’s why we abstract.

Please point out anything I missed or if I got something wrong.

I just wrote a C# interpreter in 800 lines, here https://github.com/soulblaze1/cs_interpreter

The purpose of it was initially to try ideas like rewinding code when the program at runtime (with its data) was badly formed.

The main problem though with conceptualization (and you have to be a philosopher to get to grips with the conceptual nature of reality) is that it is never bound up in schema. Schema (like a page of code) is what you end up being imprisoned by. The evidence of conceptual reality can be found in that you need to hold the whole program in your head at once (it's a concept); the more detail it has and the more complex the overarching overview is, the more you are taking on to try to cater for different eventualities.

And it's these eventualities that your program schema (the how everything interrelates and links up) focuses on, which are what imprisons you. Schema is content as well as form.

If we take a cross-domain analog here, we can jump across to religion. Conservative Muslims conceptualize the world and the reality around them based on the god Allah and what he wants, and what he thinks is right for women and so on. The Muslim readers of the Quran agree that they are reading the literal word of god. This is a problem of poor conceptualization: poor thinkers cannot escape the first overarching world narrative they are given. That's why they have those conservative religious views. If they were rational, they would see beyond it, and thus they would be incapable of holding irrational views in the first place. Worldview is never "additive", it is conceptual.

You have to read about Ontological Mathematical Illuminism to go further in what I am trying to convey here.

Programming suffers because, in communication and in thought, we use what scientists call "brain language", rather than just the words we use. For every sentence there are many dynamic, revolving conceptual formulations we are doing -- that's why you can watch any political video, any economic theory video or article, and over the same words you can come back later on, whether years or minutes, and you will think differently because your overall conception of reality has changed. You are conceptualizing reality differently (this is the meaning and the constitution of bugfixing and all scientific, psychological and rational problem-solving).

Programming is about what you want to do and form and achieve, which will always be fastest in your head. It changes dramatically and significantly, particularly as you move onto new content. This problem will never be solved, because what we express conceptually in abstract -- such as the type of people we would like to meet, which you will notice applies to an ideal partner, friend, and their parents, but is never a concretized thing, and cannot refer to only one individual person in particular, and yet it exists! -- remains beyond words, schema and existing best practices' dogma. We use domain knowledge but we all conceptualize differently.

One way to radically simplify programming is to simplify the schema so it's much more "flat" and pre-packaged based on pre-known use-cases which can be provided in advance, being able to assume most things. Meaning for example, anyone who wants to make any website at all, could use a government-led venture's components, and these would be maintained as a new national or international standard with reasonable utility for all, and put into law for major 3rd party sites to support the interoperation between (like payment processors). That is one way to push a social principle (like Hitler did) by promoting it in priority. The problem with this of course, is that the world isn't about for example, everyone having such specific access to technology like that. So, it's "unnatural" and an imcompossible, impractical idea to suggest that everyone else do what you happen to want. So how do we square different priorities of society, and find how to best optimize society?

I covered an overview of the world's problems here: https://medium.com/@abraxian/thinking-is-everything-a-bright...

In terms of general programming, you are just not going to get away from the problems of expression. Expressing thought is always going to be complex and it's always going to force you to fold and unfold different points of interdependency. Certain languages and constructs offer checks and balances for this, but ultimately it's about your own understanding i.e. conceptualization of what the program as a whole is doing -- you will never escape this.

What kind of programming use-case are we talking about again? Because industry, and standards and products/services, shift and change. If you want to innovate, you have to be able to accurately conceptualize. And then, programming in general seems to have the magic of providing forever-solutions for everyone in the world. But programming is also autistic. It's not actually solving the big broad issues of the world. All programming is actually a small-world, autistic selfish version of interacting with society. It's focusing forever on small problems, not big problems. The intuitive proof of this is that programming in the main hobbyist sense, would be best pursued when many more people can take it up -- when society's major problems can be fixed, and this starts with much clearer accurate thinking and intuiting about all of society and its systems. The real optimization, away from the small world of the individual, is real true radical leveraging of human ingenuity -- true social revolution in the revaluing of key ideas, ideologies, ideations and conceptualizations -- changing how we think; transcending the old human models of conduct.

In terms of simplistic expressions for computer programs, the vast majority indeed can be made simpler and pre-packaged. That all relies though on having highly logical, intuitive individuals run the project -- the ultimate human project being super-smart goverment. If you don't have a rational government, you are bound into the irrational, predatory-capitalist, right-wing selfishness megastructures within that society you live in. If you don't interact with the political community you live under, you won't achieve anything to begin with no matter how perfect your code is.

In the main, we are now seeing an escalation of the world's biggest problems (putting the wrong people and the wrong political system in power) and one purpose of this is it will wake up all the autistic individuals who aren't rationally responding to it.

At the moment, there are several broad sectors of programming you could break it up into - web, financial instruments, creativity, and the computer graphics industry to name the popular ones. From there you have a lot of technically innovative products such as they use in the movie computer graphics industry for example. Depending on issues of interoperability and dependency, these projects and their owners aren't willing to shift over to a new.. what? What kind of programming language could justify people switching over? It would have to be the ultimate programming language. But to think, we already have our minds. We can already instantly reform our conceptions of things to elucidate on things we know about, and to learn.

Unreal Engine 4 didn't use C sharp.. why? Concerns about speed. Every industry has its own complex agenda to push. They have bugs they produce and will never fix until their attention is brought to it via intrinsic motivation. All companies and businesses have agendas. A super-smart government could only lead in terms of the fidelity and sophistication and conciseness of newer technology. For that, you need the absolute smartest programmers who have very little trouble conceptualizing broad-phase concepts and workings of the things they understand. The world must become led by experts, there is no other way.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact