Saya sering menemukan ini ketika saya membantu seseorang yang baru mengenal pemrograman dan mempelajarinya untuk pertama kalinya. Saya berbicara tentang pemula yang benar-benar baru, masih belajar tentang OOness, membangun objek, pemanggilan metode dan hal-hal seperti itu. Biasanya, mereka memiliki keyboard dan saya hanya menawarkan panduan.
Di satu sisi, fitur autocomplete dari IDE membantu memberi mereka umpan balik bahwa mereka melakukannya dengan benar dan mereka dengan cepat menyukai dan mengandalkannya.
Di sisi lain, saya khawatir bahwa ketergantungan awal pada IDE autocomplete akan membuat mereka tidak benar-benar memahami konsep atau dapat berfungsi jika suatu hari mereka menemukan diri mereka hanya dengan editor sederhana.
Adakah yang memiliki pengalaman lebih dalam hal ini silakan berbagi pendapat mereka? Manakah yang lebih baik untuk pemula, autocomplete atau mengetik manual?
Memperbarui
Terima kasih untuk masukan semuanya!
Banyak jawaban tampaknya fokus pada penggunaan utama autocomplete, seperti menyelesaikan metode, menyediakan metode pencarian dan dokumentasi dll. Tetapi IDE saat ini lebih menyukai.
- Saat membuat objek dari tipe Daftar, sebuah IDE secara otomatis melengkapi ArrayList baru di sebelah kanan. Mungkin tidak segera jelas bagi seorang pemula mengapa ini bukan Daftar baru, tetapi hei itu berfungsi, jadi mereka pindah.
- Mengisi parameter metode berdasarkan variabel lokal dalam konteks.
- Melakukan gips objek
- Secara otomatis menambahkan pernyataan 'impor' atau 'menggunakan'
dan banyak lagi. Ini adalah hal-hal yang saya maksudkan. Ingat saya berbicara tentang orang-orang yang melakukan Pemrograman 101, benar-benar baru saja dimulai. Saya telah menyaksikan IDE melakukan hal-hal ini yang mereka tidak tahu, tetapi mereka hanya melanjutkan.
Orang bisa berpendapat bahwa itu membantu mereka fokus pada aliran program dan memahami hal-hal terlebih dahulu sebelum masuk lebih dalam dan memahami nuansa bahasa, tapi saya tidak yakin.
sumber
Jawaban:
Saya pikir memanfaatkan IDE membantu dalam proses pembelajaran. Metode, properti, parameter, kelebihan, dan sejenisnya dapat ditemukan. Dengan perpustakaan yang sangat besar, Intellisense membantu meneteskan pengetahuan JIT. Dalam lingkungan pengkodean saat ini, mustahil untuk mempelajari semuanya di muka, dan pembelajaran JIT seringkali merupakan satu-satunya cara praktis untuk cepat menjadi produktif.
Saya mengerti bahwa menggunakan IDE bisa menjadi penopang jika Anda menggunakannya secara membabi buta, tetapi saya pikir manfaatnya jauh lebih besar daripada yang negatif.
Menggunakan templat tanpa memahami apa yang sudah dibuat sebelumnya untuk Anda, di sisi lain, lebih merupakan masalah. Saya pikir itu dapat digunakan sebagai alat pembelajaran jika pengembang meluangkan waktu untuk membaca kode templated. Tetapi kebanyakan orang tidak peduli. Ini bisa menjadi alat belajar yang hebat.
sumber
Memahami konsep dan menghafalkan lusinan kelas dan metode perpustakaan bodoh adalah dua hal yang sangat berbeda. Intellisense membantu menghilangkan semua pengetahuan tak berguna itu dari benak Anda sepenuhnya, dan semakin awal Anda melakukannya, semakin baik. Sisakan lebih banyak ruang untuk konsep-konsep yang bermanfaat, jangan sia-siakan sumber daya terbatas Anda pada API.
Untuk menjawab bagian pertanyaan yang diperbarui: sedikit detail sintaksis, tata letak file, kompilasi dan permintaan tautan juga tidak penting dibandingkan dengan konsep pemrograman generik. Begitu mereka dipahami, seorang pemula-tidak-lebih bisa masuk ke pemahaman yang lebih dalam tentang bagaimana hal-hal tingkat rendah benar-benar bekerja. Lebih baik melakukannya ketika Anda sudah mengetahui dasar-dasarnya, jika tidak, kemungkinan Anda akan mengambil sejumlah takhayul magis yang berbahaya.
Misalnya, DrScheme IDE memiliki rekam jejak yang hebat dalam pengajaran pemrograman, dan keberhasilannya terutama karena kemampuannya untuk membantu berkonsentrasi pada apa yang benar-benar penting.
sumber
Menggunakan autocomplete bukanlah hal yang buruk sama sekali.
Ini hanya untuk kecepatan, dan bagi saya akan menjadi tanda seseorang mulai menguasai IDE dan menggunakannya dengan baik.
Saya tidak mengerti bagaimana TIDAK menggunakannya akan membantu mereka belajar OO misalnya.
sumber
Setelah mengajar dan mengajar siswa yang baru dalam pemrograman, saya menemukan bahwa autocomplete / intellisense terkadang menyebabkan lebih banyak kerusakan daripada kebaikan. Ya, mereka dapat menulis sebuah program dengan menggunakannya. Ya itu mengkompilasi dan menjalankan dan bahkan mungkin melakukan hal yang kami minta mereka lakukan. Tetapi mereka tidak mengerti apa yang mereka lakukan.
Ketika mereka tidak mengerti apa yang terjadi, itu menjadi kurang pemrograman dan lebih banyak meretas solusi bersama untuk mendapatkan nilai. Saya menemukan bahwa banyak terjadi dengan siswa ketika apa yang kami minta mereka lakukan menjadi lebih sulit, mereka hanya meretas sampai sesuatu berhasil. Ini selalu menjadi jelas ketika ujian tengah semester datang dan siswa diminta untuk menulis metode sederhana dengan tangan ... mereka tidak bisa.
Ya autocomplete / intellisense membantu kami (pengembang profesional) banyak b / c itu mempercepat kami. Kita tidak harus menghafal semua metode dan daftar parameter yang berbeda, tetapi pada saat yang sama kita juga bisa menebak-nebak parameter apa yang akan diambil oleh metode yang akan digunakan.
Pemula tidak. Mereka akan menunggu IDE mereka untuk menarik daftar metode, mereka akan menggulir daftar itu sampai mereka menemukan satu yang mungkin adalah apa yang mereka butuhkan, mereka akan melihat parameter yang dibutuhkan dan melihat apakah mereka memiliki mereka untuk masuk .. ..dan pada akhirnya mereka akan meretas sesuatu bersama yang bisa mereka serahkan.
Dan, pada akhir kursus ketika mereka mendapatkan pass mereka, mereka akan meninggalkan kelas pemrograman mereka dengan kemenangan yang dangkal, banyak yang tidak pernah mengambil kelas CS lagi b / c mereka tidak mengerti apa yang mereka lakukan atau mengapa mereka melakukannya saya t.
sumber
students were asked to write simple methods by hand...they couldn't.
Itu tergantung pada apa yang Anda coba ajarkan kepada mereka. Konsep pemrograman umum, atau sintaksis khusus bahasa?Masalah dengan IDE dan lingkungan pengembangan secara umum tidak begitu banyak seperti autocomplete seperti penggunaan solusi templated (file | new | project) di mana banyak hal "menarik" telah dilakukan untuk Anda dan, pada tingkat yang berbeda-beda, disembunyikan .
Bagi seseorang yang, secara luas, memahami apa yang terjadi di balik tudung ini sangat membantu - tetapi bagi seseorang yang mempelajari apa yang mereka butuhkan agak kurang.
Ada juga pertanyaan tentang waktu yang dibutuhkan untuk menjalankan IDE kelas berat ...
Karena itu saya pikir bahwa menggunakan sesuatu yang lebih ringan dan dapat menjalankan aplikasi di mana Anda telah menulis sendiri setiap baris kode memiliki manfaat yang cukup - terutama karena menggunakan editor teks dan kompiler menunjukkan poin penting bahwa Anda tidak memerlukan IDE dll untuk menulis perangkat lunak tetapi itu tidak berarti bahwa saya ingin menggunakan editor teks untuk waktu yang lama dan itu memang menghadirkan tantangan dalam hal debug - Anda ingin dapat melakukan breakpoint dan Anda ingin dapat melakukan langkah tunggal melalui kode karena ini akan membuatnya lebih mudah untuk memahami apa yang sedang terjadi.
Tentu saja kita dapat lebih lanjut mengacaukan masalah ini dengan mempertimbangkan hal-hal seperti Python di mana Anda memiliki baris perintah "langsung" ...
Pertanyaan bagus, tidak ada jawaban tunggal yang bagus - kecuali bahwa Anda ingin mempelajari progresi dan mulai dengan editor teks dan kompiler (atau penerjemah baris perintah) akan memungkinkan Anda untuk fokus pada dasar-dasar sintaksis dan logika sebelum Anda maju ke yang lain hal-hal rumit yang akan lebih mudah dilakukan dengan lingkungan pengembangan yang lebih kuat.
sumber
Belajar dengan cara yang sulit biasanya tinggal bersama Anda.
Sebagai pemula, JANGAN gunakan IDE. Gunakan baris perintah, belajar dari kesalahan Anda. Ini juga akan membantu Anda memahami opsi kompilator dan tautan yang lebih dekat.
Jadi kapan Anda menggunakan IDE? Ketika Anda mendesain sesuatu yang besar atau bekerja pada basis kode besar dengan banyak kelas, metode dan variabel.
sumber
Saya akan menjadi orang pertama yang mengatakan bahwa IDE adalah anugerah bagi produktivitas, bahkan jika saya sering mengeluh tentang kebiasaan mereka. Namun, saya belajar BASIC, C, C ++, Java, Python, Perl, PHP, dan beberapa bahasa lainnya tanpa lebih dari editor penyorot teks dan kompiler / juru bahasa. Saya sebenarnya belajar Java di Notepad!
Mempelajari IDE mengemukakan "sihir" - gagasan bahwa "itu berhasil; tidak masalah bagaimana." Abstraksi itu baik; sihir itu buruk. Seorang programmer harus tahu, atau dapat mengetahui, semua yang terjadi dalam suatu proyek. IDE yang baik dirancang untuk menjaga pembukuan, bukan mengendalikan proyek. Digunakan dengan benar itu adalah alat yang hebat. Tapi pengrajin apa yang mulai menggunakan router CNC?
Saya pikir cara saya belajar (harus mengetik semuanya dan tahu kompiler dengan baik untuk membangun sebuah proyek) telah membantu saya tak terkira ketika akhirnya saya mulai menggunakan IDE. Misalnya, proyek Java bukan folder kecil di proyek Eclipse, tetapi kumpulan kelas dalam struktur paket dengan beberapa file XML untuk jalur, konfigurasi, dan penyebaran. Saya tidak ingin membangun aplikasi perusahaan besar tanpa IDE, tetapi saya bisa membangun yang kecil. Itu membuatnya lebih mudah untuk memahami struktur yang besar, dan ketika saya ingin perilaku tertentu dalam pembuatan, katakan, saya tahu bagaimana javac bekerja, sehingga saya dapat mengubah permintaan pembangunan yang sebenarnya daripada mencoba menemukan kombinasi ajaib yang tidak t ada dalam konfigurasi build. Saya juga percaya saya memiliki pemahaman yang lebih dalam tentang pesan kesalahan dan bagaimana menemukan dan memperbaikinya.
Saya tidak akan mengajar menggunakan IDE. Saya pikir proyek awal cukup kecil sehingga argumen untuk mengelola kompleksitas masih bisa diperdebatkan. Jika Anda mengajar Java, misalnya, Anda dapat menempatkan semua kelas di folder yang sama dan
javac *.java
. Anda tidak perlu IDE untuk itu! Ini berargumen untuk menjaga proyek tetap kecil, sedikit lebih dari pembuktian konsep. Minimalkan biaya overhead, dan berkonsentrasi pada pengajaran konsep yang dibutuhkan siswa. Proyek yang lebih besar di mana IDE akan berguna termasuk dalam kelas SE yang lebih maju atau proyek khusus.Adapun bantuan untuk menemukan kelas dan penelitian API, sekali lagi, saya percaya ini bisa diperdebatkan jika proyek tetap kecil. Sekali lagi di Jawa, javadoc sangat mudah dibaca. Tidak ada yang bisa menyimpan seluruh API di sana tetap ada, dan akan ada waktu di mana Anda akan perlu untuk meneliti API tanpa manfaat dari IDE. Seperti, dalam bahasa lain, atau jika mengirim ulang ke server tempat Anda tidak dapat membuka IDE. Ajari cara menemukan dokumentasi, bukan "tekan '.' dan Anda dapat melihat apa metode objek itu. "
Setiap programmer dapat mempelajari suatu IDE, tetapi mengetahui suatu IDE tidak membuat Anda seorang programmer yang baik. Selain humor hitam, "sihir" tidak pernah menjadi kata yang baik untuk digunakan oleh seorang programmer.
sumber
Mungkin seorang pemula harus mengerjakan masalah yang lebih mudah terlebih dahulu. Dan tidak, masalah-masalah itu seharusnya tidak memerlukan atau mendorong penggunaan IDE untuk menyelesaikan tugas. Masih banyak yang bisa diperoleh dalam jangka panjang dengan memahami konsep-konsep dasar. Alat harus datang setelah.
Tidak ada pengrajin kayu yang langsung melompat menggunakan planer permukaan tenaga kuda tinggi tanpa memahami seluk-beluk jenis kayu dan pesawat tangan terlebih dahulu.
(Catatan: autocomplete dan intellisense adalah dua hal yang sangat berbeda).
Intellisense, dengan sendirinya, tidak buruk. Ini hanya buruk ketika digunakan kruk untuk menebak fungsionalitas tanpa membaca atau memahami dokumentasi atau implementasi yang mendasarinya.
Poin samping: Jika bahasa membutuhkan IDE untuk kode untuk Anda, bahasa tersebut mungkin berada pada level abstraksi yang salah untuk masalah yang Anda coba selesaikan.
sumber
Ketika kita tumbuh sebagai seorang anak, kita tidak diberitahu bahwa kita harus memahami aturan rumit dari bahasa Inggris sebelum kita dapat berbicara. Kami tidak diberitahu bahwa kami harus sepenuhnya memahami penggunaan preposisi, konjungsi, dan untuk menghindari fragmen kalimat yang tepat. Kita belajar sambil melakukan. Kami belajar melalui kesuksesan dan kegagalan.
Sebuah IDE dengan pelengkapan otomatis membantu programmer baru mendapatkan kepercayaan diri dengan memfasilitasi pembuatan program, sementara tidak berjuang dengan mengingat setiap fungsi segudang banyak perpustakaan.
Jika seseorang benar-benar mengekstrapolasi pandangan bahwa autocomplete menyakiti programmer baru karena itu membuatnya terlalu mudah bagi mereka, maka Anda dapat berdebat, bahwa buku referensi tidak boleh digunakan saat pemrograman, karena konsep-konsep di dalamnya harus dikomit dulu, karena tidak membuat mereka hafal memperlambat mereka, dan tidak memungkinkan mereka untuk memahami konsep terlebih dahulu.
Autocomplete adalah alat, digunakan untuk membuat programmer lebih produktif. Sama seperti dengan belajar bahasa untuk pertama kalinya, setelah kami memperoleh kepercayaan diri dan tingkat keberhasilan dengan apa yang kami pelajari, kami kemudian bekerja untuk meningkatkan pengetahuan kami.
sumber
Pada awalnya, cukup sulit untuk membangun sesuatu yang berfungsi, jadi apa pun yang membantu merek menjadi semakin baik. Seorang programmer baru akan membutuhkan seseorang yang lebih senior untuk membuat mereka berpikir tentang apakah daftar terikat array atau daftar tertaut akan menjadi pasangan yang lebih baik untuk masalah yang dihadapi. Mereka masing-masing memiliki kekuatan dan kelemahan mereka.
Apakah pemula memiliki IDE, atau mereka menelusuri dokumen API secara online, tidak akan ada perbedaan nyata antara kode yang mereka buat. Sementara berurusan dengan rasa sakit menulis kesalahan sintaks bisa menjadi pengalaman belajar, ada terlalu banyak untuk belajar khawatir tentang itu di awal.
Anda tidak belajar berjalan di atas tali dengan langsung ke kawat tinggi tanpa jaring. Anda mulai dengan berjalan tali yang beberapa inci dari tanah. Saya berani mengatakan bahwa kebanyakan dari kita bekerja dengan IDE, dan beberapa jenis skrip build (skrip build Visual Studio dibuat oleh IDE tetapi ada di sana). Sebagian besar dari kita tidak membangun kelas kita secara manual dengan editor teks, dan kemudian memanggil kompilator dengan tangan. Mengapa kita harus memaksakan itu pada seorang pemula yang memiliki lebih banyak hal untuk dipelajari?
sumber
Saya tidak melihat ada kebutuhan untuk menderita rasa sakit dari alat-alat di atas, bahkan ketika pengembang sedang belajar. Saya percaya waktu ekstra dan upaya yang diperlukan untuk menulis kode tanpa alat akan lebih baik dihabiskan belajar bagaimana menulis tes unit dan debug. Setelah pengguna mengetahui cara menguji kode mereka dan melangkah melaluinya saat berjalan mereka akan belajar banyak tentang apa yang sebenarnya dilakukan.
Selain itu, tidak seperti menggunakan IDE berarti kode itu menulis sendiri. Pengembang yang tidak kompeten atau pemula akan menulis kode yang tidak berfungsi apakah mereka menggunakan IDE atau tidak.
Saya hanya melihat IDE sebagai level abstraksi lain saat coding. Jika saya menulis Java, saya biasanya tidak perlu memahami bagaimana bytecode yang dihasilkannya berfungsi. Jika seorang programmer baru menggunakan Java libs mereka tidak perlu tahu paket apa yang ada di dalamnya jika IDE dapat menambahkannya secara otomatis untuk mereka. Dalam kasus mana pun jika bug atau masalah di level bawah mungkin muncul (mis. Benturan nama kelas) yang menyebabkan kesalahan, maka sudah waktunya bagi pengembang untuk melihatnya secara manual.
sumber
Banyak jawaban bagus lainnya jadi jangan anggap ini jawaban yang lengkap, tetapi baik bagi pemula maupun pengguna berpengalaman untuk melihat gambaran lengkap tentang fungsi apa yang mereka miliki.
Dalam Delphi saya dapat menekan ctrl-j dan saya akan melihat daftar setiap hal yang mungkin bisa saya harapkan secara sintaksis berfungsi.
Saya tidak perlu setuju, tetapi saya telah membaca argumen yang menyatakan bahwa pemrogram seharusnya tidak melihat anggota kelas privat dari objek yang mereka gunakan dan dengan cara ini, lengkapi-otomatis memberi setiap pengguna referensi API instan.
IDE yang lebih baru memungkinkan pengguna dan pengembang bahasa memasukkan meta-data ke dalam intellisense mereka yang selanjutnya meningkatkan kemampuan membaca dan memahami apa fungsi yang dilakukan, tanpa membaca sumbernya (yang merupakan sesuatu yang seharusnya tidak harus mereka lakukan pula).
Mungkin, yang terbaik bagi pemula untuk benar-benar membaca dan memahami semua yang mereka terapkan. Tapi, mungkin itu akan menjadi pertanyaan yang lebih baik apakah pemula harus diizinkan untuk memasukkan atau mengimpor ruang nama atau unit apa pun yang mereka inginkan tanpa mendokumentasikan mengapa mereka memasukkannya.
sumber
Dalam pengalaman saya, menggunakan IDE untuk mempelajari dasar-dasar OO saya hebat karena menyembunyikan beberapa kompleksitas sebenarnya menulis kode sambil memungkinkan pengembang baru untuk fokus pada logika program. Namun, segera setelah belajar memprogram dan prinsip dasar OO saya, melalui kursus dipaksa untuk memahami lebih tepat potongan apa yang diperlukan untuk berinteraksi satu sama lain dalam file sumber (tidak melupakan pernyataan impor, membuat kelas yang benar, dll) dengan kursus pemrograman di mana kami harus menggunakan terminal hanya mesin Unix.
Ini dimungkinkan di sekolah karena seseorang memiliki 'wewenang' untuk memaksa Anda menggunakan alat lo-fi. Akan jauh lebih sulit untuk dicapai dalam lingkungan bisnis atau perusahaan.
sumber
Saya punya dua pemikiran tentang ini. Yang pertama adalah untuk benar-benar mempelajari sesuatu, saya yakin Anda harus tahu apa yang sebenarnya terjadi. Dan dengan seberapa bagus IntelliSense, ia dapat menyembunyikan sebagian dari itu untuk pengembang baru. Sebagai contoh, saya memiliki kelas rekayasa web di perguruan tinggi tempat kami benar-benar membangun kerangka kerja web kami sendiri untuk membangun aplikasi akhir kami di atas. Saya keluar dari kelas itu dengan kemampuan untuk beradaptasi dengan hampir semua kerangka kerja web karena saya memiliki pemahaman tentang apa yang ada di bawahnya. Menggunakan IDE tidak cukup untuk tingkat itu tetapi, intinya masih ada saya percaya.
Namun, menggunakan IDE juga dapat melakukan hal-hal seperti membuka API untuk pengembang baru. Ketika saya mulai mengkode dengan serius, IDE yang saya gunakan sangat membantu saya karena saya akan melakukan hal-hal seperti mengetikkan objek, menggunakan pelengkapan otomatis untuk melihat metode apa yang dimilikinya, dan kemudian meneliti mereka menggunakan dokumen yang tersedia. Ini semua dilakukan dalam IDE dan merupakan alat pembelajaran yang hebat.
Jadi, ya, saya percaya tidak masalah untuk menggunakannya selama Anda juga meluangkan waktu untuk memahami apa yang sedang terjadi. Hanya menggunakan objek yang dilemparkan tanpa memahami mengapa Anda harus melakukannya benar-benar buruk tetapi, jika pengembang baru melihat bahwa Anda dapat menggunakan objek yang dilemparkan dan kemudian melihat untuk melihat mengapa saya tidak melihat ada yang salah.
sumber
Belajar membutuhkan latihan. Pemrograman bisa menjadi tugas yang sangat membuat frustasi ketika Anda tidak tahu apa yang dapat Anda lakukan atau bagaimana cara kerjanya.
Tidak praktis untuk, katakanlah, membaca banyak buku tentang prinsip pemrograman tanpa menulis satu baris kode pun; seseorang tidak belajar apa pun dengan cara ini.
Intellisense sangat membantu memberi programmer baru bantuan yang mereka butuhkan untuk terus pemrograman, terus berlatih, dan dengan demikian belajar.
Seperti yang sudah dikatakan, belajar API spesifik tidak sama dengan belajar prinsip pemrograman. Apa yang pasti akan terjadi adalah bahwa programmer baru akan membuat kesalahan (terlepas dari Intellisense), dan bagaimana mereka memilih untuk memperbaiki kesalahan itu adalah apa yang akan membuat mereka menjadi programmer yang baik atau yang buruk.
Jika Anda mencoba mengajari seseorang cara memprogram, saya akan membuat mereka menggunakan Intellisense dan bermain-main sampai macet. Saat itulah saya mencoba membangun sebuah yayasan dengan mengajari mereka alasan mereka buntu.
sumber
IMO, IDE akan membuat Anda lebih produktif. Tetapi untuk pemula biasanya bukan ide yang baik untuk memulai pemrograman dengan IDE. Editor teks seperti notepad ++, notepad, dll. Sudah cukup.
Selain itu, umumnya tidak dianggap sebagai ide yang baik untuk mulai mempelajari pemrograman dengan bahasa tingkat tinggi. Saya menyarankan Anda untuk mulai dengan bahasa assembly. Ini akan mengajarkan Anda dasar-dasar serta kesabaran.
sumber