Bagaimana saya bisa menjelaskan kepada orang tua saya bahwa saya belajar bahasa pemrograman?


64

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?


Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
DW

3
Pertanyaan ini mendapat downvote dan satu atau lebih tanda dekat, jika saya memahami panel dengan benar. Harap pertimbangkan untuk meninggalkan komentar agar saya dapat memperbaikinya. Meskipun saya sudah lama bersembunyi di sini, ini adalah pertama kalinya saya berpartisipasi aktif di situs dan mungkin saya tidak akrab dengan beberapa kebijakan.
effeffe


1
Saya tidak bisa memahami mengapa pertanyaan ini lebih banyak dipilih daripada pertanyaan yang terkait dengan masalah tertentu, yang lebih berguna. Pertanyaan ini konyol dan sangat terpilih. Luar biasa!
Nbro

2
@nbro Saya tidak mengerti apa yang menggelikan tentang pertanyaan itu, dan saya tidak yakin bagaimana Anda memutuskan bahwa pertanyaan tertentu "lebih berguna" daripada yang lain.
effeffe

Jawaban:


59

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.


27
Menyortir setumpuk kartu juga merupakan cara mudah untuk memperkenalkan gagasan tentang algoritma.
Morwenn

2
@Morwenn Itu benar! Ada banyak algoritma yang kami jalankan dalam kehidupan sehari-hari! Dealing cards bersifat algoritmik, lalu lintas memiliki banyak aspek algoritmik, meskipun berbasiskan kejadian dan tidak penting, memasak adalah algoritmik saat Anda melakukannya dengan pilot otomatis. Alasan saya suka penambahan adalah bahwa semua orang belajar algoritma yang sama di sekolah dasar, sedangkan untuk mengurutkan daftar angka, strategi orang berbeda-beda dan mereka tidak metodis: mereka mencoba menemukan pola dekat, angka yang berdekatan, dan tidak semua orang tahu memesan setumpuk kartu seharusnya tetap (apakah hati sebelum sekop?)
Lieuwe Vinkhuijzen

Secara pribadi ketika ditanya tentang komputasi kuantum saya cenderung menghindari fisika sepenuhnya tetapi mencoba memberikan gagasan umum (bahwa komputer kuantum tidak bekerja lebih baik atau lebih cepat tetapi hanya dapat melakukan perhitungan dengan cara yang di luar ruang lingkup untuk komputer normal). Jika mereka bertanya seperti apa mereka cenderung senang dengan tampilan yang disederhanakan, pada dasarnya bahwa pemrosesan SIMD (dengan sumber daya linier cukup untuk mengakses ukuran eksponensial dari data input paralel), yang sebagian besar algoritma setelah semua.
The Vee

Anda dapat melampaui sekadar kartu; Baru-baru ini saya menemukan diri saya menggunakan varian Quicksort untuk mengurutkan setumpuk kertas yang harus saya atur tanpa memikirkannya karena ada terlalu banyak untuk jenis penyisipan dasar.
JAB

@ JAB Itu luar biasa! Tapi Anda mungkin sudah tahu Quicksort di belakang pikiran Anda. Keuntungan dari menjelaskan penjumlahan vs sortasi adalah bahwa semua orang memiliki algoritma penjumlahan yang sama, tetapi tidak ada orang awam yang memiliki algoritma penyortiran metodis. Di sisi lain, itu bisa menjadi keuntungan! Anda bisa menjelaskan algoritme yang berbeda. Ini adalah rute yang saya ambil ketika saya berbicara dengan seseorang yang berpikiran matematis di luar cs, dan melintasi konsep algoritma yang berbeda untuk tugas yang sama dengan batas waktu yang berbeda, dan mengapa batas bawah sulit.
Lieuwe Vinkhuijzen

18

Saya akan mencoba sesuatu seperti ini:

Pemrogram dapat memberi tahu komputer apa yang harus dilakukan. Untuk melakukan itu, mereka perlu menggunakan bahasa pemrograman. Itu adalah bahasa yang dipahami oleh komputer dan manusia. Misalnya, jika Anda mengedit dokumen Word dan menekan tombol, komputer akan menunjukkan huruf yang Anda tekan. Itu karena seorang programmer menulis sebuah program yang mengatakan: Jika pengguna menekan "A", masukkan "A" ke dalam dokumen. Jika pengguna menekan "B", masukkan "B" ke dalam dokumen, dan seterusnya. Komputer hanya mengikuti aturan dalam program yang ditulis oleh programmer.

Sekarang kadang-kadang programmer membuat aturan bodoh karena kesalahan. Komputer tetap akan mencoba mengikuti aturan bodoh itu, tetapi jika Anda mengikuti aturan yang buruk, sesuatu yang buruk akan terjadi. Misalnya, kadang-kadang, ketika Anda mengedit dokumen Word, tiba-tiba semuanya membeku dan komputer tidak bereaksi lagi. Itu mungkin karena beberapa programmer di Microsoft menulis program yang kurang sempurna.

