Apakah programmer membutuhkan memori yang baik? [Tutup]


16

Tampaknya kita harus mengingat semua jenis sintaks untuk dapat memprogram. Jika seseorang tidak memiliki ingatan yang baik untuk mengingat nama, apakah akan lebih sulit untuk belajar memprogram?


20
Ada nama untuk memiliki ingatan yang baik untuk nama, tapi saya lupa apa itu.
Mike Two

3
Jika sintaks adalah masalah, maka pilih bahasa yang memiliki sintaks minimal. Tertinggal / Clojure?
Chiron

1
Hari-hari ini saya tidak menghabiskan sepanjang hari pemrograman, tapi saya menghabiskan beberapa waktu setiap pemrograman hari. Dan saya memprogram dalam banyak bahasa yang tidak saling menyukai. Saya memprogram dalam C, Java, Javascript, Lisp, VBA, PL / SQL, Ruby, Python, Perl, Smalltalk, dan bahkan sedikit Prolog dari waktu ke waktu. Saya hanya mencari sintaks.
Mike Sherrill 'Cat Recall'

4
Jika mereka melakukannya saya telah berpura-pura selama 13 tahun.
ElGringoGrande

1
Universitas tentu mengajarkannya seperti Anda membutuhkan ingatan yang baik, yang benar-benar bodoh. Milik saya sangat terkenal karena mengharuskan ujian akhir CS bernilai setidaknya 50% (selalu tertutup) dan ujian tengah semester biasanya setidaknya 30-40%.
Rei Miyasaka

Jawaban:


34

Sintaks suatu bahasa tidak sesulit yang Anda bayangkan, jika Anda menggunakannya setiap hari. Akhirnya menjadi sangat mudah. Mengingat semua fungsi pustaka bisa jauh lebih sulit dan saya tidak berpikir kebanyakan orang dapat mengingat lebih dari yang paling umum yang mereka gunakan, tetapi tidak apa-apa jika Anda memiliki akses ke Web, atau buku, atau hal lain yang " ingat "semua detail lainnya untuk Anda.


+1. Itu benar-benar menjadi kebiasaan. Saya melihat kembali kode dan bahkan tidak ingat melakukan salah satu aturan pemformatan yang saya ikuti ...
Reid

1
Panduan saku O'Reilly membantu saya melacak berbagai hal. Sangat bermanfaat.
Insinyur Dunia

17

Sepertinya kita harus mengingat semua jenis sintaks untuk dapat memprogram berbicara bahasa alami.

Jika seseorang tidak memiliki ingatan yang baik untuk mengingat nama kata, akankah lebih sulit untuk belajar memprogram berbicara?

Tidak mungkin benar bahwa orang memiliki fasilitas "alami" dengan bahasa, bukan?

Tidak mungkin benar bahwa kita memiliki perangkat keras saraf tingkat rendah hanya untuk memperoleh bahasa, bukan?

Pemrograman menggunakan bahasa buatan yang mengikuti banyak aturan bahasa alami.

Bahasa alami memiliki sedikit lebih banyak fleksibilitas daripada bahasa pemrograman.

tata bahasanya masih ketat. aturan ada yang Tapi

Jika Anda dapat berbicara, Anda dapat belajar memprogram tanpa menghafal apa pun lebih dari apa yang Anda hafal ketika Anda belajar berbicara.


13

Iya:

Jika Anda berbicara tentang memori jangka pendek maka ya . seorang programmer harus mampu menyulap banyak bit informasi secara bersamaan ketika pemrograman / pemecahan masalah.

Tidak:

Jika Anda berbicara tentang memori jangka panjang maka tidak terlalu. Ada banyak manual dan alat referensi + yang dapat membantu secara signifikan dalam mengingat informasi. Tentu saja menghafal informasi jangka panjang ini akan membuat Anda menjadi pengembang yang lebih cepat (secara keseluruhan), tetapi itu bukan prasyarat.


1
+1 Untuk menggambar perbandingan yang bermanfaat antara kegunaan memori jangka pendek dan panjang dalam kaitannya dengan pertanyaan. Sedang menunggu seseorang melakukan itu.
KChaloux

