Earlier quoted context omitted.
> There are research papers that examine this question of whether runtime optimizing data structures is a win If you mean JIT and similar tech, that's not really what I'm describing either. I'm talking about lifting the time and space complexity of data structures to parameters so you don't have to think about specific details. Again, think about how tables in a relational database work, where you can write queries a…
I guess the closest to that I've seen would be something like Permazen with some nice syntax sugar on top. It's not the relational model, but it does simplify away a lot of the complexity of the object relational mismatch (for Java) whilst preserving the expressiveness of a 'full' mainstream language.
The world could run on older hardware if software optimization was a priority
811–820 of 842 posts
Re: The world could run on older hardware if software optimization was a priority
#812Earlier quoted context omitted.
Notice how you're still specifying List types? That's not what I'm describing. You're also just describing a SQL mapping tool, which is also not really it either, though maybe that would be part of the runtime invisible to the user. Define a temporary table whose shape is inferred from another query, that's durable and garbage collected when it's no longer in use, and make it look like you're writing code against any…
The explicit annotation on people is there for illustration. In real code it can be inferred from whatever the expression is (as the other lines are). I don't think it's reasonable to specify the time complexity of insert/delete/lookup. For one, joins quickly make you care about multi-column indices and the precise order things are in and the exact queries you want to perform. e.g. if you join A with B, are your resu…
What I meant is that there would be no explicit List types, or array types, or hash tables, or trees, etc. Contiguity of the data is an implementation detail that doesn't matter for the vast majority of programming, much like how fields are packed in an object is almost completely irrelevant. Existing languages drive people to attend to these small details like collection choice that largely don't matter except in extreme circumstances (like game programming).
What it would have is something more like a Set, and maybe not even ordering should be specifiable as that's typically a detail of presentation/consumers of data. Restrictions are freeing, so the point is to eliminate many ill-advised premature optimizations and unnecessary internal details. Maybe the runtime will use one of those classic collections internally from the constraints you specify on the set, but the fundamental choice would not typically be visible.
> That all said, you could probably get at what you mean by just specifying indices instead of complexity and treating an embedded sqlite table as a native mutable collection type with methods to create/drop indices and join with other tables.
Yes, something like sqlite would likely be part of the runtime of such a language, and seems like the most straightforward way to prototype it. Anyway, I don't have a concrete semantics worked out so much as rough ideas of certain properties, and this is only one of them.
Re: The world could run on older hardware if software optimization was a priority
#813Earlier quoted context omitted.
The dumbest and most obvious of realizations finally dawned on me after trying to build a software startup that was based on quality differentiation. We were sure that a better product would win people over and lead to viral success. It didn’t. Things grew, but so slowly that we ran out of money after a few years before reaching break even. What I realized is that lower costs, and therefore lower quality, are a compe…
This is also the exact reason why all the bright-eyed pieces that some technology would increase worker's productivity and therefore allow more leisure time for the worker (20 hour workweek etc) are either hopelessly naive or pure propaganda. Increased productivity means that the company has a new option to either reduce costs or increase output at no additional cost, one of which it has to do to stay ahead in the ra…
In actuality, everyone is doing the same thing and their decisions are already made for them. Companies don't just act evil because they are evil. They act evil because all they can ever be is evil. If they don't, then they lose. So what's left?
Facebook becoming an ad-ridden disaster was, in a way, predestined. Unavoidable.
Re: The world could run on older hardware if software optimization was a priority
#814Earlier quoted context omitted.
> provide no health insurance I am so glad to live in Germany...
… where your full time job pays less than the GP's part time job
That's why everyone in the US works full-time if they have the choice. I would HAPPILY work 20/hr a week at half my rate. Such a job just does not exist. I would have to take a huge, huge paycut for that.
Re: The world could run on older hardware if software optimization was a priority
#815Earlier quoted context omitted.
> the cheapest one then Mercedes or even Volkswagen would be out of business I would argue this is a bad example - most luxury cars aren't really meaningfully "better", they just have status symbol value. A mid range Honda civic or Toyota corolla is not "worse" than a Mercedes for most objective measurements.
As someone who drove both, I vehemently disagree. Stripped of logos, one is delightful, the other just nominally gets the job done. The Mercedes has superior suspension that feels plush and smooth. Wonderful materials in the cabin that feel pleasant to the touch. The buttons press with a deep, satisfying click. The seats hug you like a soft cloud. All of that isn’t nothing. It is difficult to achieve, and it is valua…
Will you get there faster? No. Will you get there safer? Well... no. Will you get there with less traffic? Will the drive be easier? Eh... no.
So it's about equivalent. You might be slightly more comfortable. If you happen to be paying attention when you take that measurement, otherwise you wouldn't notice.
Re: The world could run on older hardware if software optimization was a priority
#816Earlier quoted context omitted.
we could of course theoretically make everything even faster. It's nowhere near the most optimal use of the available hardware. All we'd have to give up is squishy hard-to-measure things like "feature sets" and "engineering velocity." Says who? Who are these experienced people that know how to write fast software that think it is such a huge sacrifice? The reality is that people who say things like this don't actuall…
> These kinds of myths get perpetuated by people who repeat it without having experienced the side of just writing native software. I think mostly it is people rationalizing not learning assembly and sticking to C++ or PERL because that's what they learned first. Why stop at C++? Is that what you happen to be comfortable with? Couldn't you create even faster software if you went down another level? Why don't you?
No, actually, C++ is pretty much as low as you can go.
Well, I mean, you can go lower but you're not going to get performance benefits. You could go down to C. But C is going to be more of the same or, more likely, slower. You're going to be swapping Templates for things like void *.
You could go to assembly, but let's be honest - who can write better assembly than a C++ compiler?
Re: The world could run on older hardware if software optimization was a priority
#817Earlier quoted context omitted.
> co-operate to achieve some common goal. all systems are competitive, if the system involves humans - after all, even in a constrained environment like academia, where research is cooperative, the competition for recognition is still strong. This includes the order of the authorship presented in the paper. What you're asking for, regarding cooperation to achieve common goals, is altruism. This does not exist in huma…
Academia is competitive because it's designed to be competitive. If things like funding, recognition and opportunities go to "winners", people will try to win. It's possible to design systems that do not force people to compete. For example you could take away the names from papers and assign funding randomly/semi-randomly and the competition would end. Then add some form of retroactive funding (or other kinds of rew…
Any sort of scheme to try allocate the funding leads to competition for said funding!
In other words, in order to remove all competition in the system, you need unlimited funding. Even randomly allocating funding is insufficient, as it simply means you're competing on luck (for example, by trying to acquire more slots in the lottery).
> harder to avoid competitive behavior, but I don't think it's impossible.
Which i think is not true - it is in fact, impossible, unless you add in the condition that there's unlimited 'resources' (after all, there's competition for resources while it is limited).
Re: The world could run on older hardware if software optimization was a priority
#818Earlier quoted context omitted.
I struggle because everything you're saying is your subjective truth, and mine differs. Aside from the seminal discussion about text input latency from Dan Luu[0] there's very little we can do to disprove anything right now. Back in the day asking my computer to "do" something was the thing I always dreaded, I could navigate, click around, use chat programs like IRC/ICQ and so on, and everything was fine , until I op…
> Back in the day asking my computer to "do" something was the thing I always dreaded, I could navigate, click around, use chat programs like IRC/ICQ and so on, and everything was fine, until I opened a program or "did" something that caused the computer to think. This is exactly what I'm talking about. When I'm actually using my computer, its orders of magnitude faster. Things where I'd do one click and then practic…
The stuff that used to be slow involved hard drive access, but today even when programs don't need to touch the disk they often manage to rack up significant delays. Not to mention how SSDs have 100x less latency than hard drives.
And if unicode support is causing serious delays when I'm only using one block of simple-rendering characters, then the library was designed badly.
Re: The world could run on older hardware if software optimization was a priority
#819Earlier quoted context omitted.
> These kinds of myths get perpetuated by people who repeat it without having experienced the side of just writing native software. I think mostly it is people rationalizing not learning assembly and sticking to C++ or PERL because that's what they learned first. Why stop at C++? Is that what you happen to be comfortable with? Couldn't you create even faster software if you went down another level? Why don't you?
> Couldn't you create even faster software if you went down another level? Why don't you? No, actually, C++ is pretty much as low as you can go. Well, I mean, you can go lower but you're not going to get performance benefits. You could go down to C. But C is going to be more of the same or, more likely, slower. You're going to be swapping Templates for things like void *. You could go to assembly, but let's be honest…
In other words, yes you can eek out more performance at lower levels. Then again at the silicon level. No, it's not worth it in 99.9999% of scenarios (because there are tradeoffs).
Re: The world could run on older hardware if software optimization was a priority
#820Earlier quoted context omitted.
The dumbest and most obvious of realizations finally dawned on me after trying to build a software startup that was based on quality differentiation. We were sure that a better product would win people over and lead to viral success. It didn’t. Things grew, but so slowly that we ran out of money after a few years before reaching break even. What I realized is that lower costs, and therefore lower quality, are a compe…
I had the exact same experience trying to build a startup. The thing that always puzzled me was Apple: they've grown into one of the most profitable companies in the world on the basis of high-quality stuff. How did they pull it off?
I simply don't understand how people can live in the real world, look around themselves and claim quality is getting worse. This is simply not the case for 99% of product I have consumed over my few decades of being an adult.
A typical day. I get up, mattress I have now is better. I brush my teeth with a powerful electric toothbrush that is much superior then the once a decade ago. I use a amazing induction stove that is far better then what I had a decade ago. I ride a beautiful electric bus to the train station. From there I take modern fast train to work, much better and faster then 10-20 years ago. I set on my desk that goes up and down, has a insanely large beautiful monitor on it, incredible. I turn on my laptop that 100x more powerful then my first one. I start a IDE that is much better then what I had when I started. I use a programming language better then the one I used when I started, and I have a much larger library ecosystem. I spin up VM and containers, both locally and if I need in a waste internet cloud. I go for launch, I have like 20 options, food from one end of the globe to the the other, much better then I had 20 years ago.
I could go on about almost every single product I tough on typical day. The only thing that is actually not much better are things like backed goods, and mostly because they were already amazing. At most its now faster to buy them and I can buy them at more places.
I really don't why so many people inhere are crying about how everything is getting worse all the time.