JavaRush /Blog Java /Random-MS /Kay Horstmann dan 1500 perkataannya tentang cara menjadi ...

Kay Horstmann dan 1500 perkataannya tentang cara menjadi pengaturcara Java yang lebih baik

Diterbitkan dalam kumpulan
Kemungkinan besar anda pernah mendengar nama Cay S. Horstmann. Beliau adalah seorang yang cukup terkemuka di dunia Jawa dan pengarang banyak buku mengenai bahasa kita yang tercinta. Antaranya ialah kursus klasik "Core Java" (diterbitkan dalam bahasa Rusia dalam buku dua jilid "Java. Professional's Library" ) dan satu siri dengan ringkasan ringkas intipati "Java for Impatient" (diterbitkan dalam bahasa Rusia "Java SE 8. Kursus Pengenalan” dan “Java SE 8. Kursus asas " ). Dia menyandang gelaran "Java Champion". Dan pada pautan ini anda boleh mencari laman web sekolah lamanya dengan maklumat yang menarik.
Kay Horstmann dan 1500 perkataannya tentang cara menjadi pengaturcara Java yang lebih baik - 1
Kami membawa kepada perhatian anda terjemahan artikel untuk sumber InformIT , di mana Kay menyuarakan beberapa petua untuk memulakan dan meneruskan pengaturcara tentang cara menjadi lebih baik dalam profesion mereka. Pada suatu hari, Jennifer Bortel, pengarah editorial InformIT, meminta saya meninggalkan baris tentang cara menjadi pengaturcara Java yang lebih baik. Dia mencadangkan bahawa saya, pengarang Core Java for the Impatient, mungkin mengetahui sesuatu tentangnya. "Tiada yang lebih mudah, beli sahaja buku," saya fikir pada mulanya. Tetapi jawapan ini tidak berfungsi, kerana saya perlu memasukkannya ke dalam 1500 perkataan, dan sehingga tahap ini hanya terdapat 62 daripadanya * ( sudah tentu, semasa menterjemah artikel, kami tidak cuba mengekalkan bilangan perkataan - lebih kurang terjemah ). Saya baru-baru ini menerima e-mel daripada rakan pembangun yang ditanya semasa temu bual mengapa kod berikut tidak selamat untuk rangkaian:
class ThreadSafeClass extends Thread
{
     private static int count = 0;

     public synchronized static void increment()
     {
         count++;
     }

