Mendokumentasikan bahasa pemrograman: Referensi Manual


12

Kami sedang melihat pembenahan dokumentasi di seluruh lini produk kami. Bagian dari itu termasuk manual referensi untuk bahasa pemrograman yang digunakan sebagai bagian dari sistem.

Saat menulis manual referensi untuk bahasa pemrograman, apa cara terbaik untuk menyusunnya agar dapat digunakan secara maksimal bagi yang baru menggunakan bahasa tersebut?

Apa aspek utama untuk setiap kata kunci yang didokumentasikan?

  • Sintaksis
  • Deskripsi
  • Argumen - jika ada
  • Nilai pengembalian - jika berlaku
  • Contoh penggunaan?
  • Adakah yang lain yang saya lewatkan?

Haruskah konsep (seperti strategi penguncian, detail terkait kinerja) juga didokumentasikan dalam manual referensi ini, atau apakah itu dokumen yang terpisah?


Ini untuk konsumsi eksternal. Kami sudah memiliki set dokumen lengkap (lihat: http://www.rocketsoftware.com/u2/resources/technical-resources ). Mengerjakan apa yang harus kita lakukan berbeda - saya sudah punya ide, tetapi seperti biasa, saya berusaha untuk tidak hanya mengandalkan pendapat saya.

Pemirsa: Pengembang teknis menggunakan basis data & alat kami untuk menghasilkan perangkat lunak di banyak industri.


Mengapa Anda perlu mendokumentasikan bahasa? Apakah ini bahasa yang dibuat khusus atau khusus? Bukankah sudah memiliki dokumentasi? Dan jika tidak, mengapa Anda memilihnya?
yannis

@YannisRizos - Saya pikir Anda dapat menganggap itu adalah bahasa skrip / makro kustom, bukan berarti mereka bermaksud mendokumentasikan C ++. Umumnya dokumen untuk bahasa seperti itu adalah sumber parser - karena pelaksana bahasa sering kali adalah pengguna utama
Martin Beckett

2
@DanMcGrath Baiklah, ya, mengetahui audiens dan level / volume dokumentasi yang ada akan memengaruhi bagaimana saya akan menulis manual referensi. Apakah hanya untuk penggunaan internal?
yannis

1
@ Telastyn - Ya, ini bersifat publik. Kami memiliki lebih dari sekadar manual referensi, tetapi pertanyaan ini khusus pada aspek itu: rocketsoftware.com/u2/resources/technical-resources
Dan McGrath

1
Lihatlah dokumen Lua untuk contoh yang bagus dari manual referensi yang ditulis dengan baik dan fokus. Memperkenalkan bahasa adalah tugas dari sebuah buku terpisah, Programming in Lua. Pembagian tanggung jawab bekerja dengan baik, setidaknya untuk saya.
yamad

Jawaban:


16

Atur dokumentasi sesuai dengan kebutuhan audiens target.

Dalam kasus Anda, audiens utama tampaknya adalah pengembang perangkat lunak. Bagian yang perlu dipertimbangkan di sini adalah untuk mengatasi "sub-audiens" yang berbeda dari yang ini:

  1. Halo Dunia.
    Mereka yang ingin cepat merasakannya, hanya membangun dan menjalankan aplikasi sampel untuk melihat tampilannya.
    Pikirkan audiens seperti yang ditangani oleh MySQL "aturan 15 menit" :

    ... seorang pengguna untuk dapat menjalankan MySQL dan berjalan 15 menit setelah dia selesai mengunduhnya.

  2. Fundamental.
    Untuk orang-orang yang mau dengan cepat mempelajari hal-hal yang diperlukan untuk mulai memproduksi perangkat lunak yang berfungsi
  3. Topik lanjutan.
    Untuk pengembang yang sudah akrab dan berlatih dengan fundamental, tertarik untuk mengetahui apa yang ada di luar sana. Topik arus utama yang belum tercakup dalam Fundamentals .
  4. Panduan Gaya / Praktek yang Disarankan.
    Saran dan bimbingan subyektif untuk mereka yang tertarik dengan cara Anda merekomendasikan untuk melakukan sesuatu.
    Pertanyaannya tidak menunjukkan apakah ini dapat memiliki audiens yang besar dalam kasus Anda, jadi opsi yang perlu dipertimbangkan adalah memasukkannya sebagai bagian / lampiran dari topik Tingkat Lanjut atau bahkan menjatuhkannya sepenuhnya.
  5. Keanehan.
    Topik tidak jelas, di luar arus utama, yang mungkin menarik bagi sebagian kecil audiens Anda. Misalnya, jika Anda memiliki legacy line, atau hal-hal seperti peningkatan / migrasi / interoperabilitas dengan legacy - taruh di sini. Jika ada beberapa efek samping untuk beberapa fungsi di lingkungan "eksotis" tertentu, itu berlaku di bagian ini.
Audiens sekunder Anda adalah pengelola manual. Orang-orang ini dapat membuat atau menghancurkan cara kerja audiens utama Anda, sehingga Anda lebih baik mengurus kebutuhan dan masalah mereka.

Bagaimana jika sesuatu dalam manual ini dipertanyakan / ambigu? Bagaimana jika ternyata penjelasan menyeluruh tentang konsep tertentu akan membuat manual itu terlalu sulit untuk dibaca? Bagaimana jika ternyata versi manual tertentu memiliki kesalahan?

Dua hal yang perlu dipertimbangkan untuk pengelola adalah:

  1. Spesifikasi teknis / formal.
    Setiap kali ada topik yang dipertanyakan / ambigu / sulit dijelaskan dalam manual, pembaca dapat dirujuk ke paragraf tertentu dalam spesifikasi untuk pernyataan "resmi" yang ketat dan jelas. Deskripsi sintaks bahasa yang ketat dan lengkap (dan kemungkinan besar membosankan) akan lebih baik masuk ke sana.
    Pertimbangan terpenting untuk Spesifikasi adalah keakuratan dan kelengkapan teknis, meskipun hal ini harus mengorbankan keterbacaan.
  2. Suplemen online.
    Hanya cadangan beberapa URL dan letakkan di awal setiap dokumen yang Anda rilis, sehingga orang-orang bertanya-tanya apa yang baru saja mereka baca bisa pergi ke sana (alih-alih mengganggu pengelola manual) dan menemukan kesalahannya dijelaskan.

    Errata> Fundamentals> Release 2.2> Typo di halaman 28, kalimat kedua dimulai dengan keberuntungan , bacalah kunci .

Konsep seperti strategi penguncian, detail terkait kinerja harus dimasukkan (mungkin sebagian) di mana Anda mengharapkan audiens target membutuhkannya.

Misalnya, pengelola manual tampaknya tertarik pada deskripsi lengkap dan akurat tentang konkurensi dan mengunci spesifikasi formal - letakkan di sana. Pembaca topik Fundamental atau Lanjutan mungkin tertarik dalam ikhtisar / pengantar / panduan diekstraksi dari spesifikasi dan disesuaikan dengan kebutuhan mereka dll.


Mungkin bermanfaat untuk mengatur studi perbandingan dokumentasi referensi yang disediakan untuk bahasa lain seperti bahasa Anda. Tujuan penelitian ini untuk meningkatkan pengalaman yang diperoleh oleh mereka yang melakukannya sebelumnya dan belajar bagaimana menghindari kesalahan yang mereka buat.

Yang terakhir tetapi tidak kalah pentingnya, pertimbangkan untuk mengatur pengembangan dokumentasi dengan cara yang mirip dengan pengembangan perangkat lunak. Maksud saya hal-hal seperti kontrol versi, rilis reguler, pelacakan masalah, jaminan kualitas dll. Anda mungkin ingin membuat beberapa kompromi meskipun jika ternyata penulis teknis Anda tidak begitu nyaman dengan hal-hal seperti itu. Kami tidak ingin mendapatkan konten jelek "sebagai imbalan" untuk proses pengembangan yang sempurna, bukan?


@DanMcGrath satu lagi tip untuk proses pengembangan dokumen: pertimbangkan pendekatan push-track-backout-repeat . 1) mendorong penulis teknologi untuk mempercepat proses 2) melacak kualitas dokumen sambil mendorong 3) jika ada penurunan kualitas, mundur ke proses "lebih lembut" 4) beberapa waktu kemudian - setelah mereka terbiasa dengan level saat ini - ulangi push ke yang lebih ketat. Dan seterusnya, dan seterusnya sampai Anda 100% di sana. :)
agas

