Panduan Pemula Pemrograman - Platform Pertukaran Cryptocurrency Digital

Panduan Dasar Pemrograman

Pendahuluan

Saat ini, pemrograman menjadi sebuah “keahlian” yang semakin penting: Sebagai desainer, memahami sedikit pemrograman dapat membantu Anda lebih memahami isi pekerjaan Anda; Sebagai pengusaha, peran pendiri teknologi akan membuat banyak pekerjaan Anda menjadi lebih mudah. Dan sebagai pemula yang baru ingin masuk, menghadapi banyak informasi di depan mata, mungkin Anda sama sekali tidak tahu harus mulai dari mana; Setelah melewati materi dasar yang mudah, belajar menjadi semakin sulit, dan kurva belajar yang curam membuat Anda merasa frustrasi; Anda tahu cara mencetak dan menampilkan teks di layar, tetapi Anda tidak tahu kapan saatnya memulai sebuah proyek yang benar-benar berguna; Anda tidak yakin apa lagi yang belum Anda ketahui, bahkan Anda tidak tahu langkah selanjutnya harus belajar apa.

Isi artikel ini tidak hanya akan memberikan beberapa saran arah, tetapi juga akan menyertakan panduan dasar yang berfokus pada inti pemrograman. Tentu saja, jalur langkah demi langkah tidak realistis, dan setiap orang memiliki karakteristiknya sendiri, jadi panduan masuk pemrograman ini lebih bertujuan untuk memicu pemikiran pembaca, akhirnya membantu Anda membentuk jalur belajar yang sesuai dengan diri sendiri.

Namun, perlu diingat: Artikel ini ditulis untuk mereka yang benar-benar ingin belajar pemrograman—mereka yang menahan semangat keras, pasti ingin menghasilkan sesuatu yang nyata, tidak akan berhenti belajar sampai berhasil; Bukan untuk mereka yang sekadar “dengar-dengar pemrograman itu menyenangkan”, menurut saya, orang seperti ini tidak akan pernah masuk ke dunia pemrograman, apalagi mampu membuat sesuatu yang layak.

Meskipun nada seluruh artikel ini adalah “pendapat kuat, keyakinan lemah” (Strong Opinions, Weakly Held), pembaca tetap harus skeptis terhadap semua hal yang kami tulis, sama seperti skeptis terhadap segala sesuatu di sekitar. Jika ada pertanyaan terkait, silakan diskusikan secara terbuka.

Penyesuaian Mental

Tentukan Tujuan

Sebelum belajar pemrograman, pikirkanlah tujuan Anda. Ketika Anda memiliki tujuan akhir, jalannya akan menjadi lebih jelas. Jadi, Anda ingin menulis apa? Situs web? Game? Aplikasi iOS atau Android? Atau Anda ingin otomatisasi menyelesaikan tugas-tugas membosankan agar punya lebih banyak waktu melihat pemandangan di luar jendela? Mungkin Anda hanya ingin meningkatkan daya saing pekerjaan dan mendapatkan pekerjaan yang baik. Semua ini adalah tujuan yang berharga, dan semuanya merupakan bagian dari motivasi belajar pemrograman Anda. Tanpa motivasi, orang tidak akan mampu berjalan jauh dalam perjalanan belajar yang panjang dan terkadang membosankan ini.

Video ini mungkin bisa memberi inspirasi: “Hal-hal yang Tidak Akan Diajarkan di Kebanyakan Sekolah”

Jangan Terburu-buru

Pemrograman yang buruk itu mudah. Bahkan Dummies bisa mempelajarinya dalam 21 hari. Pemrograman yang baik membutuhkan pemikiran, tetapi semua orang bisa melakukannya dan semua orang bisa merasakan kepuasan ekstrem yang menyertainya. 糟糕的编程很容易。即使是傻⽠也能在21天内学会它。好的编程需要思考,但每个⼈都能做到,每个⼈都能体验到它带来的极度满⾜感。

Di toko buku offline maupun online, banyak buku cepat belajar seperti “21 Hari Menguasai X”, semuanya menjanjikan dalam waktu singkat Anda akan menguasai teknologi terkait. Matthias Felleisen dalam bukunya How to Design Programs secara tegas menunjukkan tren “cepat belajar” ini dan menyindirnya.

