Cara memperkenalkan komputer yang buta huruf, 50 tahun ke pemrograman [ditutup]

10

Suatu hari ayah saya mengajukan pertanyaan yang tidak pernah saya harapkan darinya.

"Bagaimana saya bisa belajar C ++?"

Ayah saya berusia 56 tahun ini dan komputer adalah konsep yang jauh baginya. Dia tidak tahu cara menggunakan telepon dengan sangat baik selain memanggil nomor (tidak ada panggilan cepat atau kontak); meskipun dia sudah mulai belajar komputer sedikit lebih baik - sampai-sampai dia tahu cara membuka internet (di Windows) dan menjelajah (dan telah berhasil menyelesaikan beberapa lamaran pekerjaan sepenuhnya di online-nya sendiri, di mana dia ditawari posisi juga ). Tapi tetap saja, ini pengalaman yang terlalu sempit sehingga tidak berarti banyak.

Meskipun dia mungkin tidak memiliki latar belakang, ayah saya tahu cara membaca. Maksud saya membaca sebagai keterampilan, bukan hanya kemampuan. Dia memiliki sedikit atau tidak ada pendidikan perguruan tinggi (masalah keuangan, keluarga, dll) dan cukup beruntung untuk menyelesaikan sekolah menengah, tetapi masih belajar sendiri untuk menjadi ahli listrik dan telah menjadi salah satu selama hampir 30 tahun sekarang. Dia melakukan hal yang sama dengan gitar, belajar bermain di level yang sangat profesional dan telah dipuji karena keahliannya. Di sekolah menengah, ia mengambil buku angkat berat - dan merupakan satu-satunya orang di sekolah menengahnya saat itu yang memenuhi syarat secara resmi sebagai "atlet" dengan standar nasional.

Dalam semua kasus, dia hanya perlu sesuatu untuk dibaca. Sesuatu untuk diajarkan padanya. Dia menyerap informasi seperti spons.

Saya tidak ragu dengan motivasi atau kemampuan ayah saya untuk melakukan ini, jadi tujuan umum saya hanyalah:

Dapatkan ayah saya ke dunia komputer, dan bawa dia di jalan menuju pemrograman.

Saya sangat percaya bahwa begitu saya berhasil melewati dasarnya, dorongan dan keterampilan membaca akan membuatnya terus berjalan sendiri.

Jadi saya bertanya kepada Anda semua: di mana saya harus mulai dengan semua ini? Dan apa sumber daya terbaik di luar sana? Haruskah saya membuatnya memulai Linux, bukan Windows? Apakah C ++ adalah ide yang buruk?

Ingat, dia perlu (IMO) mempelajari komputer terlebih dahulu, dan kemudian mendapatkan pemahaman pertama (pengalaman Hello world) pemrograman.

Demi uang dan pada preferensi teratas, saya ingin sumber daya online gratis yang bisa dia baca, tetapi dengan segala cara saran baik di media cetak atau berbayar-online dipersilakan (bahwa saya mungkin bisa melihat nanti untuk membeli).

Dan juga, saya bermaksud memulainya dengan C ++ (tanpa Python, Java, dll.), Karena saya tahu itu yang terbaik dan akan dapat membantunya sepanjang jalan dengan kode. (Saya memiliki pengetahuan minimal sekarang dalam bahasa lain).

Sunting: Saya mendapatkan banyak saran terus-menerus untuk menggunakan Python. Satu-satunya alasan saya ingin melakukan C ++ adalah bahwa saya TAHU dan dapat SANA ketika ayah saya membutuhkan bantuan. Paparan SANGAT PERTAMA saya untuk pemrograman adalah Java. Saya belajar Java, dan saya pandai. Saya terbuka untuk saran lain, tapi tolong berikan aplikasi saran yang efektif.

EDIT # 2: Saya mengerti pendekatan / pemikiran / pengetahuan saya bisa kurang di sini. Saya seorang mahasiswa tingkat sarjana sarjana CS mayor. Jika Anda tidak setuju dengan apa pun dalam posting saya, katakan alasannya - beri saya ide, informasi - itu sebabnya saya bertanya. Untuk mempersempit tujuan umum saya ke tujuan spesifik yang dapat dicapai.