1
Saya punya satu berdalih. Apa yang Anda uraikan adalah tutorial atau serangkaian tutorial. Tutorial bukan panduan referensi. Tutorial menjelaskan cara kerja bahasa tersebut, sementara panduan referensi membuat katalog elemen-elemen bahasa. Baik tutorial maupun panduan referensi itu penting, tetapi keduanya saling melengkapi.
Gilbert Le Blanc

@GilbertLeBlanc pertanyaannya adalah tentang "manual referensi" yang saya (dan saya pikir Wikipedia ) anggap cukup luas untuk mencakup hal-hal dalam jawaban saya
nyamuk

5

Hal pertama yang perlu Anda lakukan adalah mengevaluasi audiens. Apakah audiens Anda adalah peretas kernel Linux atau mereka perancang perangkat keras yang menggunakan alat perangkat lunak untuk melakukan pekerjaan tetapi tidak tertarik dengan perangkat lunak itu sendiri dan tidak memiliki latar belakang CS. Insinyur listrik mungkin tidak sepenuhnya jelas tentang perbedaan antara argumen const dan non-const, pointer ke objek versus referensi, dll. Jika primitif Anda memiliki nama yang berlebihan, maka Anda sebaiknya menjelaskan konsep itu pada tingkat yang sesuai untuk audiens Anda, yang mungkin tidak ada artinya jika mereka adalah programmer C ++.