8

Memori yang baik sangat penting, tetapi tidak untuk alasan yang jelas.

Mengingat detail pada algoritma, pustaka, nama variabel, dan semacamnya sangat berguna, tetapi tidak super penting. Anda memiliki Google, DuckDuckGo, halaman manual, dokumentasi khusus bahasa, dan editor pintar untuk membantu semua hal di atas. Ini membantu jika Anda tidak perlu bergantung pada kruk ini, tetapi Anda akan mendapatkannya dengan baik jika Anda memang membutuhkannya.

Di mana ingatan sangat penting adalah menjaga detail apa yang sedang Anda kerjakan dalam ingatan jangka pendek yang aktif. Mampu memvisualisasikan desain, aliran data, algoritma, struktur data, dan bagaimana mereka semua berinteraksi untuk melakukan apa pun yang produk Anda lakukan memisahkan programmer OK dari programmer hebat. Ketika Anda aktif melakukannya, rasanya seperti Anda berhasil menyulap sejumlah besar bola saat mengendarai sepatu roda.

Ini sering disebut sebagai berada di zona tersebut . Gangguan, pertanyaan bodoh, bos yang membutuhkan laporan TPS semua mengejutkan Anda dari zona ini.

Semakin baik ingatan Anda, semakin mudah untuk masuk ke zona, semakin mudah untuk tinggal di sana, dan semakin mudah untuk kembali ke dalamnya setelah gangguan.

Jika Anda memiliki masalah dengan ingatan semacam ini, saya sarankan belajar teknik meditasi dan trik ingatan seiring semakin mudah ingatan Anda, semakin besar kesuksesan yang Anda miliki sebagai seorang programmer.


1
Saya benar-benar akan mengatakan bahwa persyaratan memori dikurangi jika Anda lebih baik memodulasi program dan nama yang benar. Jika Anda memiliki metode dua halaman dengan 20 variabel, maka Anda harus mengingat lebih banyak daripada jika Anda memiliki metode 5 baris dengan panggilan ke metode lain yang disebut dengan baik untuk melakukan sub tugas. Juga setiap kali Anda ingin memodifikasi sesuatu yang rumit, Anda harus masuk ke "zona" untuk melakukannya. Sedangkan jika lebih sederhana maka Anda bisa melakukan perubahan. Saya akan mengatakan "zona" adalah kewajiban.
Cervo

1
@Cervo - Ya, ketika Anda mengkode modul individual dan unit kecil kode, apa yang saya jelaskan di atas tidak benar-benar diperlukan. Tetapi ketika Anda sedang men-debug seluruh sistem dan mencoba menemukan modul yang bagus, rapi dan bersih yang ada di dalamnya, ada baiknya Anda tetap mengingat sebanyak mungkin keadaan yang ada dalam pikiran.
unpythonic

Mengapa di dunia ini hanya memiliki satu suara? Anda tidak dapat mendesain kode Anda dengan benar tanpa mengingat bagaimana itu sesuai dengan hal-hal di sekitarnya. Banyak pemrograman modern adalah tentang mengurangi jumlah detail yang diperlukan tetapi hal ini hanya mengurangi jumlah yang harus Anda ingat, bukan fakta bahwa Anda harus mengingatnya untuk melakukan pekerjaan Anda.
Loren Pechtel

5

Saya akan menentang arus, dan mengatakan ya . Memori yang baik menjadi aset yang luar biasa sebagai seorang programmer. Ingatan saya, saya selalu dianggap sebagai kewajiban pemrograman, jadi saya telah mengambil beberapa trik untuk mengkompensasi cacat saya:

  • Anda harus bisa mengingat bagaimana variabel itu (yang Anda gunakan 3 baris sebelumnya) dieja. Jika Anda tidak dapat belajar menggunakan Intellisense (atau apa pun bentuk pelengkapan otomatis Anda ada di editor atau IDE Anda).

  • Anda harus dapat dengan cepat mengingat apa yang Anda lakukan terakhir kali Anda mengerjakan proyek ini. Ini mungkin beberapa hari yang lalu, mungkin sebelum makan siang. Jika tidak bisa, belajarlah menulis . Simpan buku catatan di sisi Anda dan tulis apa yang Anda (atau sedang) lakukan, barang-barang TODO, dan hal-hal yang perlu Anda ingat tentang bagaimana kode saat ini yang Anda kerjakan cocok bersama.

  • Debugging dan QA sulit. Idealnya Anda harus menyimpan buku catatan yang sangat rinci tentang langkah-langkah yang Anda ambil saat mencoba mereproduksi bug atau men-debug sesuatu. Ini adalah sesuatu yang saya tahu harus saya lakukan, tetapi masih berjuang dengan.