skippr
sumber
1
Pertanyaan ini tidak berhubungan dengan pengembangan perangkat lunak profesional. Meskipun dalam perjalanan hari kita, kita harus berinteraksi dengan orang lain, teknis dan non-teknis, dan kadang-kadang mengajar mereka, kita bukan guru atau instruktur profesional dan tidak dapat memberikan nasihat yang baik tentang bagaimana cara terbaik mengajar seseorang. Jika Anda ingin membahas ini lebih lanjut, Anda dapat mengajukan pertanyaan di situs Meta kami .
Thomas Owens
@ThomasOwens bagaimana Anda tahu tidak ada guru atau instruktur profesional di komunitas? Apakah Meta yang kurang dilihat benar-benar harus saya tuju? Saya kira saya bisa menyerah pada itu (meskipun saya benar-benar ingin tinggal di sini), tolong migrasi untuk saya. JIKA ada sesuatu yang bisa saya lakukan untuk membuat pertanyaan ini sesuai kriteria agar lebih baik dilihat oleh komunitas SO / Programmer, tolong bantu saya melakukannya.
skippr
1
Sejauh pengetahuan saya, tidak ada situs yang akan menerima pertanyaan ini. Saya hanya melihat-lihat daftar dan tidak melihatnya. Jika Anda ingin membahas ini lebih lanjut, silakan ajukan pertanyaan di Meta .
Thomas Owens
@ Thomas Owens Yah, aku di sini bukan untuk merengek atau troll, jadi aku akan melakukan yang terbaik dengannya. Terima kasih
skippr
Menyelinap jawaban saya di komentar ... Bertentangan dengan jawaban di bawah ini saya pikir C ++ sebenarnya adalah bahasa pertama yang bagus. Khusus untuk pemula. Anda mulai dengan konsol sepele IO dan C ++ jauh lebih ramah pemula daripada Java atau C # dalam hal ini. Lebih sedikit kode pelat ketel untuk membingungkannya juga. Tentu ada fitur-fitur canggih yang akan menyebabkan kebingungan tetapi Anda dapat membatasi diri Anda pada beberapa fitur dasar.
Lord Tydus

Jawaban:

13

Pertama, bahkan jika Anda secara pribadi mengenal C ++ dengan baik, itu adalah bahasa pertama yang mengerikan , mengerikan untuk pemula, dan saya tidak bisa merekomendasikan cukup kuat untuk membuatnya sejauh mungkin dari itu jika ia ingin berhasil belajar menulis kode. Mempelajari pemrograman bukan tentang bahasa, ini tentang belajar mengekspresikan persyaratan abstrak dalam logika formal. C ++ membuat itu sulit untuk fokus karena Anda terus-menerus tersandung masalah bahasa tertentu.

Jika dia ingin belajar mengekspresikan ide dalam logika formal, cari sesuatu yang membuatnya sesederhana itu. Pilihan saya adalah Pascal (untuk pengembangan tingkat aplikasi) atau Python (untuk pekerjaan tingkat skrip) karena keduanya dirancang dengan intuitif dan mudah dipelajari sebagai prioritas inti. Begitu dia benar-benar tahu prinsip-prinsip cara menulis kode, maka jika dia benar-benar peduli tentang C ++ secara spesifik, dia bisa mengambilnya.

Untuk alasan yang sama, jangan mulai dia di Linux, bukan Windows, karena dengan begitu dia memiliki dua masalah untuk fokus pada: belajar Linux dan belajar coding, pada saat yang sama! Pertahankan gangguan seminimal mungkin.

Adapun sumber daya pemrograman yang sebenarnya, cukup mudah untuk menemukan tutorial online, tetapi saya telah menemukan bahwa cara terbaik untuk belajar pemrograman adalah dengan pemrograman. Temukan sesuatu yang ingin Anda lakukan, dan kemudian mulai mencari tahu bagaimana melakukannya.

Beberapa tahun yang lalu, saya melihat permainan dan saya berpikir, "Saya bisa melakukan ini, dan saya bisa melakukannya dengan lebih baik." Jadi saya menyalakan Delphi dan mulai mencari tahu prinsip-prinsip yang terlibat. Saya masih belajar hal-hal baru dari proyek pribadi itu, dan sepanjang jalan, saya telah menjadi pembuat kode yang sangat baik! Jadi coba itu; tanyakan pada ayahmu apa yang ingin dia lakukan jika dia bisa memprogram - dan pastikan itu mungkin, dan cakupannya cukup kecil karena dia belum memiliki pengalaman - dan kemudian duduk bersamanya dan mulai mencari tahu bagaimana cara melakukannya Itu.

