1 poin oleh GN⁺ 1 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Inverse Sapir-Whorf berfokus bukan pada apa yang sulit dipikirkan oleh bahasa, melainkan pada apa yang sulit untuk tidak dikatakan dan informasi apa yang dipaksa untuk diungkapkan
  • Present tense bahasa Inggris, kata ganti berjenis kelamin, nomina berjenis kelamin dalam bahasa Prancis, dan bentuk lampau mış dalam bahasa Turki mendorong penutur untuk menyatakan informasi seperti sifat sementara, gender, atau sumber serta keandalan informasi
  • Dalam bahasa pemrograman juga, sering kali pengembang dipaksa memasukkan hal-hal yang mungkin tidak mereka pedulikan ke dalam kode, seperti urutan komputasi, apakah sesuatu bersifat async, alokasi dan dealokasi memori, scope, dan tipe
  • async di Python atau Javascript, manajemen memori di C, lifetime di Rust, serta anotasi tipe di bahasa bertipe statis membuat pilihan harus dinyatakan secara eksplisit, sementara Haskell dapat menyerahkan sebagian pilihan itu kepada bahasa melalui semantik non-strict dan analisis strictness
  • Bahasa pemrograman yang lebih mudah diakses bisa memiliki hambatan Inverse Sapir-Whorf yang lebih rendah, sehingga lebih jarang memaksa orang untuk berbicara tentang hal-hal yang belum mereka pahami atau belum punya pendapat tentangnya

Apa arti Inverse Sapir-Whorf

  • Hipotesis Sapir-Whorf, jika disederhanakan, adalah gagasan bahwa bahasa yang digunakan memengaruhi cara berpikir
  • Bentuk kuat dari Sapir-Whorf, khususnya determinisme linguistik yang menyatakan bahwa bahasa mengendalikan pikiran atau bahwa bahasa tertentu diperlukan untuk memikirkan hal tertentu, saat ini tidak banyak dianggap serius dalam linguistik
  • Fakta bahwa suatu bahasa tidak memiliki kala gramatikal tidak berarti penuturnya berpikir lebih terbatas tentang waktu, karena selalu ada cara lain untuk mengungkapkan waktu
  • Ada cukup banyak bukti bahwa bahasa lisan dapat memengaruhi persepsi, deskripsi, dan sikap pada ranah tertentu, tetapi biasanya sulit membuktikan efek langsung yang besar
  • Inverse Sapir-Whorf berfokus bukan pada apa yang sulit dikatakan atau dipikirkan oleh bahasa, melainkan pada apa yang sulit untuk tidak dikatakan
  • Dalam sudut pandang ini, inti persoalannya adalah bagaimana bahasa mendorong orang untuk menyatakan informasi tertentu, atau membuat pikiran tertentu sulit untuk dihindari