Jalan pintas atau “silver bullet” tidak ada. Seorang bijak pernah berkata, menguasai sesuatu membutuhkan 10 tahun atau 10.000 jam, seperti dalam bahasa Mandarin “sepuluh tahun mengasah pedang”, jadi jangan terburu-buru, usaha yang sia-sia tidak akan pernah sia-sia.

Bangun Minat

Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.

⼤多数优秀的程序员做编程不是因为他们期望得到报酬或得到公众的崇拜,⽽是因为编程很有趣。

– Linus Torvalds

Berselera dalam pemrograman, karena memang menyenangkan. Minat adalah sumber energi yang tak pernah habis, pertahankan rasa penuh minat ini agar bisa menginvestasikannya ke dalam 10 tahun/10000 jam waktu pemrograman Anda. Pemrograman itu menyenangkan, itu adalah kegembiraan eksplorasi. Itu adalah kegembiraan penciptaan. Melihat karya yang Anda buat sendiri muncul di layar sangat menyenangkan. Orang-orang terkesan dengan kode Anda sangat menyenangkan. Orang-orang memuji produk Anda di publik, tetangga menggunakan produk Anda, dan media membahas produk Anda—semuanya menyenangkan. Pemrograman harus sangat menyenangkan, jika tidak, temukan apa yang membuat pemrograman menjadi tidak menyenangkan, lalu perbaiki.

Mulai Belajar

Kisah yang Membuat Sadar

Saat saya masih SMP, saya mulai belajar pemrograman. Sayangnya, saya membaca beberapa buku sampah yang umum saat itu, seperti “21 Hari Menguasai C++”. Saat itu, membaca buku tersebut tidak banyak menghambat, bahkan saya bisa menulis beberapa program kecil. Tapi ketika terjadi kesalahan pada perangkat lunak, saya tidak tahu kenapa, masalah pemrograman yang cukup besar tidak bisa saya atasi, dan hal-hal yang tidak bisa dilakukan oleh pustaka yang ada hanya bisa saya serahkan tangan. Meskipun saya terus menulis kode setiap hari, saya menyadari kemampuan pemrograman saya berkembang sangat lambat, dan saya hanya memiliki pemahaman yang sangat terbatas tentang konsep “iterasi” dan “rekursi”, bisa dikatakan saya hanya menggunakan komputer sebagai kalkulator.

Setelah masuk universitas, saya mengambil jurusan fisika. Pada awalnya, saya terus menghafal rumus fisika tanpa memahami bagaimana mereka diperoleh, apa hubungan antar rumus, atau maknanya. Saya terus belajar bagaimana menghitung dan menyelesaikan masalah fisika umum, tetapi saya tidak tahu “mengapa” di balik “bagaimana”.

Ketika saya mencoba membuat game komputer berbasis fisika, saya kembali menghadapi kesulitan sebelumnya: tidak mampu menyelesaikan masalah baru, ketakutan terhadap masalah baru terus bertambah, saya mulai menghindar, tidak benar-benar memahami, melainkan berharap bisa menyalin dan menempel kode dari Google untuk menyelesaikan masalah. Beruntung, satu pelajaran di semester kedua benar-benar mengubah cara belajar saya. Itu adalah kali pertama saya merasakan “mata terbuka lebar”, saya menyadari bahwa saya hanya memiliki pemahaman yang sangat sedikit tentang beberapa disiplin ilmu, termasuk fisika yang saya pelajari dan ilmu komputer yang saya pelajari secara sampingan.

Tentang pelajaran itu: Saat itu kami baru saja mempelajari listrik dan relativitas khusus, dosen menulis kedua topik tersebut di papan tulis dan menggambar garis yang menghubungkan keduanya. “Misalnya kita punya elektron yang bergerak di sepanjang kawat konduktor dengan kecepatan relativistik…”, awalnya dosen hanya menulis rumus umum listrik dan relativitas yang kita kenal, tetapi setelah beberapa derivasi aljabar di papan tulis, rumus medan magnet muncul secara ajaib. Meskipun saya sudah tahu rumus ini beberapa tahun lalu, saat itu saya sama sekali tidak menyadari hubungan mendalam antar fenomena tersebut. Perbedaan antara magnet dan listrik hanyalah soal “sudut pandang” pengamatan, saya tiba-tiba tersadar, mulai saat itu saya tidak lagi hanya fokus pada “bagaimana” melakukan (How), tetapi mulai bertanya “mengapa” (why), kembali ke bagian dasar yang paling fundamental, belajar pengetahuan yang seharusnya saya pelajari dengan baik sebelumnya. Proses kembali ini menyakitkan, semoga Anda semua sadar dari sini, jangan pernah melakukan hal bodoh seperti ini.

