📜 ⬆️ ⬇️

My disappointment in software


The essence of software development
- It is necessary to make 500 holes in the wall, so I designed an automatic drill. It uses elegant precision gears to continuously adjust speed and torque as needed.
“Great, she has perfect weight.” We load 500 such drills into the gun, which we made, and shoot at the wall.

I have been programming for 15 years. But lately, when developing, it is not customary to think about efficiency, simplicity and perfection: to the extent that it makes me sad during my career and for the IT industry as a whole.

For example, modern cars work, say, 98% of what the current engine design physically allows. Modern architecture uses a precisely calculated amount of material to perform its function and remain safe in these conditions. All planes converged to the optimal size / shape / load and basically look the same.
')
Only in software is considered normal if the program is running at 1% or even 0.01% of the possible performance. No one seems to have any objections. People even take pride in how inefficient the program works, like “why bother, computers are fast enough”:

@tveastman : I run a Python program every day, it runs in 1.5 seconds. I spent six hours and rewrote it on Rust, now it runs in 0.06 seconds. This acceleration means that my time will pay off in 41 years, 24 days :-)

Probably, you heard such a mantra: “Programmer time is more expensive than computer time”. This means that we spend computer time on an unprecedented scale. Would you buy a car with a consumption of 100 liters per 100 kilometers? What about 1000 liters? With computers this happens all the time.

Everything is unbearably slow


Look around: laptops are thousands of times more powerful than those that brought man to the moon. However, every second site cannot provide smooth scrolling of 60 FPS pages on the latest top MacBook Pro. I can comfortably play games, watch 4K videos, but not scroll through web pages! This is normal?

The Google Inbox email application in Chrome browser from the same Google, takes 13 seconds to open a medium-sized letter :


It also animates empty white forms instead of showing their contents, because this is the only way to animate something on a web page with decent performance. No, not 60 FPS, but rather "as quickly as possible on this page." I look forward to what the web community will offer when 120 Hz displays become mainstream. They barely cope with 60 Hz.

Windows 10 update takes 30 minutes . What can be done for so long? This time is enough to completely format my SSD-drive, download a fresh build and install it approximately 5 times in a row.



Pavel Fatin : Typing in the editor is a relatively simple process, so even 286 could provide a fairly smooth typing process.

In modern text editors, the delay in typing is more than in 42-year-old Emacs. Text editors! What could be easier? For each keystroke, you only need to update the tiny rectangular area on the screen, and modern text editors cannot do it in 16 ms. And this is a lot of time. LOT. A 3D game fills the screen with hundreds of thousands (!!!) of polygons for the same 16 ms, and also processes input, recounts the world and dynamically loads / unloads resources. How so?

The trend is that the software does not become faster and more functional. We get faster hardware, on which software with the same functions is turned more slowly than before. Everything works much slower than the maximum speed. Have you ever wondered why your phone boots from 30 to 60 seconds? Why can't it boot, say, in one second? There are no physical limitations. Personally, I would like this. I want the developers to reach the limit, using every bit for performance.

Everything is HUGE


And this is blowing up. Web applications can open ten times faster if you just block ads. Google is begging everyone to stop braking with the help of the AMP initiative - a technical solution that doesn’t need any technology, just a little common sense. If you remove bloat, the Internet will work at a crazy speed. Is it really hard to understand?

The Android system without applications takes up almost 6 GB . Just think for a second how indecent this huge number is. What is it, movies in HD quality? I think basically the code: kernel, drivers. Still some resources, of course, but they can not be so big. How many drivers do you need for the phone?



Windows 95 occupied 30 MB. Today we have web pages heavier than this OS! Windows 10 is already 4 GB, that is 133 times more. But is she 133 times better? I mean, functionally they are almost the same. Yes, we had Kortana, but I doubt that it weighs 3970 MB. But this is Windows 10, should Android really be another 1.5 times as large?

The Google keyboard application, as if nothing had happened, eats up 150 MB. This program draws 30 keys on the screen - is it really five times harder than the entire Windows 95? The Google app, basically just a package for Google Web Search, takes 350 MB! Google Play services that I don’t use (I don’t buy books, music or videos there) - 300 MB, which simply sit here and which cannot be removed.



After installing all the necessary applications (social networks, chat rooms, maps, taxis, banks, etc.), only 1 gigabyte for photos remained on the phone. And this is generally without games and music! Remember the times when the OS, applications and all your data were placed on a floppy disk?

Your note-taking program is most likely written in Electron and, therefore, comes with a driver for the Xbox 360 controller , can display 3D graphics, play audio and take photos using a webcam.