     public synchronized void decrement()
     {
         count--;
     }
}
Rakan saya memutuskan bahawa kod dalam contoh ini adalah selamat untuk benang, dan saya bersetuju dengannya, dengan menyatakan bahawa terdapat satu kata kunci yang hilang staticdalam kaedah kedua, dan setelah ia dimasukkan, akses dikawal oleh kunci terbina dalam objek kelas. Saya juga mengatakan bahawa ini bukan soalan temu duga yang baik kerana jika anda memerlukan kaunter benang, lebih baik anda menggunakan AtomicInteger. Tetapi kemudian pada tengah malam saya terjaga dan tertanya-tanya: bagaimana jika perkataan ini staticditinggalkan atas sebab tertentu? Mungkin beberapa penemuduga licik sengaja menstrukturkan contoh ini sedemikian rupa untuk mengelirukan calon? Jadi saya menulis kembali kepada pembangun yang bertanya soalan itu dan mengatakan bahawa saya mungkin salah sebelum ini: dalam alam semesta selari yang dipanggil Soalan Temu Bual, jawapan kepada soalan ini ialah: "Kaedah kedua mengandungi kunci objek." Selepas jawapan ini, lelaki itu bertanya sama ada saya menjalankan saluran YouTube di mana saya mengajar cara menangani masalah temu duga jenis ini. Malangnya, saya tidak melakukan ini. Saya mengajar sains komputer dan menulis buku, tetapi matlamat utama saya bukan untuk menjadikan "penyelesaikan masalah temu bual" yang lebih baik, tetapi untuk menjadikan pelajar saya pengaturcara yang lebih baik. Pada suatu masa dahulu, Peter Norvig ( saintis Amerika dalam bidang kecerdasan buatan, pengarah penyelidikan Google - lebih kurang trans. ) menulis artikel yang menarik di blognya. Dia berhujah bahawa buku yang menjanjikan untuk mengajar anda Java dalam 24 jam atau 21 hari adalah tidak masuk akal. Sukar untuk tidak bersetuju dengannya: ia mengambil masa 10 tahun, atau mungkin 10,000 jam, untuk menjadi pakar dalam mana-mana bidang. Dan diketahui umum bahawa pakar memproses maklumat secara berbeza daripada orang baru. Dalam eksperimen klasik, pemain catur yang berpengalaman dan baru ditunjukkan papan catur dengan susunan kepingan tertentu selama beberapa saat, dan kemudian ia disembunyikan dan diminta untuk menyusun kepingan itu sebagaimana adanya. Pemula tidak mengatasi tugas dengan baik, tetapi pakar tidak mempunyai sebarang masalah. Tetapi hanya di bawah satu syarat penting: susunan kepingan mesti sepadan dengan permainan sebenar . Jika kepingan diletakkan secara rawak, pakar tidak lebih baik dalam membina semula papan daripada orang baru.
Kay Horstmann dan 1500 perkataannya tentang cara menjadi pengaturcara Java yang lebih baik - 2
Itulah sebabnya saya menjawab soalan dari surat itu dengan tepat seperti yang saya lakukan. Latar belakang saya adalah dalam pengaturcaraan sebenar, bukan wawancara, jadi saya secara naluri menambah kata kunci yang hilang dan membuat kesimpulan "salah". Saya ingin berfikir bahawa saya masih akan diupah selepas saya menerangkan apa yang berlaku dan mengapa saya tidak akan menulis kod seperti contoh tanpa penambahan saya. Mungkin, jika jawapan sebegitu tidak memuaskan hati mereka, saya sendiri tidak mahu bekerjasama dengan mereka.
Sekarang, saya tidak fikir belajar untuk peperiksaan pensijilan atau temu duga akan menjadikan anda seorang pengaturcara yang lebih baik. Saya juga pasti bahawa membeli sejumlah besar buku mengenai pengaturcaraan dan kemudian membacanya dari muka depan ke muka depan sama ada (walaupun saya, sebagai pengarang buku-buku ini, tidak mahu mengakuinya!). Malah, cara yang benar-benar baik untuk menjadi pengaturcara yang lebih baik adalah dengan mencipta sebanyak mungkin perisian . Dari semasa ke semasa saya mengajar kursus pengenalan sains komputer di universiti saya. Ini adalah kursus paling sukar yang pernah saya ajar. Ia lebih sukar daripada kursus siswazah. Semasa saya mula bekerja sebagai profesor muda, saya tekun memberikan syarahan kepada pelajar di mana saya meliputi isu pengaturcaraan dengan patuh, seperti perbezaan antara gelung fordan whilegelung do. Saya kemudiannya memberikan pelajar empat projek tiga minggu. Dan subjek ini telah diajar dengan cara ini sejak awal zaman di semua universiti. Selepas percubaan pertama saya, pengajar kursus semester kedua mengadu bahawa kebanyakan bekas pelajar saya tidak begitu memahami walaupun gelung mudah selepas semester pertama pengaturcaraan mereka. Dan keputusan sedemikian juga telah berlaku sejak awal masa. Ingat artikel "FizzBuzz atau mengapa pengaturcara tidak boleh memprogram" ? Apabila anda mempelajari bahasa asing, kebanyakan tugas adalah latihan dan latihan, bukan teori sama sekali. Sangat penting untuk "menolak" pengetahuan ke dalam alam bawah sedar. Titik perubahan berlaku apabila anda tidak perlu lagi berfikir secara aktif tentang setiap kitaran, atau (dalam kes bahasa Perancis), setiap kata kerja yang tidak teratur. Jika saat ini telah tiba, maka anda sudah bersedia untuk bergerak ke peringkat seterusnya. Dan tidak ada yang revolusioner dalam idea ini.
Kay Horstmann dan 1500 perkataannya tentang cara menjadi pengaturcara Java yang lebih baik - 3
Kunci kepada segala-galanya ialah maklum balas segera. Sesetengah ahli psikologi percaya kita boleh melakukan lebih banyak lagi dengan pembelajaran berasaskan komputer dengan maklum balas segera. Sebagai contoh, dalam satu lagi eksperimen klasik, bakal juruterbang pelatih menjalani sesi latihan di mana mereka dikehendaki melihat panel instrumen berulang kali dan menerangkan pergerakan kapal terbang. Pada masa yang sama, mereka menerima maklum balas segera yang menunjukkan sama ada mereka melakukannya dengan betul atau tidak. Selepas dua jam latihan, mereka mengungguli juruterbang berpengalaman. Sudah tentu, ini tidak bermakna bahawa mereka boleh dihantar dengan serta-merta dalam penerbangan sebenar, tetapi mereka tidak lagi gementar tentang dail yang pelbagai dan banyak pada panel instrumen. Jadi, jika anda baru mula belajar Java, melakukan banyak latihan latihan untuk berlatih adalah idea terbaik. Terdapat sejumlah besar tapak web dan kursus dalam talian yang menyemak ketepatan kod anda secara automatik. Pilih satu yang menawarkan cabaran sebenar dan bukannya gobbledygook. Lagipun, anda mahu bawah sedar anda mahir dalam kod yang sebenarnya anda tulis dalam amalan. Inilah sebabnya saya tidak begitu berminat dengan contoh pengaturcaraan yang menggunakan situasi yang direka-reka, seperti kelas haiwan dengan kaedah yang mengeong dan menyalak. Selepas beberapa lama, anda akan menguasai asas pengaturcaraan. Untuk bergerak ke peringkat seterusnya, anda boleh menulis beberapa projek. Beberapa tahun yang lalu, portal InformIT bertanyakan soalan kepada pengaturcara berpengalaman: "Apakah cara terbaik untuk pengaturcara mempelajari bahasa baharu?" Jika kami meringkaskan jawapan mereka, kami boleh membuat kesimpulan yang berikut: "gunakan bahasa ini dalam projek semasa anda." Jadi, fikirkan tentang perkara yang anda selalu ingin laksanakan - dan teruskan. Dua puluh tahun yang lalu, ketika Java masih sangat muda,rakan saya dan kadang-kadang pengarang bersama Gary Cornell menelefon saya dan berkata, “Kay, kami akan menulis buku tentang Java.” " Jawapan saya ialah dia dan saya tidak tahu apa-apa tentang Jawa ini, yang dia balas: “Jadi apa? Kami sudah ada perjanjian buku." Tiada apa yang perlu dilakukan. Kami terpaksa tergesa-gesa kerana ada orang lain yang mengumumkan penerbitan buku "Teach Yourself to Be a Java Dummy in 24 Hours" yang tidak lama lagi akan diterbitkan ... Saya rasa ia dipanggil seperti itu ( Kay mengejek siri buku "For Dummies" - "for dummies" perkataan "Dummy" boleh diterjemahkan sebagai "dummy" - nota penterjemah ). Untuk mempelajari bahasa baharu, saya bermula dengan projek - menulis program yang mencipta antara muka pengguna untuk perancangan persaraan, dan kemudian program yang disambungkan ke tapak cuaca dan memaparkan laporan cuaca. Selepas itu - program yang menyerupai pergerakan kereta di lebuh raya. Pada masa itu, program-program ini sangat menakjubkan!java.awtjava.netdan benang ( threads). Dan saya terpaksa belajar bagaimana untuk membuat ini berfungsi, bukan hanya apa yang dikatakan oleh dokumentasi. Pada masa itu ini adalah perkara yang sama sekali berbeza. Itulah sebabnya Core Java [1] popular: ia bukan untuk boneka.
Kay Horstmann dan 1500 perkataannya tentang cara menjadi pengaturcara Java yang lebih baik - 4
Pada masa itu, belajar Java jauh lebih sukar. Kami tidak mempunyai tapak seperti Stack Overflow ( dan kami juga tidak mempunyai JavaRush - nota editor ). Pada ketika ini, saya meneruskan untuk merumuskan nasihat berikut untuk meningkatkan "kemahiran" pengaturcaraan anda. Jadi, apabila anda bekerja pada projek anda sendiri, anda pasti akan terperangkap di suatu tempat. Dalam kes ini, pergi ke forum khusus dan cuba cari jawapan. Percayalah, ini adalah idea yang bagus . Pertama, anda akan bertanya soalan yang telah ditanya berkali-kali sebelum ini. Tetapi tidak lama lagi anda akan mendapat pengetahuan dan soalan anda akan menjadi lebih unik. Ini adalah cara yang menakjubkan untuk belajar! Sudah tentu, ini bukan tentang hanya menyalin-menampal sekeping kod dan bertanya: "Apakah yang perlu saya lakukan dengan ini sekarang?" Anda perlu sampai ke bahagian bawahnya, terangkan apakah percubaan yang telah anda lakukan untuk menyelesaikan masalah sebelum anda terperangkap. Ngomong-ngomong, dalam kebanyakan kes, semasa saya merumuskan soalan secara bertulis, saya mendapati jawapannya sendiri dan apa yang perlu saya lakukan ialah berkata kepada diri saya sendiri: "Apa masalahnya di sini, ia tidak bersungguh-sungguh" walaupun sebelum saya menghantar soalan . Tetapi walaupun ini tidak berlaku... Percayalah, soalan yang bernas cenderung untuk menarik jawapan yang bernas. Ingatlah untuk membalas budi sosial dengan menjawab soalan bernas orang lain. Kedua-dua bertanya soalan dan menjawab soalan yang bernas menjadikan anda seorang pengaturcara yang lebih baik. “Jadi, bagaimana dengan buku? - anda bertanya. "Adakah ia benar-benar menjadi usang sepenuhnya dan tidak boleh ditarik balik terima kasih kepada Google dan Stack Overflow ?" Setiap kali saya melayari teknologi baharu, saya percaya bahawa saya seorang yang berani dan boleh mengatasi semua kesukaran seorang diri. Tetapi satu jam siksaan yang tidak masuk akal memberi laluan kepada satu jam kewarasan - dan saya membeli sebuah buku. Buku teknikal adalah tawaran yang menakjubkan hari ini. Jika saya membayar $40 untuk sebuah e-buku dan hanya mendapat satu soalan dijawab dengan cepat, saya telah memperoleh kembali wang saya. Saya tidak suka mengecewakan rakan penulis saya, tetapi saya tidak pernah membaca buku teknikal dari awal hingga akhir. Saya bermula di mana saya fikir masalah saya dan penyelesaiannya ditulis, dan saya membaca sehingga saya faham cara menyelesaikannya. Atas sebab ini, saya sedang cuba menulis buku yang boleh dibaca dengan cara ini. Pendekatan ini menimbulkan siri "Untuk Yang Tidak Sabar." Dan pada ketika ini saya harus berhenti - saya melebihi had editorial 1500 patah perkataan. Izinkan saya menambah bahawa untuk menjadi pengaturcara yang lebih baik, mulakan dengan menyedari bahawa terdapat banyak tahap pengetahuan.
  1. Pertama, "tarik" struktur bahasa asas ke dalam alam bawah sedar anda, iaitu, bawa pengetahuan mereka kepada automatik dengan menyelesaikan sejumlah besar latihan.

  2. Mula bekerja pada projek sebenar yang menarik minat anda secepat mungkin.

  3. Kemudian sertai komuniti tempat anda boleh bertanya dan menjawab soalan.

  4. Sebaik sahaja anda melakukan ini, anda akan dapat bercakap dengan pengetahuan dan pengalaman dalam temu duga. Dan tidak kira sama ada anda menyelesaikan teka-teki yang direka-reka.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION