Saya ingin menggali ke dalam C dan biasanya ketika saya ingin belajar bahasa baru, saya memikirkan tujuan proyek sederhana / dapat dicapai yang memiliki beberapa tujuan praktis (memanfaatkan api, mengotomatiskan tugas, dll ...)
Saya mengalami kesulitan untuk membuat satu untuk C terutama karena semua yang saya baca menunjukkan fakta bahwa penggunaan utama C saat ini adalah dalam sistem embedded dan proyek perangkat lunak yang lebih kompleks seperti sistem operasi.
Apakah ini mengarahkan saya pada fakta bahwa saya tidak perlu mempelajarinya atau bahwa saya hanya perlu sedikit lebih berbelit-belit dalam strategi belajar saya?
Referensi ke sumber belajar praktis? (tutorial / bagaimana itu menghasilkan hasil akhir yang memiliki beberapa tujuan / manfaat)
Jawaban:
Saya hanya akan merekomendasikan mengambil salinan Kernighan dan The C Programming Language (Edisi ke-2) Ritchie . Ini memiliki sejumlah latihan di akhir setiap bab yang dapat Anda lakukan, bersama dengan memberikan pengantar yang sangat baik untuk bahasa C. Itu tidak akan membuat Anda menguasai bahasa, tetapi Anda harus memiliki pemahaman yang cukup baik di akhir buku dan latihan untuk mungkin menemukan proyek sumber terbuka yang ditulis dalam C yang dapat Anda baca sumbernya dan mungkin berkontribusi untuk.
Jika Anda ingin melihat proyek dunia nyata aktual dengan kode C di dalamnya. Semakin sulit - banyak proyek menggunakan bahasa "tingkat yang lebih tinggi", tetapi C masih hidup dan menendang. Jika Anda ingin belajar C, jangan takut untuk menemukan kembali roda untuk mencapai pembelajaran. Itu bukan ide yang baik untuk menemukan kembali solusi pada jam, tapi itu baik-baik saja untuk melakukannya sebagai latihan akademis.
sumber
Anda harus benar-benar memahami alokasi memori. Anda terdengar seperti Anda telah menggunakan bahasa lain sebelumnya, tetapi kemungkinan besar bahasa-bahasa lain menyembunyikan detail manajemen memori yang mengerikan dari Anda. Dalam C, manajemen memori selalu eksplisit. Ada beberapa keuntungan untuk ini, tetapi itu berarti bahwa Anda harus berhati-hati untuk memperbaikinya atau semua Neraka akan terlepas.
Gunakan fasilitas debugging memori apa pun yang tersedia untuk platform yang Anda gunakan. Untuk Linux ada Pagar Listrik, di Mac OS X ada Guard Malloc. Juga ada Valgrind yang mendukung sejumlah sistem operasi.
Jika Anda gagal membebaskan memori yang harus dibebaskan, Anda akan mengalami kebocoran memori. Terus lakukan itu dan Anda akan kehabisan memori. Bahkan dengan backing store (apa yang oleh sebagian besar orang disebut memori virtual), Anda dapat menyebabkan sistem halaman berlebihan atau bahkan kehabisan ruang swap.
Jika Anda mengosongkan memori yang sudah dibebaskan, Anda akan merusak tumpukan dan kerusakan, tetapi mungkin tidak segera. Anda juga akan merusak tumpukan jika Anda menyerbu buffer. Alat debugging memori akan membantu semua ini.
Pengujian unit juga membantu.
sumber
Saya setuju dengan sebagian besar orang di sini bahwa bahasa saat ini ditentukan oleh tugas yang dihadapi. Ada saat ketika Anda memiliki pilihan terbatas dalam hal ini. Hari ini C terutama digunakan dalam domain pemrograman Embedded / System di mana ada kebutuhan untuk optimasi kode. Anda perlu menulis kode yang tepat untuk mendapatkan yang maksimal karena jika Anda mulai menggunakan abstraksi itu, maka hal-hal yang mendasarinya harus sangat kuat. Saya akan mengatakan Anda mencoba untuk berkeliling beberapa proyek GNU open source seperti Linux itu sendiri atau sesuatu yang membutuhkan pengembang C. Cobalah tangan Anda dalam proyek-proyek itu alih-alih menulis sesuatu dari awal di C. Ini mungkin cara yang lebih baik untuk menulis kode dan belajar bahasa.
sumber
Anda akan ingin melakukan sesuatu yang dapat bekerja dari baris perintah. Pemrograman GUI di C adalah rasa sakit utama di pantat, bahkan dengan kerangka kerja GUI yang baik .
Saran saya yang biasa untuk pengalaman belajar C yang praktis adalah daftar kontak atau aplikasi manajemen data sederhana lainnya. Itu akan mencakup sebagian besar bit penting (I / O, manajemen memori, pemrosesan teks, dll.), Dan Anda tidak perlu menggunakan apa pun di luar pustaka C standar untuk mencapainya. C tidak memiliki dukungan bawaan untuk grafik, jaringan, suara, atau yang lainnya 1 , jadi untuk terjun pertama Anda ke pemrograman C, yang terbaik adalah menghindari apa pun yang bergantung pada hal-hal semacam itu.
C dapat digunakan untuk pemrograman tujuan umum; Anda hanya perlu menurunkan ekspektasi Anda (bayangkan ini tahun 1983 dan Anda duduk di depan VT52 yang terpasang pada VAX 11/750, dan Anda akan berada dalam pola pikir yang benar).
Ingat saja, C tidak memiliki penjaga pisau, dan tidak akan mencegah Anda melakukan sesuatu yang bodoh. Definisi bahasa agak longgar di beberapa tempat, dan ada beberapa operasi yang tidak ilegal , tetapi tidak didefinisikan dengan baik.
1 - Revisi standar bahasa terbaru (2011) telah menambahkan dukungan threading bawaan
sumber
Saya merekomendasikan Project Euler . Saya menggunakannya untuk meningkatkan C ++ saya dan itu mengagumkan. Ini bagus karena setiap masalah adalah tugas kecil yang mungkin membutuhkan waktu kurang dari satu jam untuk diselesaikan (setidaknya yang pertama).
Anda memerlukan profiler dan buku tentang mengoptimalkan kode untuk kecepatan. Pastikan untuk tetap berpegang pada aturan 1 menit: Anda harus mendapatkan jawabannya dalam 1 menit.
sumber
Jika Anda SUDAH seorang programmer, dan HANYA perlu belajar C, dan tidak keberatan mempelajari versi bahasa yang lebih lama (intinya masih hampir sama), maka "C for Programmer" Leendert Ammeraal tidak dapat dikalahkan . Bekerja melaluinya, mulai dari akhir.
sumber