Hacker News new | past | comments | ask | show | jobs | submit login

"Text is the most socially useful communication technology. It works well in 1:1, 1:N, and M:N modes. It can be indexed and searched efficiently, even by hand. It can be translated. It can be produced and consumed at variable speeds. It is asynchronous. It can be compared, diffed, clustered, corrected, summarized and filtered algorithmically. It permits multiparty editing. It permits branching conversations, lurking, annotation, quoting, reviewing, summarizing, structured responses, exegesis, even fan fic. The breadth, scale and depth of ways people use text is unmatched by anything. There is no equivalent in any other communication technology for the social, communicative, cognitive and reflective complexity of a library full of books or an internet full of postings. Nothing else comes close." http://graydon2.dreamwidth.org/193447.html

I agree with this statement, wholeheartedly.

I do, however, think programming languages could benefit from more visual augmentation. A program, over time, takes on more complexity than a programmer can hold in his mind, and eventually, the program's design will elude him. A disconnect appears between the text he types in the moment and the original design of the program. The sum total of the program's code no longer resembles the problems at hand.

Here, I think, visual tools are underutilized. Not as code crafting tools, but as tools for reflection. Reflection on dependency trees, deviation in style, orphaned code, the ability to visualize how and where data might flow in unexpected ways, etc. Webpack's stats.json comes to mind for dependency tracing. Statically typed languages obviously have a leg up here.

I have a dream that one day we'll collectively realize that "buying programmers the best tools" means the most powerful, and not the shiniest. Then we'll all be running ultra-wide monitors with room for many different visual aides on the one screen, backed by the CPU horsepower (overclocked and liquid cooled, if necessary) to make it all fast. And, hopefully, we'll see what an IDE can really be.

My dream is the opposite. Constrain programmers to hardware that's 2 generations old. That will force us to make our programs run fast in this environment which is much closer to what actual users will use to running it.

I do understand the implication that lowering the need for always faster hardware for end users will slow down the pace of development of new hardware. But with the end of Moore's law upon us, that's inevitable anyway.

Our computers are plenty fast today, beyond what we could imagine when each of us started programming. Let's cut down on abstractions. Let's profile, optimize.

After being stuck with a really, really bad laptop for the past 4 years, I can't disagree more whole-heartedly. I wouldn't wish that experience on my worst enemy, heh.

Though I wish more time was spent on some tools to make them more memory efficient(I'm looking at you, scala and friends), that's just not how it is today. I just bought a new laptop with 32 gigs of ram, and hopefully that is future-proof for the next few years.

What was the laptop? And what were the 3 things that you found most annoying?

A bit late reply.. but the laptop was just the cheapest laptop I could buy before starting Uni, roughly 4 years ago. I just got my new laptop a couple of days ago, and the difference is incredible.

The other guy that replied to your comment is basically right. My old laptop had a measly 4GB of RAM, and opening multiple tabs in Chrome for documentation, running an editor, some development tools like REPLs etc, and I'd basically be out of RAM. I would literally listen to music on my phone because spotify consumed too much of my precious RAM, and I had to kill off tabs that I hadn't used for a while like it was Survivor, in order to keep my laptop from start swapping(which means everything grinds to a halt).

I even run a very minimalistic window manager and don't use IDEs like IntelliJ or anything.

Not OP, but I had a similar experience. Low end development machines suck because they put the developer in a worse position than the end-user, not an equal one. Modern dev tools, plus common side-utilities like slack/spotify/skype, and accessories like Insomnia, tend to use a lot of memory and cpu. It makes the development experience terrible, and that affects your output. Developing and designing is going to be ~90% of your time spent on a dev box, actually running the dang thing won't take long at all.

A better solution would be for testing, particularly UAT, to be done inside resource-constrained VM's, instead.

You can have it both ways: power the IDE with a futuristic power hungry beefy machine, and run the programs it produces on a throttled sandbox that match the slower target machines.

I fear cheating would be too easy, though —just lift the restrictions.

I wrote some of my fastest code on a netbook. It's also the gnarliest code I ever wrote and I do not wish to touch it again.

As long as we're speculating: I kind of dream that maybe we'll see programming environments that take advantage of VR.

Humans are really good at remembering spaces. ("Describe for me your childhood bedroom." or "What did your third grade teacher look like?")

There's already the idea of "memory palaces" [1] suggesting you can take advantage of spatial memory for other purposes.

I wonder, what would it be like to learn or search a codebase by walking through it and looking around?

[1] https://en.wikipedia.org/wiki/Method_of_loci

> Humans are really good at remembering spaces. ("Describe for me your childhood bedroom." or "What did your third grade teacher look like?")

Some humans. I honestly can't answer you those two questions. I'm much better in remembering what I just read than what space I just saw, and I absolutely suck at remembering (not to mention describing) faces. If you mugged me I probably wouldn't be able to describe you to police beyond the basics like gender and height (I probably won't be remembering what you were wearing).

I say this because being good at remembering spaces is like "everyone sketch a picture when trying to convey an idea" elsewhere in the thread - both are examples of what some people do, and it may be surprising to discover that not all humans are good at it.

I have face blindness. You may as well, or at least some degree of aphantasia.

No reason for concern, but there is supposedly an incredibly low occurrence of either.

This is, I think, the idea behind IDEs

Yet which IDEs aren't simply really nice text editors with some refactoring help built in?

Making these visualizations central to the IDE would be exciting.

> Yet which IDEs aren't simply really nice text editors with some refactoring help built in?

All the IDEs I use are more like:

    Yet which IDEs aren't simply really _horrible_ text editors with some refactoring help built in?

Yeah. I feel like the depth of OP's writeup blurs the lines between working with an application framework, API, and IDEs. I was under the impression that visual programming is different from IDEs or frameworks...

If you ever want to horrify yourself, google LabView, a truly horrible piece of software.

I actually liked it in a way.

Not my favourite but absolutely not horrifying to a student.

Now that I think about it though I wonder what huge merges look like.

I agree because I hate the pain of debugging. I disagree because if something takes that away, then where is the skill in my work?

"This is so bad, it's not even wrong."


Would you mind enlightening​ me as to the fallacy you perceive in that post? It seems well-formed to me.

Applications are open for YC Winter 2022

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