Semuanya luar biasa dalam perangkat lunak, tetapi semua orang tidak bahagia



Ada posisi khas yang dapat ditemukan di Habré dan tidak hanya: "meskipun perangkat keras lebih baik selama bertahun-tahun, manusia telah mengurangi efeknya menjadi tidak ada dengan menulis perangkat lunak yang lebih buruk."

Seperti, ada lebih banyak inti dalam prosesor, tetapi lebih lambat dari sebelumnya. Elektron dan Slack adalah makhluk kegelapan yang telah merampok kebahagiaan dan ingatan kita. Aplikasi seluler menjadi lebih rakus daripada sistem operasi yang lebih lama. Dan dalam sistem operasi itu sendiri tidak ada kemajuan, tetapi untuk beberapa alasan mereka terus membesar. Entah itu ketika orang tahu bagaimana menyesuaikan OS ke floppy disk!

Saya akan mengatakan langsung: ketika saya melihat pernyataan seperti itu, mereka mengebom saya. Menurut saya, mereka kehilangan sejumlah faktor penting. Dan pada akhirnya, situasinya menyerupai pidato klasik Louis X Kay “ Semuanya luar biasa dan tidak ada yang senang": Semuanya sangat baik, dan orang-orang duduk dan mengeluh.

Karena itu, saya memutuskan untuk menggambarkan faktor-faktor yang terlewatkan ini. Karena teksnya ternyata keras, saya ingin menekankan bahwa pendapat saya murni bersifat pribadi (walaupun saya merujuk pada konferensi perusahaan tempat saya bekerja).

Selektivitas memori


Diketahui bahwa ada efek nostalgia "sebelumnya rumput lebih hijau, dan musiknya lebih baik." Tetapi, menurut saya, bagi banyak efek ini mengambil proporsi yang menakutkan, ketika sensasi secara dramatis berbeda dari kenyataan.

Saya berbicara tentang pernyataan seperti ini: "Hampir semua yang ada di komputer terasa lebih lambat daripada tahun 1983." Menilai oleh ribuan suka, ini bukan pendapat yang terisolasi, tetapi pendapat besar.


Reaksi pertama saya: "Yah, bagaimana streaming video 4K pada tahun 1983?" Artinya, sebagai permulaan, mari kita ingat bahwa sebagian besar aplikasi komputer saat ini sebelumnya tidak mungkin, termasuk hanya karena kecepatan. Sekali film (bahkan tidak dalam 4K, tetapi dalam 1080p) harus diunduh selama berbulan-bulan, dan kemudian komputer tidak bisa memutarnya dengan 24 FPS. Dan bagaimana kemudian membandingkan kecepatan saat ini dengan kecepatan yang sangat rendah sehingga tidak ada sama sekali?

Reaksi kedua: ya, beberapa hal yang telah berpindah dari baris perintah ke GUI mungkin memerlukan waktu lebih lama di sana. Saya siap untuk percaya bahwa Word pada tahun 2020 dimulai lebih lambat daripada editor konsol vi pada tahun 1983 (saya pribadi tidak bisa membandingkan: itu adalah pertama kalinya saya berada di komputer saya di tahun 90-an). Tetapi jika ini sangat penting bagi Anda, Anda dapat menggunakan baris perintah untuk banyak "tugas dari 80-an" di tahun 2020 juga. Saya sedang menulis teks ini sekarang di vim - editor hebat yang membantu ekosistem plugin mengikuti perkembangan zaman. Terlihat hebat pada retina iMac modern: huruf menjadi sangat jelas, dan masih berfungsi secara instan. Apa masalahnya?

Tetapi yang paling penting bahkan tidak ada dalam dua hal yang disebutkan. Yang lebih penting adalah sebagai berikut: menurut saya, kami mulai lupa seberapa banyak komputer melambat. Ketika sesuatu mulai melambat lebih kuat, kita segera menyadarinya - tetapi ketika sesuatu menjadi lebih cepat atau lebih mudah, kita hanya menerima begitu saja dan melupakan masa lalu.

Untuk semua orang yang menulis "semuanya dulu lebih cepat," Saya punya pertanyaan ini: apakah Anda ingat, misalnya, ini?


