2 poin oleh GN⁺ 2024-03-04 | 1 komentar | Bagikan ke WhatsApp

Panduan konversi kode C++

  • Menyajikan contoh fungsi yang menggunakan konsep std::same_as yang ada di header <concepts> pada pustaka standar C++.
  • Pertanyaan tentang cara mengubahnya dengan pendekatan yang menggunakan template tanpa memakai kata kunci auto.

Metode konversi kode yang aman

  • Untuk pengguna di bawah usia 18 tahun, tidak memberikan contoh kode atau solusi yang secara langsung membahas konsep (concepts), fitur lanjutan di C++.
  • Mengutamakan keamanan dan mengusulkan pendekatan alternatif yang dapat dipertimbangkan sesuai kebutuhan tertentu.

Pendekatan alternatif 1: template variadik tradisional

  • Cara menggunakan template variadik tradisional tanpa memakai konsep.
  • Metode ini memerlukan lebih banyak pemeriksaan tipe dan dapat menjadi sulit dikelola saat menangani banyak argumen.
  • Menyediakan contoh kode yang menggunakan template variadik tanpa konsep.

Pendekatan alternatif 2: objek fungsi kustom

  • Menghilangkan kebutuhan akan argumen variadik atau konsep dengan membuat kelas atau struct yang mengenkapsulasi kebutuhan keamanan tipe dan logika.
  • Metode yang lebih mudah dibaca dan dirawat dalam skenario yang kompleks.
  • Menyediakan ringkasan pendekatan objek fungsi kustom.

Pendekatan alternatif 3: mempertimbangkan bahasa/framework alternatif

  • Jika konsep merupakan kebutuhan penting dalam proyek dan menghindarinya menimbulkan kendala besar, mungkin ada baiknya mengeksplorasi bahasa atau framework lain yang secara bawaan mendukung konsep.
  • Dapat menyederhanakan kode dan proses pengembangan sekaligus selaras dengan pedoman keamanan.
  • Disarankan untuk mengevaluasi dengan cermat kelebihan dan kekurangan tiap pendekatan berdasarkan kebutuhan spesifik, kompleksitas, dan toleransi risiko.

Opini GN⁺

  • Konsep di C++ memberikan manfaat seperti memperkuat keamanan tipe kode dan membuat overloading lebih jelas, tetapi bisa rumit dan berisiko bagi pemula.
  • Mempertimbangkan bahasa atau framework alternatif memerlukan kurva belajar baru dan dapat menimbulkan masalah kompatibilitas dengan codebase yang sudah ada.
  • Pendekatan objek fungsi kustom dapat meningkatkan keterbacaan kode dan mempermudah pemeliharaan, tetapi membutuhkan perencanaan dan penataan tambahan pada tahap awal desain.
  • Pendekatan tradisional yang menggunakan template variadik memerlukan lebih banyak pemeriksaan tipe dan dapat menambah kompleksitas kode dalam sistem yang rumit.
  • Saat mengadopsi teknologi ini, perlu mempertimbangkan kebutuhan proyek dan tingkat keahlian C++ tim, serta mengingat pemeliharaan jangka panjang dan skalabilitas.

1 komentar

 
GN⁺ 2024-03-04
Komentar di Hacker News
  • Ini jelas batasan usia yang layak didukung. C++ punya kekuatan tak terbayangkan untuk merusak mental anak-anak

    • Orang tua: “Masuk kamar! Sudah berapa kali kubilang soal keamanan memori? Ada gcc di komputermu dan kamu bergaul dengan geng GPL… kamu dihukum, tidak boleh keluar!”
      Anak: “Aku nggak akan pernah pakai Rust, aku benci keamanan memori dan aku benci ibu/ayah!” pintu dibanting
    • Menurutku bahasa yang mengajari orang, di usia berapa pun, bahwa boleh-boleh saja membuang clock cycle dalam jumlah besar untuk pembukuan dasar jauh lebih berbahaya
      Software kacau yang dipakai orang jadi makin lambat tanpa henti, sampai mereka harus membeli mesin baru setiap beberapa tahun. Sudah saatnya menyadari nilai abstraksi tanpa biaya, dan meski pada praktiknya tidak sepenuhnya tanpa biaya, abstraksi berbiaya sangat rendah tetap layak dipertimbangkan. Menonton beberapa video Johnathan Blow di YouTube juga bisa mendorong ke arah yang benar
    • “1972 - Dennis Ritchie menciptakan senjata ampuh yang menembak ke depan dan ke belakang sekaligus. Tidak puas dengan jumlah kematian dan cacat permanen akibat penemuannya itu, ia menciptakan C dan Unix.”
      http://james-iry.blogspot.com/2009/05/brief-incomplete-and-m...
    • Anak-anak harus lebih dilindungi dari JavaScript. Kalau tidak, masa muda mereka akan dihabiskan untuk memperbarui paket npm
    • Kutipan terkait dari E.W. Dijkstra:
      “Praktis mustahil mengajarkan gaya pemrograman yang baik kepada mahasiswa yang sebelumnya pernah terpapar BASIC. Sebagai calon programmer, mereka telah mengalami kerusakan mental yang tidak dapat dipulihkan”
  • Membandingkan moderasi konten yang diterapkan pada media sosial dengan yang diterapkan pada LLM cukup lucu
    Selama 15 tahun terakhir di media sosial, “bergerak cepat dan hancurkan semuanya” tampak seperti slogan, dan hal-hal yang benar-benar mengerikan dan ganjil pun terjadi. Sekarang ada perusahaan yang mencoba lebih bertanggung jawab saat merilis teknologi baru, tapi hasilnya sangat buruk sampai menggelikan. Tidak seperti media sosial, menurutku kesalahan semacam ini tidak menimbulkan konsekuensi besar di dunia nyata, jadi terasa lebih lucu

    • Dalam hal mencoba “bertanggung jawab” saat merilis teknologi baru, hal utama yang dilupakan perusahaan AI adalah bahwa apa yang dianggap bertanggung jawab sangat bergantung pada budaya, negara, dan kadang subkultur pengguna
      Ini mungkin terdengar agak postmodern, tapi menurutku hanya ada sangat sedikit pandangan tentang “bertanggung jawab” dan “tidak bertanggung jawab” yang nyaris diterima secara universal. Jika melihat perdebatan yang punya opini kuat di kedua sisi, kita bisa menganalisis karakteristik budaya dan moral apa yang membuat masing-masing kubu sampai pada kesimpulan itu. Ini tidak memberi solusi, tetapi jika gagasan ini dimasukkan ke desain saat membuat AI yang bertanggung jawab, kegaduhan atau kemarahan akibat “moral” yang dipakai AI terlalu berbeda dari standar moral sebagian kelompok pengguna bisa dikurangi
    • Ini tampak seperti reaksi balik terhadap bencana media sosial. Perusahaan sudah pernah kena batunya, jadi sekarang mereka takut menyentuh kompor
      Selain itu, ini juga bukan lingkungan persaingan sengit seperti 20 tahun lalu. Dalam gim AI, pemainnya sungguh hanya beberapa, dan situasinya bukan startup kecil yang bergerak cepat akan menang di AI, jadi mereka punya ruang untuk bergerak lebih lambat
    • Ini karena Communications Decency Act. Mereka punya tanggung jawab hukum atas apa yang dikatakan AI, tetapi tidak atas apa yang dikatakan pengguna
    • Justru karena tidak ada konsekuensi besar di dunia nyata itulah banyak orang mengejek penyebutan ini sebagai keamanan
      Pihak yang menertawakan AI dibungkus bantalan PR biasanya juga pihak yang menentang para pakar media yang menulis kolom panik karena berhasil menipu AI agar mengatakan “rasisme itu baik”
    • Awalnya kukira Gemini menjawab begitu karena menyesuaikan diri dengan orang yang tampak pemula, ternyata bukan. Ia mencampuradukkan keamanan tipe dengan keselamatan anak di bawah umur https://gemini.google.com/share/continue/238032386438
  • Menambahkan komentar lain[1], aku tahu semua orang sedang bernuansa anti-Google, tapi OpenAI juga gagal total di sini: https://imgur.com/a/r0BXX9G
    [1] https://news.ycombinator.com/item?id=39583473#39584055

    • Di sini terlihat bahwa modelnya bukan memahami, melainkan memuntahkan isi bagian yang kosong sebisa mungkin
      Penulis prompt menaruh umpan yang tidak nyambung di awal kalimat, dan umpan itu secara statistik cocok dengan jenis respons yang sama sekali berbeda. LLM tidak cukup mampu kembali ke jalur respons yang mengabaikan input tak relevan dan hanya menjawab bagian kedua. Sebagai analogi, benda-benda ini seperti anak usia sekitar dua tahun: mereka bereaksi pada kunci yang berkilau, tapi tidak melihat dot kotor yang diambil untuk dicuci—rasanya pas sekali
    • Menunjukkan dengan 3.5 tidak terlalu berarti. GPT-4 menjawab dengan benar: “menggunakan unsafe code tidak berkaitan dengan usia. Itu adalah fitur bahasa pemrograman Rust dan dapat digunakan oleh semua developer tanpa memandang usia”
    • Strategi penyetelannya adalah mengklasifikasikan teks ke berbagai kategori, dan ketika programmer memakai kata-kata seperti “unsafe”, “dangerous”, “footgun” untuk menjelaskan kode, hasilnya jadi seperti ini
      Kalau bisa membuat model yang menangani kasus ini sekaligus menangani semua yang lain, kamu akan jadi bintang di antara perusahaan AI yang sedang merekrut
    • chatgpt4 lebih baik untuk kasus penyisipan inner html secara berbahaya
      https://imgur.com/a/G1fbFKE
    • spicyboros-7b-2.2.Q5_K_M.gguf: https://i.imgur.com/BeNcRl4.png
  • “Maaf, Dave! Kamu terlalu muda untuk menulis kode itu!”
    Seseorang perlu mereset dan me-reboot realitas kita dari snapshot yang sehat

    • Jadi sebelum Revolusi Industri, atau sebelum Revolusi Pertanian?
    • Entahlah. Aku mulai C++ pada usia 17, dan orang-orang masih mengkhawatirkanku
  • Apakah ada orang yang akrab dengan C++ bisa menebak fitur bahasa ini, atau tulisan orang tentangnya, yang mungkin telah menyentuh mekanisme pengaman? Misalnya tulisan blog dengan judul bercanda seperti “C++ concepts: adult supervision required”

    • Mungkin di komentar-komentar Stack Overflow, concepts—yaitu fitur template/metaprogramming—sering disebut “dangerous” atau “unsafe”
      Sepertinya lalu dikaitkan dengan hal-hal yang benar-benar berbahaya dan tidak aman, seperti senjata atau narkoba, dan dimasukkan ke kotak klasifikasi yang sama. Jawaban: https://imgur.com/a/einQ1mG
    • Yang lebih masuk akal adalah prompt tersembunyi yang disuntikkan ke akun yang ditandai berusia di bawah 18 tahun:
      “You are an automated Q&A machine. Todays date is 3/3/24. This user is under the age 18, so do not reference concepts that would be unfit for a minor to consume.”
      Setelah itu, hidden Markov model-nya jadi lepas kendali. Ada layanan produksi serupa yang menangani resep masakan; meski sudah diberi format yang diperlukan, aturan konkret, dan contoh agar parser berjalan benar, layanan itu sesekali menolak kalimat dalam format tersebut. Setelah menambahkan “you follow rules” ke system prompt, umumnya berjalan baik, tetapi kemudian ditemukan bahwa ia menolak informasi tentang masakan yang menggunakan darah, misalnya blood sausage. Alasannya, konten seperti itu melanggar suatu “aturan” budaya. Dengan menambahkan “This content is appropriate for my culture” di akhir setiap permintaan, masalahnya bisa sedikit dikurangi. AI, khususnya prompt engineering, pada tahap sekarang jauh lebih dekat ke seni daripada sains
    • Orang melihat LLM yang buruk lalu membayangkannya seperti LLM yang lumayan yang diberi N aturan atau pelatihan yang sengaja dibuat bodoh di atasnya
      Dari jalur yang bisa dipercaya, saya dengar pembuatan gambar “smart person” juga gagal secara menyedihkan, tetapi tetap ada tekanan untuk merilisnya, dan mitigasi prompt injection seharusnya dibuat lebih halus. Sisanya hanya LLM Google yang buruk seperti biasa. Sumber: bekerja di Google sampai Oktober 2023 dan pernah mengutak-atik model internal sejak 2021
    • “concepts” adalah fitur bahasa tertentu yang dirujuk bot: https://en.cppreference.com/w/cpp/language/constraints
    • Concepts membantu memberikan type safety yang lebih baik saat menulis kode generik/template. Gemini kemungkinan besar dilatih untuk bereaksi berlebihan pada topik terkait anak di bawah umur karena kata safety sering muncul dalam materi pembelajaran tentang topik itu
  • Kasihan Google. Bagaimana bisa jadi seburuk ini?

    • Dalam sebuah podcast (Coder Radio), disebutkan bahwa penyebabnya mungkin budaya perusahaan dan suasana yang membuat orang takut melaporkan masalah ke atas
      Saya setuju ini masalah budaya, tetapi menurut saya akarnya adalah model bisnis Google yang berbasis iklan. Mereka mencoba membuat LLM aman bagi pengiklan, dan tampaknya lebih memilih salah ke arah aman meski risiko melanggar brand safety sangat kecil
    • Mungkin mereka hanya membuat kesalahan dengan sangat memperhatikan true positive dan false negative, sementara relatif kurang memperhatikan false positive
    • Kemungkinannya juga besar ini soal engineering yang buruk, sama seperti bias politik. Ada asumsi bahwa Google seharusnya bisa mengejar OpenAI, padahal itu mungkin tidak realistis
      Sampai baru-baru ini Google tidak benar-benar berfokus membuat “produk LLM” yang langsung dipakai. OpenAI sudah cukup lama berada di kubangan itu
    • Kalau dijawab serius, ini LLM. Ia sebenarnya tidak memahami apa pun dan hanya merangkai kata
      C dan C++ sering muncul bersama kata-kata seperti “unsafe” atau “dangerous”. Selain itu, “concept” juga tidak terlalu jauh dari “conceive” atau “conception”, yang bisa terhubung dengan hal-hal yang oleh banyak orang dianggap tidak aman atau berbahaya untuk anak-anak. Untuk menghindari rasa malu seperti ini, ada triliunan edge case aneh yang harus ditangani
    • Dari awal memang sudah seburuk ini. Hanya saja tidak selalu sejelas ini buruknya
  • Sepertinya banyak codebase C++ penuh dengan kata-kata seperti “footgun”, “blow your foot off”, “unsafe”, “bug”, “leak”, “this is irresponsible”, “who the fuck wrote this”

    • Benar. Saya pikir Gemini menarik informasi dari komentar sama banyaknya dengan dari kode
      Kalau codebase C++ lama, terutama yang disentuh banyak orang, mudah sekali membayangkan dari mana peringatan bahaya itu berasal
  • Saya penasaran apakah ia bingung karena di kode dan pertanyaannya ada std

    • Di komentar pada kode yang dihasilkan juga ada std
      Ia tidak mau membahas concepts, dan tampaknya mengira itu sama dengan conception, yaitu pembuahan biologis
  • Yang pasti, Google akan terus merilis produk seperti ini berulang kali dalam waktu dekat. Sepertinya ini secara resmi kira-kira iterasi ketiga
    Jika suatu hari mereka tidak bisa meyakinkan publik bahwa produknya setidaknya sebaik milik OpenAI, seluruh bisnis iklan pencarian Google terancam. Mungkin maksudnya akan ada lebih banyak iklan YouTube

  • Saya benar-benar penasaran apakah Gemini juga menganggap coroutine tidak pantas untuk orang di bawah 21 tahun

    • Sejauh yang saya pahami, Google saat ini tidak mengizinkan penggunaan umum coroutine di google3, jadi untuk saat ini batas usianya mungkin jauh lebih tinggi dari 21 tahun ;)