Jika ini adalah tempat yang salah untuk mengajukan pertanyaan ini, beri tahu saya.
Saya seorang programmer Python berdasarkan pekerjaan. Saya ingin sekali belajar C. Memang, saya telah mencoba berkali-kali, tetapi saya selalu berkecil hati. Dengan Python, Anda menulis beberapa baris dan program ini menghasilkan keajaiban. Di C, saya sepertinya tidak bisa melakukan sesuatu yang bermanfaat.
Tampaknya sangat rumit bahkan untuk terhubung ke Internet.
Apakah Anda memiliki saran tentang apa yang dapat saya lakukan untuk belajar C? Apakah ada situs web yang bagus? Ada proyek keren?
Terima kasih
Jawaban:
Jangan berkecil hati.
Python adalah bahasa pemrograman tingkat tinggi. Dibandingkan dengan C, itu dapat menghasilkan keajaiban dalam sejumlah kecil kode. Jangan mulai dengan mencoba meniru hasil Python di C - Anda akan segera berkecil hati. Pemrograman dalam huruf C membutuhkan gaya berpikir dan pemahaman yang berbeda karena saat Anda berinteraksi dengan komputer pada tingkat yang lebih intim. Inilah titik awal yang baik untuk belajar C:
Buku
Materi Daring
sumber
Jika Anda ingin belajar C, jangan mulai dengan menghubungkan ke Internet. Anda dapat melakukannya dalam bahasa lain. Bukan itu yang paling penting dalam C.
Sebagai gantinya, lihatlah pointer, array, referensi, struct dalam C Tutorial ini . Ini akan membantu Anda memahami manajemen memori dan banyak fitur yang "membawa Anda lebih dekat ke mesin."
Jika Anda dapat mempelajari dan memahami materi ini, maka lihatlah ekspansi ke proyek yang mungkin. Konsep-konsep ini mendasar untuk pemrograman C profesional nyata.
Ini Pointer Tutorial terlihat membantu juga.
sumber
C_Tutorial
link rusak ...Saya t ini sangat rumit untuk terhubung ke internet! Pikirkan tentang itu:
Komputer Anda mungkin memiliki beberapa cara menghubungkan - WLAN, Bluetooth, Ethernet, dll. Masing-masing memiliki pengaturan sendiri, yang perlu Anda atur. Anda beruntung sudah ada standar dan driver untuk ini ... menggunakan ini bisa menjadi jauh lebih sulit daripada yang sudah ada sekarang.
Alamat IP dapat berupa IPv4 atau IPv6, dan Anda harus dapat menangani keduanya.
Mungkin ada atau tidak ada proxy yang dikonfigurasi untuk sistem.
Anda harus mendukung FTP, HTTP, atau protokol lain.
Anda mungkin perlu menggunakan dial-up, jadi Anda harus menentukan buku telepon dengan kata sandi dan nomor telepon, jika Anda belum terhubung. Ditto dengan nama pengguna / kata sandi WLAN.
Anda mungkin perlu bekerja dengan cookie.
Sistem mungkin men-cache beberapa data, jadi apakah Anda ingin menggunakan cache atau tidak?
dan daftarnya terus berlanjut.
Jadi fakta bahwa itu mudah dilakukan dengan Python berarti bahwa banyak dari ini tersembunyi dari Anda (atau sulit diatur), sehingga Anda menukar kesederhanaan untuk mendapatkan kekuasaan. Pustaka C adalah sebaliknya: ia memiliki semua kekuatan yang Anda butuhkan (Anda dapat dengan mudah melakukan panggilan sistem), tetapi tidak memiliki default apa pun (atau, pada kenyataannya, fitur apa pun untuk menghubungkan ke internet).
Alih-alih menganggap C sebagai sesuatu yang membosankan, anggap itu sebagai yang kuat. Tetapi bagaimanapun juga, jangan mencoba untuk terhubung ke internet dengan itu - itu adalah hal yang sangat sulit untuk dilakukan. Alih-alih, mulailah belajar bagaimana menggunakan perpustakaan untuk tugas-tugas yang lebih mendasar (mis. File I / O), pelajari tentang bagaimana pointer dan array bekerja, dan ketika Anda mempelajari semua itu, maka cobalah menangani proyek-proyek besar. Anda juga akan lebih menghargai Python. :)
Edit :
Saya pribadi menyarankan bahwa, jika Anda memiliki waktu luang, pelajari C # terlebih dahulu. Segera setelah Anda merasa nyaman dengan itu, mulailah belajar tentang
unsafe
kata kunci dan cara menggunakan pointer dan melakukan marshaling di C #. Anda masih akan memiliki perpustakaan yang sangat besar untuk dikerjakan, seperti dengan Python, tetapi Anda akan dapat melakukan banyak hal yang dapat Anda lakukan dalam C. Kemudian transisi ke sistem panggilan API secara manual (seperti InternetOpen ), dan pelajari cara membuat mereka bekerja. Anda masih akan memiliki banyak fleksibilitas tetapi Anda akan mendapatkan pengantar konsep tingkat bawah yang bagus. Setelah Anda selesai melakukannya, maka mulai belajar C - maka Anda akan menemukan itu sebagai sepotong kue, dan Anda akan melihat (C? mengerti?) kelebihan dan kekurangan bahasa tingkat tinggi dan tingkat rendah, dan Anda akan dapat untuk menemukan yang sesuai dengan kebutuhan Anda.Yang mengatakan, saya pikir A Crash Course di C mungkin berguna sebagai titik awal untuk melompat ke
lautC.sumber
Jangan membaca kode kernel ketika Anda sedang belajar C. Penuh dengan trik untuk memeras setiap bit kinerja terakhir darinya. Beberapa di antaranya sangat tidak standar. Itu akan membuatmu gila.
Sebagai gantinya, lihatlah beberapa proyek bertubuh kecil, berkualitas tinggi:
sumber
Salah satu tujuan dari bahasa tingkat tinggi yang lebih tinggi adalah untuk menyembunyikan hal-hal rumit. Jika Anda ingin belajar bahasa tingkat "rendah", dan tidak ingin memulai dengan hal-hal yang sangat rumit (yang sebelumnya sebagian besar tersembunyi dari Anda); coba mulai dengan beberapa proyek pembelajaran yang lebih sederhana, mengurutkan array angka, atau membalikkan serangkaian karakter, atau ...
Lebih mudah naik bukit yang curam dengan mengambil langkah-langkah kecil.
sumber
Sejauh proyek keren untuk dilihat: kernel Unix ditulis dalam C.
sumber
Pelajari tata bahasa C terlebih dahulu, lalu gunakan untuk menulis struktur data dan algoritma. Tentu saja Anda dapat membaca kernel Linux sebagai Anda ahli bahasa c.
sumber