Saya mengakui dengan jujur: Saya sendiri tidak terlalu mengingat ini. Ketika saya mematikan komputer hari ini, saya tidak memikirkan fakta bahwa saya duduk dan menunggu dua puluh tahun yang lalu antara menekan tombol di OS dan menekan tombol pada unit sistem. Saya hanya menerima begitu saja bahwa sekarang tidak begitu diperlukan, dan lupa tentang apa yang berbeda.

Dengan waktu komputer mulai, ada juga perubahan besar. Sekarang saya duduk di aimak, tekan satu tombol, dan setelah satu detik itu siap untuk bekerja (berkat SSD dan mode tidur). Ketika di masa kecil saya sedang menunggu Windows untuk boot dari HDD, saya hampir tidak akan percaya bahwa saya akan hidup untuk melihat itu.

"Ketika dalam sebuah surat ada ratusan gambar, itu terbuka sangat lambat, kadang-kadang bahkan sepuluh detik!" Saya mengerti bahwa ini bisa menjengkelkan - tetapi dengarkan, pada tahun 2000, untuk memeriksa surat, saya pertama-tama menikmati latihan modem selama satu menit, kemudian saya menunggu sampai halaman utama surat dimuat dengan lambat, dan kemudian surat itu sendiri juga tidak dimuat secara instan - dan itu tidak tidak ada gambar sama sekali, hanya teks. Hari ini, ini akan terbuka tanpa penundaan. Mungkin Anda tidak perlu memalu ribuan gambar alat komunikasi yang diciptakan untuk yang lain? Dan sebelum menyatakan "semuanya menjadi buruk", mari kita berpikir: berapa lama surat dengan begitu banyak gambar dibuka pada tahun 2000?

Atau di sini ada memori lain yang hilang dalam waktu, seperti air mata dalam hujan. Lelucon semacam itu sangat populer di tahun 2000-an: "Komputer lambat adalah ketika Anda mengetahui nama-nama semua pengembang Photoshop." Bagi mereka yang ini tidak berarti apa-apa: maka spiral Photoshop sangat populer di Rusia, dan setiap kali diluncurkan, Rusia harus melihatnya untuk waktu yang lama:


Oh, saya menyadari sekarang bahwa saya mengenal salah satu dari orang-orang ini - Sean Parent berbicara di tempat kami C ++ Rusia

Sekarang bandingkan. Hari ini mereka bercanda "setelah butuh dua kilobyte memori untuk meluncurkan seorang pria ke bulan, dan sekarang Anda membutuhkan dua gigabyte untuk meluncurkan Slack." Kedengarannya buruk, tetapi apakah Anda memperhatikan perbedaannya? Tidak peduli berapa banyak konsumsi RAM Slack, pengguna tidak menemui situasi "Anda bisa minum teh di awal program". Semuanya menjadi lebih baik, tetapi kami tidak menyadarinya.

Atau inilah artefak sejarah yang mengungkapkan: seri Masyanya "Unduh" (2002). Pahlawan sangat khawatir tentang pemutusan, di mana Anda harus mengunduh file lagi.


Harap perhatikan: file yang mereka unduh memiliki berat 591 kilobyte. Karakter khawatir harus memuat ulang setengah megabyte. Ini adalah keadaan sebenarnya pada tahun 2002.

Sebagai perbandingan, contoh baru dari kehidupan. Saya memiliki masalah teknis kecil pada Mac saya, pada Stack Overflow, saya menemukan saran "untuk menginstal Xcode dan menerima ketentuan penggunaannya". Reaksi saya: aneh untuk mengunduh IDE 8 gigabyte untuk satu klik, tetapi jika itu membantu, mengapa tidak.

Artinya, ukuran program telah meningkat selama bertahun-tahun (pada masa Masyan dari "8-gigabyte IDE" orang akan menggerakkan rambut mereka), tetapi menjadi lebih mudah untuk mengunduhnya, dan hidup kita menjadi jauh lebih baik.

Nah, contoh terakhir di bagian ini adalah tentang "aplikasi mobile bengkak". Posting yang marah seperti "Kadang-kadang" tulis tentang ini.Ukuran aplikasi di luar kendali ":" sejak kapan LinkedIn mulai mengisi 275 megabita di telepon?! " Pada tahun 2018, adalah mungkin untuk membaca keluhan "setelah menginstal aplikasi, saya hanya memiliki gigabyte untuk foto yang tersisa."

