Saya mengacu pada menjelaskan kepada non-programmer apa pemrograman itu. Saya memastikan untuk mencari pertanyaan yang sama sebelum membuat yang ini, tetapi beberapa yang saya temukan tampaknya menghindari pertanyaan, dan saya secara khusus ingin melihat beberapa metafora atau analogi. Saya pribadi merasa lebih mudah untuk menjelaskan sesuatu yang teknis kepada seseorang melalui penggunaan metafora atau analogi.
Alasan saya tertarik pada ini adalah karena banyak orang menemukan pekerjaan seorang programmer setiap hari, tetapi jika Anda bertanya kepada orang kebanyakan apa seorang programmer itu atau tidak, mereka tidak benar-benar tahu. Ini mengarah pada situasi kesalahpahaman tertentu (mis. "[...] tapi saya pikir Anda pandai menggunakan komputer!")
Saya benar-benar ingin menemukan yang terbaik di luar sana. Saya ingin dapat dengan mudah menjelaskan kepada seseorang tentang pilihan karier saya. Tentu saja, paling tidak gagasan umum.
Saya pribadi tidak memiliki yang solid, tapi saya sudah lama memikirkannya dan saya biasanya tertarik pada metafora 'bahasa', di mana kita kebetulan mengetahui bahasa yang dimengerti komputer, dan oleh karena itu kami dapat memberi tahu komputer apa yang harus dilakukan. lakukan, atau "ajarkan" mereka, untuk menyelesaikan masalah kita.
Sebagai contoh:
Bayangkan bahwa dalam realitas alternatif, robot humanoid dengan kecerdasan buatan ada, dan beberapa orang dapat berkomunikasi dengan mereka melalui bahasa yang sama, yang merupakan variasi bahasa Inggris. Orang-orang ini yang dapat berkomunikasi dengan robot dapat mengajari mereka cara menyelesaikan masalah tertentu atau melakukan tugas tertentu, seperti melakukan tugas kami.
Yah, meskipun robot seperti itu belum ada, pemrogram pada zaman kita seperti orang-orang itu, tetapi alih-alih berkomunikasi dengan robot, mereka berkomunikasi dengan komputer. Pemrogram "mengajarkan" komputer bagaimana melakukan tugas-tugas tertentu atau memecahkan masalah tertentu dengan menggunakan perangkat lunak yang mereka buat dengan menggunakan "bahasa umum" ini.
Pemrogram dan "bahasa umum" ini adalah yang memberi kami hal-hal seperti email, situs web, video game, pengolah kata, ponsel pintar ( untuk membuatnya lebih sederhana ), dan banyak hal lain yang kami gunakan setiap hari.
Saya tidak bermaksud menempatkan pemrograman di atas takhta atau apa pun, itu hanya metafora terbaik yang bisa saya buat.
Saya yakin seseorang akan menemukan beberapa masalah dengan ini, mungkin agak dibuat-buat, tapi sekali lagi itu sebabnya saya menanyakan pertanyaan ini.
sumber
Jawaban:
Ini seperti harus menulis petunjuk langkah demi langkah terperinci untuk cara mengemudi di suatu tempat. Tetapi Anda biasanya harus menambahkan rencana darurat untuk hal-hal seperti 'bagaimana jika ada kemacetan lalu lintas', atau 'bagaimana jika sebuah truk mogok di jalur belokan'.
Dan kadang-kadang Anda harus menyelam lebih dalam dan menjelaskan aturan jalan seperti sisi mana untuk mengemudi atau apa yang harus dilakukan pada lampu merah. Dan terkadang Anda bahkan perlu menjelaskan dengan tepat bagaimana setir atau pedal gas bekerja.
Dan biasanya, setelah Anda mendapatkan semua yang dijelaskan dalam detail yang pasti, pelanggan mengatakan "itu sempurna, kecuali itu harus bekerja untuk seseorang yang mengendarai hovercraft"
sumber
Saya menulis instruksi yang sangat, sangat rinci untuk mesin yang sangat, sangat bodoh.
sumber
Saya menggunakan metafora "Kami menulis resep rajutan " yang ramah nenek.
Alasan:
if
pernyataan-dan matematika dan loop.sumber
Analogi ini tidak terlalu bagus, tetapi ketika orang-orang mengatakan kepada saya untuk memperbaiki mesin mereka, saya berkata, "Saya adalah orang yang mendesain mobil. Saya bukan mekanik!"
sumber
Sebagai seorang anak, saya membaca deskripsi pemrograman yang sangat bagus: seperti memberi tahu robot cara melakukan tugas sehari-hari yang umum, seperti pergi ke sekolah. Jadi Anda bisa mengatakannya kepada "Pergi ke sekolah!", Tetapi tidak tahu caranya. Jadi Anda menyuruhnya "pergi ke luar, belok kiri, terus berjalan sampai Anda datang ke sekolah, ambil belok kiri, masuk, dan duduk". Tapi ada jalan di sana! Jadi Anda harus mengatakannya untuk "berhenti di jalan, periksa bahwa tidak ada lalu lintas, menyeberang jalan, dan terus berjalan" di suatu tempat di tengah sana. Dan bagaimana dengan pintu? Jadi Anda menambahkan "periksa apakah pintu sekolah terbuka. Jika tidak, buka saja." di sana. Akhirnya, Anda memiliki program yang dapat memberi tahu robot Anda bagaimana menuju ke sekolah dengan sendirinya.
Ini pas dengan Logo, di mana Anda menginstruksikan kura-kura dengan cara ini untuk membuat bentuk yang rumit.
sumber
Pemrograman seperti sekotak coklat . Kadang-kadang Anda menemukan apa yang Anda cari segera, tetapi sebagian besar waktu dibutuhkan banyak trial and error. Terkadang Anda mendapatkan kelapa.
Lampu lalu lintas . Mobil bisa bergerak atau berhenti. Satu lampu lalu lintas mudah dibayangkan diatur, tetapi apa yang terjadi jika Anda menambahkan yang lain? Bagaimana kalau sepertiga? Bagaimana dengan seluruh kota? Sistem transit terdiri dari ribuan lampu berhenti, masing-masingnya sederhana dengan sendirinya, tetapi ketika diambil secara keseluruhan, itu menjadi sistem yang kompleks. Jika salah satu lampu lalu lintas rusak atau mati hanya dalam beberapa detik, itu akan membuat seluruh sistem kacau. Jika semuanya tersinkronisasi, Anda cukup menikmati perjalanan.
Seorang pembicara motivasi menemukan kunci untuk membuka teka-teki motivasi, impian, dan ide orang. Setiap situasi, setiap orang berbeda. Apa yang berhasil di masa lalu mungkin tidak sesuai sekarang. Terkadang kunci dapat digunakan kembali, tetapi perlu disesuaikan dengan individu. Di lain waktu, kuncinya harus dibuat lagi. Apa yang paling bermanfaat adalah ketika orang itu telah dibuka dan Anda melihat mereka keluar dan menaklukkan dunia. Yang paling menghancurkan adalah ketika Anda merasa dekat, tetapi tidak mampu membuka potensi.
Sebuah cerita detektif , di mana detektif perlahan membangun kasusnya dengan mencari petunjuk dan mengumpulkan bukti. Metodis, cerdas, dan akurat akan memenangkan hari. Ceroboh, bodoh, dan malas akan menemui ajalnya. Akhirnya, pekerjaan itu akan berdiri atau jatuh di hadapan juri rekan-rekan.
Sebuah mesin slot . Anda memasukkan semua koin Anda dan menarik tuasnya. Terkadang Anda menang besar, terkadang Anda duduk di sana berjam-jam dan tidak ada yang terjadi. Terkadang orang lain berjalan begitu saja, menarik tuas sekali, dan memenangkan jackpot.
Musik . Satu nada cukup sederhana, tetapi ukurannya lebih kompleks. Lagu yang lengkap memiliki banyak ukuran dengan banyak catatan. Jika satu nada mati, itu dapat merusak seluruh kinerja. Jika setiap not disampaikan dengan sempurna, kinerja memudar ke latar belakang dan hanya musik yang ada.
sumber
Metafora terbaik untuk apa pun adalah dirinya sendiri. Apa pun yang berbeda akan kehilangan akurasi. Dengan demikian, memilih metafora terbaik tergantung pada apa, khususnya, yang ingin Anda tangkap tentang pemrograman. Karena akan ada banyak jawaban yang diberikan di sini tentang pengkodean metafora, saya akan menjawab dengan metafora klasik untuk proses pengembangan secara keseluruhan:
Konstruksi bangunan
Aspek paling umum dari metafora ini adalah bahwa seorang arsitek fisik agak analog dengan seorang arsitek perangkat lunak. Berikut adalah beberapa persamaan lainnya:
Tentu saja, seperti metafora apa pun, ia memiliki keterbatasan. Beberapa kekurangan dengannya:
Jadi, seperti analogi apa pun, itu tergantung pada apa yang Anda coba jelaskan. Berhati-hatilah untuk terlalu mengandalkan satu metafora, atau pelanggan Anda akan mulai bertanya-tanya apa pajak properti pada sistem penggajian barunya.
sumber
Saya suka analogi Chris McMahon tentang pengembangan perangkat lunak seperti penciptaan musik, khususnya musik jazz.
Berikut tautan ke pos blog tempat ia membahasnya: http://chrismcmahonsblog.blogspot.com/2007/05/example-of-analogy-monks-vs-music.html
sumber
Kadang-kadang saya menyebut pemrograman untuk mengendalikan zombie yang tidak berpikir . Ringkas posting blog saya tentang hal itu:
sumber
Pemrograman seperti membangun sesuatu dengan Lego :
sumber
Memprogram komputer seperti membesarkan anak ...
Perbedaan utama adalah bahwa kita menjadi kesal jika seseorang mencuri kode sumber kita, tetapi kita sering senang seseorang mengambil anak-anak kita dari tangan kita.
sumber
Pemrograman seperti membangun pabrik atau jalur perakitan.
Pikirkan perangkat lunak sebagai mesin atau jalur perakitan yang ada di dalam komputer. Beberapa bahan baku dan komponen dimasukkan ke dalam mesin, dan mengikuti serangkaian prosedur untuk memprosesnya menjadi beberapa produk akhir. Prosedur diatur untuk melakukan operasi tertentu pada beberapa bahan mentah atau komponen ke serangkaian parameter tertentu (misalnya, waktu, suhu, jarak, dll) dalam urutan tertentu. Jika detail operasi yang akan dilakukan salah, atau sensor mesin tidak dikalibrasi dengan benar, atau jika beberapa bahan baku atau komponen tidak sesuai dengan standar kualitas yang diharapkan, itu dapat mengubah hasil operasi dan produk tidak akan berubah seperti yang diharapkan.
Mesin seperti itu sangat kaku dalam operasinya dan input yang dapat diterima. Mesin tidak mempertanyakan kecerdasan desainer atau lingkungan operasinya saat ini. Itu akan terus mengikuti prosedur selama itu diarahkan. Bahkan jika perubahan bahan baku atau komponen dapat memiliki efek drastis pada apa yang terjadi pada operasi selanjutnya, mesin akan tetap melakukan prosedurnya. Proses ini perlu ditinjau untuk melihat perubahan apa pada prosedur yang diperlukan untuk mengkompensasi dan menghasilkan hasil yang diinginkan. Perubahan pada desain atau konfigurasi produk mungkin juga memerlukan perubahan signifikan pada operasi yang dilakukan atau pesanan mereka. Meskipun mereka yang bertanggung jawab atas produksi dengan cepat mempelajari pentingnya mengisolasi operasi sebanyak mungkin untuk mengurangi efek yang tidak diinginkan di antara mereka, banyak asumsi dibuat dari komponen kondisi saat mereka menjalani pemrosesan; asumsi yang mungkin tidak terdeteksi hingga produk akhir ada di tangan pengguna di beberapa lingkungan operasi yang berbeda.
sumber
Membantu seorang idiot cepat lulus kelas matematika yang membutuhkan esai tertulis.
sumber
Pemrograman komputer seperti bermain permainan catur di mana ukuran papan, jumlah potongan dalam permainan dan aturan yang mengatur potongan-potongan itu tumbuh dalam ukuran dan kompleksitas saat permainan berlangsung.
sumber
Software Menulis Seperti ... Menulis! ^^
sumber
Siswa baru ke kelas CS / Pemrograman, praktis, seperti pengguna non-pemrograman. Contoh robot itu bagus.
Kembali, di tahun 80-an, menggunakan Logo, Karel, (atau lingkungan pemrograman serupa), di mana pengguna belajar memprogram, menonton komputer seperti robot, sebagai gantinya, satu set TV dengan mesin tik, banyak membantu. Alat-alat itu biasa digunakan di SMP dan SMA.
Pemrograman praktis itu membantu para siswa untuk meminta keterampilan pemecahan masalah, bahkan jika itu tidak berhubungan dengan komputer !!!
Atau, bahkan jika siswa tidak menjadi programmer.
Beberapa Collegues dan Universitas juga menerapkan alat-alat itu dalam kursus tahun pertama.
Saya heran mengapa banyak sekolah menengah menjatuhkan Logo dan Karel ...
sumber
Saya suka analogi Fred Brooks, dari Mythical Man-Month, bahwa pemrograman itu seperti sulap.
sumber
Ini biasanya merupakan upaya untuk menipu geek agar memperbaiki komputer (Anda merasa ingin membuktikan bahwa mereka salah?). Jawaban standar saya:
Saya seorang programmer. Itu seperti seorang insinyur mobil - dia mungkin tidak akan tahu cara memperbaiki rem Trabant Anda, 72 dan tentu saja tidak akan melakukannya jika dia tahu. Seorang mekanik akan melakukan itu!
sumber
Saya menyukai konsep resep untuk memasak.
sumber
Pemrograman seperti memegang kekuatan dalam jumlah besar. Anda dapat membuat komputer melakukan apa pun yang Anda inginkan. Anda hanya dibatasi oleh imajinasi Anda dan jumlah waktu yang ingin Anda investasikan.
Programmer seperti pembuat rumah. Kami dapat memberi tahu Anda segalanya tentang rumah yang telah kami buat. Namun, jika Anda bertanya kepada kami bertanya pada rumah acak kami kebetulan lewat di jalan, kemungkinan kita mungkin tidak akan tahu banyak tentang. Tetapi jika Anda membutuhkan sesuatu yang ditambahkan atau diubah pada rumah itu, kami dapat mewujudkannya asalkan pemiliknya mengizinkan kami.
sumber
Dalam salah satu artikel lama Chris Crawford tentang pemrograman, ia menyamakan program yang rumit dengan birokrasi, dengan banyak agensi yang berkomunikasi dengan memberikan memo bolak-balik. Saya telah menemukan bahwa menjadi metafora yang sangat berguna ketika menjelaskan pengembangan perangkat lunak.
sumber
Saya biasanya menyamakan pemrograman dengan puzzle.
Untuk membuat proyek baru - Anda memiliki banyak bagian, beberapa di antaranya bukan milik gambar ini, dan Anda tidak memiliki pratinjau seperti apa bentuk puzzle ketika itu selesai. Tapi Anda tahu ukuran dan warna umum, jadi perkiraan mungkin, tetapi belum tentu akurat.
Untuk memodifikasi proyek yang sudah ada - kucing datang dan menjatuhkan sebagian dari teka-teki yang sudah selesai. Ini akan memakan waktu, tetapi kerangka sudah ada di sana, jadi seharusnya tidak terlalu buruk (tergantung pada seberapa banyak yang perlu diubah).
Ini juga membantu untuk menggambarkan kemajuan. Salah satu proyek terakhir saya, pada satu titik saya bertanya-tanya bagaimana menggambarkannya sehingga orang non-teknis akan mengerti mengapa saya tidak tahu berapa lama lagi, dan saya datang dengan: Pikirkan teka-teki jigsaw di mana semua potongan perbatasan dilakukan, seperti juga sedikit lebih dari setengah bagian batin. Yang tersisa terpisah satu sama lain, yang harus saya lakukan sekarang adalah mengisi kekosongan.
sumber
Menyedihkan, tetapi pemrograman adalah pekerjaan yang hanya dapat dipahami dengan mempelajari cara melakukannya.
Pemrograman memiliki beberapa tingkat persepsi dan berbeda dari sisi yang berbeda.
Pada level rendah adalah "tulis instruksi yang sangat, sangat rinci untuk mesin yang sangat, sangat bodoh"
Pada level selanjutnya ia berurusan dengan kompleksitas. Membangun metafora baru untuk mempermudah pekerjaan. Seperti matematika yang lebih tinggi.
Dari sisi yang berbeda penggunaan teknologi tambahan seperti kontrol versi, kode yang didokumentasikan sendiri, pembangunan proyek dan pengujian.
Dari sisi lain membangun "pengguna" antarmuka (tidak secara harfiah, maksudku API juga UI), memprediksi kemungkinan kesalahan (dilakukan oleh pengguna, data atau bahkan sendiri) dan benar bereaksi terhadap kesalahan.
Dan akhirnya.
Metafora untuk pemrograman adalah literatur. Pertama-tama perlu mempelajari alfabet. Tetapi menulis novel di ini bahkan tidak dimulai.
sumber