Pekerjaan saya adalah tentang menciptakan metode untuk memeriksa program untuk kesalahan tersebut dan lainnya, menggunakan program lain dan beberapa matematika. Ide dasarnya adalah mencari tahu bagaimana memprediksi apa yang akan terjadi ketika suatu program dieksekusi, tanpa benar-benar mengeksekusinya.

Tentu saja, karena ini adalah penelitian, saya hanya mengerjakan sedikit aspek dari ini, tidak semuanya sekaligus, tapi itulah gambaran besar dari apa yang kami coba capai.

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 ".


12

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 :

Untuk memasak perogie: Didihkan panci besar berisi air asin ringan. Jatuhkan perogie dalam satu per satu. Mereka selesai ketika mereka melayang ke atas. Jangan sampai mendidih terlalu lama, atau akan menjadi lembek! Hapus dengan sendok berlubang.

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.


7

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;)


7

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:

  • Beberapa bahasa mengharuskan Anda untuk menunjukkan bukti dengan setiap pernyataan: apakah pernyataan itu karena pengalaman Anda sendiri, kesimpulan Anda sendiri, kabar angin, spekulasi, dll.
  • Beberapa bahasa membentuk kata-kata besar dengan aglutinasi; setiap kata dapat sangat dimodifikasi untuk menyandikan banyak informasi tentang peran gramatikalnya. Bahasa lain hampir tidak pernah memodifikasi kata sama sekali, dan mengandalkan urutan kata atau partikel untuk mengekspresikan informasi itu.
  • Bahasa berbeda dalam ukuran kosa kata . Beberapa bahasa memiliki kata-kata yang hanya dapat diterjemahkan dengan sunat (misalnya 엄친아 ). Beberapa bahasa memiliki ekspresi cemerlang yang sangat baik sehingga bahasa lain meminjamnya (misalnya Schadenfreude).
  • Beberapa bahasa tidak memiliki konsep kiri / kanan; Anda harus mengekspresikan semuanya dalam hal utara / selatan / timur / barat.
  • Beberapa bahasa tidak memiliki angka. Bahasa juga bervariasi dalam jumlah nama warna yang umum .
  • Bahasa berbeda dalam fonotaksinya. Misalnya, laju suku kata bervariasi, dengan orang Jepang cenderung menggunakan banyak suku kata sederhana, sementara bahasa Cina lebih lambat, tetapi menyandikan informasi dalam nada.
  • Bahasa beragam dalam kepadatan informasi . Jika Anda melihat terjemahan bahasa Mandarin-Inggris-Prancis, Anda akan melihat bahwa versi bahasa Mandarinnya sangat kompak di atas kertas, dan bahasa Prancis akan menempati ruang terbanyak.
  • Beberapa bahasa, seperti bahasa Inggris, tidak pasti: siapa pun dapat dengan bebas meminjam kata dari bahasa lain dan Bahasa Inggris. Bahasa lain, seperti Prancis, memiliki badan standar yang menolak perubahan. Islandia, misalnya, pada dasarnya sangat konservatif.

Apakah ada bahasa terbaik , secara objektif? Jawabannya mungkin tergantung pada apa yang Anda coba lakukan.

  • Jika Anda mencoba untuk berkomunikasi secara diam-diam melalui radio, Navajo akan menjadi taruhan yang bagus. (Sebutkan bahasa "khusus menulis" favorit Anda.)
  • Jika Anda mencoba menulis peringatan kepada generasi yang akan datang, dan tulisan itu harus dapat dimengerti beberapa ribu tahun dari sekarang, Anda mungkin ingin menggunakan bahasa Mandarin (karena banyaknya jumlah penutur dan stabilitas sistem penulisan) atau mungkin Bahasa Inggris (yang telah berubah secara dramatis selama milenium terakhir, tetapi sangat dikenal luas). (C dan JavaScript mungkin akan hidup "selamanya".)
  • Orang Cina, yang memiliki banyak homofon, sangat bagus untuk menghukum . (Puisi Perl)
  • Mungkin netralitas penting, dalam hal ini Anda dapat memilih Esperanto. (Java dirancang untuk portabel; C kurang begitu.)
  • Mungkin Anda perlu mengekspresikan pikiran dengan ketepatan yang lengkap, dan tidak ada bahasa alami yang cukup. Anda harus resor ke Ithkuil !
  • Mungkin sangat sulit untuk menerjemahkan antara beberapa pasangan bahasa (misalnya Arab-Inggris ) karena perbedaan budaya yang luas dan konotasi budaya dengan kata-kata tertentu. Demikian pula, beberapa ide tidak mudah diungkapkan dalam bahasa komputer tertentu karena konsep itu tidak ada (misalnya ekor-recursiveness).

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.