Saya tidak berbohong, 275 megabyte LinkedIn ini juga menimbulkan pertanyaan bagi saya. Tetapi saya ingat bagaimana pada tahun 2010 tentang Habré mereka menulis bahwa Alfa-Bank memiliki aplikasi mobile. Beratnya 30 megabyte - hari ini ukuran seperti itu tidak akan menimbulkan pertanyaan sama sekali. Dan kemudian di komentar mereka menulis:



Apakah Anda tahu mengapa? Pada masa itu, pengguna Rusia dapat berjalan, misalnya, dengan HTC Hero. Mari kita lihat karakteristiknya: "penyimpanan - 512 MB, 165 untuk aplikasi." Total 165 megabyte untuk semua aplikasi yang diinstal! Dalam keadaan seperti itu, saya harus terus-menerus memilih mana yang lebih penting dan mana yang Anda bisa hidup tanpanya. Dan untuk menginstal 30 megabyte, seseorang harus menghancurkan beberapa lainnya sekaligus. Itu menyakitkan.

Dan jika kita bisa kembali ke 2010, dekati orang-orang yang mengalami rasa sakit ini, dan beri tahu mereka frasa dari 2018, "setelah menginstal aplikasi saya hanya memiliki gigabytes untuk foto yang tersisa," Saya pikir kita akan dipukuli. Kata-kata ini tidak akan terdengar keluhan, melainkan ejekan dan sombong.

Dan bahkan sejak 2018, ketika keluhan ini muncul, situasinya berhasil membaik: sekarang anggaran Xiaomi Mi A3 dalam versi dasar dilengkapi dengan 64 gigabita, jadi setelah menginstal aplikasi jelas akan ada lebih dari satu gratis.

Ya, aplikasi telah tumbuh secara signifikan selama 10 tahun. Tetapi volume ruang pada saat yang sama telah menumbuhkan RATUSAN. Artinya, hidup telah menjadi sepuluh kali lebih baik.

Dan apakah Anda ingat apa itu menggunakan smartphone pada tahun 2010 dan berapa banyak rasa sakit yang berbeda "semuanya melambat" di sana?

  • Sejumlah kecil RAM berarti bahwa aplikasi terus-menerus harus berjalan dari awal, dan tidak segera beralih ke yang sudah berjalan.
  • Dan prosesor berdaya rendah dengan sangat lambat meluncurkannya dari awal.
  • Saya tidak ingin mengingat kecepatan Internet seluler.
  • , USB 2.0 .

Menggunakan smartphone tampak seperti harapan yang konstan: apa pun yang ingin Anda lakukan, ini termasuk periode "berdiri dan bisu." Jika Anda berada di jalan dan membutuhkan peta, Anda harus berdiri diam dan tunggu dulu sampai aplikasi mulai menyala, lalu tunggu ketika peta di dalamnya berkenan untuk memuat. Dan Anda membayar secara signifikan untuk lalu lintas yang dikonsumsi pada saat yang sama.

Dibandingkan dengan ini, kita semua sekarang hidup dalam kondisi surgawi, tetapi pada saat yang sama kita secara aktif mengeluh. Sepertinya "masalah dunia pertama" - sesuatu seperti "Saya ingin membaca twitter berbaring, memegang telepon di wajah saya, tetapi kemudian Anda dapat secara tidak sengaja menjatuhkannya pada diri Anda sendiri." Yah, saya bersimpati, tetapi mengatakan dalam situasi seperti itu "semuanya menjadi lebih buruk" sepertinya tidak menghormati masa lalu dan masa kini.

: « » . , , . .



«»


Ada situasi khas lainnya. Orang mengatakan "perangkat lunak menjadi semakin membengkak dan lambat, meskipun bagi pengguna hampir tidak ada yang berubah menjadi lebih baik" - dan pada saat yang sama mereka tidak sepenuhnya menyadari apa yang sebenarnya terjadi di sana.

Sebagai contoh ilustrasi kecil. Pada tahun 2018, ada teks sensasional oleh Nikita Prokopov tentang "perangkat lunak rusak", dan antara lain ada kata-kata "Layanan Google Play yang saya tidak gunakan (saya tidak membeli buku, musik atau video di sana) - 300 MB yang hanya duduk di sini dan yang tidak bisa dihapus. "