Hal kedua yang perlu Anda evaluasi adalah granularitas primitif bahasa. Semakin halus rinciannya, semakin Anda perlu memberikan contoh penggunaan yang sesuai dengan spesifikasi sintaksis masing-masing primitif. Yaitu, jika Anda memiliki primitif tingkat rendah yang instantiate beberapa konteks, dan Anda perlu beroperasi dengan tiga primitif tingkat rendah lainnya sebelum Anda dapat melakukan sesuatu yang berguna, maka Anda lebih baik memiliki contoh lengkap dari beberapa fungsi yang berguna dekat- oleh dalam manual. Lihat dokumentasi openssl online untuk contoh tandingan dari dokumentasi yang hampir tidak dapat digunakan.

Pastikan untuk memasukkan penjelasan tentang efek samping dari fungsi Anda.

Dalam hal apa pun, jika Anda tidak ingin pemrogram pelanggan Anda mengutuk Anda setiap malam sebelum tidur, sertakan banyak kode contoh yang diuji yang melakukan beberapa primitif fungsional tingkat tinggi. Pastikan bahwa contoh tidak hanya potongan kode, tetapi lengkap dan dapat dikompilasi atau dapat dijalankan di luar kotak.

Secara tradisional, penulis teknologi telah membedakan antara manual referensi dan panduan pengguna . Manual referensi biasanya mencakup spesifikasi sintaksis, definisi fungsi atau primitif yang dapat dimengerti, diskusi tentang gotcha, kinerja dan efek samping, dan contoh penggunaan singkat. Panduan pengguna mencakup contoh penggunaan yang lebih luas dan diskusi tentang masalah teknik yang lebih luas. Kernigan dan Ritchie "Bahasa Pemrograman C" adalah contoh yang sangat baik untuk konvensi ini, tetapi pendekatan ini hanya berfungsi ketika bahasa yang Anda dokumentasikan relatif sederhana.

Penulis adalah manajer Divisi Layanan Rekayasa di pusat pengembangan Ready Systems Inc antara 1987 dan 1991 dengan tanggung jawab untuk mengelola tim yang terdiri dari lima penulis teknologi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.