Apa alasan untuk menggunakan nama panggilan sistem yang tidak diceritakan seperti time
dan creat
bukannya getCurrentTimeSecs
dan createFile
atau, mungkin lebih cocok di Unix get_current_time_secs
dan create_file
. Yang membawa saya ke poin berikutnya: mengapa seseorang menginginkan sesuatu seperti cfsetospeed
tanpa kasing unta atau setidaknya menggarisbawahi agar dapat dibaca? Tentu saja panggilan akan memiliki lebih banyak karakter tetapi kita semua tahu bahwa keterbacaan kode lebih penting bukan?
history
posix
system-calls
Benjoyo
sumber
sumber
ls -la | grep
akan terlihat seperti:listAllHiddenAndNormalFiles() | globallySearchARegularExpressionAndPrint()
.Jawaban:
Itu karena kendala teknis saat itu. Standar POSIX dibuat pada 1980-an dan disebut UNIX, yang lahir pada tahun 1970. Beberapa kompiler C pada waktu itu terbatas pada pengidentifikasi yang panjangnya 6 atau 8 karakter, sehingga memenuhi standar untuk panjang variabel dan fungsi nama.
Pertanyaan-pertanyaan Terkait:
sumber
get_current_date()
danget_current_time()
tidak dapat dipisahkan oleh beberapa rantai alat awal ini. Alasannya adalah bahwa sistem ini bekerja pada jejak kaki kecil beberapa kilobyte.creat()
. Ken Thompson pernah ditanya apa yang akan dia lakukan secara berbeda jika dia mendesain ulang sistem UNIX. Jawabannya: "Saya akan mengejanya dengan e."dr01 benar, tetapi ada juga alasan lain - kegunaan. Kembali pada hari itu, Anda tidak memiliki sesuatu yang senyaman keyboard untuk mengetik. Jika Anda beruntung, Anda memiliki sesuatu yang mirip dengan mesin tik jadul. Jika Anda kurang beruntung, Anda harus berurusan dengan sistem yang membutuhkan pekerjaan fisik yang sebenarnya untuk beroperasi (seperti, butuh banyak kekuatan untuk menekan "kunci"), atau Anda secara manual menekan lubang pada kartu.
Ini berarti bahwa bahkan dalam batas 6-8 karakter, Anda mencoba untuk menjaga perintah Anda sesingkat mungkin. Itu sebabnya Anda memiliki
ls
alih - alihlist
, dancreat
bukannyacreate
. Kode dari era itu penuh dengan variabel sepertia
,x
dani
- dan tentu saja,x2
dan teman-teman. Mengetik adalah pekerjaan yang berat - hari ini, Anda tidak terlalu giat mengetiklistIndex
daripada mengetik "mengetik"i
- dan bahkan tidak lagi lebih lambat (terutama dengan teknologi tambahan seperti pelengkapan otomatis).Pertanyaan sebenarnya adalah - mengapa begitu banyak idiom Unix bertahan meskipun mereka tidak lagi diinginkan?
sumber
time
menjadigetCurrentTimeSecs
atau sesuatu seperti itu, saya akan berhenti memutakhirkannya. Bahkan dengan keyboard saya yang nyaman dan perangkat keras terbaru, nama-nama ini tetap sangat nyaman dan sederhana (kesederhanaan menjadi salah satu dasar UNIX). Saya benar-benar tidak merasa perlu membawa penamaan gaya Java / C # ke dalam bahasa C, apalagi di kernel Linux. IMO, dari perspektif pengembang kernel, atau pengembang UNIX secara umum, idiom ini tidak mendekati yang tidak diinginkan .unRootlyLongNamed.Packaged.nonsensicalFunction
adalah jelek bagi saya, dan saya lebih suka menjadi yakin apa yang dilakukannya dengan melakukanman 2 time
daripada menebak apa yang tampaknya melakukan.get_X
atauremove_file_from_cache
(mungkin saya mengusulkanrmfc
?) Yang tidak diinginkan kernel pengembang, silakan lakukan publik - saya akan senang untuk melihat reaksinya.Selain jawaban lain, saya ingin menunjukkan bahwa Unix dikembangkan sebagai reaksi terhadap Multics, CTSS, dan sistem operasi kontemporer lainnya, yang secara signifikan lebih bertele-tele tentang konvensi penamaan mereka. Anda bisa merasakan OS ini di http://www.multicians.org/devdoc.html . Misalnya, http://www.multicians.org/mspm-bx-1-00.html memberikan
change_name
perintah untuk mengganti nama file; bandingkan Unixmv
.Juga, alasan utama mengapa nama panggilan sistem yang paling singkat tetap ada adalah kompatibilitas. Anda akan melihat bahwa API yang lebih baru cenderung lebih eksplisit; misalnya
gettimeofday
danclock_gettime
bukannya adiltime
.(Bahkan hari ini, menggunakan
whateverIndex
alih-alihi
untuk indeks lingkaran adalah kegagalan tinjauan kode otomatis dalam buku saya ;-)sumber
i
tidak masalah untuk indeks ketika Anda, katakanlah, iterasi array. Koordinat? Gunakanx
dany
. Menelusuri beberapa ordinal? Jadilah deskriptif.)Dennis Ritchie menetapkan batasan pada dirinya sendiri bahwa C tidak akan bergantung pada fitur tautan yang tidak diperlukan oleh Fortran. Oleh karena itu batas 6 karakter pada nama eksternal.
sumber