Mengapa mulai belajar pemrograman dengan C

Ringkasan: Penulis artikel menjelaskan mengapa C bagus pada tahap pelatihan dan memompa otak programmer masa depan. Dan setelah beberapa saat, atau bahkan secara paralel, Anda dapat mempelajari bahasa yang lebih modern dan melakukan, misalnya, Pengembangan Perusahaan atau Web.





Foto: Liam Briese di Unsplash Ada



semakin banyak bahasa pemrograman. Sekarang ada sekitar 700. Namun kebanyakan developer menggunakan 20 diantaranya. Di sini, seperti di banyak area lainnya, ada peringkat, tren, dan bahkan mode.



Sebut saja beberapa bahasa populer. Untuk pengembangan Perusahaan, Java secara aktif digunakan (segera Kotlin juga akan diperbaiki di sana), C #, untuk pengembangan Web - JavaScript, Go, Python dan PHP, untuk pengembangan seluler - Swift, Java / Kotlin, nah, saya berani memanggil JavaScript (karena mungkin, karena React Native). Pengembang game sering menggunakan C # dan C ++. Semuanya diminati karena beberapa alasan:



  • sintaks yang disederhanakan (untuk sebagian besar) dan semantik yang jelas - dengan latar belakang bahasa C;
  • set API standar berfitur lengkap;
  • dukungan komunitas aktif;
  • ekosistem framework dan perpustakaan yang berkembang.


Bahasa C digunakan dalam pengembangan solusi perangkat lunak dan perangkat keras. Di C, Anda juga dapat menerapkan sebagian fungsionalitas produk perangkat lunak yang menuntut kinerja. Meskipun tidak semua programmer menginginkan dan dapat mengerjakan proyek semacam itu. Namun kembali ke tahap pembelajaran.



Biasanya, calon pengembang mulai membuat kode di sekolah, universitas, atau kursus perubahan karier. Opsi terakhir, omong-omong, sekarang mulai populer.



Cepat atau lambat, mereka bertanya pada diri sendiri: bahasa pemrograman mana yang lebih baik untuk dipelajari terlebih dahulu? Di sekolah dan universitas, pertanyaan ini bisa dijawab untuk Anda: paling sering, belajar di sana dimulai dengan bahasa C / C ++ (begitu saja, melalui "/"). Tetapi di situs pelatihan alternatif, kecil kemungkinan seseorang juga akan menyarankan Anda hanya mempelajari C untuk memperluas wawasan Anda atau memompa otak Anda. Semua orang ingin cepat, seperti yang mereka katakan, memasukkan TI. Jadi, seperti yang Anda lihat, di sana-sini Anda harus menunjukkan kemauan dan kemandirian jika Anda memutuskan untuk mulai belajar dari bahasa C.  



Dalam artikel ini, kita akan berbicara tentang tahap pelatihan dan pembentukan spesialis masa depan. Karena itu, izinkan saya sekarang menyatakan argumen saya, dan kemudian Anda dapat menyatakan argumen Anda.



C memaksa Anda untuk mendalami solusi dari masalah tersebut



Bahasa yang lebih modern menawarkan beberapa abstraksi bawaan (atau abstraksi dari pustaka standar) sekaligus untuk semua kesempatan umum. Ini terutama berlaku untuk masalah algoritmik standar. Misalnya, jika Anda perlu menyalin elemen tertentu dari larik pertama ke larik kedua, Anda bisa menggunakan metode filter () bawaan di JavaScript. Jika Anda menulis di Java, Anda memiliki metode filter () dari paket java.util.stream yang Anda inginkan. 



JavaScript: Array.filter ()



const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
//     6,     
const result = words.filter(word => word.length > 6);  
console.log(result);
//    : Array ["exuberant", "destruction", "present"]
      
      





Java: stream (). Filter ()



List<String> lines = Arrays.asList("spray", "limit", "elite");

//  List  Stream
List<String> result = lines.stream()              
//   elite  
       .filter(line -> !"elite".equals(line))     

