Saat ini saya sedang menyelesaikan MSc saya dalam ilmu komputer. Saya tertarik pada bahasa pemrograman, terutama dalam sistem tipe. Saya tertarik dalam penelitian di bidang ini dan semester depan saya akan memulai PhD pada subjek.
Sekarang inilah pertanyaan sebenarnya: bagaimana saya bisa menjelaskan apa yang saya (ingin) lakukan kepada orang-orang yang tidak memiliki pengetahuan sebelumnya dalam ilmu komputer atau bidang terkait?
Judulnya berasal dari fakta bahwa saya bahkan tidak bisa menjelaskan apa yang saya lakukan kepada orang tua, teman, dan sebagainya. Ya, saya dapat mengatakan "intinya adalah membantu pengembang perangkat lunak untuk menulis perangkat lunak yang lebih baik" , tetapi saya rasa itu tidak benar-benar berguna: mereka tidak mengetahui "pemrograman", mereka belum tahu apa artinya. Rasanya seperti saya katakan saya seorang mekanik mobil untuk seseorang dari Abad Pertengahan: mereka sama sekali tidak tahu apa yang saya bicarakan, apalagi cara memperbaikinya.
Adakah yang memiliki analogi yang baik dengan dunia nyata? Contoh mencerahkan yang menyebabkan momen "a-ha"? Haruskah saya benar-benar menunjukkan potongan kode pendek dan sederhana ke 60+ tahun tanpa pengalaman ilmu komputer (atau akademik)? Jika demikian, bahasa apa yang harus saya gunakan? Apakah ada orang di sini yang menghadapi masalah serupa?
Jawaban:
Jika Anda punya waktu beberapa menit, kebanyakan orang tahu cara menambahkan dan mengalikan dua angka tiga digit di atas kertas. Minta mereka untuk melakukan itu, (atau untuk mengakui bahwa mereka bisa, jika mereka harus) dan meminta mereka untuk mengakui bahwa mereka melakukan tugas ini secara metodis: jika angka ini lebih besar dari 9, maka tambahkan carry, dan sebagainya. Deskripsi yang baru saja mereka berikan tentang apa yang harus dilakukan adalah contoh dari suatu algoritma .
Ini adalah bagaimana saya mengajar orang kata algoritma, dan dalam pengalaman saya ini telah menjadi contoh terbaik. Kemudian Anda dapat menjelaskan bahwa orang mungkin membayangkan ada tugas yang lebih rumit yang harus dilakukan komputer, dan karena itu ada kebutuhan untuk bahasa yang tidak ambigu untuk memberi makan komputer algoritma ini. Jadi ada perkembangan bahasa pemrograman karena orang mengekspresikan pemikiran mereka secara berbeda, dan Anda sedang mencari cara untuk merancang bahasa ini sehingga lebih sulit untuk membuat kesalahan.
Ini adalah situasi yang sangat mudah dikenali. Kebanyakan orang tidak memiliki konsep bahwa komputer yang mereka gunakan menjalankan program, atau bahwa program-program itu adalah kode sumber yang ditulis oleh manusia, atau bahwa komputer dapat 'membaca' kode sumber, atau bahwa perhitungan, yang mereka kaitkan dengan aritmatika, adalah satu-satunya hal yang komputer lakukan (dan pergerakan data, dan jaringan, mungkin).
Penelitian saya adalah dalam komputasi kuantum, jadi ketika orang bertanya kepada saya apa yang saya lakukan, saya tidak berusaha menjelaskannya. Sebagai gantinya, saya mencoba menjelaskan bahwa fisika kuantum ada (mereka biasanya pernah mendengar tentang kucing Schrödinger, dan hal-hal yang ada di dua tempat sekaligus), dan bahwa karena fisika aneh ini, perhitungan yang lebih cepat mungkin dilakukan.
Tujuan saya adalah membuat orang itu merasa sedikit lebih tahu daripada yang mereka alami, merasa bersemangat tentang sebuah dunia yang mereka tidak tahu ada, tetapi dengan yang sekarang Anda telah membiasakan mereka. Saya menemukan bahwa itu jauh lebih berharga daripada menjelaskan pertanyaan penelitian khusus saya.
sumber
Saya akan mencoba sesuatu seperti ini:
Saya menggunakan penjelasan dalam gaya yang serupa untuk bidang saya (bahasa khusus domain), dan saya dapat melaporkan bahwa itu sering membantu saya mengatasi "oh Anda seorang ilmuwan komputer saya tidak pernah bisa melakukan itu biarkan saya pergi dan berhenti berbicara untuk Anda "masalah. Kuncinya adalah untuk mengeluarkan beberapa kalimat pertama sampai seseorang mencapai contoh yang dapat dihubungkan dengan orang lain, seperti dokumen Word dalam kasus ini. Poin bonus untuk casing khusus contoh untuk orang lain, seperti Excel untuk akuntan atau Powerpoint untuk bos atau game komputer untuk gamer atau browser web atau apa pun.
Perhatikan bahwa Anda tidak harus tetap di tingkat yang dangkal ini. Jika Anda (dan orang lain!) Menginginkannya, Anda dapat mempelajari detail apa yang sebenarnya Anda lakukan dari sana. Sebagai contoh, "Dalam proyek saya saat ini, saya mencoba untuk membuktikan secara matematis bahwa apa yang saya ciptakan tahun lalu benar-benar berfungsi. Itu berarti saya harus mendefinisikan dengan sangat hati-hati apa arti suatu program, dan apa yang diprediksi oleh penemuan saya tentang suatu program, dan kemudian Saya dapat menunjukkan bahwa prediksi tersebut benar ".
sumber
Kebanyakan orang mengerti resep. Jika Anda mengikuti instruksi, Anda akan mendapatkan makanan yang layak. Namun, terkadang instruksinya sulit diikuti. Misalnya, ketika Anda membuat perogies, Anda akan menemukan instruksi seperti ini, mengambil kata demi kata dari Perogies Polandia Nenek :
Astaga. Mari kita tinjau saran ramah Nenek kepada kita. Jatuhkan mereka satu per satu ... sehingga mereka semua memiliki jangka waktu yang berbeda ketika berada di pot. Mengerti. Mereka selesai ketika mereka melayang ke atas . Nah berapa banyak 'mereka'? Apakah saya menangkap masing-masing ketika muncul? Apakah saya menunggu 80% mengapung ke atas dan kemudian mendapatkan semuanya? Ini gila tidak akurat. Jangan sampai mendidih terlalu lama, atau akan menjadi lembek! Bagaimana saya mengukur kapan mereka akan menjadi basah sehingga mereka tidak terlalu lama? Jika lima muncul ke atas pada saat yang sama, akankah saya punya waktu untuk mendapatkan semuanya?
Dan percayalah, saya telah menghancurkan banyak perogie di hari saya. Ini adalah masalah serius yang dialami oleh koki perogie mana pun sebelumnya. Namun terlepas dari masalah-masalah ini yang muncul bahkan pada analisis paling dasar, orang masih dapat membuat perogie menggunakan metode yang sama persis ini. Tetapi adakah yang bisa kita lakukan untuk membuat lebih banyak batch perogie berhasil dan lebih sedikit batch perogie gagal?
Bukankah lebih bagus jika seseorang yang mengkhususkan diri dalam membuat resep lebih dapat diandalkan? Seseorang yang berkata "kita bisa menyalurkan peroginya sehingga mereka muncul dan keluar dari air!" atau "kita bisa menambahkan pewarna khusus ke perogie, tentu saja aman untuk dimakan, yang memberi mereka warna yang berbeda dan kita tahu untuk mengeluarkan yang paling gelap terlebih dahulu, karena mereka paling berisiko menjadi basah". Kami ingin seorang ahli yang dapat mengambil resep ini dan memperbaiki masalah yang mungkin terjadi dengannya. Kehidupan juru masak perogie di seluruh dunia akan lebih mudah, dan lebih sedikit gumpalan pasta-kentang yang basah akan diumpankan ke seekor anjing.
Pemrogram juga mengikuti resep setiap saat. Namun terkadang, peralatan yang mereka gunakan, instruksi yang mereka gunakan, dan interpretasi yang mereka gunakan tidak datang bersamaan untuk membuat makanan mewah yang mereka inginkan. Syukurlah, ada orang-orang yang mendedikasikan karier mereka untuk menjadikan kehidupan seorang programmer lebih produktif. Dalam kasus Anda, Anda mengkhususkan pada salah satu alat yang digunakan programmer, bahasa, untuk membuatnya lebih baik.
sumber
Inilah cara saya akan (mencoba) menjelaskan ini kepada ibu saya:
Bahasa pemrograman digunakan oleh orang-orang untuk memberikan instruksi ke komputer. Segala sesuatu yang dilakukan komputer dilakukan melalui beberapa kode komputer yang ditulis dalam bahasa pemrograman oleh seorang programmer.
Jadi jika, misalnya, kita ingin saluran TV berubah ketika kita menekan tombol, maka kita perlu menulis beberapa kode dalam bahasa pemrograman untuk melakukan ini. Hal yang sama berlaku untuk semua yang terjadi dengan laptop, smartphone, dan apa pun yang operasinya melibatkan komputer.
Mungkin tampak seperti mungkin ada satu bahasa pemrograman yang dapat digunakan oleh programmer untuk menulis semua program. Tapi ini bukan masalahnya. Bahasa pemrograman yang berbeda ada untuk semua jenis aplikasi.
Beberapa digunakan untuk membangun situs web, yang lain untuk membangun aplikasi laptop (seperti Microsoft Word).
Salah satu alasan ada banyak bahasa pemrograman yang berbeda adalah karena beberapa lebih cocok untuk beberapa tugas daripada yang lain. Alasan lain adalah bahwa beberapa bahasa dirancang untuk digunakan dengan komputer yang berbeda. Jadi Anda tidak bisa selalu mengambil kode yang ditulis untuk ponsel cerdas dan menjalankannya di laptop. Dan sementara beberapa programmer dapat memprogram dalam banyak bahasa, dan banyak yang mampu atau mempelajari bahasa baru dengan cepat, setiap programmer akan mengetahui beberapa bahasa lebih baik daripada yang lain, dan beberapa tidak sama sekali.
Jadi bahasa pemrograman adalah salah satu teknologi utama yang membuat komputer bekerja. Bahasa pemrograman yang dirancang dengan baik dapat meningkatkan produktivitas pemrogram dengan luar biasa. Mereka juga dapat meningkatkan keamanan dan mengurangi kesalahan pemrograman, bug, dan cacat.
Dan pada dasarnya, inilah yang saya pelajari: Bagaimana berbagai bagian bahasa pemrograman memengaruhi produktivitas programmer? Apa bagian dari bahasa tertentu yang membuatnya lebih baik untuk menulis kode untuk situs web? Mengapa beberapa bahasa lebih populer daripada yang lain?
Meskipun tampaknya pertanyaan-pertanyaan ini bersifat esoteris dan jauh dari kehidupan sehari-hari rata-rata orang, kebalikannya adalah benar. Studi tentang bahasa pemrograman sangat penting untuk setiap produk atau layanan yang menggunakan komputer. Dan hari ini itu berarti hampir segalanya;)
sumber
Taruhan terbaik Anda adalah membentuk analogi dengan bahasa manusia.
Bahasa pemrograman digunakan untuk memberikan instruksi ke komputer. Bahasa manusia digunakan untuk mengkomunikasikan ide kepada orang lain dan untuk membantu membentuk pikiran kita sendiri. The Sapir-Whorf hipotesis mengatakan bahwa bahasa yang Anda gunakan mempengaruhi pikiran Anda. (Sejauh mana hipotesis Sapir-Whorf benar diperdebatkan, tetapi kami hanya bisa menerimanya sebagai kebenaran ketika membahas bahasa pemrograman. Jika tidak, Anda mungkin menyerah pada PhD Anda. 😜)
Ada berbagai macam bahasa manusia, beberapa dengan fitur yang kami anggap eksotis. Sebagai contoh:
Apakah ada bahasa terbaik , secara objektif? Jawabannya mungkin tergantung pada apa yang Anda coba lakukan.
Pada akhirnya, semua yang ada di komputer diterjemahkan ke dalam bahasa mesin, tetapi memilih bahasa yang tepat untuk pekerjaan itu dapat sangat memengaruhi produktivitas, keandalan, kinerja, dan ketangkasan perangkat lunak Anda. Kami memilih bahasa jaket seperti Ada atau Java untuk proyek "serius", dan Ruby atau Perl untuk kecocokan maksimum . Untuk query database, SQL adalah bahasa yang biasa; menulis kode C Anda sendiri akan menjadi bodoh.
Berdasarkan analogi ini, saya yakin Anda dapat menguraikan ide-ide seperti pemrograman fungsional, keamanan jenis, inferensi tipe, dll. Selama beberapa jam.
sumber
Bahasa komputer berhubungan agak kasar dengan bahasa manusia. mereka menggunakan kata-kata standar / umum / bersama. pertimbangkan bahwa ada ribuan bahasa manusia, beberapa tidak berfungsi, yang lain aktif, dan kosa kata dan penggunaannya terus berkembang seiring waktu. beberapa orang membuat kata-kata baru yang berguna untuk mengekspresikan konsep yang sebelumnya tidak dapat diungkapkan. Aspek lain yang tumpang tindih dari bahasa komputer dan bahasa manusia adalah tata bahasa . beberapa bahasa misalnya bahasa Inggris memiliki tata bahasa yang sangat kompleks. pertimbangkan semua bentuk kata yang berbeda dan aturan rumit yang mengaturnya. bahasa lain tidak memiliki bentuk kata yang sama . korelasi lain adalah dengan bagian - bagian ucapankategori misalnya kata benda, kata kerja, kata keterangan, kata sifat dll, fungsi ini agak seperti jenis dalam bahasa komputer. bayangkan membuat bahasa baru dengan berbagai bagian kategori bicara yang belum pernah dipertimbangkan sebelumnya, atau dengan kombinasi baru dari bagian-bagian pidato yang berasal dari berbagai bahasa, dll .; jadi perhatikan bahwa linguistik memiliki koneksi ke ilmu komputer misalnya esp dalam teori bahasa Chomskian.
perangkat lunak dan perangkat keras sering dikaitkan dengan mesin dan mesin dan bahkan diberi nama setelah ini. ada analogi perangkat lunak lama yang mencoba untuk memodifikasi sistem produksi 24/7 yang kompleks seperti mengubah mesin pesawat saat sedang dalam penerbangan . juga perhatikan bahwa mesin jet sangat kompleks dan melibatkan spesifikasi presisi besar suku cadang yang dapat dipertukarkandan di sini ada beberapa analogi dengan bahasa komputer yang mengontrol perangkat keras. bayangkan semua kerumitan dokumen yang menggambarkan dengan tepat bagaimana membuat mesin jet: semua bagian, bagaimana mereka dibangun, bagaimana mereka cocok bersama, bagaimana mereka dirakit dll; mereka dibuat / dikompilasi oleh insinyur menggunakan format / struktur / aturan konvensional yang tepat; perangkat lunak agak analog dengan ini.
kembali mesin, siapa pun tanpa pendidikan ilmiah atau matematika atau bahkan anak-anak dapat memahami konsep dasar dan banyak aspek dari mesin Turing! ciptaan yang menakjubkan. salah satu tersangka Turing terinspirasi oleh mesin tik dan / atau mesin teletype. orang dapat menggambarkan tabel keadaan, dan menunjukkan kepada mereka contoh tabel negara yang menghitung perkalian, dan seseorang dapat menonton animasi youtube dari mesin Turing menghitung perhitungan dasar seperti perkalian. memberitahu mereka bahwa tabel negara dapat menghitung atau secara harfiah memutuskan suatu bahasa, dan bahwa input secara harfiah disebut kata-kata . bahkan, mesin Turing menerima kata-kata dalam bahasadll. kemudian beri tahu mereka bahwa ada dua tabel status yang keduanya menghitung perkalian, tetapi yang satu lebih cepat atau lebih efisien daripada yang lain, dan bahwa penelitian Anda melibatkan menemukan konsep tabel keadaan yang lebih baik. mencari tahu bagaimana membangun tabel negara secara efektif melibatkan bahasa pemrograman yang meringkas isi tabel negara besar! sebuah compiler mengubah kode yang ditulis dalam bahasa pemrograman ke dalam tabel negara besar.
algoritma sorting adalah metafora entry level yang bagus ke dalam ilmu komputer. kita dapat melihat berbagai daftar instruksi alias algoritma untuk setiap jenis. seseorang dapat mempelajari apa jenis gelembung versus jenis sisipan, orang dapat menggunakan setumpuk kartu. sekarang fokus pada set instruksi yang berbeda, dan pertimbangkan bahwa mereka harus ditulis dalam bahasa yang sangat tepat, setepat pernyataan matematika, yang memiliki sintaks yang ketat dll, dan memiliki kesamaan umum / struktur: logika kondisional, loop, variabel dll , dan jelaskan bahwa seni spesifikasi yang tepat ini adalah tentang bahasa komputer, dan bahwa beberapa bahasa yang berbeda dapat menghasilkan algoritma yang sama, tetapi ada beberapa variasi gaya yang halus dalam bahasa-bahasa ini yang dipelajari secara mendalam, dll.
sumber
Anda hanya mengatakan, "Saya membantu orang-orang yang mengajar komputer bekerja"
Idenya adalah programmer mengajarkan komputer untuk melakukan hal-hal menggunakan program dan Anda membantu mereka. Saya pikir ini akan bekerja dengan asumsi mereka sudah tahu sedikit tentang komputer.
sumber
Jika Anda tidak ingin menggunakan perbandingan, walaupun saya pikir "algoritma" yang dibawakan Lieuwe sangat bagus untuk menyampaikan ide, Anda bisa mengatakan bahwa Anda ingin mengurangi kesalahpahaman antara manusia dan komputer. Bagaimanapun, Anda berurusan dengan bahasa, dan itu sesuatu yang sangat mendasar bagi manusia, saya kira. Jadi mengapa tidak berpura-pura bahwa komputer hanyalah pikiran yang ingin Anda ajak bicara?
Manusia menciptakan komputer, jadi kami tahu cara kerja otak komputer. Tetapi komputer biasanya tidak "tahu" bagaimana pikiran kita bekerja. (Atau apa maksud sebenarnya kita ketika kita menulis bug yang rumit dan dibuat dengan indah yang hidup bahagia di semak-semak kode kita selama banyak siklus;)) Jadi, terserah kita untuk memperbaiki bahasa yang kita gunakan untuk berkomunikasi dengan mereka, dan mengurangi kemungkinan kesalahpahaman. Dan itulah yang Anda lakukan. Analogi seperti pemeriksa ejaan atau tata bahasa, tentu saja, sangat disambut baik dalam konteks ini.
sumber
Berikut adalah dua analogi yang mungkin berguna bagi Anda:
Pekerjaan saya agak seperti mengeksplorasi pendekatan baru untuk notasi musik. ( contoh ) Meskipun sistem notasi dominan cukup canggih, penting untuk mengeksplorasi alternatif yang mengurangi waktu / upaya / kesalahan untuk komposer, untuk pemain, atau memungkinkan hal-hal yang kikuk atau tidak mungkin untuk diungkapkan dalam sistem dominan, atau bahkan hanya mempromosikan berbagai jenis pemikiran dan dengan demikian mengarah pada komposisi baru. (Ini membuatnya mudah untuk memahami bahwa salah satu tantangan adalah meyakinkan orang untuk mengadopsi barang baru.)
Saya membantu merancang alat yang lebih baik untuk orang-orang di industri saya. Sama seperti orang-orang di industri manufaktur dibantu oleh inovasi seperti latihan tanpa kabel, pemotong laser, dan printer 3D (tidak ada yang ada 60 tahun yang lalu), orang-orang di industri pengembangan perangkat lunak dibantu oleh yang lebih kuat, lebih tepat, lebih kuat, atau bahasa dan fitur pemrograman yang lebih mudah digunakan.
sumber
Ya, kemungkinan besar, Anda memiliki alasan untuk belajar bahasa - gunakan alasan itu. Misalnya:
Jika itu adalah sesuatu yang menarik perhatian mereka, jangan ragu untuk pergi sedikit lebih dalam, tetapi jangan lupa tentang jarak inferensial - kebanyakan orang memiliki masalah besar dalam menjelaskan sesuatu yang terlalu jauh dari pengalaman dan pengetahuan siswa yang ada.
Bahasa sedang menuruni tangga komputer. Orang-orang yang Anda coba jelaskan sepertinya tidak tahu apa itu algoritma , apalagi ada beberapa cara berbeda untuk menggambarkan algoritma yang lebih atau kurang bermanfaat. Anda bisa menjelaskan apa saja jika Anda cukup lembut, tetapi bersiaplah untuk melewati banyak lapisan jika Anda ingin menjelaskan sesuatu yang "sedalam" seperti "bahasa pemrograman RnD". Ini membantu jika orang-orang yang Anda jelaskan sudah menangani matematika dengan baik, tapi itu sama jarangnya dengan pengetahuan komputer :)
Lakukan analogi dengan mudah. Mereka terdengar seperti membantu, tetapi dari pengalaman saya, mereka biasanya menambah kebingungan bahkan jika Anda pikir itu sangat membantu. Bahasa pemrograman adalah jenis seperti pengacara berbicara ... tapi itu tidak sangat membantu bagi orang yang tidak sudah memahami kedua pemrograman dan sebagai pengacara, benar-benar. Jika Anda benar-benar membutuhkan bantuan tambahan, contoh berfungsi dengan cukup baik - tetapi Anda perlu mengakomodasi mereka dengan orang yang Anda jelaskan (dan apa sebenarnya yang Anda teliti)
sumber
Saya menemukan analogi terbaik dirancang untuk orang yang Anda ajak bicara. Apakah mereka seorang pelukis? Diskusikan apa yang Anda lakukan setara dengan menjelajahi teori tentang cara membuat kuas yang lebih baik, hanya bidang ini yang baru berusia 60 tahun, bukannya 600! Berkuda? Bandingkan dengan pengembangan sepatu kuda tugas khusus selama bertahun-tahun.
Jika mereka benar-benar ingin memahami dengan lebih baik, cara favorit saya untuk menjelaskannya adalah dengan berbicara tentang mengisi formulir Pajak, dan instruksi pada setiap baris. Saya menemukan sebagian besar orang di atas 20 memiliki pengalaman dengan IRS Form 1040, dan kotak-kotak yang Anda isi sesuai dengan baik untuk berbicara tentang penugasan variabel. Lalu saya menunjukkan bahwa perangkat lunak melakukan hal yang setara dengan sekitar 2 miliar dari ini satu menit (angka yang dibuat-buat, tetapi mendapat titik di seberang). Jika Anda mempelajari bahasa komputer, mudah bagi orang untuk memahami mengapa instruksi yang lebih baik sebenarnya penting =)
Jika mereka masih tampak tertarik, ini tentang titik di mana saya mulai mencoba menjelaskan kontrol aliran. Biasanya, saat saya selesai membahas flow control atas Form 1040, mereka mulai merasa sangat bersemangat dan mulai bertanya apakah saya sudah menjual ide saya kepada pemerintah!
Saya sering berbicara tentang sistem tertanam, jadi kadang-kadang saya akan menggabungkan analogi Formulir 1040 dengan robot yang memasak sepotong roti (atau 500). Biasanya itu bekerja dengan baik, meskipun karena alasan tertentu mulai dari bentuk pajak IRS hingga membuat sesuatu yang meninggalkan selera yang baik di mulut Anda adalah peregangan yang sangat sulit bagi sebagian orang.
sumber
Orang tua Anda memiliki semacam komputer. Mungkin bukan satu, tetapi banyak. Mereka mungkin memiliki komputer desktop atau laptop, atau telepon, atau iPad. Jika tidak, maka mereka memiliki mesin cuci atau rekaman video atau pemutar DVD atau sesuatu dengan komputer di dalamnya.
Jika tidak, Anda berkata: "Maaf, tetapi Anda berhasil memiliki kehidupan yang benar-benar tanpa komputer. Jadi saya tidak bisa menjelaskan kepada Anda apa yang saya lakukan. Tetapi dunia berubah. Anda hanya perlu memercayai saya bahwa Saya tahu apa yang saya lakukan. "
Jika mereka memiliki komputer jenis apa pun, Anda berkata: "Ini adalah komputer, dan itu tidak hanya bekerja dengan sihir. Ia bekerja karena beberapa pria atau wanita yang pandai menulis sebuah program yang memberi tahu komputer Anda cara bekerja. Dan pekerjaan pria dan wanita yang pandai ini sangat sulit, dan apa yang saya lakukan adalah membantu mereka untuk membuat pekerjaan lebih mudah ".
sumber
Beberapa waktu yang lalu saya memutuskan bahwa analogi yang baik untuk pemrograman yang dapat dengan mudah dipahami bagi orang-orang dengan sedikit atau tanpa pengalaman komputer, akan menulis resep rajutan .
Resep rajutan yang baik berisi beberapa ukuran dalam daftar instruksi yang sama, yang memberi Anda loop dan pernyataan-if. Ini tidak dapat dibaca oleh orang-orang yang tidak merajut, dan jika mengandung kesalahan Anda berakhir dengan pola yang tidak selaras atau lengan tambahan. Terserah Anda - sebagai penulis resep - untuk mencari tahu di mana resep itu salah berdasarkan sweater yang salah dan memperbaikinya.
Anda kemudian dapat menggunakan contoh "Saya melihat bagaimana resep berbeda untuk merajut, merenda, Nålebinding dan sejenisnya" dan belajar ke X (di mana Anda perlu menemukan analogi untuk apa yang sebenarnya Anda lakukan ).
sumber
Itu Ajaib!
Ketika orang-orang tanpa latar belakang teknis apa pun bertanya apa artinya menulis perangkat lunak / program / melakukan rekayasa perangkat lunak, saya hanya memberi tahu mereka apa itu sebenarnya: sihir. Pesulap mantra mantra dalam bahasa esoteris untuk melakukan tugas-tugas tertentu, mereka melambaikan tongkat mereka, dan sesuatu yang ajaib terjadi. Saya mengucapkan mantra tertentu dalam bahasa esoteris, saya menggoyangkan mouse saya, dan sesuatu yang ajaib terjadi (sejauh menyangkut).
Jika mereka tidak yakin, saya meminta mereka untuk menyalakan ponsel pintar mereka dan memberi tahu saya bagaimana semuanya bekerja. Mereka biasanya berkata: "Saya tidak tahu, itu hanya terjadi. Saya menekan tombol dan hal-hal terjadi." Lalu saya memberi tahu mereka: "Ya, persis, tetapi saya tahu apa yang sebenarnya terjadi, dan itu pada dasarnya sama dengan Harry Potter mengayunkan tongkatnya dan berkata: 'Hocus pocus'" Untuk semua maksud dan tujuan, kepada orang awam, saya berpikir ini adalah penjelasan yang sangat sah.
Hampir semua orang tahu siapa Harry Potter, apa yang dia lakukan, dan apa yang membuatnya istimewa (setidaknya dia adalah seorang penyihir dan dapat melakukan hal-hal yang kuat dengan sihir). Anda bisa menjelaskan bahwa kadang-kadang penyihir perlu menulis mantra mereka dalam bahasa baru untuk membuat sihir mereka lebih kuat, yang tidak terlalu jauh dari kebenaran. Anda bisa memberi tahu mereka bahwa Anda sedang mempelajari proses membuat buku mantra yang lebih kuat untuk membantu generasi penyihir yang bahkan lebih kuat yang dapat membuat keajaiban yang lebih besar pada perangkat konsumen favorit mereka. Semua orang menghargai itu.
Gagal total
Jika itu gagal, saya kembali ke contoh resep, karena ketidakseragaman solusi setidaknya mengajarkan orang bahwa ada lebih dari satu cara menguliti kucing (atau membuat kue), dan ini adalah bagian dari apa yang membuat pemrograman jadi rumit. Ini juga membantu menempatkan orang dalam posisi menjadi CPU dan kadang-kadang mengikuti instruksi yang mungkin tidak mereka pahami (kebanyakan orang mungkin tidak tahu perbedaan antara baking soda dan baking powder, dan mengapa resep memiliki satu atau yang lain).
Jalan buntu
Saya tidak suka menggunakan matematika sebagai contoh, karena untuk melakukan matematika, Anda harus memahami apa langkah-langkahnya. Anda tidak dapat melakukan banyak matematika dengan mengikuti instruksi secara membabi buta (well, Anda bisa, tetapi biasanya bukan itu cara manusia mempelajarinya). Saya tidak suka menyortir sebagai contoh karena terlalu teknis untuk dihargai oleh orang awam. Jika saya berbicara dengan seseorang yang dapat menghargai contoh penyortiran, maka mereka mungkin sudah memiliki ide tentang pemrograman, dan mungkin telah mencobanya sendiri.
sumber