Kekecewaan saya pada perangkat lunak


Inti dari pengembangan perangkat lunak
"Kita perlu membuat 500 lubang di dinding, jadi aku mendesain bor otomatis." Ia menggunakan gigi yang elegan dan presisi untuk terus menyesuaikan kecepatan dan torsi sesuai kebutuhan.
- Hebat, dia memiliki berat badan ideal. Kami memuat 500 bor ini ke dalam meriam, yang kami buat, dan menembak ke dinding.

Saya telah melakukan pemrograman selama 15 tahun. Tetapi akhir-akhir ini, selama pengembangan belum diterima untuk memikirkan efisiensi, kesederhanaan dan kesempurnaan: sampai pada titik saya merasa sedih untuk karir saya dan untuk industri TI secara keseluruhan.

Sebagai contoh, mobil modern beroperasi, katakanlah, 98% dari apa yang memungkinkan desain mesin saat ini secara fisik. Arsitektur modern menggunakan jumlah material yang dihitung secara tepat untuk memenuhi fungsinya dan tetap aman dalam kondisi ini. Semua pesawat terkonvergensi ke ukuran / bentuk / muatan optimal dan pada dasarnya terlihat sama.

Hanya dalam perangkat lunak yang dianggap normal jika program berjalan pada level 1% atau bahkan 0,01% dari kemungkinan kinerja. Sepertinya tidak ada yang keberatan. Orang-orang bahkan bangga dengan betapa tidak efisiennya program ini, seperti "kenapa repot, komputer cukup cepat":

@ teveastman : Saya menjalankan program Python setiap hari, itu berjalan dalam 1,5 detik. Saya menghabiskan enam jam dan menulis ulang di Rust, sekarang berjalan dalam 0,06 detik. Akselerasi ini berarti waktu saya akan terbayar dalam 41 tahun, 24 hari :-)

Anda mungkin pernah mendengar mantra ini: "Waktu programmer lebih mahal daripada waktu komputer". Ini berarti bahwa kami menghabiskan waktu komputer pada skala yang belum pernah terjadi sebelumnya. Apakah Anda akan membeli mobil dengan laju aliran 100 liter per 100 kilometer? Bagaimana dengan 1000 liter? Dengan komputer, ini terjadi setiap saat.

Semuanya lambat sekali


Lihatlah sekeliling: komputer jinjing ribuan kali lebih kuat daripada yang membawa seseorang ke bulan. Namun, setiap situs kedua tidak dapat memberikan pengguliran lancar 60 FPS pada MacBook Pro top-end terbaru. Saya bisa bermain game dengan nyaman, menonton video 4K, tetapi tidak menggulir halaman web! Apakah ini oke?

Aplikasi email Inbox Google di browser Chrome dari Google yang sama, membutuhkan 13 detik untuk membuka email berukuran sedang :


Itu juga menjiwai bentuk putih kosong alih-alih menunjukkan isinya, karena ini adalah satu-satunya cara untuk menghidupkan sesuatu di halaman web dengan kinerja yang baik. Tidak, bukan 60 FPS, melainkan "secepat mungkin di halaman ini." Saya menantikan apa yang akan ditawarkan komunitas web saat tampilan 120 Hz menjadi arus utama. Mereka nyaris tidak bisa mengatasi 60 Hz.

Pemutakhiran Windows 10 membutuhkan waktu 30 menit . Apa yang bisa dilakukan begitu lama? Kali ini cukup untuk memformat drive SSD saya sepenuhnya, unduh versi terbaru dan instal sekitar 5 kali berturut-turut.



Pavel Fatin : Mengetik dalam editor adalah proses yang relatif sederhana, sehingga bahkan 286 dapat memberikan proses pengetikan yang cukup lancar.

Di editor teks modern, penundaan pengetikan lebih lama daripada di Emacs yang berusia 42 tahun. Editor teks! Apa yang bisa lebih mudah? Untuk setiap penekanan tombol, Anda hanya perlu memperbarui area persegi kecil di layar, dan editor teks modern tidak dapat melakukan ini dalam 16 ms. Dan ini banyak waktu. BANYAK. Sebuah permainan 3D mengisi layar dengan ratusan ribu (!!!) poligon untuk 16 ms yang sama, dan juga memproses input, menceritakan kembali dunia dan secara dinamis memuat / membongkar sumber daya. Bagaimana bisa begitu?

