我对软件的失望


软件开发的本质
“我们需要在墙上开500个孔,所以我设计了一个自动钻机。” 它使用优雅,精确的齿轮来根据需要连续调节速度和扭矩。
-太好了,她的体重很理想。 我们将500台这样的钻机装入制造的大炮中,然后向墙壁开枪。

我从事编程已有15年了。 但是最近,在开发过程中,一直没有考虑效率,简单性和完美性:直到我为自己的职业生涯以及整个IT行业感到难过。

例如,现代汽车的运行状况是当前发动机设计实际需求的98%。 现代建筑使用精确计算的材料量来实现其功能并在这些条件下保持安全。 所有飞机都收敛到最佳尺寸/形状/负载,并且外观基本相同。

如果程序以可能的性能的1%甚至0.01%的水平运行,则仅在软件中才被视为正常。 似乎没有人反对。 人们甚至为程序的效率低下而感到自豪,例如“为什么计算机足够快”?

@tveastman :我每天运行一个Python程序,它在1.5秒内运行。 我花了六个小时将其重写在Rust上,现在它的运行时间为0.06秒。 这种加速意味着我的时间将在41年24天中得到回报:-)

您可能已经听过这样的口头禅:“程序员的时间比计算机的时间更昂贵”。 这意味着我们正在以前所未有的规模花费计算机时间。 您是否会购买每百公里流量为100升的汽车? 1000升怎么样? 对于计算机,这种情况一直存在。

一切都太慢了


环顾四周:便携式计算机的功能比使人登月的功能强大数千倍。 但是,第二个站点无法在最新的高端MacBook Pro上提供60 FPS的平滑滚动。 我可以舒适地玩游戏,观看4K视频,但不能滚动网页! 这样可以吗

来自同一Google的Chrome浏览器中的Google Inbox 邮件应用程序需要13秒钟才能打开中型电子邮件


它还为空白的白色窗体设置了动画,而不显示其内容,因为这是使网页上的某些内容具有良好性能的唯一方法。 不,不是60 FPS,而是“在此页面上尽快”。 我期待当120 Hz显示器成为主流时网络社区将提供什么。 他们几乎无法应付60 Hz。

Windows 10升级需要30分钟 。 这么久可以做什么? 这段时间足以完全格式化我的SSD驱动器,下载最新版本并连续安装约5次。



Pavel Fatin :在编辑器中键入是一个相对简单的过程,因此,即使286也可以提供一个相当流畅的键入过程。

在现代文本编辑器中,键入延迟比42岁的Emacs更长。 文字编辑器! 有什么会更容易? 对于每次击键,您只需要更新屏幕上的小矩形区域,现代文本编辑器就无法在16毫秒内完成此操作。 这是很多时间。 很多。 3D游戏在相同的16毫秒内用成千上万个(!!!)多边形填充屏幕,并处理输入,重新计算世界并动态加载/卸载资源。 怎么会这样

趋势是软件根本不会变得更快,功能更多。 我们得到了更快的设备,具有相同功能的软件在切换之前比以前更慢。 一切工作都比最大速度慢得多。 有没有想过为什么您的手机会从30秒启动到60秒? 为什么它不能在一秒钟内启动? 没有物理限制。 我个人想这样。 我希望开发人员能够达到极限,并尽一切努力来提高性能。

一切都很大


这在膨胀。 如果仅阻止广告,则Web应用程序的打开速度可以提高十倍。 Google恳求大家在AMP计划的帮助下制止一切。这是一种不需要任何技术的技术解决方案,只需要一点常识即可。 如果您消除了膨胀,Internet将开始以惊人的速度运行。 真的很难理解吗?

没有应用程序的Android系统将占用近6 GB的空间 。 只是想一想,这个庞大的数字多么不雅。 什么是高清电影? 我认为主要是代码:内核,驱动程序。 当然,还有一些其他资源,但是不能太大。 您需要多少个电话司机?



Windows 95占用了30 MB。 今天,我们的网页比这个操作系统重! Windows 10已经是4 GB,即133倍以上。 但这好133倍吗? 我的意思是,它们在功能上几乎相同。 是的,我们有Cortana,但我怀疑它的重量为3970 MB。 但是,这是Windows 10,真的Android应该多出一倍半吗?

Google键盘应用程序好像什么也没发生一样,占用了150 MB的内存。 该程序在屏幕上绘制30个按键-是真的比所有Windows 95复杂五倍吗? Google应用基本上只不过是Google Web搜索的软件包,需要350 MB! 我不使用的Google Play服务(我不在那里买书,音乐或视频)只有300 MB,只能放在这里,无法删除。