Membaca ini, saya ingin dipenuhi dengan kemarahan yang benar, ya. Tetapi ada peringatan: pada kenyataannya, Layanan Google Play bukan tentang "membeli buku". Ini mencakup banyak API yang berbeda, dan, seperti yang dilaporkanWikipedia, "Semua layanan Android utama dikendalikan oleh Layanan Google Play." Artinya, kemungkinan besar, Nikita aktif menggunakan perangkat lunak ini, tidak mengetahuinya sendiri - hanya saja Google memberinya nama yang membingungkan.

Tujuan saya di sini bukan untuk mengkritik posting tertentu, tetapi untuk menunjukkan pendekatan umum: kita sering mengatakan "aplikasi membengkak / melambat tanpa alasan yang baik", tidak sepenuhnya memahami alasan ini. Mereka menambahkan sesuatu ke aplikasi, pengembangnya memiliki informasi terperinci tentang apa yang sebenarnya dan mengapa, tetapi kami tidak memilikinya - tetapi untuk beberapa alasan kami menganggap diri kami lebih kompeten daripada mereka dalam hal ini.

Tetapi di dalam ada banyak hal yang tidak jelas dari luar. Ambil editor teks sebagai contoh: kelihatannya orang telah membuat mereka sejak dahulu kala pada perangkat keras terlemah, semuanya sudah jelas dengan mereka untuk waktu yang lama dan tidak ada yang melambat, "yang bisa lebih mudah." Oleh karena itu, dari luar kelihatannya seperti ini: jika sesuatu tidak segera berhasil, maka pengembang yang bengkok ini telah lupa bagaimana manusia sudah terampil. Tetapi jika Anda menyelami topik (entah bagaimana kami menerbitkan habrapost tentang ini), banyak nuansa tidak jelas yang terungkap dengan jelas - dan kata-kata "apa yang bisa lebih sederhana" tidak lagi terlihat meyakinkan.

Atau satu hal lagi. Berita tentang OS seluler sering memicu reaksi seperti itu: “Selama delapan tahun terakhir, tidak ada yang berguna telah dilakukan di sana. Setiap tahun, dengan keributan, mereka meluncurkan versi baru yang beratnya lebih dari yang sebelumnya, tetapi dari perbedaan saya hanya melihat emoji baru. Di peti mati, saya melihat emoji ini, mengembalikan versi yang lama, itu lebih baik. "



Dengar, nah, sepertinya semua spesialis TI tahu dari pengalaman: Anda dapat menghabiskan banyak upaya pada refactoring dibenarkan backend, dan pengguna bahkan tidak akan menyadarinya, atau Anda dapat mengubah beberapa ikon di antarmuka dalam waktu setengah jam, dan diskusi hangat akan dimulai di antara pengguna. Artinya, kita tahu bahwa "di luar" hanya beberapa perubahan yang terlihat, dan seringkali bukan yang paling penting. Jadi, mengapa kita tidak menyadari bahwa jika kita sendiri hanya melihat emoji di versi baru OS, maka ini berbicara lebih banyak tentang kita daripada tentang OS?

Ambil, misalnya, Project Treble dari Android 8.0. Android diketahui memiliki masalah besar: sementara iPhone dengan mudah diperbarui ke versi OS baru, ponsel android biasanya tetap selamanya dengan versi pra-instal, karena produsen mereka tidak ingin main-main. Dan Google memulai perubahan besar-besaran dari seluruh arsitektur untuk menyederhanakan kehidupan pabrikan dan merangsang pembaruan. Dan meskipun Treble sepenuhnya tidak menyelesaikan masalah sepenuhnya, statistik menunjukkan peningkatan yang nyata. Artinya, untuk mengatasi masalah yang mendesak, Google menginvestasikan banyak pekerjaan (refactoring raksasa seperti itu bukan hal yang baik bagi Anda untuk naik jendela), dan situasinya telah diperbaiki sebagian. Menurut pendapat saya, perusahaan hanya perlu berurusan dengan masalah parah, mereka melakukan segalanya dengan benar.

Sekarang beri tahu saya: jika Anda bukan pengembang seluler, apakah Anda pernah mendengar tentang ini? Ketika Anda pertama kali mengangkat telepon dengan Android 8.0+, apakah itu memengaruhi pendapat Anda tentang versi yang baru? Tidak mungkin, karena pada bulan-bulan pertama menggunakan telepon, ini tidak muncul sama sekali kepada pengguna. Anda hanya dapat melihat setelah beberapa saat kapan versi baru Android akan dirilis. Dan hanya jika pabrikan ponsel itu di antara mereka yang Treble dapat memperbarui perangkat. Dan bahkan dalam kasus ini, pengguna mungkin tidak menyadari bahwa pembaruan itu karena Google, dan masih mengatakan "tidak ada yang berguna telah dilakukan selama delapan tahun."