Trennya adalah perangkat lunak tidak menjadi lebih cepat dan lebih fungsional sama sekali. Kami mendapatkan peralatan yang lebih cepat di mana perangkat lunak dengan fungsi yang sama berganti lebih lambat dari sebelumnya. Semuanya bekerja jauh lebih lambat daripada kecepatan maksimum. Pernah bertanya-tanya mengapa ponsel Anda melakukan booting dari 30 hingga 60 detik? Mengapa tidak bisa boot, katakanlah, dalam satu detik? Tidak ada batasan fisik. Secara pribadi, saya suka itu. Saya ingin para pengembang mencapai batas, menggunakan setiap bit untuk kinerja.

Semuanya BESAR


Dan ini kembung. Aplikasi web dapat dibuka sepuluh kali lebih cepat jika Anda hanya memblokir iklan. Google meminta semua orang menghentikan rem dengan bantuan inisiatif AMP - solusi teknis yang tidak memerlukan teknologi apa pun, hanya sedikit akal sehat. Jika Anda menghapus mengasapi, Internet akan mulai bekerja dengan kecepatan gila. Apakah ini benar-benar sulit untuk dipahami?

Sistem Android tanpa aplikasi membutuhkan hampir 6 GB . Pikirkan sejenak betapa tidak senonohnya jumlah yang besar ini. Apa itu, film HD? Saya pikir sebagian besar kode: kernel, driver. Beberapa sumber daya lain, tentu saja, tetapi mereka tidak bisa begitu besar. Berapa banyak driver yang Anda perlukan untuk ponsel ini?



Windows 95 menghabiskan 30 MB. Hari ini kami memiliki halaman web yang lebih berat daripada OS ini! Windows 10 sudah 4 GB, mis. 133 kali lebih banyak. Tapi apakah 133 kali lebih baik? Maksud saya, secara fungsional mereka hampir sama. Ya, kami memiliki Cortana, tapi saya ragu beratnya 3970 MB. Tapi ini Windows 10, benarkah Android harus satu setengah kali lebih banyak?

Aplikasi keyboard Google, seolah-olah tidak terjadi apa-apa, memakan hingga 150 MB. Program ini menggambar 30 tombol di layar - apakah ini benar-benar lima kali lebih rumit daripada semua Windows 95? Aplikasi Google, pada dasarnya hanya paket untuk Pencarian Web Google, membutuhkan 350 MB! Layanan Google Play yang tidak saya gunakan (saya tidak membeli buku, musik, atau video di sana) adalah 300 MB yang hanya duduk di sini dan tidak bisa dihapus.



Setelah menginstal semua aplikasi yang diperlukan (jejaring sosial, obrolan, peta, taksi, bank, dll.), Hanya 1 gigabyte untuk foto yang tersisa di ponsel. Dan ini umumnya tanpa permainan dan musik! Ingat saat-saat ketika OS, aplikasi, dan semua data Anda ditempatkan pada floppy disk?

Program catatan Anda mungkin ditulis dalam Electron dan karenanya dilengkapi dengan driver untuk pengontrol Xbox 360 , ia dapat menampilkan grafik 3D, memutar audio dan mengambil gambar menggunakan webcam.



Obrolan teks sederhana selalu terkenal dengan kecepatan dan konsumsi memori yang rendah. Jadi Slack adalah contoh aplikasi yang sangat intensif sumber daya. Maksud saya, obrolan dan editor teks adalah hal yang paling mendasar, mereka harus mengkonsumsi sumber daya yang paling sedikit. Selamat datang di 2018.

Anda dapat mengatakan bahwa mereka setidaknya berfungsi. Namun peningkatan ukuran tidak berarti peningkatan. Ini berarti bahwa seseorang telah kehilangan kendali. Kami tidak lagi tahu apa yang terjadi. Peningkatan ukuran adalah peningkatan kompleksitas, penurunan kinerja dan keandalan. Ini tidak normal dan tidak boleh dianggap normal. Anda harus segera memperhatikan ukuran kembung - dan menjauhlah dari mereka.

Semuanya membusuk


Ponsel Android 16GB sempurna tiga tahun lalu. Saat ini, ini hampir tidak berfungsi di Android 8.1, karena setiap aplikasi telah berlipat setidaknya setidaknya tanpa alasan yang jelas. Tidak ada fitur tambahan. Mereka tidak menjadi lebih cepat dan penampilannya tidak berubah. Apakah mereka hanya ... kembung?

iPhone 4 keluar dengan iOS 5, tetapi hampir tidak dapat menjalankan iOS 9. Dan ini bukan karena iOS 9 jauh lebih baik - pada dasarnya, sistem tidak berubah. Tetapi perangkat keras baru lebih cepat, sehingga mereka membuat perangkat lunak lebih lambat. Jangan khawatir - Anda punya fitur baru yang menarik, misalnya ... aplikasi yang sama bekerja dengan kecepatan yang sama! Saya tidak tahu.