Semoga ini membantu!


4

Panduan Gerilya untuk Wawancara (versi 3.0) adalah referensi umum bahwa catatan menjadi cerdas dan menyelesaikan sesuatu adalah poin penting dari pemrograman. Smart memang menyertakan beberapa keterampilan memori tetapi tidak harus sebanyak yang Anda pikirkan.

Intellisense dapat banyak membantu dalam hal sintaksis jika Anda menginginkan bantuan di sisi hal-hal tersebut. Mengetahui cara Anda belajar sehingga Anda dapat dengan cepat menerapkan apa yang Anda pelajari dengan cara yang bermakna lebih penting daripada mampu menjawab pertanyaan-pertanyaan sepele.


2

Saya percaya mengingat nama adalah fungsi kognitif yang agak berbeda dari mengingat proses yang berbeda dari mengingat kosakata. Ada kasus-kasus orang yang telah menerima cedera otak yang sepenuhnya menghilangkan kemampuan untuk mengingat nama sementara dapat berfungsi dengan sangat baik.

Jadi saya akan mengatakan bahwa kemampuan untuk mengingat nama tidak terkait dengan belajar bahasa pemrograman.

Akan sangat membantu untuk dapat mengingat pola, aturan, dan kosa kata yang logis.


2
Saya yakin Anda benar. Indikator Tipe Myers-Briggs mengatakan bahwa INTP (yang secara khusus cocok untuk menjadi programmer) mengalami kesulitan mengingat nama orang. Saya tahu itu benar dalam kasus saya. Saya dapat mengingat nama-nama hewan peliharaan Anda, plat mobil Anda, dan tempat saya meletakkan cetakan stacktrace yang Anda berikan tahun lalu yang memiliki baris baru yang aneh seperti 0x0D0A0D. Namamu sendiri, aku akan melupakannya 10 menit. (Ketika saya masih muda, saya butuh tiga tahun untuk mendapatkan nama-nama semua orang di tim sepak bola saya.)
Mike Sherrill 'Cat Recall'

2

Tidak. Kedalaman memori alat (Intellisense, Google, kompiler, pembuat kode) tidak terbatas dibandingkan dengan memori manusia. Jadi programmer dengan memori yang baik tidak jauh lebih baik daripada yang memiliki lubang di kepala.

Apa yang sebenarnya dibutuhkan oleh pemrogram adalah "kecepatan puncak memperoleh fokus" ketika mereka beralih di antara tingkat abstraksi. Semakin cepat Anda bisa, semakin baik Anda sebagai seorang programmer. Beberapa memiliki kecepatan detak jantung seperti 500 ms, dengan kedatangan gelombang darah pertama ke otak Anda menjadi fokus. Beberapa jam fokus telah dibulatkan ke siklus merokok, sekitar 2 jam. Beberapa perlu mandi pagi, jadi sekitar 24 jam. dll. Perbedaan antara programmer yang baik dan yang buruk pernah dinyatakan 1:80 kali lipat tahun lalu, dan kesenjangannya hanya bertambah.


1

Tidak, Anda hanya perlu memahami cara Google bekerja untuk mendapatkan apa yang Anda inginkan

Saya memiliki ingatan yang mengerikan, tetapi keterampilan Googling saya luar biasa ^ _ ^

Dalam semua keseriusan, selama Anda tahu di mana menemukan sintaks, Anda tidak perlu mengingatnya. Untuk itulah intellisense, file bantuan, panduan referensi, internet, dll.