Simple text chat has always been famous for speed and low memory consumption. So Slack is an example of a very resource-intensive application. I mean that chat and a text editor are the most basic things, they should consume the least resources. Welcome to the year 2018.

You can say that they at least work. But increasing the size doesn’t mean improvement. This means that someone has lost control. We no longer know what is happening. Increasing size is an increase in complexity, a decrease in performance and reliability. This is not normal and should not be considered normal. On the bloated size you need to immediately pay attention - and stay away from them.

All rotting


The 16 GB Android phone was beautiful three years ago. Today, under Android 8.1, it barely works, because each application has increased at least twice for no apparent reason. No additional features. They do not become faster and the appearance has not changed. Are they just ... bloated?

iPhone 4s came out with iOS 5, but it can barely work with iOS 9. And this is not because iOS 9 is much better - basically, the system has not changed. But new hardware is faster, so they made the software slower. Do not worry - you got exciting new features, for example ... the work of the same applications with the same speed! I do not know.

iOS 11 has stopped supporting 32-bit applications. This means that if the developer is not ready to return and update the application, most likely you will not see this excellent program again.

@jckarter : The DOS program can be made to work without changes on almost any computer made after the 80s. A javascript app may stop working due to tomorrow's Chrome update.

Today's web pages will not work in any browser in 10 years (and maybe earlier).

"We need to run as fast as possible, just to stay in the same place." But the point? I can constantly buy new phones and laptops, like everyone else, but do it only in order to be able to run all the same applications that have only become slower?

I think that we can and should correct the situation. Now everyone is developing programs for today, occasionally for tomorrow. But it would be nice to do things that work a little longer.

Worse means better


Now nobody understands anything. And do not want to understand. We just release half-hearted nonsense, hope for the best and call it “common sense for a startup.”

Web pages are asked to update if something went wrong. Who has time to find the cause of the problem?



Any web application produces a constant stream of “random” JS errors, even on compatible browsers.

The entire web / SQL database architecture is built on the premise (even hope) that no one will change the data while you look at the open web page.

Most collaboration applications have done “as best they could”, there are a lot of typical scenarios when they lose data. You saw the “Which version to keep?” Dialogue. Today the bar is so low that users are happy even to this question.



And no, in my world is not a normal application that says: "I will destroy part of your work, just choose which one."

Linux intentionally kills random processes. And yet it is the most popular server OS.

I have every device fails regularly anyway. From time to time, the Dell monitor needs to be rebooted by hardware, because it has software. AirDrop? You are lucky if he finds a device, otherwise what to do? Bluetooth? Specifications are so complex that devices will not communicate with each other , and periodic reboots are the best option .



And I don’t even mention the Internet of Things . It is so beyond reason that even nothing to add.

I want to be proud of my work. I want to do working, stable things. To do this, you need to understand exactly what we are developing, inside and outside, and this cannot be done in bloated, overly complicated systems.

In programming, the same chaos


It seems that no one else is interested in high-quality, fast, efficient, durable, solid solutions. Even if effective solutions have been known for a long time, we still struggle with the same problems: package management, build systems, compilers, language design, IDE.

Assembly systems are inherently unreliable and periodically require complete cleaning, although they have all the information for invalidation. Nothing prevents to make the assembly process reliable, predictable and 100% reproducible. Nobody just thinks it's important. NPM has been in the "sometimes running" state for many years.

@przemyslawdabek: , rm-rf node_modules Node.js/JavaScript.

? , . « »? , - , , .



, , . , Hadoop , .

, .

@rakhim: « » « », «, , ». «», : , .

Linux, Docker , , , . , . , « » Go.  == .


Python , .
. Python — sudo


? « » , . . , - ( ) ( , , ):



.  â€” . , .

, , . , . AWS. . . , 20 . : - — . , .

. . , , .  â€” . , , .


, , . , .

, . .



? , 25 ? , . , .

— :

@sahrizv: 2014 — .
2016 — Docker, .
2018 — Kubernetes, Docker.

:

@dr_c0d3: 2000: 100 XML, «» EJB.
2018: 100 YAML, «» .
XML …

, .


. , . () , Android 350 ? , . , ? , , . : « , »? . .

. , , . (iPhone/iOS , Chrome ) , .

— , , . , . , . .


.

(LMAX Disruptor, SBE, Aeron) , .

Xi , , .

, 500 000 . , , .

, . - . , , — , .


. . , . , . - — , , , , , , .

— . - . , . , . - .

: — . , , . , , , , , ( !). , . , , . . « , ...» — !

, . , , . , , . , , , .

Source: https://habr.com/ru/post/423889/


All Articles