iOS 11 telah berhenti mendukung aplikasi 32-bit. Ini berarti bahwa jika pengembang tidak siap untuk kembali dan memperbarui aplikasi, kemungkinan besar Anda tidak akan melihat lagi program yang luar biasa ini.

@ jckarter : Program DOS dapat dibuat untuk bekerja tidak berubah di hampir semua komputer yang dibuat setelah tahun 80-an. Aplikasi JavaScript mungkin macet karena pembaruan Chrome besok.

Halaman web hari ini tidak akan berfungsi di browser apa pun setelah 10 tahun (atau mungkin lebih awal).

"Kita harus berlari secepatnya hanya untuk tetap di tempat yang sama." Tapi intinya? Saya dapat terus-menerus membeli ponsel dan laptop baru, seperti orang lain, tetapi apakah hanya untuk dapat menjalankan semua aplikasi yang sama, yang hanya menjadi lebih lambat?

Saya pikir kita dapat dan harus memperbaiki situasi. Sekarang semua orang sedang mengembangkan program untuk hari ini, kadang-kadang untuk besok. Tetapi akan menyenangkan untuk melakukan hal-hal yang bekerja sedikit lebih lama.

Lebih buruk lebih baik


Sekarang tidak ada yang mengerti apa pun. Dan tidak mau mengerti. Kami baru saja mengeluarkan omong kosong setengah matang, berharap yang terbaik dan menyebutnya "akal sehat untuk memulai."

Halaman web diminta diperbarui jika terjadi kesalahan. Siapa yang punya waktu untuk menemukan penyebab masalahnya?



Aplikasi web apa pun menghasilkan aliran konstan kesalahan JS "acak", bahkan pada browser yang kompatibel.

Seluruh arsitektur database web / SQL dibangun di atas premis (bahkan harapan) bahwa tidak ada yang akan mengubah data saat Anda melihat halaman web yang terbuka.

Sebagian besar aplikasi kolaborasi melakukan yang terbaik yang mereka bisa, ada banyak skenario khas ketika mereka kehilangan data. Kami melihat dialog "Versi mana yang harus saya simpan?" Hari ini, bilah sangat rendah sehingga pengguna senang bahkan tentang masalah ini.



Dan tidak, di dunia saya aplikasi tidak normal, yang mengatakan: "Saya akan menghancurkan bagian dari pekerjaan Anda, cukup pilih yang mana."

Linux sengaja membunuh proses acak. Namun ini adalah OS server yang paling populer.

Bagaimanapun, setiap perangkat yang saya miliki mengalami crash secara teratur. Dari waktu ke waktu, monitor Dell perlu di-boot ulang perangkat keras karena memiliki perangkat lunak. Airdrop? Anda akan beruntung jika dia menemukan perangkat, jika tidak, apa yang harus saya lakukan? Bluetooth? Spesifikasinya sangat rumit sehingga perangkat tidak akan berkomunikasi satu sama lain , dan reboot berkala adalah pilihan terbaik .



Dan saya bahkan tidak menyebutkan internet . Sangat tidak masuk akal bahwa tidak ada yang ditambahkan.

Saya ingin bangga dengan pekerjaan saya. Saya ingin melakukan pekerjaan, hal-hal yang stabil. Untuk melakukan ini, Anda perlu memahami apa yang sebenarnya kami kembangkan, dalam dan luar, dan ini tidak dapat dilakukan dalam sistem yang terlalu rumit dan membengkak.

Kekacauan yang sama dalam pemrograman


Tampaknya tidak ada orang lain yang tertarik pada solusi berkualitas tinggi, cepat, efisien, tahan lama, dan menyeluruh. Sekalipun solusi efektif telah lama diketahui, kami masih bergumul dengan masalah yang sama: manajemen paket, sistem perakitan, kompiler, desain bahasa, IDE.

Sistem perakitan secara inheren tidak dapat diandalkan dan secara berkala membutuhkan pembersihan lengkap, meskipun mereka memiliki semua informasi untuk cacat. Tidak ada yang mencegah proses perakitan menjadi andal, dapat diprediksi, dan 100% dapat direproduksi. Tidak ada yang berpikir itu penting. NPM telah berada dalam kondisi "kadang-kadang bekerja" selama bertahun-tahun.

@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/id423889/


All Articles