Dan situasi ini khas - "bagian bawah laut dari gunung es" umumnya besar. Ketika Android memperkenalkan Baterai Adaptif (definisi "pintar", aplikasi mana yang dapat memiliki baterai di latar belakang), apakah Anda mengukur apakah konsumsi daya telepon Anda telah berubah? Ketika Google Play Protect di latar belakang menjaga keamanan Anda, apakah Anda ingat itu tidak pernah terjadi sebelumnya? Ketika Anda menambahkan dukungan untuk codec video AV1, apakah Anda berpikir bahwa masa depan dengan codec ini sangat mungkin dan dukungan seperti itu berguna? Atau apakah Anda hanya mengangkat telepon, dan emoji mencolok, tetapi dukungan AV1 tidak mencolok?

Setelah rilis posting ini, utas indah muncul darilanyperangkat lunak itu membengkak sebagian besar karena penanganan situasi yang jarang. Dan kemudian apa yang terjadi: untuk 1% kasus ketika situasi ini muncul, semuanya menjadi jauh lebih baik - tetapi 99% orang yang tidak menghadapi situasi langka ini tidak dapat menilai perubahan dengan tepat.



Dan dari sini dapat disimpulkan bahwa ketika kita bersumpah secara massal "aplikasi bengkak dan penghambatan", dalam banyak kasus ada alasan obyektif untuk ini. Di suatu tempat, selama jam kerja, orang-orang dengan penuh pertimbangan menimbang semua pro dan kontra, mendiskusikannya satu sama lain, dan sampai pada kesimpulan bahwa kelebihannya lebih besar. Dan kemudian kita datang, kita tidak tahu apa yang ada di timbangan, kita tidak akan menghabiskan waktu untuk belajar dengan bijaksana, kita hanya melihat ukuran yang berubah - dan kita membuat kesimpulan yang yakin "semuanya menjadi buruk".

Kesimpulan umum: beberapa klaim tentang "perangkat lunak yang tidak masuk akal" disebabkan oleh kesalahpahaman. Dan membuat pernyataan seperti itu tanpa studi menyeluruh tentang penyebabnya bukanlah strategi yang paling masuk akal.



Perhatian Kinerja


Pernyataan tentang "perusak perangkat lunak" terdengar seolah-olah pengembang digunakan untuk menghemat daya komputasi, tetapi sekarang mereka semua ingin meludahi optimasi. Seperti, itu hanya penting bahwa itu bekerja - dan bahwa persyaratan untuk zat besi tinggi, sehingga hukum Moore entah bagaimana akan merusak segalanya. Jika kode dieksekusi perlahan, ia memakan memori seolah-olah menjadi dirinya sendiri dan membutuhkan banyak ruang - dan begitulah, tidak ada yang akan khawatir tentang hal itu dan meningkatkan sesuatu.

Dengar, ini tidak benar. Sebagai contoh terpisah: Facebook Messenger baru-baru ini ditulis ulang, dan dilaporkan bahwa produktivitas meningkat dua kali lipat dan ukurannya empat kali lipat. Dan dengan kata-kata di atas bahwa aplikasi LinkedIn memiliki berat 275 megabyte - Saya memeriksanya sekarang dan melihat kata-kata "195,4 MB" di App Store, tampaknya mereka juga berhasil menguranginya satu setengah kali. Artinya, kedua perusahaan jelas memikirkan konsumsi sumber daya, dan mengalokasikan banyak tenaga kerja untuk menguranginya, yang dapat dihabiskan untuk “menggerus fitur”.

Dan karena saya bekerja dengan konferensi untuk pengembang dan bersinggungan dengan banyak dari mereka (dan dari tumpukan yang berbeda), saya bisa melihat topik mana yang mereka pedulikan. Apa yang mereka dengarkan tentang laporan, apa yang mereka bicarakan dan tulis posting.

Dan produktivitas adalah salah satu dari topik tersebut. Dengan nama laporan seperti "Mengoptimalkan waktu peluncuran aplikasi iOS"dapat dilihat: pengembang bersedia meluangkan waktu 60 menit untuk mendengarkan sekitar milidetik.