Refleksi Setelah Sadar

Gambar ini diambil dari karya Douglas Hofstadter, Gödel, Escher, Bach. Setiap huruf di dalamnya terdiri dari huruf-huruf kecil lainnya. Pada tingkat tertinggi, kita melihat “MU”, huruf M terdiri dari tiga konsep HOLISM (holisme), dan U terdiri dari REDUCTIONISM (reduksionisme), masing-masing mengandung yang lain secara penuh, dan sebaliknya. Pada tingkat terendah, Anda akan menemukan huruf terkecil yang juga terdiri dari “MU” yang berulang.

Setiap tingkat abstraksi menyimpan informasi, jika Anda hanya menggunakan pendekatan holistik secara naif di tingkat tertinggi, atau menggunakan pendekatan reduksionis di tingkat terendah, yang Anda dapatkan hanyalah “MU” (di beberapa daerah, mu berarti tidak ada apa-apa). Masalahnya, bagaimana mendapatkan sebanyak mungkin informasi dari setiap tingkat? Atau dengan kata lain, bagaimana mempelajari bidang kompleks (seperti pemrograman) yang mengandung banyak pengetahuan?

Dalam proses pendidikan dan belajar, ada satu masalah kunci umum: Pemula sering terlalu fokus pada holisme dan mengabaikan dasar-dasar. Contohnya, siswa sangat ingin membuat robot, tetapi mereka tidak memahami model fisika di baliknya.

→ Memahami model fisika → Memahami dasar teknik elektron → Memahami sistem servo dan sensor → Menggerakkan robot

Proses ini sama sekali tidak menarik.

Ada dua jebakan besar bagi pemula:

  1. Jika pemula hanya berinteraksi dengan “mesin dan komponen” yang sudah dibangun (tanpa memahami dan memikirkan prinsip pembuatannya), ini akan sangat membatasi kemampuan mereka untuk membangun hal-hal tersebut di masa depan, dan menyulitkan diagnosis masalah.
  2. Jebakan kedua tidak sebesar yang pertama: Pendekatan “holistik” yang naif terkadang tampak sangat efektif, ini memiliki sifat tersembunyi dan menyesatkan, tetapi setelah satu atau dua tahun (atau mungkin tidak sampai segitu), ketika Anda telah berjalan jauh di jalur belajar, kembali “menguatkan dasar” akan menjadi hambatan psikologis besar, Anda harus melepaskan pandangan sempit sebelumnya, bersabar dan maju perlahan-lahan, ini jauh lebih sulit daripada belajar dasar saat awal.

Tapi, jangan berlebihan juga, jika terjebak dalam lubang besar reduksionisme, saat belajar pemula langsung mencoba membuat teori besar, ini berisiko hanya menjadi teori kosong, membosankan dan membuat Anda kehilangan motivasi. Situasi ini sering terjadi pada mahasiswa jurusan komputer.

Untuk pemahaman yang lebih baik, belajar pemrograman bisa diibaratkan seperti belajar memasak: Anda membeli buku resep untuk memasak hidangan yang enak, jika hanya ingin memasak untuk keluarga, itu ide bagus, Anda mengikuti langkah-langkah di resep dan bisa membuat hidangan yang lumayan, tetapi jika Anda ingin tampil di depan teman-teman dan membuat hidangan yang luar biasa, bahkan menjadi “koki besar”, Anda harus memahami ide di balik resep tersebut, memahami teorinya, bukan hanya praktik secara membabi buta. Tapi jika setiap hari pekerjaan Anda hanya membaca buku teori tebal tanpa praktik, Anda hanya akan menjadi koki yang buruk, bahkan tidak akan pernah menjadi koki, karena setelah beberapa hari membaca buku, Anda menyerah karena bosan. Singkatnya, pemrograman adalah penghubung antara teori dan praktik, bidang yang menggabungkan ilmu komputer dan teknologi aplikasi komputer. Metode belajar pemrograman yang benar adalah: melalui eksplorasi top-down dan praktik proyek, mendapatkan intuisi dan motivasi pemrograman; dari bawah ke atas, membangun fondasi dan memperkuat pemahaman tentang konsep pemrograman.