1

Pertama-tama, belajar program sulit bagi semua orang. Memiliki ingatan yang baik membantu saya yakin. Namun, dedikasi dan kecintaan belajar seumur hidup lebih berharga. Mempelajari sintaks sama seperti yang lainnya, pengulangan.

Tidak ada yang ajaib atau manusia super tentang keterampilan pemrograman. Hanya menghabiskan sekitar 10.000 jam untuk itu ... dan Anda akan menjadi master seperti keahlian lainnya. Tentu saja, itu 10.000 jam pelatihan, tidak mengulangi kesalahan di masa lalu secara membabi buta dan mati-matian.


1

Anda menulis posting ini dalam bahasa Inggris, dengan sintaksis yang tepat. Jelas Anda dapat mengingat cara menggunakan bahasa. Anda hanya perlu belajar bahasa baru dan cukup sering menggunakannya sehingga Anda bisa melakukannya dengan benar setiap saat. Tidak seperti bahasa yang berorientasi pada manusia, bahasa pemrograman komputer akan selalu memberi tahu Anda ketika Anda menggunakan sintaks yang salah, jadi sebenarnya lebih mudah. :-)


1

Saya setuju bahwa ada berbagai macam hal yang mungkin diketahui oleh programmer rata-rata untuk menyelesaikan tugasnya, pikirkan saja semua kata, sintaksis, teknik yang pada dasarnya harus Anda kontrol untuk membangun situs web sederhana (di ujung depan: html, css, javascript (Anda dapat menghitung juga beberapa kerangka kerja Js sebagai jquery), ajax, di bagian belakang: Php atau ASP atau ASP.Net, dan jangan lupa tentang basis data, mySql atau SqlServer atau Oracle atau MongoDB, dll). Ada daftar besar bahasa, paradigma, sintaksis, pola, dll., Tidak mungkin untuk mengingat semuanya.

Itu berpikir bahwa apa yang membuat programmer yang baik adalah latihan, praktik dengan algoritma lebih dari pada bahasa, dan dengan itu Anda pada akhirnya akan mengingat hal-hal yang paling sering Anda gunakan, untuk selebihnya, selalu ada google = P


1

Memori yang hebat dapat memotong kedua arah.

Jika Anda dapat menyulap puluhan bit informasi di kepala Anda sekaligus, Anda akan memiliki waktu yang jauh lebih mudah untuk memahami (dan mudah-mudahan menulis ulang) sepotong kode warisan yang penting untuk proyek tersebut tetapi sangat rumit sehingga orang lain takut untuk menyentuhnya.

Di sisi lain, potongan kode mengerikan yang penting untuk proyek tetapi begitu rumit sehingga orang lain takut untuk menyentuhnya mungkin ditulis oleh seseorang dengan kemampuan luar biasa untuk menyulap puluhan bit informasi. Jika Anda memiliki ingatan yang hebat, bekerja ekstra keras untuk menumbuhkan penghargaan atas keanggunan kesederhanaan.

Mempelajari sintaks suatu bahasa pemrograman tidak membutuhkan memori yang besar. Seperti yang orang lain katakan, sintaks diperkuat dalam ingatan Anda sedemikian rupa sehingga dengan cepat menjadi sifat kedua. Apakah Anda pernah lupa di sisi jalan mana Anda seharusnya mengemudi? Simbol aritmatika mana yang mewakili penambahan dan pengurangan? Jika tidak, Anda akan menguasai bagian-bagian paling umum dari sintaksis bahasa pilihan Anda tanpa terlalu banyak kesulitan, dan Anda dapat mencari bagian-bagian yang kurang umum ketika mereka muncul.

Beberapa perpustakaan memiliki ratusan atau ribuan fungsi, kelas, dan / atau metode. Bagi orang luar sepertinya tugas yang mustahil untuk belajar menggunakan semua fungsi itu. Tapi hampir selalu ada struktur yang mendasari perpustakaan. Alih-alih mencoba mengingat semua fungsi itu, seorang programmer yang cerdas mencoba memahami bagaimana perpustakaan diatur dan apa yang dapat dilakukannya. Setelah selesai, biasanya cukup mudah untuk menemukan fungsi yang Anda butuhkan saat Anda membutuhkannya.

