Ada banyak cara untuk melakukannya belajar program, ada banyak halaman web dengan tutorial, contoh kode, dll. Anda juga dapat menemukan berbagai macam buku tentang pemrograman, baik C dan banyak bahasa lainnya. Ada juga kursus pemrograman daring atau tatap muka di mana Anda dapat mulai memahami teknik-teknik ini untuk membuat perangkat lunak Anda sendiri dari awal hingga tingkat mahir.
Kemudian, di sisi lain, ada beberapa pelatih fisik dengan mikroprosesor atau mikrokontroler tertentu yang dapat Anda program untuk mempelajari seni ini hampir dengan bermain dan membuat proyek. Contoh yang sangat bagus adalah Raspberry Pi itu sendiri, papan Parallaz, atau papan nasional yang dapat Anda temukan di toko MKElectronics, atau papan terkenal. Arduino, Gores. Namun, jika Anda ingin lebih fokus pada pengembangan perangkat lunak, saya selalu menyarankan hal yang sama: membaca dan mengubah kode.
Dalam posting ini Saya tidak akan mencoba memberi Anda kelas pemrograman, karena ini adalah topik yang akan saya berikan untuk banyak artikel seperti penjelasan ini dasar-dasar pemrograman ke pemrograman paling canggih. Saya hanya ingin memberi Anda beberapa sumber atau cara untuk mulai memperkuat pengetahuan Anda. Dan saya yakinkan Anda bahwa mereka sangat efektif. Selain itu, Anda tahu bahwa Anda dapat memulai dengan distro GNU / Linux apa pun, dengan paket yang diperlukan untuk pemrograman seperti editor teks, atau IDE, juga GCC dan GDB, jika Anda ingin men-debug ... Atau juga menggunakan beberapa distribusi untuk programmer. Saya juga berpikir bahwa Anda sudah mengetahui atau harus mengetahui jenis alat yang Anda miliki.
Bagaimana memulainya
Anda dapat menemukannya potongan kode jutaan jaringan, yaitu fragmen kode yang dapat digunakan atau dimodifikasi untuk melakukan tugas yang sangat spesifik. Kode sumber ini adalah dasar untuk belajar, karena mereka adalah fungsi yang sangat dasar yang akan membantu Anda memahami cara kerja program dan Anda dapat memodifikasi beberapa parameter agar mereka melakukan sesuatu yang berbeda. Dan begitulah awalnya!
Saat Anda bergerak maju, Anda dapat melompat ke membaca kode sumber, yang jika dikomentari dengan baik akan sangat bergizi untuk pengetahuan Anda. Sayangnya tidak semua pengembang memiliki kebiasaan baik untuk mengomentari baris yang mereka tulis, dan dalam beberapa kasus, komentar tersebut langka atau membingungkan bahkan untuk orang yang berpengalaman. Tetapi untungnya kami memiliki sebagian besar komunitas yang berkomentar dengan cukup baik tentang proyek mereka.
Platform tempat kode perangkat lunak seperti GitHubMisalnya, meskipun masih banyak lagi, itu adalah sumber kebijaksanaan yang sangat penting. Faktanya, saya merekomendasikan bahwa setelah Anda memperoleh beberapa kefasihan dengan cuplikan atau program kecil Anda, buka jenis platform ini dan akses kode sumber proyek sederhana. Anda dapat menggunakan filter dan fungsi mesin pencari untuk menemukan kode tertentu dalam file bahasa pemrogramanSebagai C lalu pilih salah satu yang lebih sederhana.
Sedikit demi sedikit Anda bisa pergi meningkatkan kompleksitas program untuk meningkatkan pengetahuan Anda ke tingkat yang cukup tinggi. Jangan mulai dengan proyek dengan banyak baris, atau Anda akan frustrasi karena tidak memahami untuk apa kode dalam jumlah besar ini atau untuk apa kode itu. Ini dimulai dengan program kecil dari beberapa lusin baris, kemudian untuk beberapa dari 100 atau lebih dan seterusnya sampai sedikit demi sedikit Anda mencapai program yang lebih kompleks.
Selain itu, saya menyarankan Anda untuk mencari program yang Anda kenal baik dalam hal penggunaannya. Misalnya, bayangkan Anda menggunakan editor teks sumber terbuka tertentu atau file kalkulator. Mengetahui apa yang dilakukan program ini dalam praktiknya akan memudahkan Anda menghubungkan baris kode sumber yang akan Anda lihat dengan fungsi yang dimiliki program. Di sisi lain, jika Anda memilih kode yang tidak Anda ketahui, hanya dengan bantuan pengetahuan pemrograman dasar Anda dan komentar yang akan Anda temukan di file kode tidak akan cukup.
Misalnya, lihat contoh kedua yang ditampilkan dalam pencarian saya untuk program kalkulasi di bahasa C dari gambar berikut. Deskripsi tersebut menunjukkan bahwa ini adalah program baris perintah yang mengimplementasikan kalkulator sederhana. Ini adalah kode yang bagus untuk memulai, bukan hanya karena kesederhanaan kode, tetapi karena berbasis teks Anda tidak akan memiliki file kode yang terkait dengan GUI, dll.
Jika kita masuk ke proyek ini untuk melihat kodenya, pertama-tama kita akan menemukan file yang telah diunggah pengembang ke platform ini. Seperti detail lisensi LISENSI, file dengan informasi par excellence README, dll. Tapi perhatikan bahwa ada file header seperti helpers.h dan struct.h, keduanya penting, dan juga dua .c, yang memiliki kode sumber C sebenarnya untuk program ini:
Jika kita mengakses salah satu header atau .h, kita akan melihat bahwa ini adalah program yang sederhana, tanpa terlalu banyak baris. Anda akan menemukan jenis file ini berkali-kali, kecuali itu adalah program yang cukup sederhana yang tidak membutuhkannya, tetapi itu adalah file sertakan file di mana beberapa detail atau file tambahan disertakan yang harus diproses oleh compiler untuk membentuk biner akhir program.
Dalam file header Anda akan menemukan deklarasi kelas langsung, subrutin, variabel yang ditentukan, dan lain-lain. Terkadang ini .h Perpustakaan yang dapat Anda gunakan dari file kode utama (.c) yang membuat referensi langsung ke apa yang dideklarasikan di dalam header ini tanpa harus mengulang seluruh struktur setiap kali diperlukan:
Dalam kasus kode sumber itu sendiri, seperti file calc.c dari contoh kami, Anda akan menemukan lebih banyak baris. Sekitar 400 sesuatu, dan dalam kasus khusus ini mereka tidak berkomentar. Yang sangat menghambat pemahaman kode. Namun, menjadi program yang sederhana seperti kalkulator, Anda dapat membaca dan memodifikasinya tanpa masalah, karena ini akan intuitif:
Ingat membaca kode dan memodifikasinya. Itu adalah kunci untuk belajar membuat program dengan cara terbaik ...
Satu langkah lagi: kernel
Sekarang, ketika Anda telah memperoleh beberapa keterampilan pemrograman dasar dalam bahasa C, Anda dapat melangkah lebih jauh dan memasuki dunia sistem operasi dan arsitektur komputer. Untuk ini, Anda harus memiliki pengetahuan yang lebih tinggi tentang cara kerja komputer, tetapi sekali lagi proyek open source yang ada dapat banyak membantu kami.
Analisis kode sumber kernel ini dapat membuat kita memahami dengan cara yang lebih baik bagaimana dunia sistem operasi ini bekerja, dan itu juga akan menjadi kelas master untuk mendapatkan "gelar doktor" dalam pemrograman C, karena ini adalah kata-kata utama. Anda mungkin berpikir bahwa proyek terbaik untuk mempelajari ini adalah kernel Linux.
Sebaliknya, dimensi saat ini versi kernel Linux terbaru mereka terlalu rumit untuk bisa dipahami oleh kebanyakan manusia. Khusus untuk sejumlah besar kode untuk subsistem dan driver lain yang akan Anda temukan ditambahkan ke dalam kernel itu sendiri. Hal itu mungkin membuat Anda berpikir bahwa di kernel.org Anda dapat menemukan versi kernel yang lebih primitif, seperti kernel "historis" di mana ada beberapa "versi lama" seperti Linux 0.01, yang pertama di mana kode jauh lebih direduksi dan mudah dianalisis.
Dan meskipun kode C yang akan Anda temukan di kernel Linux sangat bagus, Saya tidak merekomendasikan kernel Linux karena biasanya kernel ini jarang dikomentari dalam banyak kesempatan. Saya tidak mengatakan bahwa pengembang memiliki kebijakan komentar yang buruk, tetapi dapat membingungkan bagi seseorang yang baru memulai. Jadi simpan kernel Linux dan LKML untuk nanti ...
Dan memang benar mereka ada beberapa buku yang sangat bagus dan kursus untuk mempelajari tentang kernel, modul, dan driver, tetapi mungkin bukan tempat terbaik untuk memulai. Beberapa contohnya adalah (beberapa di antaranya, seperti Greg's, Anda dapat mengunduh secara gratis, karena telah dirilis):
- Linux Kernel Development Edisi ke-3 oleh Robert Love.
- Memahami Virtual Memory Manager Linux oleh Mel Goman, meskipun yang terakhir hanya berfokus pada manajemen memori kernel.
- Linux Device Drivers Edisi ke-3 oleh Greg Kroah-Hartman, meskipun difokuskan pada kernel 2.6, tetapi memahami driver dan modul kernel adalah pekerjaan yang bagus.
- Sekilas tentang Kernel Linux adalah salah satu dari Greg Kroah-Hartman hebat yang memberi Anda visi yang jauh lebih global.
Anda juga dapat menemukan beberapa situs web yang sangat menarik, selain milik Anda sendiri informasi dan dokumentasi yang dapat Anda temukan di kernel.org, seperti:
- https://kernelnewbies.org/: adalah komunitas calon pengembang kernel di mana Anda dapat menemukan informasi yang bernilai emas.
- http://matt.might.net/articles/what-cs-majors-should-know/: situs web lain dengan informasi yang cukup bagus tentang komputer.
Proyek hebat lainnya yang masih dipelajari dan berfungsi sebagai pembelajaran UNIX ke-6, yang kodenya dianalisis dengan cara yang luar biasa dalam buku-buku seperti Lions 'Commentary on UNIX 6th Editionoleh John Lions. Saya serahkan kepada Anda sebagai ide alternatif lain, meskipun saya terus merekomendasikan hal-hal berikut yang akan saya komentari ...
Tapi saya pikir begitu sumber daya terbaik yang Anda miliki adalah mempelajari dan menganalisis kode sumber MINIX. Ini adalah sistem yang jauh lebih sederhana di mana Linux awalnya terinspirasi tetapi telah dirancang khusus untuk belajar dan belajar. Ditujukan untuk dipelajari oleh arsitek sistem operasi masa depan, umpan balik yang dimilikinya sangat luar biasa bagi mereka yang baru memulai.
Informasi lebih lanjut - MINIX3
Di sana Anda akan menemukan banyak informasi dan dokumentasi tentang proyek tersebut. Dan Anda dapat mengunduh sistem operasi itu sendiri, tetapi juga siapkan Wiki yang bagus di mana ada juga teks untuk pengembang. Tetapi, karena ini tentang mempelajari C dan menganalisis bagaimana sistem operasi dibentuk, saya merujuk Anda langsung untuk mengunduh versi pertama dari kode sumber MINIX 1:
Kode sumber - MINIX1
Misalnya, jika Anda pergi ke file utama main.cAnda akan melihat bahwa kode di sini sangat berbeda dari yang Anda temukan di Linux atau di program kalkulator yang saya gunakan sebagai contoh di awal posting ini. Dalam hal ini, Anda akan melihat bahwa jumlah komentar jauh lebih banyak:
Di sini, hampir setiap baris atau setiap fragmen ada Comentado. Membuat Anda membaca dan memahami. Saya tegaskan lagi, ini bukan hanya tentang membaca dan memahami, ini juga tentang memodifikasi. Buat modifikasi dan pengujian Anda sendiri, lalu kompilasi dan lihat hasilnya. Itu akan menjadi master pemrograman terbaik yang bisa Anda temukan. Saya yakinkan Anda, seperti yang selalu saya beri tahu kepada siswa saya, membaca dan memodifikasi kode adalah kelas komputer terbaik yang akan Anda miliki ...
Anda tidak hanya dapat menganalisis kernel sistem operasi, tetapi juga elemen tambahan lain yang membentuk sistem operasi lengkap dan juga perintah yang dapat Anda jalankan di shell. Ini adalah cara yang bagus untuk belajar dari "dalam" bagaimana perintah-perintah seperti ls, cat, cp, grep, echo, dll., Yang Anda jalankan setiap hari, juga dengan kode yang dikomentari dengan cukup baik bekerja ...
Kode sumber perintah - MINIX1
Terakhir, saya mengenal seorang pria yang telah membuat kernel yang dibuat dari awal. Namanya Luis dan Anda dapat menemukan proyeknya di alamat ini GitHub, contoh studi bagus lainnya yang akan saya rekomendasikan. Sistemnya disebut India, sangatlah sederhana dan sempurna untuk memperoleh pengetahuan dasar. Siapa tahu? Mungkin Anda akan menjadi orang berikutnya yang berani membuat kernel ...
Jika Anda ingin belajar assembler atau ASM, bahasa yang menarik bersama dengan C untuk memprogram pada tingkat rendah dan, terutama, untuk sistem operasi ..., ada juga proyek yang sangat menarik seperti kasus burung kolibri, sistem gratis yang ditulis dalam assembler. Berada di ASM, jauh lebih rumit, tetapi juga memberikan ide bagus tentang bagaimana mesin bekerja pada tingkat yang lebih dekat sehubungan dengan perangkat keras.
Tutorial: Cetak kode sumber untuk mempelajarinya di atas kertas
Jika Anda salah satu dari mereka yang tidak suka menghabiskan waktu berjam-jam di depan layar dan menatapnya, mungkin Anda lebih suka kertas. Saya akan menunjukkan kepada Anda tutorial kecil tentang bagaimana Anda dapat mencetak semua kode sumber yang telah kita bicarakan ini atau yang ingin Anda analisis. Jadi kamu bisa memiliki PDF dengan sintaks yang disorot siap untuk mencetak di printer Anda dan membaca di atas kertas, tempat Anda dapat membuat anotasi dan banyak lagi.
Untuk melakukan ini, hal pertama yang akan dilakukan instal paket yang diperlukan di distro kami:
sudo apt-get install texlive-latex-extra latex-xcolor textlive-latex-recommended
Setelah kami memiliki file ini, kami akan menggunakan LATEX Untuk mengubah kode sumber menjadi PDF, dan untuk ini kita harus menyimpan skrip ini, memberinya izin eksekusi dan menjalankannya di Bash:
#!/usr/bin/env bash tex_file=$(mktemp) ## Random text file name cat<<EOF >$tex_file ## Print the text file header \documentclass{article} \usepackage{listings} \usepackage[usenames,dvipsnames]{color} %% Allow color names \lstdefinestyle{customasm}{ belowcaptionskip=1\baselineskip, xleftmargin=\parindent, language=C++, %% Change this to whatever you write in breaklines=true, %% Wrap long lines basicstyle=\footnotesize\ttfamily, commentstyle=\itshape\color{Gray}, stringstyle=\color{Black}, keywordstyle=\bfseries\color{OliveGreen}, identifierstyle=\color{blue}, xleftmargin=-8em, } \usepackage[colorlinks=true,linkcolor=blue]{hyperref} \begin{document} \tableofcontents EOF find . -type f ! -regex ".*/\..*" ! -name ".*" ! -name "*~" ! -name 'src2pdf'| sed 's/^\..//' | ## Change ./foo/bar.src to foo/bar.src while read i; do ## Loop through each file name=${i//_/\\_} ## escape underscores echo "\newpage" >> $tex_file ## start each section on a new page echo "\section{$i}" >> $tex_file ## Create a section for each filename ## This command will include the file in the PDF echo "\lstinputlisting[style=customasm]{$i}" >>$tex_file done && echo "\end{document}" >> $tex_file && pdflatex $tex_file -output-directory . && pdflatex $tex_file -output-directory . ## This needs to be run twice ## for the TOC to be generated </pre><pre>
Setelah menyimpannya ke file dengan nama pdf.sh, Anda dapat memberikan izin dan menjalankannya dengan cara yang mudah:
chmod +x pdf.sh ./pdf.sh
Dan hasilnya akan menjadi PDF dengan teks yang disorot dalam warna untuk pembacaan yang lebih baik dari file kode sumber dari direktori saat ini. Nama dokumen PDF adalah semua.pdf. Sekarang akan siap untuk Anda taruh di antrian cetak untuk diletakkan di atas kertas.
Ngomong-ngomong, satu-satunya masalah adalah itu file kode sumber Direktori tempat Anda menjalankan skrip ini yang berisi spasi dalam namanya tidak akan berfungsi dengan skrip ini. Jadi jika ada Anda dapat mengubah nama mereka atau mengubah script untuk mendukung mereka ...
Jangan lupa tinggalkan komentar Anda, Saya akan dengan senang hati menjawab pertanyaan apa pun yang Anda miliki tentang hal itu, atau mendengarkan masukan apa pun yang Anda miliki untuk meningkatkan pos. Dan saya harap ini menjadi panduan untuk Anda mulai di dunia ini ...
Posting yang sangat bagus… !!!
Saya hanya punya masalah dengan skrip, itu memilih kesalahan pada baris 5.
Halo, selamat malam di Meksiko sini, alangkah baiknya Anda terus menulis melalui media ini dan, jika memungkinkan, terus mengisi dengan pengetahuan. Di sisi lain, terima kasih telah mendedikasikan waktu dan pengalaman Anda di mana kami tinggal separuh. Kasus saya yang saya miliki adalah saya meninggalkan karir saya karena masalah sekarang saya bekerja untuk menghidupi diri saya sendiri. Sedikit demi sedikit saya mengambil hal-hal dalam pengertian ini, terima kasih total.
Bagaimana cara mendapatkan semua informasi tentang pemrograman
Masalah pada baris 5 mungkin (karena saya belum mencobanya xd) adalah karena ditulis seperti ini:
kucing < $ tex_file ## Cetak header file teks
padahal seharusnya seperti ini:
cat <$ tex_file ## Cetak header file teks
Atau begitulah yang kubayangkan: U ...
Salam.
Oh sial kali ini dia melakukannya dengan benar>: v
Selamat atas artikelnya, saya menyukainya! Hentikan pemrograman lalu…. xD hampir tiga puluh tahun, tak terhitung kali saya mempertimbangkan untuk mengambilnya lagi dan karena kurangnya waktu dan terutama KEMALAHAN saya selalu menundanya. Saya akui bahwa dokumentasi yang ada saat ini sangat fantastis, sayangnya sebagian besar dalam bahasa Inggris, saya tahu bahwa sekarang semua orang ingin memahaminya, tetapi pengetahuan saya terbatas pada sedikit lebih dari dua lusin kata yang digunakan dalam pemrograman. Apakah ada tutorial tentang kernell dalam bahasa Spanyol?. Saya tidak berjanji untuk melanjutkan pemrograman, saya terlalu sering meninggalkannya untuk percaya saya bisa melakukannya sekarang, tetapi jika ada sesuatu yang tidak pernah hilang, itu adalah rasa ingin tahu. Terima kasih untuk artikelnya dan salam hangat.