1
Satu kesulitan dengan ini adalah bahwa beberapa orang tidak pernah benar-benar merenungkan bahasa alami mereka sendiri. Jadi contoh-contoh bahasa mungkin hampir sama sulitnya untuk dipahami oleh sebagian orang, seperti gagasan tentang bahasa pemrograman. Jika Anda tahu orang itu (setidaknya) bilingual, prospeknya mungkin lebih baik ....
TextGeek

@TextGeek Bahkan dalam bahasa Inggris, ada dialek. Orang-orang berdebat tentang aturan bahasa seperti negatif ganda dan mengakhiri kalimat dengan preposisi. Bahasa berkembang sepanjang waktu, terkadang dengan cara yang kontroversial. Popularitas SMS telah menyebabkan singkatan baru. Dalam bahasa Inggris Amerika, Anda dapat mengubah kata benda apa pun menjadi skandal dengan menambahkan sufiks "-gerbang". Saya tidak berpikir Anda harus bilingual untuk menghargai inovasi dan keanekaragaman bahasa.
200_sukses

3
  • 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.


1
Mengapa downvote yang ini? Saya pikir ada banyak wawasan. Seseorang mungkin tidak menyetujui semua poin, tetapi ada banyak kemungkinan di sini. +1
effeffe

3

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.


"Saya pikir ini akan bekerja dengan asumsi mereka sudah tahu sedikit tentang komputer" itulah intinya: jika Anda hati-hati membaca jawaban saya, Anda akan melihat bahwa masalah utama adalah menjelaskan apa yang saya lakukan kepada mereka yang tidak tahu bagaimana komputer sebenarnya bekerja .
effeffe

@effeffe: tetapi mereka sadar bahwa komputer ada? Dan mereka mungkin memiliki beberapa gagasan bahwa ada hal-hal yang disebut "program", "aplikasi", atau "aplikasi", bahkan jika mereka tidak pernah secara sadar menggunakan komputer sendiri. Jadi demi kesederhanaan, pemrograman adalah (antara lain) membuat aplikasi dengan menuliskan instruksi yang dapat diikuti komputer. Tentu saja akan membutuhkan banyak waktu dan instruksi bagi mereka untuk menghargai setiap detail pemrograman atau bagaimana hal itu dapat ditingkatkan, tetapi jika mereka tahu bahwa komputer dan program menjadi lebih baik dari waktu ke waktu, mereka tahu "sedikit" tentang komputer, setidaknya.
Steve Jessop

3

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.


3

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.


2

Ya, kemungkinan besar, Anda memiliki alasan untuk belajar bahasa - gunakan alasan itu. Misalnya:

Saya mencoba membuat komputer dan aplikasinya lebih murah, lebih mudah digunakan dan lebih aman.

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)

Anda tahu bagaimana Anda tidak bisa membaginya dengan nol? Saya mencoba memastikan bahwa komputer bahkan tidak pernah mencoba untuk membagi dengan nol, sehingga mereka tidak crash ketika seseorang melakukan kesalahan.


▲ untuk menyarankan pendekatan bertahap dan lembut.
PJTraill

1

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.


1

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 ".


-1

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 ).


Penanya tidak mempelajari pemrograman. Mereka sedang mempelajari desain bahasa pemrograman.
David Richerby

@DavidRicherby Inilah sebabnya saya menyarankan untuk menggunakan contoh OP untuk melihat bagaimana resep mencari berbagai jenis pekerjaan praktis. Ternyata ini juga sangat berbeda.
Thorbjørn Ravn Andersen

-1

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.


1
Saya tidak mengerti apa hubungannya dengan pertanyaan ini. Secara khusus, pertanyaannya adalah bagaimana menjelaskan teori tipe kepada orang awam, dan teori tipe adalah matematika.
David Richerby

Mungkin sedih, mungkin tidak, tetapi pemrograman secara umum adalah buku tertutup untuk 99% populasi dunia. Saya telah menghabiskan cukup banyak waktu selama bertahun-tahun untuk membuat orang yang bukan programmer memahami pemrograman, tanpa hasil. Menjelaskan seluk-beluk dan kelezatan berbagai jenis sistem sama dengan menjelaskan fisika partikel subatomik kepada orang-orang yang sama - mata mereka akan berkaca-kaca dan mereka mungkin akan sopan tetapi mereka tidak akan mendapatkannya. Dan tidak apa-apa - mereka TIDAK PERLU untuk memahaminya, dan kemungkinan besar mereka tidak PEDULI bahwa mereka tidak memahaminya. Sudah cukup KAMI lakukan. :-)
Bob Jarvis
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.