安装所有必要的应用程序(社交网络,聊天,地图,出租车,银行等)后,手机上仅保留1 GB的照片。 而且这通常没有游戏和音乐! 还记得操作系统,应用程序和所有数据放在软盘上的时间吗?

您的笔记程序可能是用Electron编写的,因此带有Xbox 360控制器的驱动程序 ,它可以显示3D图形,播放音频和使用网络摄像头拍照。



简单的文本聊天一直以速度快和低内存消耗而著称。 因此,Slack是一个非常消耗资源的应用程序的示例。 我的意思是,聊天和文本编辑器是最基本的东西,它们应该消耗最少的资源。 欢迎来到2018。

您可以说它们至少起作用。 但是,增加大小并不意味着有所改善。 这意味着某人已经失去控制。 我们不再知道发生了什么。 尺寸的增加是复杂性的增加,性能和可靠性的降低。 这是不正常的,不应视为正常。 您应该立即注意the肿的大小-并远离它们。

一切都烂了


三年前,一部16GB的Android手机非常完美。 如今,它几乎无法在Android 8.1下运行,因为每个应用程序至少在没有明显原因的情况下翻了一番。 没有其他功能。 它们并没有变得更快,外观也没有改变。 他们只是...肿吗?

iPhone 4s随iOS 5一起发布,但是它几乎不能运行iOS9。这不是因为iOS 9更好-基本上,系统没有改变。 但是新硬件速度更快,因此使软件速度变慢。 不用担心-例如,您拥有令人兴奋的新功能...相同的应用程序以相同的速度运行! 我不知道

iOS 11已停止支持32位应用程序。 这意味着,如果开发人员还没有准备好返回并更新应用程序,则很可能您将不会再看到这个出色的程序。

@jckarter :可以使DOS程序在80年代后制造的几乎所有计算机上都保持不变。 由于明天的Chrome更新,JavaScript应用可能会崩溃。

10年后 (或更早),今天的网页将无法在任何浏览器中运行

“我们需要以最快的速度运行,以待在同一个地方。” 但是重点呢? 我可以像其他所有人一样不断购买新的手机和笔记本电脑,但是这样做仅仅是为了能够运行所有相同的应用程序,而只是变慢了?

我认为我们可以而且应该纠正这种情况。 现在每个人都在为今天开发程序,偶尔为明天开发程序。 但是做更长久的事情会很好。

越差越好


现在没人明白。 并不想了解。 我们只是发布半废话,寄予厚望,并将其称为“初创公司的常识”。

如果出现问题,则要求更新网页。 谁有时间找到问题的原因?



即使在兼容的浏览器上,任何Web应用程序都会产生持续不断的“随机” JS错误流。

整个Web / SQL数据库体系结构是建立在前提(甚至是希望)的前提下的,即当您查看打开的网页时,没有人会更改数据。

大多数协作应用程序会尽力而为,丢失数据时会有很多典型场景。 我们看到了对话框“我应该保存哪个版本?” 今天,门槛太低了,即使在这个问题上,用户也很满意。



不,在我的世界中,该应用程序是不正常的,它说:“我将销毁您的部分作品,只选择其中一项。”

Linux 有意杀死随机进程。 但这是最受欢迎的服务器操作系统。

我经常遇到的每台设备都崩溃了。 戴尔显示器不时需要重新启动硬件,因为它具有软件。 空投? 如果他找到设备,您会很幸运,否则我该怎么办? 蓝牙? 规范是如此复杂,以至于设备之间将无法通信 ,因此定期重启是最佳选择



而且我什至没有提到物联网 。 完全没有理由要添加任何东西。

我想为自己的工作感到骄傲。 我想做稳定的工作。 为此,您需要了解内部和外部正在开发的内容,而这在ated肿,过于复杂的系统中是无法做到的。

编程中同样的混乱


似乎没有人对高质量,快速,高效,持久,彻底的解决方案感兴趣。 即使有效的解决方案早已为人所知,我们仍然面临着同样的问题:程序包管理,汇编系统,编译器,语言设计,IDE。

组装系统本质上是不可靠的,并且尽管需要掌握所有有关残疾的信息,但仍需要定期进行彻底清洁。 没有什么能使装配过程可靠,可预测和100%可再现的。 只是没有人认为这很重要。 NPM处于“有时工作”状态已经很多年了。

@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/zh-CN423889/


All Articles