//      List
       .collect(Collectors.toList());   

//   :  spray, limit
        result.forEach(System.out::println);   
      
      





Dalam bahasa C, terutama untuk tujuan pendidikan, Anda dapat menawarkan implementasi berikut (agar tidak mempersulit contoh, saya mengubah string menjadi angka dan mengubah kondisi "pemfilteran"):



#include <stdio.h>
#define SIZE 5

void copy_aka_filter_arr(double trg[], double src[], int n);

int main(void){
    int i;
    double source[SIZE] = {1.1, 2.2, 3.3, 4.4, 5.5};
    double target[SIZE];
   
 printf("Source:  ");
    for (i = 0; i < SIZE; i++){
        printf("%5.1f ", source[i]);
    }
    putchar('\n');
    copy_arr(target, source, SIZE);   
    return 0;
}

void copy_aka_filter_arr(double trg[], double src[], int n){
//  i-      ,    3.3. 
//    i-    0.0 
    int i;
    for (i = 0; i < n; i++){
            if (trg[i]) > 3.3){     
                trg[i] = src[i];
            }
            else{
                trg[i] = 0.0;
            }
    }       
    printf("Target: ");
    for (i = 0; i < SIZE; i++){
        printf("%5.1f ", trg[i]);
    }
    putchar('\n');
}
      
      







Mencoba mengimplementasikan fungsi tersebut dengan tangan, Anda akan menemukan prinsip dan nuansa fundamental yang perlu dipahami secara mendalam. Secara khusus, implementasi algoritme independen untuk memproses struktur data dalam bahasa C adalah cara yang bagus untuk mempelajari cara memecahkan masalah, dan bukan mencari solusi yang sudah jadi. 



Tidak peduli bahasa keren dan canggih apa yang Anda gunakan untuk menulis, dari waktu ke waktu muncul masalah kompleks yang tidak dapat diselesaikan menggunakan pustaka standar dan abstraksi bawaan. Dalam kasus ini, keterampilan seperti itu sangat diperlukan.



Ngomong-ngomong, pengembang yang berpartisipasi dalam hackathon kompetitif sering kali melatih keterampilan ini, menyelesaikan masalah non-standar hanya di C.



C memungkinkan Anda menyentuh pemrograman "level rendah"



