JavaRush /Java Blog /Random-ID /Mari kita mulai dari awal atau 'Halo, Java World!'
articles
Level 15

Mari kita mulai dari awal atau 'Halo, Java World!'

Dipublikasikan di grup Random-ID
Saya ingin memulai artikel ini dengan penyimpangan yang sekilas tidak biasa. Nanti akan menjadi jelas mengapa tepatnya.
Mari kita mulai dari awal atau Halo, Java World!  - 1
Jadi, mari kita bayangkan Seseorang. Seseorang ini ingin menguasai ski alpine. Dan untuk ini dia mengambil langkah-langkah berikut:
  • Instruktur, buku teks, manual, dll. - ini semua dari si jahat. Anda bisa belajar bermain ski sendiri. Selain itu, di sekolah ia belajar ski lintas alam dengan cukup baik. Oleh karena itu, semua nasihat dari orang yang lebih berpengetahuan diabaikan.

  • Peralatan paling keren dipilih. Tidak di bawah level ahli. Sepatu bot keras yang melukai kaki Anda. Ski keras yang membutuhkan usaha luar biasa untuk membungkuk, jauh melebihi tingkat kebugaran fisik Seseorang. Yah, dll.

  • Lintasan ujinya adalah... yah, katakanlah, lintasan yang menjadi tempat pentas slalom raksasa Piala Dunia. Ini tepat untuk belajar.
  • Lanjutkan dengan semangat yang sama.
Jadi, inilah pertanyaannya. Apa yang akan Anda sebut Seseorang ini? Secara pribadi, sebagai orang yang telah mengenal ski alpine selama sekitar 20 tahun, saya akan menyebutnya (dan ini masih sangat ringan!) - tidak ada harapan. Sangat mustahil untuk mempelajari apa pun dengan pendekatan ini. Tapi cara yang pasti untuk terluka. Dan yang PALING pasti adalah meninggalkan ide bermain ski selamanya. Saya pikir Anda akan setuju dengan saya dalam penilaian ini. Bagaimanapun, saya hampir yakin bahwa Seseorang ini tidak akan mengharapkan sesuatu yang tidak menyenangkan untuk ditujukan kepadanya. Sekarang mari kita bayangkan Seseorang yang lain. Biarkan dia, misalnya, menjadi mahasiswa ilmu komputer. Dia memiliki pengetahuan tentang C++, C#, Pascal. Dia ingin belajar Java. Tindakannya:
  • Sastra yang sesuai dengan tingkat pengetahuannya (tingkat nol, sejujurnya) disingkirkan. Berdasarkan sedikit keakraban dengan teori C++, C# dan OOP yang disebutkan.
  • Lingkungan pemrograman yang paling kuat diambil. Katakanlah Eclipse atau NetBeans. Yang melakukan semuanya sendiri, cukup tekan satu tombol.
  • Sebagai aplikasi trial, kita pilih... yah, misalkan chatting. Aplikasi client-server, bagian klien dalam bentuk applet, bagian server - layanan web atau, paling buruk, servlet. Tepat untuk belajar.
Pertanyaan. Apa yang akan Anda sebut Seseorang ini? Tahukah Anda apa paradoksnya? Faktanya adalah bahwa dalam kasus ini penilaian yang tidak memihak akan jauh lebih sedikit. Terlepas dari kenyataan bahwa situasinya identik dalam segala hal. Kecuali jika konsekuensinya terhadap kesehatan dan kehidupan pada kasus kedua tidak terlalu fatal. Mungkin ini masalahnya? Situasinya sangat mirip. Saya secara khusus mendeskripsikannya dengan gaya yang sama. Dan hal yang aneh: jika absurditas yang pertama terlihat jelas, maka skenario kedua diikuti oleh sejumlah pengembang pemula yang mengkhawatirkan. Menguasai Java dimulai dengan menulis MIDlet, klien untuk database, chatting, membuat website berdasarkan servlet... Anda bisa melakukannya untuk waktu yang lama. Tapi intinya sudah jelas. Pada saat yang sama, literatur tingkat pemula dikesampingkan dengan sikap meremehkan. Baca ini? Untuk saya? Ya, saya sudah menulis dalam C++ selama tiga tahun sekarang! (Pilihan ada dalam Pascal, dan bahkan dalam visual basic.) Dan saya tahu OOP! Secara umum. Jadi, apa selanjutnya? Lalu ini:
  • Bagaimana cara mengubah array 8 byte menjadi panjang?
  • Mengapa hal ini terjadi NoClassDefFoundError?
  • Mengapa saya meluncurkan aplikasi di Eclipse ( NetBeans/IDEA/JBuilder), dan semuanya baik-baik saja, tetapi tanpa itu saya mengetik java HelloWorld.class, dan ada kesalahan?
  • Kenapa bisa crash ClassNotFoundException?
  • Mengapa tidak ada perpustakaan? Saya sudah memasukkannya ke dalam class.zip, tetapi semuanya sia-sia!
  • Mengapa saya membuat array objek, tetapi ketika saya mencoba menggunakan elemen array saya mendapatkannya NullPointerException?
  • Dan mengapa ...?
  • Dan mengapa ...?
  • Dan mengapa ...?
