Saya mendasarkan ini terutama assembler yang saya gunakan - terutama MASM, NASM, dan (pada tingkat lebih rendah) TASM. Beberapa versi TASM yang lebih baru memiliki (memiliki?) Beberapa fitur untuk mendukung OO, tetapi saya belum menggunakannya banyak, dan saya tidak mencoba mengomentarinya.
Pertama: sebagian besar bahasa telah bergerak ke arah struktur yang setidaknya agak mirip pohon. Apakah berorientasi objek, atau berbasis objek, atau tepatnya apa, ada cukup banyak definisi tentang hubungan antara berbagai bagian sistem. Ada juga sedikit untuk "melindungi" satu bagian dari sistem dari "campur tangan" yang tidak disengaja tetapi bagian lain (meskipun perlindungan biasanya dapat dilewati jika Anda mau). Sebaliknya, bahasa assembly relatif "datar" - sebagian besar hubungan antara kode (dan data) di berbagai bagian sistem dibuat terutama oleh dokumentasi dan pada tingkat yang lebih rendah, konvensi penamaan.
Hasil dari ini adalah bahwa seringkali lebih mudah untuk memasangkan kode jauh lebih erat daripada yang ideal. Persyaratan yang mendorong pemilihan bahasa rakitan untuk mulai dengan (kinerja yang lebih tinggi, ukuran yang lebih kecil, dll.) Sering menghargai ini juga - dengan mem-bypass antarmuka yang disetujui dan Anda sering dapat memperoleh kode yang lebih kecil dan lebih cepat (meskipun biasanya tidak banyak. lebih baik dalam dimensi apa pun). Bahasa dan alat itu sendiri melakukan jauh lebih sedikit untuk membatasi apa yang Anda lakukan (baik atau buruk), yang menempatkan beban yang jauh lebih besar pada manajer untuk mencegah masalah. Saya tidak akan mengatakan itu berbeda secara kualitatif, tetapi secara kuantitatif memang - yaitu, manajemen harus bekerja untuk mencegah masalah dengan cara apa pun, tetapi dalam kasus bahasa majelis biasanya dibutuhkan lebih banyak (dan seringkali lebih ketat) pedoman tentang apa yang ada atau tidak. tidak dapat diterima.
Mengurangi ini sebagian besar adalah masalah pedoman yang lebih hati-hati, lebih banyak bimbingan dari personel yang lebih berpengalaman, dan konvensi penamaan yang ditegakkan dengan lebih khusus dan lebih hati-hati.
Kepegawaian adalah masalah. Masalah yang saya temui, di mana, terutama bukan yang saya harapkan. Menemukan cowok dengan kepribadian "pejuang tempur" yang senang terjun ke kode bahasa assembly cukup mudah. Sebagian besar melakukan pekerjaan yang cukup masuk akal, meskipun hampir tidak memiliki pengalaman sebelumnya dalam menggunakan bahasa assembly.
Kesulitan yang saya temui adalah dalam menemukan personil yang lebih senior - orang-orang yang dapat menjaga proyek di bawah setidaknya beberapa kemiripan kontrol, dan tidak sepenuhnya terbiasa dengan bahasa yang akan memberikan (dan sebagian besar menegakkan) pedoman yang diperlukan untuk menjaga kode secara wajar dipelihara dan dimengerti.
Melihat ke belakang, saya mungkin telah / menyebabkan beberapa masalah terbesar dalam hal itu. Saya dapat melihat dua sumber masalah di pihak saya. Pertama, pada saat proyek aku memikirkan, saya telah coding terutama dalam bahasa tingkat yang lebih tinggi selama beberapa waktu, dan menggunakan bahasa assembly hanyasebagai pilihan terakhir. Karena itu, ketika saya menggunakannya, hampir setiap trik yang mungkin untuk mendapatkan kinerja bukan hanya permainan yang adil, tetapi juga diharapkan. Kedua, ketika saya telah bekerja pada beberapa sistem yang sepenuhnya ditulis (atau terutama) dalam bahasa assembly, itu berada di bawah beberapa manajer proyek yang agak terkepal. Pada waktu itu saya masih relatif muda, dan terus terang membenci cara mereka menjalankan sesuatu, jadi cenderung melakukan yang sebaliknya. Dalam retrospeksi, apa yang mereka lakukan benar-benar penting, dan tidak dilakukan hanya karena mereka sudah tua dan tidak fleksibel (yang, saya cukup yakin adalah bagaimana saya melihat sesuatu pada saat itu).