Paksaan yang tampak dalam bahasa alami

  • Sifat sementara dan permanen dalam present tense bahasa Inggris

    • “I’m living in London” dan “I live in London” sama-sama berarti tinggal di London, tetapi yang pertama mengungkapkan informasi bahwa keadaan itu bersifat sementara
    • Penutur non-native mungkin tidak menyadari perbedaan ini, dan penutur native pun bisa saja hanya menerimanya secara tidak sadar
    • Makna “sementara” itu bisa jadi lebih berkaitan dengan seberapa suka seseorang pada London daripada berapa lama sebenarnya ia tinggal di sana
    • Dalam bahasa Inggris, kita harus memilih kala, dan karena pilihan itu biasanya dilakukan tanpa sadar, bahasa tersebut membuat informasi seperti lama tinggal atau perasaan ikut terungkap
  • Kata ganti dan nomina berjenis kelamin dalam bahasa Inggris, Turki, dan Prancis

    • Dalam ujaran sehari-hari bahasa Inggris, saat merujuk pada orang tertentu biasanya harus memakai “he” atau “she”
    • “singular they” memang ada, tetapi saat membicarakan orang tertentu yang gendernya diketahui atau diduga, bentuk itu terasa sangat tidak alami
    • Bahasa Turki memakai satu bentuk “o” untuk he/she/it, dan tidak adanya kata ganti berjenis kelamin seperti ini tidak mencegah orang memikirkan atau membicarakan gender seseorang
    • Sulit menjadikan hal ini sebagai dukungan kuat bagi Sapir-Whorf biasa, tetapi jelas menunjukkan Inverse Sapir-Whorf karena kata ganti bahasa Inggris mendorong orang untuk menyebut gender, suka atau tidak
    • Bahkan ketika mencoba membicarakan orang yang dikenal secara anonim, pemakaian “him” atau “her” tanpa sengaja bisa mengungkap gender dan mempermudah identifikasi
    • Dalam bahasa Prancis, nomina memiliki gender, sehingga saat menerjemahkan “my friend” kita harus memilih antara “mon ami” dan “mon amie”, atau antara “mon copain” dan “ma copine”, sehingga informasi tertentu terungkap
    • Kata ganti posesif juga memiliki gender baik dalam bahasa Inggris maupun Prancis, tetapi his/her dalam bahasa Inggris menunjukkan gender pemilik, sedangkan son/sa dalam bahasa Prancis menunjukkan gender benda yang dimiliki, sehingga informasi yang terungkap berbeda
  • Bentuk lampau “mış” dalam bahasa Turki

    • Jika disederhanakan, bahasa Turki memiliki dua kala lampau utama: bentuk umum yang mirip simple past bahasa Inggris, dan bentuk “mış”
    • Bentuk “mış” memiliki berbagai fungsi, dan saat dipakai untuk peristiwa lampau, ia digunakan ketika informasi itu didengar dari orang lain atau kurang dapat dipercaya
    • Untuk pertanyaan seperti “Apakah Fred masuk kerja hari Senin?”, jika melihat langsung maka dipakai bentuk lampau biasa “geldi”, sedangkan jika hanya mendengar dari orang lain dipakai “gelmiş”
    • Dalam bahasa Inggris, kita bisa memakai simple past tanpa menyatakan secara spesifik sumber atau tingkat keandalan informasi, tetapi dalam bahasa Turki kita dipaksa memasukkan tingkat kepastian atau apakah peristiwanya disaksikan langsung dalam situasi tertentu
    • Karena bentuk “mış” ada, bentuk lampau biasa bukanlah pilihan netral, dan akan terasa tidak alami saat tidak lebih cocok daripada alternatifnya
    • Karena sufiks “mış” sering muncul di akhir kata terakhir dalam kalimat bahasa Turki, seseorang bahkan bisa terbiasa menyelesaikan kalimat bahasa Inggris lalu menyadari bahwa ia belum menambahkan penanda “ini hanya kabar yang saya dengar dan tidak saya lihat langsung”, lalu merasa perlu menambahkan “mış” di akhir
    • Bahasa Inggris juga bisa dengan mudah menyatakan hal serupa lewat kata seperti “apparently”, tetapi bahasa Inggris tidak memaksakan hal itu untuk disebutkan, sedangkan bahasa Turki cukup kuat memaksakannya
  • Paksaan bahasa yang sulit dilihat oleh penutur native

    • Perbedaan seperti ini sering kali sulit disadari sampai seseorang belajar bahasa lain atau mencoba mengajarkan bahasanya sendiri kepada orang asing
    • Dalam kebanyakan momen saat memilih antara simple present dan present continuous, kita tidak secara sadar memikirkan apa yang disiratkan oleh pilihan itu
    • Ketika bahasa memaksa suatu ekspresi, hal itu tidak selalu muncul sebagai keharusan menambahkan sesuatu; makna juga bisa dikunci lewat penghilangan
    • “I love cake” berarti kue secara umum, sedangkan “I love the cake” berarti kue tertentu
    • Karena tidak ada “the” pada kalimat pertama, menjadi jelas bahwa yang dimaksud adalah kue secara umum; jika yang dimaksud kue tertentu, penanda seperti “the” atau “this” wajib dipakai
    • Bahasa lain mungkin tidak memiliki ekspresi yang berpadanan langsung dengan pembedaan ini

Inverse Sapir-Whorf dalam bahasa pemrograman

  • Dalam bahasa pemrograman, Sapir-Whorf dalam bentuk biasa bisa jadi lebih mendekati benar
  • Dalam bahasa seperti Python atau Haskell, berbicara tentang alokasi memori itu sulit, tetapi bukan tidak mungkin
  • Keterbatasan bahasa pemrograman biasanya dibahas sebagai hal-hal yang sulit diungkapkan dalam bahasa tersebut
  • Sapir-Whorf does not apply to Programming Languages karya Hillel Wayne membahas topik ini lebih rinci
  • Dari sudut pandang Inverse Sapir-Whorf, pertanyaan intinya adalah apakah bahasa pemrograman benar-benar memaksa kita membicarakan hal-hal yang sebenarnya tidak kita pedulikan
  • Paksaan seperti ini lebih mudah terlihat jika kita memiliki sudut pandang seperti pelajar bahasa asing yang muncul saat mempelajari banyak bahasa