Mereka berbicara tentang kinerja di mana-mana - bahkan di dunia JavaScript ( "Kinerja JavaScript melalui spyglass" ), setidaknya dalam pengembangan seluler ( "Bagaimana cara menyesuaikan satu juta bintang di iPhone" ). Tetapi kebanyakan dari semua yang mereka katakan di backend. Saya pikir ini karena pengguna membeli smartphone untuk diri mereka sendiri, tetapi di backend, perusahaan membayar untuk daya komputasi, jadi ada motivasi finansial yang kuat untuk mengoptimalkan.

Baru-baru ini saya melakukan percobaan sederhana: Saya membuka program JPoint Java-conference kamidan melihat berapa banyak deskripsi kinerja yang ada tentang kinerja. Kemudian, karena coronavirus, kami menunda konferensi hingga Juni, sehingga program dapat berubah, tetapi hasilnya mengindikasikan apa pun. Mereka:

  • "Pembicaraan ini adalah tentang penyetelan kinerja Produser."
  • “Pertimbangkan metode optimasi I / O file”
  • "Mungkin untuk salah satu modul yang Anda inginkan lebih banyak kinerja daripada yang bisa Anda peras keluar dari Jawa?"
  • “Optimalisasi terkait safepoint apa yang dilakukan HotSpot JVM?” Apa yang harus diingat pengembang untuk menghindari jeda yang tidak diinginkan? "
  • “Proyek Valhalla, tipe sebaris dan segala sesuatu di sekitarnya, dari model perangkat lunak hingga kinerja”
  • "Optimalkan kinerja permintaan, throughput, dan konsumsi memori"
  • "Laporan ini ditujukan untuk analisis terperinci tentang bagaimana proses penulisan ke database Apache Cassandra terjadi dalam hal kinerja."

Dengar, jika aku melakukan eksperimen ini sebagai permainan minum, maka pada akhirnya aku akan mabuk. Dengan mata telanjang Anda dapat melihat: Pengembang Java peduli bagaimana mereka membuat kode mereka tidak hanya berfungsi, tetapi juga cepat.

Selain itu: sering kali itu bahkan membuat mereka terlalu bersemangat! Dari orang-orang yang terlibat erat dalam kinerja, saya telah berulang kali mendengar bahwa mudah untuk melakukannya secara berlebihan. Misalnya, demi sedikit peningkatan produktivitas, orang menggunakan beberapa jenis peretasan kotor, yang pada akhirnya menciptakan lebih banyak masalah daripada yang mereka pecahkan. Nah, tentang hal itu dalam keynote indah dari Alexey Shipilev di JPoint 2017, kami melakukan dekripsi untuk Habr .



Untuk meringkas: sementara Internet menyesalkan "para pengembang malas dan benar-benar berhenti memikirkan rem", pada kenyataannya, banyak pengembang berpikir lebih banyak tentang mereka daripada yang diperlukan .



Makna dan kemanfaatan


Dan sekarang, menurut saya, tesis yang paling penting.

Ya, aplikasi dari waktu ke waktu membutuhkan lebih banyak sumber daya, kadang-kadang dengan urutan besarnya. Ya, kami mulai menarik lebih banyak ke dalam proyek kami, bahkan ketika ada sesuatu yang tidak terlalu diperlukan di sana, daripada menghabiskan waktu untuk mengisolasi "sangat diperlukan". Itu benar.

Tapi saya percaya bahwa aplikasi yang dikembangkan tidak membuat pengembang hari ini tidak kompeten. Selain itu, yang terjadi adalah sebaliknya:

Pengembang akan menjadi bodoh jika aplikasi TIDAK tumbuh.

Bayangkan sebuah dunia di mana perangkat keras berkembang aktif, dan pendekatan untuk pengembangan perangkat lunak tetap sama. Program akan tetap sesuai dengan volume floppy disk, meskipun tidak ada yang akan menggunakan floppy disk itu sendiri. Atas nama kinerja, hampir semuanya akan ditulis dalam C ++. Semua pengembang akan terus turun ke level rendah dan tahu setiap tempat di mana beberapa byte dapat diekstraksi. Tidak ada "sekarang kami akan menginstal lima perpustakaan untuk tugas ini", hanya solusi yang telah diverifikasi dengan cermat untuk proyek tertentu, di mana tidak ada jalur tambahan. Secara umum, hari libur optimasi dan pendekatan yang cermat untuk sumber daya. Semua itu sekarang disesali sebagai "keterampilan yang hilang."