Singkatnya, ingatan jauh lebih penting daripada pemahaman.


0

Tergantung. Dalam Java dan .NET pustaka standar berada dalam semacam hierarki dan didokumentasikan dengan baik. Oleh karena itu, jika Anda tahu Anda berurusan dengan jaringan, maka Anda pergi ke system.net di C # dan dari sana Anda dapat menelusuri ke objek / panggilan tertentu yang Anda butuhkan. Jadi dari hal itu Anda tidak perlu mengingat detail dan di sana.

Dalam program Anda sendiri, ini semua tentang bagaimana Anda mengatur / memberi nama sesuatu. Jika Anda menggunakan nama seperti $, b $, c $ ... atau g $ dari Basic of old, semoga sukses. jika Anda menyebutkan sesuatu dengan cara yang Anda akan pikirkan tentang mereka seperti FirstName, LastName itu jauh lebih mudah. Banyak bahasa memiliki standar penamaan yang membantu juga. Di Java misalnya ada konvensi setX, getX untuk mendapatkan / menetapkan atribut spesifik suatu kelas serta konvensi kapitalisasi. Jadi jika Anda tahu seseorang memiliki nama depan, maka itu mungkin disebut firstName dan pengambil / penyetel mungkin getFirstName dan setFirstName ..... Jadi konvensi tersebut sangat membantu ...

Metode / fungsi yang lebih pendek juga membantu Anda untuk tidak terlalu banyak berpikir pada satu waktu. Dan menggunakan nama yang tepat membantu Anda untuk tidak perlu mencari. Sebagai contoh jika Anda menyebutkan hal-hal untuk apa yang mereka lakukan, maka ketika membaca satu prosedur yang memanggil getMaximumValue Anda mungkin tidak perlu membaca getMaximumValue untuk mencari tahu apa yang dilakukannya ... Tetapi karena fungsi / metode menjadi lebih panjang dan lebih bersarang maka memori yang lebih baik pasti membantu.


Saya meninggalkan intellisense yang disebutkan JB King, tetapi untuk C # itu sangat membantu juga. Saya cenderung menggunakan editor untuk Java yang tidak memilikinya :( Namun demikian sisanya masih berlaku, jika Anda menyimpan metode yang lebih pendek, tetap menggunakan konvensi penamaan maka intellisense bekerja lebih baik. Jika Anda memiliki 50 variabel dalam suatu metode, maka intellisense mungkin masih meninggalkan Anda sedikit kewalahan
Cervo

Cervo Saya terutama seorang pengembang C # tetapi telah melakukan lebih dan lebih lagi di java belakangan ini. Cobalah Ide IntelliJ. Versi terbaru mereka memiliki kecerdasan yang cukup bagus. Tidak Visual Studio bagus tapi dekat.
Adrian

0

Memori tidak terlalu penting. Jika Anda khawatir tentang hal itu, saya sering lupa dompet atau kunci di rumah saya di pagi hari. Saya memanggil semua orang dengan nama yang salah setidaknya sekali (termasuk keluarga dan pacar saya). Saya hanya lupa untuk melakukan hal-hal di sekitar rumah sepanjang waktu.

Pada akhirnya, prinsip pemrograman akan tetap ada di kepala Anda seperti "Anda tidak pernah lupa bagaimana mengendarai sepeda". Detail spesifik dan detail implementasi tidak terlalu penting. Anda selalu dapat Google itu.


0

Dari Joel On Software tentang produktivitas seorang programmer-

Produktivitas tergantung pada kemampuan menyulap banyak detail kecil dalam memori jangka pendek sekaligus.

Jadi, memori jangka pendek sangat penting bagi seorang programmer yang diberikan tugas penting.
Tapi saya tidak berpikir ingatan jangka panjang begitu penting.


0

Dari membaca cepat, saya tidak melihat siapa pun berbicara tentang memori dalam arti pemrograman umum daripada tugas tunggal menulis program.