Contoh utama dalam bahasa pemrograman

  • Urutan komputasi

    • Sebagian besar bahasa memaksa kita mengekspresikan urutan pelaksanaan komputasi
    • x = some_func(y + 1, z + 2) dalam Python menyatakan urutan: hitung dulu y + 1, lalu hitung z + 2, kemudian kirim kedua nilai itu sebagai argumen ke some_func
    • Kita mungkin tidak menyadari urutan ini, tetapi dalam Python tidak ada cara untuk menuliskan komputasi di atas tanpa sekaligus menetapkan urutannya
    • Sebagian besar bahasa serupa, tetapi pada beberapa bahasa urutan evaluasi bisa sangat rumit
    • Ekspresi setara seperti some_func (y + 1) (z + 2) dalam Haskell tidak menetapkan urutan evaluasi sama sekali karena semantik non-strict
    • Sifat ini memungkinkan teknik seperti Tying the knot, yang dapat merujuk pada nilai yang belum didefinisikan
  • Warna fungsi async

    • Warna fungsi async adalah contoh yang baik
    • Dalam bahasa seperti Javascript atau Python yang memiliki keyword async eksplisit, kita harus menyatakan apakah kode itu sinkron atau asinkron
    • Pada fungsi sinkron, hal itu dinyatakan dengan menghilangkan keyword async, tetapi tetap saja itu berarti memilih salah satu dari dua opsi
    • Tidak ada cara menulis kode yang bersikap netral terhadap topik ini
  • Alokasi dan dealokasi memori

    • Sebagian besar bahasa yang tidak memiliki garbage collection) memaksa kita membicarakan alokasi dan dealokasi memori
    • Dalam bahasa seperti C, hal ini biasanya ditangani cukup eksplisit atau lewat alokasi stack secara implisit, tetapi bagaimanapun kita tetap harus memilih
    • Dalam bahasa lain, masalah ini mungkin lebih tersembunyi, tetapi tidak hilang
    • Dalam Rust, persoalan ini berubah menjadi pembicaraan tentang lifetime atau reference counting eksplisit
    • Opsi “saya tidak peduli kapan memori ini dialokasikan dan dibebaskan, tolong tangani saja” pada praktiknya tidak benar-benar tersedia
    • Tidak membicarakan alokasi memori pun ada biayanya
    • Bahasa seperti itu hampir pasti menaruh banyak nilai di heap dan membutuhkan garbage collector saat runtime
    • Sebagai gantinya, bahasa itu bisa memiliki kebebasan besar untuk memilih sendiri, dan Haskell misalnya sering membuat pilihan semacam ini lewat analisis strictness
  • Scope

    • Semua bahasa modern yang diketahui membuat kita harus memikirkan scope
    • Dalam banyak kasus, scope diekspresikan lewat posisi fisik penempatan variabel, dan jika menginginkan perilaku berbeda kita harus memakai sintaks tambahan seperti global atau nonlocal di Python
    • Jika sama sekali tidak ingin memikirkan scope, kemungkinan kita harus turun ke assembly dan menerima satu ruang alamat global tunggal
  • Tipe

    • Bahasa bertipe statis biasanya memaksa kita memikirkan dan menyatakan tipe setiap variabel
    • Type inference mengurangi beban ini, seperti pendengar yang lebih cerdas yang dapat menangkap lebih banyak dari konteks, tetapi percakapannya sendiri tetap ada
    • Bahkan bahasa yang murni bertipe dinamis pun tetap memungkinkan kita membicarakan tipe, misalnya lewat pemeriksaan isinstance di Python, tetapi itu terasa lebih tidak alami dan secara teknis juga merupakan hal yang berbeda
    • Salah satu daya tarik bahasa dengan gradual typing adalah bahwa ia benar-benar menghindari masalah Inverse Sapir-Whorf dan memberi kebebasan untuk membicarakan tipe atau tidak, sesuai preferensi
    • Seberapa baik ini bekerja dalam praktik masih belum jelas, dan konvensi pada codebase yang sudah ada serta linter yang digunakan selalu memberi tekanan ke salah satu arah

Bahasa yang mudah diakses dan hambatan yang rendah

  • Banyak ciri bahasa pemrograman yang lebih “mudah diakses” atau “mudah dibaca” dapat dianalisis dari sudut pandang Inverse Sapir-Whorf
  • Bahasa-bahasa semacam ini bisa memiliki hambatan Inverse Sapir-Whorf yang lebih rendah, sehingga tidak memaksa orang berbicara tentang hal-hal yang belum mereka pahami atau belum punya pandangan tentangnya
  • Topik-topik yang dipaksakan oleh bahasa pemrograman dapat memengaruhi kesadaran dan pilihan kita terhadap bahasa yang kita gunakan