Apakah Anda tahu kesan apa yang dihasilkan gambar ini pada saya? Sebuah keluarga besar terpaksa tinggal di satu ruangan kecil, jadi dia belajar cara menempatkan barang-barang dengan akurasi milimeter dan menguasai seni rahasia membuat tempat tidur lima tingkat. Dan kemudian dia pindah ke apartemen multi-kamar yang luas - tetapi karena kebiasaan dia hanya mengambil satu kamar di sana, dia meninggalkan semua yang lain kosong. Orang-orang masih duduk di atas kepala masing-masing.

Pertanyaan: Apakah Anda pikir ini gila? Jika mungkin memberi semua orang banyak ruang, lalu mengapa menyimpannya? Siapa yang lebih baik dari pengerjaan kuno tempat tidur lima tingkat, jika pada saat yang sama tidak ada tempat untuk mengundang seseorang untuk dikunjungi? Apakah sudah waktunya untuk menguasai keterampilan baru memilih tempat tidur ukuran raja?

Hal yang sama berlaku dalam perangkat lunak. Jika di era ketika smartphone yang memiliki anggaran masing-masing memiliki 64 gigabytes, kita akan mengalami “Kotlin runtime akan meningkatkan aplikasi kita dengan megabytes”, maka kita akan berubah menjadi keluarga ini. Tenang, tempat untuk itu perlu ada sesuatu di dalamnya. Jika sia-sia, tidak ada yang lebih baik. Jika ada banyak ruang, dan untuk beberapa alasan piano diperlukan, maka Anda dapat dengan aman memasangnya tanpa khawatir tentang sentimeter persegi.

Slack - ini adalah piano. Oke, dia makan banyak memori, tetapi pernahkah Anda mendengar orang-orang non-IT mengeluh tentangnya seperti dulu mengeluhkan Photoshop? Menurut perasaan saya, pengguna biasa sudah memiliki cukup ruang sehingga "piano" ini tidak mencegah mereka dari "berjalan di sekitar ruangan". Ya, Anda bisa menggantinya dengan piano dan menghemat ruang. Tetapi jika Anda tinggal di istana, dan selama bertahun-tahun area istana menjadi lebih besar, lalu mengapa?

Menurut pendapat saya, karena Slack, kebanyakan orang IT berpengalaman yang membutuhkan RAM untuk tugas-tugas sulit lainnya. Tetapi orang-orang IT adalah cerita yang berbeda: mengembangkan metafora apartemen, ini adalah orang-orang yang bengkelnya terbuat dari sebuah apartemen. Ya, tidak peduli apa pun istana yang Anda berikan, semua kamar akan ditempati dengan sesuatu yang sangat penting. Dan kemudian piano bisa mengganggu, karena Anda bisa meletakkan bubut sebagai gantinya. Tetapi kebanyakan orang di dunia hidup secara berbeda, mereka tidak membutuhkan mesin bubut di rumah, dan sudah ada sumber daya yang cukup untuk gaya hidup mereka.

Dan dalam situasi seperti itu, sangat terburu-buru untuk menghindari segala sesuatu yang menghabiskan memori, ketika sudah ada banyak hal - seperti halnya dengan manajer tugas seluler, di mana pengguna mengalahkan aplikasi yang sedang berjalan untuk "membersihkan RAM". Sering kali, pencipta platform seluler mengatakan: "Hentikan, orang gila. Sistem itu sendiri akan mematikan aplikasi jika tidak ada cukup memori, dan mengapa harus dipaku sebelumnya? Apa gunanya membeli smartphone dengan jumlah RAM yang besar, lalu menjaganya tetap kosong dan tidak menggunakan apa yang dibayarnya? ”


Itu terlihat dioptimalkan. Apakah kamu ingin tinggal di sini?

Dan saya juga ingat cerita dengan "kesalahan 2000". Seseorang dari spesialis IT dari pertengahan abad XX di usia tua mengenang: “Kami termasuk di antara mereka yang melahirkannya. Kami kemudian menyimpan setiap byte. Dan ketika kami datang dengan gagasan bahwa Anda dapat mempertahankan tahun dalam dua angka, bukan empat, kami merasa sangat pintar. Kami menyimpan dua byte di tumpukan tempat! Dan hanya menjelang akhir abad ini konsekuensinya menjadi jelas. "

