Saya hampir tidak lulus ujian pemrograman Java saya hari ini. Saya harus menjawab beberapa pertanyaan umum tentang threading yang saya lakukan dengan baik dan untuk menulis program berulir yang lebih buruk. Saya harus menghubungkan laptop saya ke layar proyektor dan segera menulis program. Upaya pertama saya adalah menggunakan kelas anonim tetapi saya lupa sintaks yang tepat. Mungkin karena kegembiraan atau mungkin karena dua minggu terakhir saya kebanyakan coding di php. Lalu saya bertanya apakah boleh menggunakan dokumentasi API. Jawabannya adalah "TIDAK". Jadi saya memutuskan untuk mencari jalan lain dan saya mengimplementasikan Runnable. Program itu melakukan apa yang diminta pada akhirnya. Tentu saja para penguji memperhatikan kegagalan pertama saya dan itu sangat mempengaruhi nilai saya. Saya kagum bahwa tidak diperbolehkan menggunakan dokumentasi API.
Jadi, pertanyaan saya adalah: Apakah benar-benar penting untuk dapat membuat kode tanpa cacat tanpa dokumentasi API? Haruskah saya mengembangkan keterampilan ini? Apakah itu benar-benar penting di dunia nyata dan di lingkungan kerja? Sementara pada kursus pemrograman saya fokus pada pola pembelajaran, mengembangkan keterampilan untuk menulis aplikasi desain yang baik, keterampilan untuk menggunakan API dan menemukan informasi yang diperlukan dengan cepat. Saya tidak mencoba mempelajari cara memprogram tanpa dokumentasi API. Apakah harus dimiliki saat wawancara kerja (pengkodean tanpa dokumentasi API)?
sumber
Jawaban:
Di Real Life ™, saya akan menilai keterampilan ini sebagai "menyenangkan untuk dimiliki", tetapi tidak diperlukan sama sekali. Namun, di lingkungan universitas berbeda.
Kemampuan kode tanpa dokumentasi dapat digunakan sebagai indikasi tidak langsung keakraban siswa dengan subjek. Dalam arti tertentu, melihat Anda memberi kode sesuatu tanpa menyentuh dokumentasi memberitahu profesor bahwa Anda telah berlatih menggunakan API sebelumnya - dengan melakukan pekerjaan rumah dan tugas lainnya, atau mungkin bahkan dengan pemrograman untuk bersenang-senang sendiri. Orang pintar dengan pemahaman sepintas tentang API yang dipermasalahkan harus bisamencari tahu hampir semua API Java sendiri dengan melihat dokumentasi. Ini bukan kebetulan: programmer sering diharapkan untuk belajar di tempat kerja, dan dokumentasi API untuk sistem pemrograman populer, termasuk Java, disusun untuk membantu programmer belajar dengan cepat. Dokumentasi sering kali menyediakan contoh-contoh singkat dan lengkap, menggambarkan konsep secara singkat dan ringkas.
Ini bekerja secara langsung terhadap tujuan profesor untuk mengukur pengetahuan Anda tentang subjek (bukan mengukur seberapa pintar Anda). Oleh karena itu tidak masuk akal untuk meminta kode Anda tanpa melihat dokumentasi.
CATATAN: Saya mengedit jawaban ini sebagai tanggapan atas pengeditan pertanyaan.
sumber
Pernah ada seorang pria yang memiliki sedikit bug dalam kodenya, jadi dia membawanya ke StackOverflow dan meminta bantuan. StackOverflow: Java (menghasilkan angka tanpa pengulangan) . Saya melihat kodenya dan saya menunjukkan kepadanya bahwa HashSet-nya selalu diisi dengan nilai-nilai tetapi tidak pernah dihapus. Jadi, dia bertanya kepada saya: "bagaimana Anda membersihkannya?" Saya harus mengakui bahwa saya tidak terlalu bangga dengan jawaban yang saya berikan.
Anda benar-benar perlu mengetahui hal-hal dasar yang Anda gunakan setiap hari. Anda perlu mengetahui semuanya, dan Anda perlu mengenal mereka dengan baik. Tetapi hanya hal-hal dasar.
Untuk yang lainnya, yang penting adalah mengetahui bahwa ada sesuatu di luar sana yang melakukan apa yang Anda inginkan. Tepatnya kelas mana yang perlu Anda gunakan, metode mana yang perlu Anda panggil, dan parameter apa yang perlu Anda sampaikan, adalah sesuatu yang Anda tidak perlu menjaga neuron berharga dari otak Anda sibuk. Itulah gunanya dokumentasi, dan itulah sebabnya IDE dengan autocomplete diciptakan. Dan jika push datang untuk mendorong, selalu ada StackOverflow dan interwebz yang lebih besar di luar sana.
Meminta programmer untuk hafal API sama dengan meminta pengacara untuk hafal kode hukum dan semua preseden. Tidak ada gunanya. Latihan sia-sia.
sumber
Saya tidak akan mengatakan bahwa itu diperlukan tetapi memang demikian
keterampilan yang sangat diinginkan
imNSho.
Saya menghabiskan beberapa bulan terakhir mengkodekan dalam kolaborasi yang erat dengan orang yang tahu API terasa lebih baik daripada saya. Dia jauh lebih produktif - hanya karena dia bisa melewati pemeriksaan API docs yang mengganggu saya.
Di sini, saya berbicara tentang kelancaran. Tentang menjadi tidak hanya mampu melakukan sesuatu tetapi juga lancar.
Apakah Anda tahu apa artinya fasih? Ini ketika seseorang melihat Anda, seolah-olah Anda menulis kode saat Anda mengetik ...
... Itu pengetahuan yang fasih. Itu ketika Anda membutuhkan satu menit untuk melakukan apa yang dibutuhkan seorang pemula satu jam. Ini sepadan dengan usaha, sungguh. Baunya seperti kemenangan.
Jika Anda menguasai kefasihan dalam beberapa API dan jika Anda benar menghafal bagaimana rasanya seperti, memori ini lebih lanjut akan memandu Anda melalui bagaimana untuk menjadi kerja yang paling produktif dengan setiap API lainnya.
sumber
Tidak. Saya akan mati tanpa kemampuan untuk melihat dari dokumentasi API. Satu-satunya waktu saya tidak memilikinya adalah ketika saya mencoba men-debug sesuatu di mana saya tidak bisa mendapatkan akses ke dokumentasi. Lalu aku "merekayasa balik" api dan potong-n-tempel seperlunya.
Sangat penting untuk memiliki gagasan yang baik tentang apa itu API dan bagian mana yang paling baik digunakan, tetapi mengetahui nama metode, nama variabel ... tidak benar-benar diperlukan.
sumber
Dalam pekerjaan saya tidak pernah mengalami situasi di mana saya tidak memiliki akses ke dokumentasi. Di sisi lain, memiliki pemahaman bacaan dan pemahaman umum untuk dapat menafsirkan dokumentasi yang ditulis dengan buruk akan berguna sepanjang waktu.
Anda pada akhirnya harus mengetahui pola dan struktur API Anda, tetapi tahu persis di mana semuanya tidak terlalu berguna.
Di SFU Computing Science, ujian tertutup merupakan 70% hingga 100% dari nilai kami. Teorinya adalah bahwa ujian menguji pemahaman Anda tentang materi pelajaran dan kemampuan beradaptasi Anda. Pada kenyataannya, semua yang benar-benar diuji adalah saraf Anda, kualitas / durasi tidur Anda, kecerdasan Anda, dan teknik menghafal Anda - tidak ada yang diperlukan baik secara akademis atau untuk pekerjaan biasa di industri perangkat lunak.
sumber
Untuk semua kecuali pertanyaan terakhir Anda: Pengetahuan ensiklopedia tentang dokumentasi API apa pun tidak penting. Anda jelas akan memprogram lebih cepat jika Anda tahu setiap detail dari setiap metode setiap kelas, tetapi itu bukan harapan yang masuk akal.
Untuk pertanyaan terakhir Anda: Anda mungkin diharapkan mengetahui spesifikasi beberapa kelas tanpa dokumentasi API. Jika Anda tahu sebelum berjalan ke wawancara bahwa Anda akan diuji, atau jika pekerjaan itu sangat fokus (yaitu: Anda akan melakukan threading sepanjang hari), maka Anda bisa berharap untuk perlu mengetahui kelas terkait secara rinci.
Tambahan: Anda harus mengklarifikasi jauh sebelum ujian dengan profesor / instruktur Anda dengan tepat bahan apa yang akan diberikan dan bahan apa yang dapat Anda bawa sendiri. Asumsikan bahwa apa pun yang mereka tidak setujui secara eksplisit tidak diizinkan. Saya sudah memiliki kursus di mana saya hanya bisa membawa dasar-dasar untuk menulis, di mana saya bisa membawa buku yang saya inginkan, dan di mana saya bisa membawa tepat satu lembar dua sisi dengan apa pun yang saya inginkan di atasnya. Ujian biasanya disusun berdasarkan materi apa yang diizinkan.
sumber
API API! = Sintaks bahasa.
Saya bisa mengerti ketika seseorang tidak tahu nama pasti dari berbagai kelas Java dan metode mereka. Saya tidak tahu mereka dan saya kode di Jawa setiap hari. Saya akan hilang tanpa dokumen atau penyelesaian otomatis IDE yang luar biasa - terutama ketika datang ke API standar Java yang terkenal dengan verbositasnya dalam nama variabel / kelas / metode.
Namun, seperti yang Anda katakan sendiri, bukan apa pun yang biasanya ditemukan dalam dokumen yang tidak dapat Anda ingat. Ini adalah sintaks untuk kelas dalam - ini adalah fitur bahasa itu sendiri bukan sesuatu yang harus dihafal dari dokumen.
Sebanyak yang saya pikir siswa harus (dalam banyak kasus) diizinkan untuk menggunakan dokumen untuk API standar, saya berpikir bahwa siapa pun yang ingin lulus ujian pemrograman harus mengetahui sintaksis bahasa. Dan saya tidak bermaksud beberapa kasus aneh yang hanya diketahui oleh perancang bahasa, hanya yang standar - seperti yang ada dalam contoh Anda.
sumber
Di Eclipse Anda dapat menulis
obj.
dan menekan ctrl + spasi dan itu akan mencoba untuk melengkapi otomatis dengan memberikan Anda semua opsi metode untuk objek yang diberikan. Jika itu gagal saya karena beberapa alasan Java API memiliki sisa jawaban. Saya akan kesulitan mengingat hari ketika saya tidak Google bagaimana melakukan sesuatu.Sekolah adalah cerita yang sangat berbeda.
sumber
IMHO, akademisi biasanya bau dalam menghasilkan insinyur perangkat lunak yang baik. Hanya orang-orang yang memberi kode untuk bersenang-senang setelah pelajaran memiliki kesempatan untuk mencapai sesuatu dalam proyek dunia nyata.
Kemudian lagi, akademisi bukan tentang menghasilkan pengembang, seluruh dunia adalah tentang bagaimana menyelesaikan masalah abstrak dan melakukan penelitian. Sangat jauh dari aplikasi praktis sebagian besar waktu. Dan peneliti belum tentu merupakan coders yang baik.
Dan belajar API dengan hati busuk. Ada autocomplete / google / msdn / javadocs untuk mencari semua celah dan celah, mengapa ada yang ingin menyimpan semua itu di otak mereka setiap saat? Sebagian besar fungsi umum yang akan Anda pelajari dalam beberapa minggu / bulan, semua yang lain dapat dilihat dalam hitungan detik jika Anda mengetahui sintaksis, struktur, dan ide-ide umum.
Kemudian lagi, beberapa orang masih kode dalam editor teks dan mengingat nama fungsi dengan hati, itu tidak selalu salah, tetapi jika mereka fanatik tentang hal itu, Anda dapat profesor Anda.
Selain itu, bahkan jika Anda mengetahui nama fungsi dan parameter dengan hati, masih merupakan ide bagus untuk memverifikasinya di API API terbaru. strtok baik-baik saja dalam skenario berulir tunggal 10 tahun yang lalu, saat ini tidak baik. Jika Anda hanya mempelajari nama dan parameternya, Anda tidak akan pernah tahu bahwa fungsionalitasnya mungkin sudah usang atau alternatif yang lebih baik ditemukan.
Bahasa berubah, jadi Anda harus berubah dengan mereka, mengingat satu cara yang benar tidak baik untuk itu.
sumber
jika Anda mulai mengerjakan beberapa proyek untuk waktu yang tidak singkat menggunakan api cepat atau lambat Anda akan belajar api itu dengan sangat baik. saya percaya ini benar-benar keterampilan yang tidak perlu karena saya tidak tahu siapa pun yang tidak pernah melihat dokumentasi apa pun (msdn, halaman manual, dll ...)
namun universitas adalah dunia yang sama sekali berbeda, jadi jangan kaget jika Anda gagal karena Anda tidak tahu nama pengetik parameter 10.th dari CreateWindowEx, misalnya.
sumber
Saya akan mengatakan, tidak itu tidak diperlukan, secara fisik tidak mungkin bagi otak manusia untuk menghafal begitu banyak informasi, tetapi Anda masih perlu mengetahui dasar-dasar atau hal-hal yang paling sering digunakan, karena tidak banyak dari mereka yang menghafal. . Kalau tidak, tidak mungkin untuk mengingat semua yang ada di java.
Juga tidak adil bagi seorang guru untuk menginginkan murid-muridnya mengetahui segalanya, atau menggunakannya untuk mengetahui apakah mereka memprogram dengan bahasa, selain latihan atau proyek yang ditugaskannya kepada Anda. Bagi saya rasanya ingin tahu apa yang Anda lakukan ketika Anda tidak bersekolah atau melakukan pekerjaan terkait.
EDIT: Jelas, apa yang diminta guru kepada Anda tergantung padanya, beberapa guru lebih menghargai teori sementara yang lain menghargai praktik dan tidak peduli jika Anda tidak memahami segalanya.
sumber