1 komentar

 
GN⁺ 1 jam lalu
Opini di Lobste.rs
  • Perancangan bahasa, baik bahasa pemrograman maupun bahasa alami, bisa dipandang sebagai penentuan ke mana pengguna harus mengarahkan perhatian berdasarkan elemen apa yang dimasukkan ke dalam bahasa tersebut
    C secara implisit berkata “perhatikan manajemen memori”, sementara Haskell berkata “perhatikan tipe yang bisa dimuat oleh variabel dan ekspresi”
    Jika suatu bahasa mengarahkan saya ke hal yang memang ingin saya perhatikan, itu terasa seperti alat yang cocok untuk pekerjaan tersebut; jika tidak, rasanya seperti mencoba mendengar orang yang berbicara pelan di pesta koktail sementara ada orang lain berteriak dari seberang ruangan
    Perhatian adalah sumber daya paling berharga, jadi kita perlu sadar bagaimana alat mengarahkan dan membentuknya

    • Gagasan bahwa “bahasa membatasi hal-hal yang tidak bisa dikatakan” mungkin bisa diberi nama seperti non-netralitas ekspresi
      Dalam bahasa Inggris, menyebutkan atau menghilangkan “the” tidak netral terhadap kekhususan objek yang dibicarakan, dan dalam bahasa Turki, apakah memakai miş atau tidak tidak netral terhadap apakah informasi itu diperoleh langsung atau didengar dari orang lain
      Ini juga bisa dipandang sebagai kebalikan dari hipotesis Sapir-Whorf yang standar, yaitu netralitas ekspresi, yang berarti “bahasa membatasi hal-hal yang bisa dikatakan”
      Dengan begitu, kita bisa menjelaskan apakah suatu bahasa netral atau tidak terhadap topik tertentu, dan sebagai perancang bahasa kita bisa menyesuaikannya agar perhatian pengguna disebarkan atau difokuskan. Misalnya, garbage collection membuat ekspresi menjadi netral terhadap alokasi heap, sedangkan pelacakan efek membuat ekspresi menjadi tidak netral terhadap efek samping dan input/output
  • Saya tidak yakin sudah sepenuhnya menangkap inti tulisannya, tetapi ini mengingatkan saya pada pemikiran lama yang terus berulang tentang Rust
    Rust memungkinkan kita menangani referensi, tetapi menempati posisi yang aneh karena menerapkan aturan ketat demi menjamin keamanan memori
    Kalau di C++, saat merasa sesuatu seharusnya berupa referensi, kita tinggal menjadikannya referensi dan berharap tidak ada masalah; kalau di Python, kita tidak punya kendali sebesar itu, jadi data disalin tanpa banyak ragu
    Namun di Rust, kita bisa jatuh ke lubang optimisasi berupa “menyalin itu tidak efisien, jadi mari jadikan referensi”, lalu ketika borrow checker berteriak, kita menghabiskan satu jam merombak kode sambil tetap yakin referensi ini sebenarnya aman
    Programmer Rust yang bagus berkata “pakai saja .clone, RC, Box, dan sebagainya”, dan saya setuju, tetapi kenyataan bahwa referensi itu ada di depan mata dan tampak bisa dipakai dengan aman tetap tidak hilang
    Jadi tersisa perasaan aneh bahwa saya sengaja membuatnya lebih buruk hanya demi menenangkan borrow checker, dan saya juga paham kenapa ada orang yang menyerah dengan alasan “borrow checker terlalu berlebihan buat saya”

    • Ini cukup selaras dengan yang hendak dibahas tulisan tersebut. Rust membuat kita memikirkan dan memutuskan hal-hal yang tidak diminta bahasa lain, sehingga beban sekaligus kekuatan dalam menggunakan bahasa itu ikut membesar
  • Topiknya bagus, dan menyenangkan juga melihat sedikit pembahasan tentang tata bahasa Turki
    Contoh umum lainnya, dalam beberapa bahasa detail seperti jamak bisa dihilangkan, dan bahasa Vietnam termasuk kasus seperti itu
    Saat melihat kata “exaggerated” diberi tautan, saya sempat berpikir “jangan-jangan ini tulisan tentang Arrival?”, dan ternyata benar, yang juga cukup menyenangkan
    Film itu disukai banyak orang, tetapi secara pribadi saya sulit menangguhkan rasa tidak percaya. Katanya fiksi ilmiah, tetapi “sains”-nya terasa seperti linguistik ajaib semacam sihir

    • Menurut saya, jamak adalah tepat bagian yang ingin ditutupi oleh hal-hal seperti APL, Pandas, dan SQL
      Kebanyakan bahasa pemrograman aplikasi menjadikan satu nilai tunggal sebagai semacam dasar atomik. Di atasnya kita bisa membuat list atau map, tetapi ini pun pada akhirnya tetap merupakan satu benda tunggal, dan sering kali tidak sepenuhnya kompatibel satu sama lain dalam cara-cara yang halus
      Di Rust, kita jadi sering menyalin antarstruktur semacam ini, sedangkan di SQL kita tidak terlalu memikirkan masalah itu tetapi harus memikirkan indeks dan rencana kueri, terutama ketika basis data membuat rencana yang jelas-jelas bodoh dan malah mempersulit apa yang sebenarnya ingin saya tanyakan, dan soal SQL NULL bahkan jangan dimulai
      Akibatnya, sebagian besar perangkat lunak kita terlalu terspesifikasi sampai tingkat nilai individual secara nyaris tidak masuk akal, dan walaupun performa PC meningkat 1000 kali, latensi UI terbaik justru menjadi 10 kali lebih buruk daripada dulu
      Dogma pemrograman berorientasi objek juga ikut bertanggung jawab sebagian. Asinkron juga pernah dicoba, tetapi terlalu mudah merosot menjadi kondisi melihat pohon dan lupa hutan, dengan meng-await tugas-tugas independen satu per satu
      Kita harus membayangkan bahwa https://www.uiua.org/ itu bahagia
  • Poin-poin yang bagus. Semua bahasa modern memaksa atau sangat kuat mendorong programmer untuk menangani detail seperti masuk ke semak belukar
    Bahasa skrip memang menyediakan operasi terhadap objek yang sedikit kurang detail, seperti program atau halaman web, tetapi tetap tidak bisa menghapus detail
    Kita tetap dibuat memikirkan dan mengelola detail-detail sangat kecil seperti angka, string, dan kode kesalahan
    Selama bertahun-tahun pelatihan dan kerja praktik, kita menjadi terlalu terbiasa mengelola detail sehingga sangat sulit untuk tidak berpikir dari sudut pandang detail

  • Hal pertama yang terlintas di pikiran saya adalah antarmuka objek atau modul
    Dalam bahasa pemrograman ini sangat konkret, sedangkan dalam percakapan bahasa alami jauh lebih kabur
    Contoh lain adalah perbedaan generic di C++ dan generic di Python. Di C++ ini harus ditangani dengan sangat sengaja, sedangkan di Python, jika type hint diabaikan, ini diproses cukup implisit

  • Bagian “inverse Sapir-Whorf membatasi hal-hal yang tidak bisa dikatakan oleh bahasa, atau membuat hal-hal tertentu sulit untuk tidak dikatakan, atau bahkan sulit untuk tidak dipikirkan” terlihat seperti piramida tata bahasa > idiom > pustaka standar > pustaka pihak ketiga > ekosistem
    Bagian “sulit untuk tidak dipikirkan” tampaknya berfokus pada masalah yang sulit diekspresikan atau memiliki kendala penting
    Keakraban bekerja dari atas dan bawah ke arah dalam, dan orang-orang memperlihatkan latar belakang mereka melalui cara mereka menulis kode di setiap lapisan

  • Saya sudah membaca, menulis, dan berbicara bahasa Inggris selama lebih dari 15 tahun, tetapi tetap tidak tahu bahwa “I live in London” dan “I'm living in London” itu berbeda
    Saya juga jadi tidak tahu apakah saya tinggal di London, atau sedang tinggal di London 😅

    • Sedikit membantu kalau “I'm living in London” diurai menjadi “I am living in London”
      Jika bentuk gerund di sini diganti dengan kata sifat biasa menjadi “I am cold”, kita akan memahaminya sebagai berarti sedang merasa dingin sekarang, bukan berarti dingin secara permanen seperti supervillain
      Demikian pula, “I am living in London” menyiratkan bahwa saat ini saya tinggal di London, tetapi itu bisa berubah di masa depan
      Ada juga nuansa bahwa saya tidak selalu tinggal di London. Mirip seperti “I am cold” yang sedikit banyak mengandung arti bahwa setidaknya pernah mengalami suhu yang cukup hangat, sehingga keadaan sekarang dikenali bukan sebagai “normal” melainkan sebagai “dingin”