Dan jika dia memiliki pertanyaan, berikan dia akun StackOverflow. :)

Mason Wheeler
sumber
4

Saya pikir minat ayah Anda pada C ++ jelas rapi tetapi itu bukan pilihan saya untuk bahasa pemrograman pertama - kecuali dia memiliki persyaratan yang sangat spesifik yang ingin dia temui. (Bahkan kemudian, belajar C ++ setelah mempelajari bahasa lain yang lebih sederhana mungkin masih jauh lebih mudah.)

Ada beberapa hal yang penting untuk pemrograman:

  • Kemampuan untuk memecahkan masalah abstrak
  • Kemampuan untuk menguraikan masalah menjadi potongan-potongan yang cukup kecil untuk pemecahan masalah
  • Kemampuan untuk membangun solusi secara iteratif dan dalam jumlah yang cukup kecil agar kemajuan dapat dimungkinkan
  • Sintaks dan semantik bahasa tertentu.

Dalam banyak hal, sintaks dan semantik bahasa tertentu mendekati akhir dari keterampilan yang diperlukan untuk pemrograman. Lagipula, jika Anda mendekati kanan, kebanyakan kompiler akan memberi tahu Anda kesalahan apa yang telah Anda buat - meskipun perlu pengalaman untuk memecahkan kode apa yang dikatakan oleh kompiler secara spesifik.

Jadi, saya menyarankan agar ayah Anda menangani bahasa pemrograman yang jauh lebih sederhana pada langkah pertama: Ruby, Python, C, C #, Haskell, dll. (Haskell jelas sulit bagi orang yang hanya memprogram bahasa imperatif, tetapi saya ' Anda ingin tahu apakah novis yang sama sekali sama mengalami perasaan "kehabisan air".)

Tetap dengan bahasa yang lebih sederhana di muka berarti ayah Anda akan lebih sukses lebih awal, dan akan lebih mudah untuk "bermain". Lingkaran REPL interaktif dari banyak bahasa adalah tempat yang sangat baik untuk belajar.

Setelah ayah Anda terbiasa dengan fungsi, kelas, objek, metode, maka detail dan nuansa C ++ tidak akan terasa begitu luar biasa. Heck, bahkan mulai dengan C akan lebih mudah: tidak memaafkan , tetapi ada beberapa fitur membingungkan yang perlu dikhawatirkan.

Anda ingin tahu tentang Linux vs Windows; Saya tidak yakin perbedaan itu penting. Jika dia sudah terbiasa dengan satu atau lingkungan lain, beralih hanyalah rintangan lain. Jika dia tidak tahu, saya sarankan Linux, tetapi terutama karena menginstal alat yang bagus itu sangat mudah: apt-get install <foo>bekerja pada sebagian besar distribusi, dan distribusi yang tidak mendukung aptsering kali memberikan hal yang serupa. Semenit kemudian, paket baru Anda yang rapi terinstal, seringkali lebih cepat daripada yang saya perlukan untuk menemukan sumber unduhan yang dapat diandalkan untuk binari Windows yang dikompilasi yang tidak berbau kuda Troya.

sarnold
sumber
Ayah saya pasti memiliki "kemampuan untuk berpikir" yang sangat penting bagi para programmer. Saya melihat akal sehat dan kecerdasannya dalam hal-hal yang dia lakukan sekarang, dan saya tahu itu bisa diterapkan dalam pemrograman. Anggaplah kita memiliki kandidat yang optimal untuk belajar. Pertanyaan saya adalah: Bagaimana kita mendapatkannya di sana?
skippr
Hrm, saya membagi keterampilan ke dalam kategori yang berbeda untuk membuat titik yang macet di sintaks dan semantik dapat mengaburkan pengembangan keterampilan lain - bahasa dengan aturan perasaan misterius yang lebih sedikit akan membuat abstraksi mengalir lebih mudah - tapi saya tampaknya belum menyatakan hal itu dengan baik.
sarnold
1
Dari bahasa yang disarankan, saya pasti akan menyukai Python. Tetapi, jika ayah Anda cenderung secara visual, Memproses (lihat www.processing.org) mungkin merupakan intro yang menarik (meskipun ada banyak jenis masalah yang tidak cocok).
James Youngman
@ James: heh, saya rasa saya tidak pernah melihat frasa ini, program interaktif menggunakan ... keluaran PDF sebelumnya. :)
sarnold