Saya mendapat ujian pemrograman pertama saya baru-baru ini ... dan saya gagal melakukannya. Tidak bagus sama sekali. Saya hanya bisa menyalahkan diri saya sendiri karena di luar waktu kuliah, saya tidak melakukan apa-apa.
Sekarang saya memiliki satu lagi datang dekat waktu musim panas dan saya tidak membiarkan ini terjadi lagi. Selama beberapa minggu sekarang saya sudah membaca, membaca, dan membaca lagi. Saya terus membahas hal-hal lama yang saya lewatkan dan hal-hal baru yang kami lakukan. Jadi, jelas saya bisa melihat perbedaan besar dalam pemahaman saya tentang bahasa ini. Namun, itu saja. Saya dapat membaca kode dan sekarang saya memiliki ide tentang apa yang terjadi dalam kode ... tetapi ketika saya harus menulis kode sendiri, saya tidak tahu apa-apa. Sepertinya saya tidak pernah tahu pendekatan apa yang harus diambil dan tidak pernah bisa sepenuhnya memahami pertanyaan-pertanyaan itu.
Saya telah melakukan cukup banyak membaca (dilakukan sekitar 5-6 jam selama sebulan terakhir atau lebih) setiap hari ... Tetapi ketika membuka IDE saya, saya selalu merasa dikutuk itu benar-benar melemahkan semangat. Terutama karena saya memiliki pengetahuan tentang node, daftar, daftar array, antarmuka dll kecuali selain membacanya di halaman itu saja. Saya dapat menunjukkan dengan tepat semua yang terjadi dalam sebuah program sehingga menjelaskan kode contoh yang saya temukan baik-baik saja ... tetapi menulis kode saya sendiri adalah cerita lain ..
sumber
Jawaban:
Anda belajar cara menulis program dengan menulis program.
Tapi kamu harus mulai dari kecil, kawan.
Dari sana, mulailah membangun ...
lalu...
... dan seterusnya. Setelah Anda memahami dasar-dasar cara kerja objek, akan jauh lebih mudah untuk menulis program yang lebih besar.
sumber
Pertanyaan bagus! Penting untuk disadari bahwa Anda memiliki banyak kurva belajar untuk didaki. Hanya agar Anda tidak berpikir bahwa Anda hanya belajar bahasa pemrograman. Anda melakukan sedikit lebih dari itu.
Anda sedang belajar tentang ...
Saya menduga bahwa itu adalah poin ketiga di mana Anda berjuang. Anda belajar bagaimana mengatakan sesuatu dalam kode (sintaks) tetapi sebenarnya Anda bertanya kepada kami apa yang harus saya katakan dalam kode. Apakah ada cara yang benar dan cara yang salah untuk melakukan sesuatu?
Saya menyarankan agar Anda mengambil tantangan. Lihatlah berikut ini sebagai latihan.
http://en.wikipedia.org/wiki/Eight_queens_puzzle
Sekarang ini adalah tantangan yang sulit. Anda harus menempatkan delapan Ratu di papan catur sehingga masing-masing Ratu aman dari satu sama lain.
Jadi sebagai pembelajar, hal ini mungkin terlalu berlebihan, namun Anda dapat melihat masalah ini dan menggunakannya untuk mempelajari cara menulis kode.
Inilah strategi untuk dicoba ...
Menyatakan kembali masalah menjadi lebih sederhana bahwa masalah yang disebutkan harus diselesaikan . Lupakan delapan ratu. Fokus hanya pada satu. Pelajari cara menulis kode untuk mewakili papan catur di memori, tempatkan ratu tunggal di papan itu dan kemudian tampilkan kepada pengguna di layar hanya dengan teks.
Setelah Anda melakukan tikaman pada Langkah 1. Tempatkan dua ratu sehingga keduanya aman.
Akhirnya, cobalah menempatkan lebih dari 2 ratu di papan tulis agar semuanya aman.
Langkah-langkah di atas adalah twist pada strategi desain yang disebut Step-wise Refinement. Ini sedikit tua-sekolah dalam hal desain tetapi akan membawa Anda dari layar kosong ke beberapa kode menarik dalam waktu singkat.
Ada desain lain dan strategi implementasi: Desain Didorong Uji, Desain Berorientasi Objek dan Pola Desain untuk beberapa nama.
Pada waktunya, Anda akan menambahkan strategi ini ke gudang senjata dan menggunakannya sesuai kebutuhan. Semakin banyak strategi desain yang Anda pelajari dan praktikkan, semakin mudah jadinya.
Semoga sumbernya menyertai Anda.
sumber
Kata Pengantar Cepat
Belajar dengan Melakukan: Pengetahuan vs Tahu-Bagaimana
Ada perbedaan pengetahuan dan pengetahuan yang sangat besar. Adalah kesalahan umum bagi pelajar baru untuk berpikir bahwa karena mereka dapat "memahami" suatu program ketika mereka membacanya, mereka benar-benar memahami alasan program tersebut ditulis sebagaimana adanya.
Dan satu-satunya cara untuk mencapai bagian kedua adalah berlatih. Duduk, buka editor teks, baris perintah, dan mulai.
Pemrograman dalam Kecil
Kemungkinan (dan diharapkan) bahwa pada tahap ini kemampuan Anda untuk memahami bagaimana beberapa komponen perangkat lunak yang kompleks saling berinteraksi terbatas. Dan itu sebenarnya hal yang baik, karena memaksa Anda untuk memulai dari dasar. Jangan lompat pistol dan bergerak dengan kecepatan yang tepat: mulailah dengan latihan kecil untuk tugas kecil.
Sejujurnya saya tidak pernah yakin bahwa mulai belajar pemrograman dengan Jawa adalah cara yang harus ditempuh (saya dulu mengajar pemrograman untuk mencari nafkah di universitas, dan kadang-kadang masih melakukan kuliah pribadi). Itu sendiri terlalu rumit untuk Anda mulai, dan sebagian besar buku Java akan tampak cukup menakutkan. Namun demikian, itu pasti dapat dilakukan (setidaknya untuk beberapa area dari pengetahuan global yang kami harapkan dari programmer), selama Anda membatasi diri Anda untuk belajar langkah demi langkah.
Buku
Saat Anda siap menggunakan Java, dan jika Anda membutuhkan buku Java yang layak, saya akan merekomendasikan:
Saya hanya menyebutkan ini karena saya tidak tahu apa yang Anda gunakan di kelas. Ada banyak buku lain. Beberapa bagus. Beberapa akan melumpuhkan siswa selama bertahun-tahun.
Proses Belajar Anda
Alur Kerja Dasar
Mulai sekarang, saya menyarankan Anda untuk mengikuti proses 2 langkah ini untuk semua latihan dan contoh kode yang Anda lihat di kelas:
Dalam hal Kegagalan
Jika Anda gagal dan merasa perlu mengintip buku itu, kegagalan Anda kemungkinan adalah:
Penyebab pertama kemungkinan adalah apa yang paling sering Anda hadapi. Yang kedua adalah anekdotal. Keduanya ditangani oleh praktik berulang.
Setiap kali Anda gagal menerapkan salah satu contoh awal ini, lihat kembali buku itu, lalu tutup kembali. Jangan kode sambil melihat buku. Saya bahkan menyarankan agar Anda menghapus seluruh solusi dan memulai kembali. Pengulangan adalah bagian yang mengganggu tetapi penting dari proses pembelajaran.
Jangan anggap enteng ini. Setiap kali Anda merasakan dorongan untuk mengatakan pada diri sendiri "ya, oke, saya tahu ini" atau "Saya 90% di sana, hampir sama baiknya dengan yang sudah selesai" dan ingin melompat ke bagian lain, melawan keinginan itu kembali dan mulai lagi. Sangat sulit untuk memiliki kejujuran untuk mengakui kepada diri sendiri bahwa Anda tidak sepenuhnya memahami konsep.
Catatan tambahan: Saya menganggap ini suatu kerugian besar karena sebagian besar program sekolah sekarang mencoba untuk "memulai" program pemrograman dengan terlalu banyak meredam masalah dan menyediakan perkakas yang terlalu canggih bagi siswa: tujuannya bukanlah untuk membuat hidup Anda sengsara atau untuk Anda juga belajar dengan hati hal-hal yang nantinya dalam karir Anda akan diotomatisasi oleh alat Anda dan bahwa Anda kadang-kadang bahkan hampir tidak ingat. Ini untuk mengajarkan Anda semua bagian yang mengambang.
Jika Berhasil: Melampaui!
Jika Anda berhasil menerapkan latihan Anda, jangan langsung melompat ke yang berikutnya. Coba lihat apa yang dapat Anda lakukan untuk meningkatkannya. Bisakah Anda mengubah output yang diminta? Tambahkan fitur kecil? Sebuah pilihan? Cobalah, karena Anda sekarang berada di zona menyenangkan tempat Anda melewati kesulitan utama, dan persyaratan kecil yang dipaksakan sendiri ini cenderung membuat Anda sedikit semangat.
Jangan melangkah terlalu jauh: Anda tidak perlu mulai dari mencetak alfabet dan membalikkannya hingga tiba-tiba muncul di diagonal pada layar dengan gradasi warna. Ambil langkah kecil. Belajar adalah proses yang panjang dan berulang, dan Anda perlu mendekati masalah dengan meningkatnya tingkat kesulitan (misalnya, lihat bagaimana saya biasanya berpikir tentang menjelaskan rekursi ).
Ini Baru Belajar - Perbandingan
Masalah Anda sebenarnya tidak terkait dengan pemrograman sama sekali. Ini masalah yang sama yang dihadapi ribuan orang ketika mereka mencoba belajar matematika.
Jika Anda memberi mereka masalah, mereka tidak melihat cara mengerjakan solusi mereka. Namun, jika Anda menuliskan solusi untuk mereka, sebagian besar akan memahaminya dan berpikir "sial, itu sangat sederhana!". Namun Anda akan memberi mereka masalah yang sama dengan ukuran dan hipotesis yang berbeda dan mereka akan gagal menyelesaikannya: mereka tidak memahami logika di baliknya, dan mereka membutuhkan latihan untuk dapat melakukannya sendiri.
Perhatikan bahwa ini adalah masalah umum dengan matematika, tetapi menurut pendapat saya, Anda melihatnya di banyak bidang lain di mana ada beberapa logika yang diperlukan: belajar solfege, tata bahasa, fisika, dll ... Dan itu bukan karena kemampuan "alami" untuk memahami hal-hal ini: itu hanya turun ke praktik (baik itu di daerah itu, atau di orang lain yang membuat individu untuk memahami konsep-konsep di bidang ini lebih mudah).
Tidak ada alasan Anda tidak bisa belajar menulis kode. Anda hanya harus terus berusaha sampai Anda mencapai "ah AH!" / Momen Eureka. Kemudian beralih ke masalah berikutnya yang lebih sulit.
Ini dapat membantu juga (nanti):
sumber
Saya tahu ini bukan jawaban yang ingin Anda dengar tetapi: Tulis lebih banyak kode!
Lebih khusus membedah kode yang Anda mengerti. Ini sering membantu saya untuk "menerjemahkan" ke dalam bahasa Inggris reguler (karena saya seorang pemula).
Jangan takut untuk bertukar pikiran ide Anda untuk menulis sepotong kode terlebih dahulu (yaitu "Saya ingin mendeklarasikan variabel di sini, beralih melalui segmen ini dll"), dan KEMUDIAN mencari sepotong demi sepotong bagaimana melakukan berbagai segmen ini.
Ingatlah bahwa pengkodean kurang seperti latihan dalam menghafal dan seperti mencari cara untuk membangun sesuatu dari blok bangunan. Sama seperti belajar bahasa asing yang sebenarnya, pemahaman datang lebih dulu, ini adalah pertanda baik bahwa Anda baik-baik saja.
Percayalah bahwa semakin banyak Anda menulis dan membaca kode, semakin masuk akal.
sumber
Seperti yang orang lain katakan, ini adalah kasus di mana Anda harus berlatih, berlatih, berlatih.
Tulis banyak program kecil yang menyelesaikan satu masalah saja
Terkadang, bagian tersulit sebenarnya datang dengan sesuatu pemrograman yang berharga. Jika Anda bisa, cobalah untuk bekerja dalam topik yang Anda pikir sedang Anda perjuangkan - seperti kelas, warisan, dll. Beberapa ide di luar kepala saya:
GetArea
. Sekarang, buat kelas Triangle dan Rectangle mewarisi dari Polygon, dan pastikan mereka mengimplementasikan GetArea. Terus lakukan ini untuk poligon orde tinggi (pentagon, hexagon, dll).* Tujuan golf kode adalah untuk melakukan tugas yang disediakan dengan menggunakan jumlah karakter, byte, atau metrik lainnya yang dinyatakan dalam pertanyaan. Jika Anda membaca beberapa jawaban, Anda dengan cepat menghargai cara pintar orang memecahkan masalah ini. Jangan fokus menyelesaikan masalah dalam byte paling sedikit! Orang-orang yang memposting ke kode golf adalah programmer yang sangat berpengalaman. Tetapi, beberapa pertanyaan menawarkan tugas-tugas mudah di dalam dan tentang diri mereka sendiri.
Beberapa contoh kode golf yang menyenangkan:
Struktur dasar pemecahan masalah:
Banyak dari ini memberi Anda ide yang baik tentang apa fungsi harus terlihat. Diberikan X, lakukan Y, dan hasilnya harus Z:
Untuk tujuan mempelajari dasar-dasar dan membiasakan diri dengan bahasa, templat di atas sudah cukup. Templat yang lebih berorientasi objek adalah:
Jika itu membantu, tuliskan juga di atas kertas. Bicarakan diri Anda melalui proses bagaimana Anda , sebagai manusia, akan menyelesaikan masalah ini. Contoh: Dengan angka i, j, dan k, tampilkan dalam urutan menurun. Sebagai pribadi, mudah dipecahkan. Bagian tersulitnya adalah menerjemahkan ide-ide Anda menjadi instruksi baris demi baris sehingga komputer dapat menyelesaikannya.
Cobalah untuk memunculkan ide-ide Anda sendiri juga. Ini mungkin sulit, tetapi bahkan program yang paling sederhana pun bisa mengajarkan Anda sesuatu yang tidak Anda ketahui. Intinya adalah untuk mengebor diri sendiri dengan dasar-dasar, sampai mereka menjadi sifat kedua.
sumber
Anda tidak akan sampai di mana pun hanya dengan membaca kode; Anda harus menulis kode. Cukup tulis kode. Jangan khawatir jika kode yang Anda tulis adalah omong kosong; setiap orang telah menulis kode sampah. Beberapa orang mencari nafkah darinya. Tidak ada yang mulai menulis kode yang baik dan saya berpendapat bahwa ketika belajar, hampir perlu untuk menulis kode yang buruk karena baru kemudian perbedaan antara kode baik dan buruk menjadi benar-benar jelas.
Sulit untuk menghargai perbedaan antara kode yang baik dan buruk ketika membaca dua blok kode yang melakukan hal yang sama, tetapi ketika Anda telah menulis sebuah skrip dan Anda membuat seseorang yang berpengetahuan untuk meninjaunya dan memberikan umpan balik, perbedaannya sering menjadi jauh lebih jelas karena Anda dapat langsung menerapkannya pada apa yang Anda ketahui.
Pemrograman bukanlah sesuatu yang bisa Anda pelajari dengan menghafal; tidak seperti tabel waktu atau tanggal dalam sejarah. Pemrograman adalah keterampilan praktis yang membutuhkan latihan terus menerus untuk tetap tajam. Belajar pemrograman tanpa menulis kode seperti belajar berenang dengan membaca buku.
sumber
Pertanyaan ini sudah memiliki beberapa jawaban yang sangat bagus, tetapi ada beberapa pemikiran yang belum saya lihat.
Mempelajari bahasa pemrograman sama seperti belajar bahasa 'nyata': Selalu jauh lebih mudah dibaca daripada menulis, baik itu kalimat tunggal, karya ilmiah, atau buku. Saat membaca, banyak yang bisa diketahui hanya dari konteksnya, memahami teks atau kode saat Anda membacanya. Ketika Anda melihat kata yang tidak Anda ketahui, mungkin Anda tahu kata lain dengan batang yang sama; ketika Anda melihat suatu metode, nama metode memberi Anda ide bagus tentang apa yang dilakukannya. Saat menulis, Anda harus mengingat tidak hanya sintaks, tetapi juga kata-kata aktual yang digunakan. Dan itu sama untuk pemrograman.
Seperti yang dikatakan orang lain, Anda tidak bisa belajar menulis program hanya dari membaca program.
Mulai dari yang kecil. Cari tutorial Java, dan lakukan semua unit, satu demi satu. Dan ketika Anda cukup percaya diri, pilih proyek kecil untuk menguji keterampilan Anda, mungkin beberapa permainan sederhana yang Anda kenal dengan baik yang tidak memerlukan terlalu banyak interaksi GUI. Ketika Anda sudah memutuskan, jangan hanya membuka Eclipse Anda dan menatap 'halaman kosong'. Buat storyboard. Anda tidak perlu menggambar diagram UML yang rumit, pikirkan saja bagaimana aspek-aspek tertentu dari program dapat dipecahkan - bagaimana cerita atau argumen Anda terungkap, untuk berbicara. Dan ketika menulis kode, mulailah dengan konsep kasar. Saya biasanya menulis banyak komentar, menjelaskan apa yang harus dilakukan program, dalam urutan apa, dan kemudian mulai mengisi kode program yang sebenarnya.
sumber
Seperti kata orang lain, Anda hanya perlu berlatih menulis kode. Agar hal itu dapat dipenuhi, Anda harus menantang diri sendiri dengan memecahkan beberapa jenis masalah, apakah itu mencetak pesan yang telah ditentukan, membuat kalkulator interaktif sederhana atau menyelesaikan beberapa tugas tertentu.
Jika Anda kekurangan inspirasi, Project Euler memiliki banyak latihan matematika / pemrograman yang semakin sulit. Mereka memberi Anda tujuan yang jelas dan menantang untuk dicapai, dan akan membantu Anda mendapatkan program perancangan yang lebih nyaman.
sumber
Hanya berpikir saya akan berpadu dengan topik ini karena itu benar-benar menyentuh rumah.
Anda hanya perlu memulai pengkodean. Jangan salah paham, membaca itu bagus tapi yang benar-benar memberi Anda bahwa pengetahuan coding yang bekerja sebenarnya membangun sesuatu. Saya belajar lebih banyak dari satu penempatan musim panas dibandingkan dengan tahun sebelumnya yang membacanya.
Saya juga harus menambahkan bahwa Anda tidak boleh hanya mulai coding secara membabi buta . Buat proyek sendiri. Anda perlu semacam arahan untuk menempatkan diri sehingga Anda tahu apa yang ingin Anda buat. Anda akan terkejut melihat seberapa banyak Anda akan belajar dengan cepat. Jika Anda baru saja membuka IDE dan mulai membuat contoh halo dunia yang sederhana, perasaan yang mendemotivasi itu akan muncul dengan cepat pada Anda. Temukan sesuatu dengan sedikit kedalaman dan sebelum Anda menyadarinya, Anda akan mengembangkannya.
sumber