Sangat mudah untuk menulis dalam bahasa tingkat tinggi modern (Python, C #, Java atau apapun yang Anda suka). Namun, bahasa-bahasa ini sangat terbatas dalam interaksinya dengan perangkat keras. Dengan kata lain, Anda tidak akan mendapatkan pengalaman perangkat keras penuh sampai Anda memulai pemrograman dalam C. Bahasa pemrograman modern menyembunyikan detail implementasi yang bergantung pada perangkat keras dan sebagai gantinya meniru beberapa jenis abstraksi. Dalam kebanyakan kasus, ini dibuat menggunakan mesin virtual.



Sayangnya, para pemula sama sekali tidak tahu tentang manajemen memori, penanganan file, dan pengoptimalan kode, karena mereka belum pernah melihat contoh pemrograman "tingkat rendah" di C. Dari sudut pandang ini, bahasa pemrograman modern mengotomatiskan dan menyembunyikan terlalu banyak. . Bahasa C memaksa Anda melakukan banyak hal dengan tangan Anda dan menulis kode yang sangat dioptimalkan.



Bagi saya, ini harus dicoba untuk setiap pengembang profesional. Setidaknya, seorang backender.



C mengajarkan kebebasan dan tanggung jawab



Ketika bahasa pemrograman menawarkan sekumpulan abstraksi yang ramah manusia, itu menjadi kurang fleksibel. Setiap metode bawaan atau pustaka berfungsi seperti kotak hitam berkode keras. Dengan kata lain, bahasa pemrograman modern menyembunyikan detail implementasi dan memberi tahu pengembang untuk hanya merujuk ke satu set antarmuka. Kontrol manual atas alokasi memori dinamis dalam bahasa pemrograman modern tidak mungkin dilakukan dalam banyak kasus. Sementara itu, C memberi Anda kebebasan nyata, memungkinkan Anda untuk memilih bagaimana Anda menerapkannya pada level yang lebih rendah.



Compiler C, jika dioptimalkan dengan benar, menghasilkan kode assembly yang sangat cepat. Benar, selain menyetel tanda pengoptimalan yang diperlukan untuk kompilasi, Anda juga perlu menulis kode sumber berkinerja tinggi sendiri. Di C, kita harus mendeklarasikan variabel dengan hati-hati, mengalokasikan dan membersihkan memori tepat waktu, mengakses sumber daya, dan ingat untuk membebaskannya. Jika C adalah bahasa pertama Anda, Anda akan terbiasa menggunakan memori dan sumber daya secara rasional, dan Anda akan terbiasa memilih struktur data yang optimal. Kebiasaan ini akan berlanjut saat Anda mulai menulis dalam bahasa lain.



C memotivasi Anda untuk menulis kode yang bersih



Tidak seperti bahasa pemrograman modern, Anda harus menulis kode berkali-kali untuk mengimplementasikan tugas yang sama di C. Hal ini disebabkan oleh fakta bahwa di C banyak yang harus diimplementasikan pada tingkat yang lebih rendah, daripada menggunakan pembungkus dan abstraksi bawaan dari pustaka standar yang menyembunyikan detail implementasi. Dengan bertambahnya jumlah baris dalam kode, kompleksitas kode juga meningkat. Untuk mengimbangi efek ini dan menjaga ketertiban dalam proyek, Anda perlu mencoba menulis kode yang bersih dan dapat dimengerti.



Menulis kode bersih adalah keterampilan yang sangat dibutuhkan saat mengerjakan proyek komersial besar. Jika Anda dapat belajar menulis kode C yang bersih, akan lebih mudah bagi Anda untuk melakukannya dalam bahasa lain yang lebih sederhana.



Belum yakin?



Dengan perkembangan aktif C ++, bahasa C tidak lagi dianggap oleh banyak orang sebagai bahasa independen. Tampaknya ini telah menjadi bagian dari bahasa C ++. Jelas bahwa kenyataannya tidak demikian. C ++ adalah bahasa pemrograman yang benar-benar modern dengan seperangkat pustaka standar berfitur lengkap. Menurut saya, C ++ seharusnya tidak menjadi bahasa pertama yang dipelajari. Benar, ada satu peringatan: jika Anda ingin mengkhususkan diri di masa depan, silakan. Dalam hal ini, kedua bahasa ini dapat diajarkan secara paralel, tetapi pada titik tertentu keduanya akan "berpotongan" - dan transisi dari C ke C ++ akan bersifat organik dan hampir seketika. 



Hampir semua bahasa pemrograman modern bersaing satu sama lain, memperkenalkan sintaks baru, semantik, dan memperluas pustaka dan kerangka kerja standar. Seperti yang mereka katakan, semuanya untuk orang. Ini menawan. Tetapi jika pengembang masa depan mulai mempelajari bahasa-bahasa ini dari awal, mereka akan kehilangan peluang berharga yang disediakan oleh C.Pada titik tertentu, mereka tidak dapat mengambil langkah baru dalam pengembangan mereka, tidak mengetahui cara kerja kode di tingkat yang lebih rendah. , bahkan tidak mengetahui bagaimana framework dan library favorit mereka diimplementasikan di dalamnya.



Jadi pilihlah C sebagai bahasa pemrograman pertama Anda. Ini akan memakan waktu lebih lama untuk mempelajarinya, tetapi akan membantu Anda menjadi ahli dalam bahasa yang lebih modern dengan sangat cepat di masa depan.






Server cloud dari Macleod sangat bagus untuk dikembangkan dalam C dan bahasa pemrograman lainnya.



Daftar menggunakan tautan di atas atau dengan mengklik spanduk dan dapatkan diskon 10% untuk bulan pertama menyewa server dengan konfigurasi apa pun!






All Articles