Ya, saat itu merekam tahun dalam dua digit mungkin tampak seperti keputusan yang masuk akal. Dan secara langsung mewujudkan semua pendukung advokat pendekatan "hati-hati". Di sinilah mereka benar-benar pergi ke batas dalam merawat sumber daya.

Tapi kemudian, bertahun-tahun kemudian, orang lain harus menghabiskan banyak sumber daya untuk mencari tahu konsekuensi dari keputusan ini dan mencegah masalah.

Dan sekarang, ketika dua byte yang disimpan tidak akan lagi membantu siapa pun, dan konsekuensi negatifnya diketahui, akan sangat aneh untuk mempertahankan tahun seperti ini.

Jadi: banyak dari apa yang ingin saya nyanyikan hari ini sebagai "konservasi sumber daya yang masuk akal" di masa depan akan terlihat seperti "penghematan pada pertandingan" yang sama, yang menghabiskan lebih banyak sumber daya daripada menghemat. Misalnya, karena waktu pengembang juga merupakan sumber daya paling berharga, dan sering kali tidak dimasukkan dalam perhitungan di sini. Jika Anda telah melampaui penyelarasan data, dan aplikasi Anda menjadi sedikit lebih kecil dan lebih cepat, tetapi Anda menghabiskan waktu seminggu untuk ini, yang bisa saja menjadi fitur yang bermanfaat, apakah Anda membuat pengguna lebih baik atau lebih buruk?

, « , , ». .

— . , , .

, - ( ), . .




Saya mengantisipasi keberatan dalam komentar: "Tapi tugas X mulai dilakukan lebih lambat untuk saya daripada 13 tahun yang lalu, berikan saya kembali 2007 saya."

Jangan salah paham: Saya tidak berusaha mengatakan bahwa tidak ada tugas seperti itu. Ada . Dan ketergantungan yang berlebihan memang terjadi. Dan bloatware terjadi. Ketika saya mendengar bahwa ada pengeditan video di Photoshop, saya mengalami perasaan "mengapa" yang sama dengan Anda. Ketika saya membaca bahwa membuat aplikasi apa pun dengan create-react-app segera berarti 4304 direktori dengan 28678 file di dalamnya, saya juga memiliki pertanyaan apakah kami telah pergi ke tempat lain. Ada banyak masalah nyata yang layak dibicarakan.

Satu-satunya klaim saya adalah bahwa sehubungan dengan masalah-masalah ini ada semacam sekte radikal yang percaya pada akhir dunia karena proliferasi perangkat lunak. Mereka menulis ulang sejarah dalam sekte ini ("dulu bekerja lebih cepat!"), Kesalahpahaman apa yang terjadi ("mengapa Windows telah tumbuh selama bertahun-tahun, tidak ada yang benar-benar berubah di sana"), hal-hal yang tidak selayaknya dikatakan tentang pengembang ("mereka tidak ingin mengoptimalkan apa pun) ") Dan pergi ke ekstrem" mari kita simpan setiap byte, bahkan ketika itu membuat pengguna lebih buruk. " Jangan lakukan itu.

Keberatan saya terhadap posisi radikal, tentu saja, ternyata juga agak radikal (hanya ke arah yang berlawanan). Mereka juga bisa disalahkan, dan mereka juga bisa disebut sekte. Tetapi tujuan dari posting ini bukan untuk membuat setiap kata saya dianggap sebagai kebenaran tertinggi. Tujuannya adalah untuk membuat orang kurang terlibat dalam sekte.

Kesimpulan utama adalah membosankan dan dangkal, tetapi tidak kalah benar: semuanya tergantung pada situasi tertentu. Optimalisasi bukanlah kejahatan absolut dan bukan kebaikan mutlak. Mereka berdua bisa membantu dan membahayakan. Ada situasi di mana optimalisasi jelas sepadan, dan situasi di mana mereka jelas tidak sepadan. Dan ada situasi perantara di mana orang yang berbeda akan menganggap "layak atau tidak" dengan cara yang berbeda, dan tidak ada yang lebih benar, dan ini normal.

Dan jika seseorang, termasuk saya, memberi tahu Anda sebaliknya - ini adalah sektarian, kejar dia di leher.

All Articles