Mengapa mengapa mengapa? Tapi karena Java bukan C++ atau Pascal. Dan bukan Perl. Pengetahuan tentang bahasa-bahasa ini tidak hanya sering kali tidak membantu, tetapi juga menghambat. Kalau saja karena bahasa-bahasa ini memiliki ideologi yang sangat berbeda. Namun kemiripan luarnya menyesatkan. Tentu saja, semua “mengapa” dan “bagaimana” ini memiliki jawabannya dalam buku. Dalam sastra tingkat paling dasar. Tapi membacanya malas (pilihan: malu, tidak ada waktu, dll). Saya tahu cukup banyak stereotip yang ditransfer ke Java oleh spesialis C++ yang baik. Salah satu contoh terbaru: Anda tidak boleh melemparkan pengecualian ke dalam konstruktor. Mengapa? Ya, karena di C++ keadaan objek tersebut tidak ditentukan. Oleh karena itu, terjadi kebocoran memori. Di Jawa pada prinsipnya tidak ada masalah seperti itu karena adanya pemulung. Namun, ada orang yang berusaha menghindari situasi seperti itu. Hanya berdasarkan stereotip yang sudah mendarah daging. Dan yang terburuk adalah akibat dari upaya ini, kodenya menjadi jauh lebih rumit. Sintaksnya mudah dipelajari. Dan sama sekali tidak cukup. Ideologi bahasa jauh lebih penting. Dan untuk menguasainya dengan paling efektif, Anda harus memulainya dari awal. Mengapa tepatnya dan bagaimana caranya? Dan ini adalah pertanyaan lain. Jadi. Di mana dan bagaimana memulainya. Itu tergantung pada apa yang ingin Anda capai. Jika Anda ingin menjadi ahli coding, Anda bisa memulai dengan hampir semua hal. Jika Anda ingin menjadi seorang profesional, segalanya menjadi sedikit lebih rumit. Pengalaman saya memberi saya alasan untuk mengatakan hal berikut. Perbedaan antara pengembang profesional dan "pembuat kode" adalah dia memahami apa yang terjadi. Dia melakukan lebih dari sekadar menekan tombol. Lingkungan yang kuat adalah bantuan yang sangat baik. Bagi mereka yang bisa melakukannya tanpanya. Namun sering kali ini merupakan satu-satunya alat bagi mereka yang memulainya. Dan jika tidak ada, nilai monyet pengkode adalah nol. Karena tidak ada tombol yang perlu ditekan. Secara umum, penekanan tombol dapat menimbulkan bentuk yang sangat mengerikan. Salah satu rekan saya melihat produk yang ditulis dalam bahasa Java. Petunjuk instalasinya dimulai dengan kata-kata: “Instal JBuilder dari disk…” Sekarang INI sudah berakibat fatal. Jika pengembang tidak dapat membuat produknya berfungsi tanpa lingkungan pengembangan, maka saya ngeri memikirkan cara penulisannya. Setidaknya, ini ditulis oleh para amatir. Apa yang saya maksud dengan "mengerti apa yang terjadi?" Artinya seseorang harus memahami hal-hal berikut:
  • Apa itu mesin virtual dan mengapa itu diperlukan?
  • Apa itu kelas dari sudut pandang mesin virtual.
  • Apa itu paket?
  • Apa itu perpustakaan?
  • Bagaimana mesin virtual mencari dan memuat kelas; apa itu pemuat kelas dan bagaimana cara kerjanya; berapa banyak yang ada secara default; apa itu jalur kelas.