Sebagai pemula, fokuslah pada pendekatan atas, dan gunakan pendekatan bawah sebagai pelengkap.

Dasar-dasar Perancangan Program

“Bahasa apa yang harus dipelajari untuk belajar pemrograman?” Ini sering menjadi pertanyaan pertama dari pemula, tetapi ini adalah pertanyaan yang salah. Pertanyaan utama yang harus dipikirkan adalah: “Apa saja yang menjadi dasar pembelajaran pemrograman?”

Tiga bagian kunci di dasar piramida pengetahuan pemrograman:

  1. Pemikiran algoritma: misalnya, bagaimana menemukan angka terbesar dari sekumpulan angka? Pertama, Anda harus memiliki variabel maxSoFar, lalu untuk setiap angka…
  2. Sintaks: bagaimana menggunakan bahasa pemrograman tertentu untuk mengekspresikan algoritma ini agar komputer dapat memahaminya.
  3. Dasar sistem: mengapa saat menggunakan while(1) thread tidak pernah berhenti? Mengapa fungsi int *foo() { int x = 0; return &x; } tidak bisa dilakukan?

Bagi pemula di tahap awal, memilih bahasa C sebagai bahasa pertama akan sangat sulit dan membosankan, karena mereka harus belajar ketiga bagian ini sekaligus, dan membutuhkan banyak waktu sebelum bisa membuat sesuatu.

Oleh karena itu, untuk meminimalkan bagian “sintaks” dan “dasar sistem”, disarankan menggunakan Python sebagai bahasa pertama, meskipun Python sangat ramah untuk pemula, ini tidak berarti hanya main-main, dalam proyek besar Anda juga akan melihat kekuatan dan fleksibilitasnya. Setelah familiar dengan Python, belajar bahasa C adalah pilihan yang bagus: belajar C akan membantu Anda berpikir dari sudut pandang yang lebih dekat ke level bawah, dan di kemudian hari membantu memahami beberapa prinsip tingkat sistem operasi.

Berikut adalah panduan pengantar tahap awal yang dapat dijadikan referensi. Setelah menyelesaikannya, Anda akan membangun kerangka kerja keseluruhan dalam pikiran, membantu eksplorasi dari atas ke bawah. Materi di bawah ini tidak berurutan, silakan pilih salah satu, jika terhambat, pertimbangkan untuk beralih ke materi lain.

MIT 6.00.1x (Pengantar Ilmu Komputer dan Pemrograman Python dari MIT). Meskipun pengajaran utamanya menggunakan Python, sebagai kursus pengantar yang bagus, menekankan konsep dan paradigma penting dalam bidang ilmu komputer, bukan hanya mengajarkan bahasa tertentu. Jika Anda bukan mahasiswa jurusan komputer, ini bisa membuka wawasan saat belajar mandiri; Isi kursus: konsep komputasi, pemrograman Python, struktur data dan algoritma sederhana, pengujian dan debugging.

Harvard CS50x (Ilmu Komputer dari Harvard). Juga merupakan kursus pengantar, tetapi melengkapi kursus pengantar MIT. Bahasa pengajaran meliputi C, PHP, JavaScript + SQL, HTML + CSS, cakupan dan kedalaman materi sangat masuk akal, juga bisa memahami hasil teknologi terbaru, sangat memotivasi minat belajar komputer. Tugas pendukung: membaca Coding.

Setelah menyelesaikan tahap pengantar ini, pemula akan mengumpulkan kode dan memiliki pemahaman dasar tentang pemrograman. Saatnya belajar teknologi tertentu, seperti pengembangan web, pengembangan Android, pengembangan iOS, dan lain-lain. Cobalah buat sesuatu yang sesederhana mungkin, berikan umpan balik positif untuk diri sendiri, dan isi motivasi Anda. Tapi ingat, jangan terlalu dalam, karena teknologi ini memiliki banyak detail, nanti ada waktu untuk belajar; juga jangan terlalu dalam ke kerangka kerja dan bahasa tertentu, saat ini fokuslah pada dasar-dasar ilmu komputer yang umum, jangan coba-coba mencontek jalan pintas langsung belajar hal yang Anda inginkan, karena itu pasti gagal.