Memori berguna untuk dua hal:

  1. Mengingat semantik dasar / perpustakaan:

    Ini mudah digantikan oleh pengulangan dan Google. TKI, jumlah memori Anda sejak lahir harus sangat rendah untuk tidak dapat mengatasi masalah ini.

  2. Mengingat konteks dalam program besar:

    Di sinilah triknya. Ketika program bertambah besar (dan Anda menjadi senior), keputusan yang Anda buat benar-benar terkait dengan jumlah pengetahuan Anda tentang sistem dan kemampuan untuk mengambilnya dalam hitungan milidetik jika ingin digunakan dalam diskusi proyek, debugging, bereaksi terhadap keadaan darurat operasional dll. Ketika dorongan datang untuk mendorong, tidak ada jumlah dokumentasi / entri wiki yang akan membantu Anda - "wizard" tim Anda akan menjadi satu-satunya pilihan Anda. Ini adalah salah satu alasan mengapa insinyur utama dihargai / dibayar begitu banyak. Sebagian besar dari mereka mungkin tidak menghabiskan seluruh waktu mereka benar-benar coding pada titik ini, mereka menghabiskan lebih banyak waktu menjaga saat ini dengan gambar penuh dan menerapkannya untuk masalah / perbaikan. Yang baik tetap berhubungan dengan melakukan satu ton CR dan perubahan kode di sana-sini / membuat prototipe revisi yang lebih baru.

TKI, Anda bisa menjadi programmer yang masuk akal dengan # 1 saja, tetapi jika Anda akan menjadi Linus berikutnya, Anda lebih baik memiliki banyak memori, setidaknya cukup untuk mencakup masalah yang Anda selesaikan.

Dari pengamatan saya, saya bahkan bisa mengatakan bahwa memori yang bekerja hampir berbanding lurus dengan nilai orang tersebut.

Penafian kecil untuk dibungkus: Jika Anda memiliki memori Eidetic tetapi nol / kekuatan intelektual rendah dalam menerapkan logika itu, Anda tidak akan lebih baik untuk proyek daripada kamera.


0

Jika Anda kesulitan mengingat nama orang yang Anda temui, Anda masih bisa menjadi programmer yang hebat.

Saya lupa nama orang sepanjang waktu. Saya seorang programmer senior dengan pengalaman hampir satu dekade. Dalam kasus saya, memori pendengaran saya yang mengerikan dikompensasi oleh memori visual yang hebat.

Meski begitu, persyaratan penting untuk programmer yang baik adalah kemampuan untuk abstrak. Tidak peduli seberapa banyak atau sedikit yang dapat Anda ingat, jika Anda tidak dapat memahami konsep variabel, dan bagaimana menggunakannya dalam suatu program, Anda tidak akan menjadi programmer yang baik.

Saran saya adalah Anda mencoba satu kursus singkat dalam pemrograman, atau menyelesaikan tutorial Python untuk melihat bagaimana Anda menyukainya.

Itu seharusnya memberi Anda ide yang baik tentang apakah pemrograman adalah karier yang mungkin Anda minati.


-1

Saya katakan YA tegas!

Saat ini saya sedang belajar JAVA & C #. Semua tes adalah buku tertutup, jadi untuk JAVA semuanya 100% dari memori mengkode semua aplikasi dalam ujian.

Terlebih lagi, semakin sulit & sulit. Saya pada titik sekarang di mana saya harus mulai menggunakan trik memori seperti mnemonik, dll.

Saya akan mengatakan IQ Tinggi, pengetahuan umum yang baik, kosa kata yang baik, polimisme, pengetahuan matematika yang lebih tinggi, pengetikan sentuh & memori yang baik adalah semua aset bagi seorang programmer.

Saya tahu programmer yang sangat pintar yang tidak bisa menyentuh tipe atau melakukan matematika yang lebih tinggi, dll. Jika mereka melakukannya, mereka bisa menjadi jauh lebih baik.


Dunia nyata bukan buku tertutup. Dalam hampir semua kasus, tes buku tertutup merupakan indikasi seorang guru yang tidak tahu cara membuat tes yang baik.
Loren Pechtel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.