Dll. dan seterusnya. Daftarnya terus berlanjut. Harap dicatat bahwa saya tidak menyertakan pengetahuan khusus untuk pengembang itu sendiri. Apa itu thread, apa itu kelas dari sudut pandang OOP dan apa bedanya dengan objek, cara kerja pengelola tata letak - pengembang APAPUN harus mengetahui semua ini. Semua yang saya daftarkan lebih bersifat teknis. Namun sering kali ternyata mengetahui hal-hal tersebut sangat penting untuk memahami apa yang salah. Sebuah contoh dari kehidupan. Ada perpustakaan untuk bekerja dengan XML yang disebut xalan. Ini berisi beberapa paket javax.xml... - parser, transformator, dll. Perpustakaan ini sangat populer. Masalahnya adalah paket yang sama telah ada di J2SDK sejak versi 1.4. Pertanyaan. Kelas mana yang akan dimuat ketika mengakses kelas javax.xml.transform.stream.StreamSource dari perpustakaan, jika xalan juga ada di classpath - perpustakaan atau dari J2SDK? Untuk menjawab pertanyaan ini, Anda perlu mengetahui cara kerja pemuat kelas. Saya pernah melihat diskusi empat hari di salah satu forum yang akhirnya sampai pada pertanyaan ini. Kode tidak berfungsi dengan benar justru karena pemuat tidak mengambil kelas yang diharapkan darinya. Apa maksudku? Masalahnya adalah: semakin kuat lingkungan pengembangan, semakin banyak manfaatnya bagi pengembang - semakin sedikit ia harus berpikir. Dan ini sudah oh, betapa buruknya. Begitu dekat dengan monyet. Hal ini mengarah pada kesimpulan pertama, betapapun paradoksnya kelihatannya:

Kesimpulan 1. Dianjurkan untuk mulai belajar Java TANPA lingkungan yang kuat.

Saya tidak menganjurkan menulis di editor tingkat notepad. Tapi saya tidak melakukan ini karena satu-satunya alasan - mereka, sebagai suatu peraturan, tidak memiliki penyorotan sintaksis. Ini adalah hal yang sangat nyaman yang tidak menimbulkan efek negatif. Anda dapat menggunakan sesuatu seperti Notepad++ , ia memahami sintaksis Java dan, omong-omong, gratis. Misalnya, saya memiliki jenis file .java yang terdaftar di sistem khusus untuk itu. Jadi, editor teks dengan penyorotan sintaksis dan baris perintah. Dua atau tiga hari siksaan - dan memahami apa itu classpath, bagaimana penerjemah diluncurkan, dan banyak hal kecil lainnya - pemahaman tentang hal ini akan tetap ada selamanya. Lebih jauh. Pengalaman saya memberi saya alasan untuk mengatakan bahwa tidak mungkin memperoleh pengetahuan untuk digunakan di masa depan. Dalam arti bahwa membaca literatur hanya bermanfaat jika ada pertanyaan yang dapat dijawabnya. Jika Anda membaca buku tanpa bertanya-tanya, informasinya akan hilang dalam waktu seminggu. Saya mengetahui hal ini dengan baik, termasuk dari pengalaman saya sendiri. Saya pernah mulai membaca buku tentang servlet lima kali. Sampai saya mulai menanganinya dalam pekerjaan saya, informasinya tidak terserap. Dan ini bukanlah kasus yang terisolasi. Dahulu kala, sekitar 8-10 tahun yang lalu, saya membaca yang berikut ini, sayangnya saya tidak ingat penulisnya: Bagaimana cara mengajari seseorang bahasa pemrograman baru? Sangat sederhana. Anda perlu memberinya bahasa, beberapa tugas, dan dokumentasi minimum. Kemudian, setelah beberapa bulan, ketika dia mulai menulis setidaknya dalam bahasa ini, berikan dokumentasi yang lengkap. Ini akan dibaca dalam dua minggu seperti novel detektif, setelah itu orang tersebut akan siap bekerja. Saya setuju dengan pernyataan ini 100%. Di satu sisi, dalam dua bulan, semua masalah kecil akan hilang. Jawabannya akan diperoleh secara mandiri, yang akan sangat meningkatkan nilainya. Di sisi lain, pertanyaan-pertanyaan yang jelas sudah akan terbentuk, yang jawabannya akan disediakan oleh dokumentasi. Hal ini membawa pada kesimpulan kedua, yang nampaknya tidak kalah paradoksnya dengan kesimpulan pertama:

Kesimpulan 2. Disarankan untuk mulai belajar Java TANPA buku teks. Dokumentasi Java API + tutorial Java - ini lebih dari cukup.