Lalu, apa yang harus dilakukan di tahap masuk? Saat ini, yang perlu Anda lakukan adalah merenungkan kembali program yang pernah Anda buat, pikirkan mengapa (Why) dirancang seperti itu, dan bagaimana (How) menulis program yang lebih baik. Cobalah memahami esensi pemrograman: menggunakan komputer untuk menyelesaikan masalah.

Hipotesis:

X = waktu untuk memikirkan solusi, yaitu “menyelesaikan masalah” bagian

Y = waktu untuk mengimplementasikan kode, yaitu “menggunakan komputer” bagian

Kemampuan pemrograman = F(X, Y) (X>Y)

Untuk meningkatkan kemampuan pemrograman, Anda harus mengoptimalkan X, Y, dan fungsi F(X, Y). Tidak banyak buku yang secara bersamaan fokus pada ketiga aspek ini, tetapi ada satu buku yang melakukannya—Structure and Interpretation of Computer Programs (SICP). Buku ini menunjukkan ketiga arah tersebut. Sebelum membaca SICP, Anda mungkin bisa menyelesaikan masalah sederhana dengan memanggil beberapa fungsi. Tetapi setelah membaca SICP, Anda akan belajar bagaimana mengabstraksi dan memecah masalah, sehingga mampu menangani masalah yang lebih kompleks dan besar. Ini adalah loncatan besar dalam kemampuan pemrograman, secara esensial mengubah cara Anda berpikir dan menyelesaikan masalah dengan kode. Selain itu, bahasa pengantar SICP adalah Scheme, yang memungkinkan Anda memahami pemrograman fungsional secara awal. Yang lebih penting lagi, sintaksnya sangat sederhana, Anda bisa belajar dengan cepat, sehingga bisa lebih banyak waktu untuk mempelajari filosofi pemrograman dalam buku dan cara menyelesaikan masalah yang kompleks.

Peter Norvig pernah menulis ulasan yang sangat menarik tentang buku SICP, di antaranya:

To use an analogy, if SICP were about automobiles, it would be for the person who wants to know how cars work, how they are built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century. The people who hate SICP are the ones who just want to know how to drive their car on the highway, just like everyone else.

Jika Anda termasuk yang pertama, membaca SICP akan menjadi titik kunci penghubung antara tahap pengenalan dan tahap masuk.

Meskipun SICP adalah buku “pengantar”, tetapi bagi pemula tetap ada tantangan, berikut beberapa sumber pendukung yang sangat berguna:

  1. Udacity CS212 Design of Computer Program: diajarkan oleh Peter Norvig dari Google, menggunakan Python, tingkat kesulitannya cukup tinggi.
  2. How to Design Programs, Second Edition: lebih rendah dari SICP, isinya bertahap dan ramah pemula, cocok jika merasa sulit menyelesaikan SICP.
  3. Video kuliah SICP dari UC Berkeley dan rekaman pelatihan penulis SICP untuk karyawan Hewlett-Packard (berbahasa Mandarin).
  4. Composing Programs: pengantar pemrograman yang mengadopsi filosofi SICP tetapi menggunakan Python sebagai bahasa pengantar (termasuk beberapa proyek kecil).
  5. SICP Problem Sets: untuk latihan soal di buku, sebagai pemula harus berusaha menyelesaikan.

Setelah menyelesaikan bagian ini, Anda akan membangun model desain program sendiri, pikiran tidak lagi berantakan, dan Anda akan menyadari bahwa menghafal pustaka dan sintaks tidak akan mengajarkan Anda cara menyelesaikan masalah pemrograman. Selanjutnya, Anda akan memahami apa yang harus dipelajari, dan ini akan membuat Anda lebih jelas dalam langkah berikutnya. Saat itulah saat yang tepat untuk mulai praktik proyek, sebagai motivasi tambahan. Untuk praktik proyek: bagi pemula, berpartisipasi dalam proyek open source masih terlalu dini, mulailah dengan proyek sederhana, seperti membangun dan memelihara situs web, atau membuat game kecil dan terus mengembangkannya. Jika ide Anda tidak jelas, ikuti 炼⽠研究所 atau pilih dari Mega Project List yang Anda sukai.

Jika merasa SICP terlalu sulit, jangan paksakan diri, lewati saja dan lanjutkan jalur konvensional: mulai baca The Elements of Computing Systems, buku ini akan mengajarkan Anda membangun komputer dari gerbang NAND paling dasar hingga berjalan di komputer Anda. Isi lengkapnya tidak perlu dijelaskan di sini, buku ini akan menjadi bagian dari seluruh tahap masuk Anda, dan tujuan Anda adalah menyelesaikan semua proyek di buku ini (termasuk sebuah compiler dan sistem operasi sederhana).

Agar benar-benar menguasai buku ini, membangun fondasi yang kokoh, dan untuk pengembangan di masa depan, Anda perlu melakukan beberapa hal (perhatikan: urutan di bawah ini tidak mutlak):

Dasar Sistem Komputer

Setelah fondasi desain program, jika ingin memahami ilmu komputer secara lebih mendalam, coba baca buku ini: Computer Systems: A Programmer’s Perspective, 3/E (Memahami Sistem Komputer secara Mendalam). Nama terjemahan buku ini sering diperdebatkan, sebenarnya tidak benar-benar mendalam, ini hanyalah buku teks pengantar dari CMU “Introduction to Computer Systems”. Jurusan ilmu komputer di CMU lebih condong ke perangkat lunak, buku ini melihat sistem komputer dari sudut pandang programmer, berfokus pada “bagaimana program dieksekusi di komputer”, menjelaskan berbagai detail implementasi sistem komputer secara lengkap.

Jika merasa membosankan membaca buku ini, bisa mengikuti MOOC di Coursera: The Hardware/Software Interface, yang merupakan subset dari CSAPP, tetapi bagian eksperimen paling klasik sudah diadaptasi. Selain itu, bisa juga membaca The C Programming Language untuk mengulas kembali pengetahuan tentang C.

Setelah menyelesaikan buku ini, Anda akan memiliki dasar sistem yang kokoh, dan sudah memenuhi syarat untuk belajar sistem operasi, compiler, jaringan komputer, dan lain-lain. Saat belajar sistem tingkat lanjut, membaca bagian terkait di buku ini dan mengimplementasikan contoh-contohnya akan sangat membantu memahami teori secara lebih mendalam, mampu menulis kode yang lengkap dari desain tingkat atas hingga implementasi tingkat rendah, dan mampu memvisualisasikan aliran data di jaringan, memori, cache, dan CPU.

Dasar Struktur Data dan Algoritma

Sekarang, banyak orang berpikir bahwa inti dari pemrograman (terutama pengembangan web) hanyalah menggunakan kode orang lain, mampu mengekspresikan ide secara jelas dan ringkas lebih penting daripada menguasai matematika dan algoritma yang keras. Sorting, fungsi pencarian, struktur data—semuanya sudah built-in, tidak pernah digunakan dalam pekerjaan, jadi apa gunanya belajar algoritma? Pemikiran “menggunakan algoritma dan struktur data hanya untuk hal kecil” ini sangat tidak tepat. Tanpa dasar teori yang kokoh, pasti akan menemui hambatan.

Struktur data dan algoritma adalah pasangan yang tak terpisahkan. Pada tahap awal, fokus utama adalah: masalah ini bisa diselesaikan lebih cepat dengan algoritma dan struktur data apa? Ini menuntut Anda menguasai struktur data dan algoritma yang umum, tidak harus menulis kode, menulis di kertas dan memvisualisasikan prosesnya jauh lebih cepat. Untuk struktur data dan algoritma yang belum Anda pahami, cari tahu apa kegunaannya, dalam skenario apa digunakan.

Sumber belajar yang direkomendasikan:

  1. Introduction to Algorithms: ada yang bilang jangan anggap buku ini sebagai buku pengantar, memang bukan buku pemula, meskipun judulnya Introduction to Algorithms, ini karena penulis tidak ingin membedakan buku ini dari yang lain. Tapi, bisa juga dipelajari sebagai buku pengantar: saat membaca pertama kali, lewati soal latihan dan pembuktian, jika merasa kurang percaya diri, bisa baca Data Structures and Algorithm Analysis terlebih dahulu.
  2. Algorithms: Design and Analysis [Part 1] & [Part 2]: kursus algoritma dari Stanford, tidak terbatas bahasa, dua bagian ini sudah cukup untuk dasar algoritma; jika bahasa Inggris kurang lancar, bisa belajar dari Introduction to Algorithms dari MIT.
  3. Pada tahap awal, juga penting membangun kemampuan menyelesaikan masalah skala kecil dengan algoritma umum, bisa baca buku seperti Programming Pearls dan The Practice of Programming yang terkait.

Hal-hal dasar lainnya

Pada tahap pengenalan pemrograman, beberapa hal ini sering diabaikan:

  1. Belajar bertanya: dalam belajar pasti menemui masalah, harus belajar menggunakan mesin pencari dengan benar. Jika tidak bisa menyelesaikan masalah dengan pencarian, tanyakan di Stack Overflow atau Zhihu, sebelum bertanya, baca artikel ini: Effective Questioning Techniques.
  2. Jangan menjadi “serigala” yang sembrono: coba berinteraksi dengan orang lain di CoCode, buat situs pribadi sederhana, catat ide di blog, subscribe ke blog pemrograman favorit seperti Joel on Software, Peter Norvig, Coding Horror.
  3. Belajar bahasa Inggris dengan baik: bahasa Inggris adalah alat utama untuk mendapatkan sumber belajar berkualitas tinggi, tetapi di tahap awal, buku terjemahan yang Anda baca tidak terlalu banyak kehilangan informasi, sesuaikan dengan kondisi Anda.

Kesimpulan

Jangan takut dengan semua ini. Masuk ke dunia pemrograman bukanlah proyek kecil yang selesai dalam beberapa minggu. Selama proses, Anda akan menghadapi banyak tantangan. Saat menghadapi hambatan, coba gunakan teknik “Feynman”: pecah masalah menjadi bagian kecil, pelajari satu per satu, lalu uji pemahaman dengan menjelaskannya kepada orang lain. Tentu, masih ada masalah yang tidak bisa Anda selesaikan, jangan paksakan diri—sering kali, ketika Anda kembali dan melihat masalah itu lagi, semuanya akan menjadi jelas.

Selain itu, jangan terbatas pada materi yang disebutkan di atas, ada buku lain yang layak dibaca berulang kali di tahap masuk dan pengembangan selanjutnya. Di Stack Overflow, ada daftar buku wajib yang dipilih oleh komunitas programmer, dua buku teratas adalah:

Code Complete: cocok untuk programmer berpengalaman maupun pemula yang ingin mengisi kekurangan pengetahuan. Untuk pemula, fokuslah pada bab tentang variabel, pengujian, dan kepribadian.

The Pragmatic Programmer: disebut juga “buku kecil tentang kode”, membahas dari prinsip DRY dan KISS, hingga menjadi programmer yang baik.

Penulis buku ini, Dave, menulis:

You’re a Pragmatic Programmer. You aren’t wedded to any particular technology, but you have a broad enough background in the science, and your experience with practical projects allows you to choose good solutions in particular situations. Theory and practice combine to make you strong. You adjust your approach to suit the current circumstances and environment. And you do this continuously as the work progresses. Pragmatic Programmers get the job done, and do it well.

Kalimat ini dan The Pragmatic Bookshelf yang didirikannya telah mempengaruhi saya secara positif, dan saya juga mengadopsi filosofi ini dalam panduan ini, berharap Anda juga menjadi Pragmatic Programmer sejati.

Penutup

Jika Anda berhasil menyelesaikan semua tugas di atas, selamat! Anda telah benar-benar masuk ke dunia pemrograman. Ini berarti, dalam pembelajaran yang lebih mendalam nanti, Anda tidak akan takut lagi belajar bahasa baru, tidak takut dengan API yang kompleks, bahkan merasa mudah. Tentu saja, untuk menguasai hal-hal ini, Anda tetap membutuhkan latihan besar, punggung akan pegal, berjalan akan terasa berat, dan suara tidak akan mampu naik ke lantai 5. Tapi saya jamin, secara mental Anda akan mengalami perubahan besar, mendapatkan kepercayaan diri yang luar biasa, dan pandangan orang lain terhadap Anda akan menjadi sangat berbeda. Meskipun baru saja menyelesaikan tahap masuk, Anda sudah menjadi high-flyer dalam dunia spiritual programmer. Tidak, saya salah, bahkan high-flyer pun tidak akan memiliki kekuatan mental yang kuat, mereka juga akan meragukan diri sendiri, merasa bahwa tanpa uang, mereka bukan apa-apa. Tapi intinya, jika Anda mengikuti panduan ini dan membaca buku dengan baik, Anda akan merasakan sensasi “puncak tertinggi”.

()**$PIXEL **

Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • Sematkan

Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)