Dokumentasi Java API adalah suatu keharusan. Saya sangat merekomendasikan menyimpannya secara lokal, di disk. Anda harus menghubunginya lebih dari sekali, bukan dua kali, atau bahkan sepuluh kali. Secara pribadi, tidak ada hari berlalu tanpa saya pergi ke sana. Saya juga merekomendasikan untuk menyimpan tutorial Java secara lokal. Ini adalah informasi tingkat awal yang sepenuhnya menggantikan buku teks. Namun, jumlahnya cukup banyak di sana. Saya harus mengatakan bahwa di bidang yang tidak saya kuasai di tempat kerja, saya masih menemukan sesuatu yang baru untuk diri saya sendiri. Banyak membaca itu buruk. Selama tidak ada permintaan, tidak ada tanggapan. Membaca sedikit juga buruk. Dimana arti emasnya? Saya mematuhi aturan ini: Saya membaca sampai saya merasa telah menerima jawaban atas pertanyaan itu. Dalam 90% kasus, hal ini tidak terjadi. Tetapi pada saat inilah yang terbaik adalah berhenti dan melanjutkan sendiri. Dorongan awal telah diterima, dan menyelesaikan masalah secara mandiri akan memberikan lebih banyak hal. Tentu saja, setelah beberapa waktu ada baiknya mempelajari lektur. Tapi sekali lagi, untuk literatur tingkat pemula. Meskipun tampaknya semua ini tidak masuk akal, ada baiknya membaca bab awal. Saya hampir dapat menjamin bahwa Anda setidaknya akan mempelajari sesuatu yang baru. Dan sesuatu ini nantinya bisa menjadi sangat penting. OKE. Sepertinya kami sudah tahu apa yang harus kami tulis. Cara menulisnya juga. Tapi apa yang harus saya tulis? Ingat di mana artikel ini dimulai. Haruskah saya mulai dengan menulis sistem pesan instan? Pilihannya tentu saja ada di tangan Anda. Menurutku itu tidak sepadan. Semakin rumit tugasnya, semakin banyak pula pertanyaan yang muncul. Tanpa adanya pengalaman, banyaknya pertanyaan akan memberikan perasaan tidak mungkin untuk menyelesaikannya, diikuti dengan perasaan rendah diri, bodoh, dan lain-lain. Pada akhirnya, hal ini dapat mengarah pada keputusan “persetan…” dan berhenti belajar bahasa tersebut. Itu. justru memberikan efek yang berlawanan dengan apa yang dibutuhkan. Hal ini bukan merupakan karakteristik Java melainkan proses pembelajaran itu sendiri. Tetapi untuk beberapa alasan mereka melupakan hal ini ketika mengajar pemrograman. Sementara itu, tugas kecil yang diselesaikan sampai akhir dapat memberikan kepuasan yang jauh lebih besar dan pengetahuan yang jauh lebih besar dibandingkan sistem besar yang ditinggalkan di awal perjalanan. Oleh karena itu kesimpulan ketiga: Kesimpulan 3. Disarankan untuk mulai belajar Java dengan tugas-tugas yang sesuai dengan tingkat pengetahuan Java Anda saat ini. Anda tidak boleh mulai belajar mengendarai mobil di mobil Formula 1. Anda tidak boleh mulai belajar ski alpine di lintasan Piala Dunia. Demikian pula, Anda tidak boleh mulai menguasai Java dengan menulis sesuatu yang besar. Saya memahami bahwa ambisi itu menuntut. Namun dalam kasus ini, pernyataan tersebut tidak berdasar. Dan semakin banyak ambisi tidak masuk akal yang Anda miliki, semakin kecil peluang Anda untuk menjadi seorang profesional. Fenomena yang luar biasa dalam hal pembelajaran, anehnya, berbagai forum. Jika Anda menggunakannya dengan bijak. Bijaksana berarti Anda perlu melakukan yang sebaliknya, tidak seperti biasanya. Yakni, bukan untuk bertanya, tapi menjawabnya. Apa pun yang Anda punya kekuatan untuk mencapainya. Jika Anda mengira saya sendiri yang mengetahui segalanya, Anda salah besar. Ya, saya tahu banyak. Namun ada area yang belum pernah saya temui. Atau saya punya, tapi sangat sedikit. Contoh klasik dari praktik saya adalah bekerja dengan sertifikat: penandatanganan kode, koneksi aman, dll. Pada tahun 1998, ketika menulis tesis saya, saya melakukan ini, tetapi sejak itu segalanya banyak berubah. Selama bertahun-tahun, saya mempunyai banyak pertanyaan. Saya bahkan mulai membaca beberapa literatur. Tapi, seperti yang saya katakan di atas, Anda tidak bisa mendapatkan pengetahuan untuk digunakan di masa depan. Ini seperti linggis - masuk ke satu telinga dan keluar di telinga lainnya. Tidak ada hasil kecuali lubang di kepala. Dan ini berlanjut hingga saat ini, ketika sebuah pertanyaan diajukan di forum tentang koneksi SSL dengan Tomcat. Ada beberapa masalah. Dan hanya pertanyaan ini yang mendorong saya untuk menggali lebih dalam. Dan kalau ada permintaan, ada pula tanggapan. Saya tidak hanya mengetahui apa masalah orang tersebut, tetapi saya juga menemukan banyak informasi berguna lainnya. Saya akhirnya memahami cara kerja sertifikat. Artikel terkait ada dalam rencana. Dan ini terjadi setiap saat. Saya bekerja cukup lama, misalnya dengan GUI. Hanya dari pertanyaan seseorang di forum saya memahami beberapa kemampuan TextLayout. Sebelum pertanyaan ini saya tidak tahu tentang mereka. Dengan cara yang sama, saya baru-baru ini mengetahui bahwa ternyata JButton juga mengartikan html sebagai headernya sendiri. Sebelumnya, saya pikir hanya JLabel yang bisa melakukan ini. Dan ini sekali lagi berkat forum. Ternyata: semakin banyak kita menjawab pertanyaan, semakin banyak kita belajar sendiri. Itu sebabnya saya tidak setuju dengan pendapat populer bahwa jika seseorang duduk di forum, maka dia tidak melakukan apa-apa. Hal ini masih jauh dari jelas dan terutama bergantung pada alasan sebenarnya orang tersebut ada di forum. Dan apa yang terutama dia lakukan – bertanya atau menjawab. Bahkan, Anda bisa bertanya. Tapi juga dengan bijak. Jangan meminta solusi (apalagi dengan postscript “Tolong yang tahu, beri jawaban, dan jangan bertanya!”, yang saya temui beberapa hari yang lalu!), tetapi sekali lagi, sebaliknya, minta untuk mengatur arah pergerakan. Sangat dapat dimengerti bahwa sulit bagi seorang pemula untuk memahami di mana harus menggali, karena ia kurang pengalaman. Ini bukan kesalahan orang tersebut, dan bahkan bukan masalah. Ini baik-baik saja. Semua orang pernah mengalami hal ini. Termasuk saya. Bagi saya pribadi, yang lebih penting adalah seseorang ingin mempelajari sesuatu. Dan tidak hanya mendapatkan jawaban, hanya untuk melupakannya lima menit setelah mengikuti lab pemrograman. Saya akan selalu memberi tahu Anda arah pergerakannya. Jika saya sendiri yang mengenalnya. Dan jika saya tidak tahu, setidaknya saya bisa menebaknya. Dan saya pasti juga akan mencari jawabannya. Namun saya mungkin tidak pernah memberikan jawaban langsung—setidaknya, saya tidak ingat. Ngomong-ngomong, karena itulah saya meninggalkan salah satu forum. Ketika saya mulai mengajukan pertanyaan-pertanyaan yang mengarahkan, mereka serentak menjelaskan kepada saya bahwa sudah menjadi kebiasaan bagi mereka untuk menjawab begitu saja. Dan dengan pertanyaan saya, saya bisa melangkah lebih jauh. Mengingat tingkat forum masih jauh dari yang diharapkan, salah satunya berkat pendekatan ini! – Saya memutuskan untuk tidak membuang waktu lagi. Jadi pilihlah forum sesuai keinginan Anda dan berangkatlah. Omong-omong, situs ini muncul berkat salah satu forum. Setelah berbicara di sana selama beberapa waktu, saya mengumpulkan daftar topik yang paling sering diangkat dan menyadari bahwa situs seperti itu akan diminati. Dan itulah yang terjadi. Hampir semua artikel ditulis setelah beberapa diskusi di forum. Atau mengikuti korespondensi yang juga saya lakukan secara rutin. Apa hasilnya? Bekerja, bekerja dan bekerja lagi. Semakin banyak Anda membiarkan diri Anda melakukannya sendiri pada tahap awal, semakin sedikit pengetahuan yang Anda peroleh. Dan semakin panjang jalan menuju profesionalisme. Tapi hanya Anda yang bisa memilih ingin menjadi siapa - monyet yang suka menekan tombol tanpa berpikir panjang atau menjadi profesional. Dan hanya Anda sendiri yang memilih jalan di mana Anda dapat mencapai ini atau itu. Cara pertama sudah jelas. Saya mencoba menunjukkan yang kedua. Langkah Anda, Tuan-tuan! Tautan ke sumber asli: Mari kita mulai dari awal atau 'Halo, Java World!'
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION