Memilih bahasa pengaturcaraan pertama anda

Tentunya ini adalah salah satu soalan yang paling sering datang ke peti masuk saya ketika bercakap mengenai pengaturcaraan. Sekiranya kita akan memulakan satu siri artikel yang akan membolehkan anda belajar memprogram dan memberikan kembali pengetahuan percuma dalam bentuk sumbangan kepada perisian percuma / komuniti sumber terbuka di seluruh dunia, adalah perlu untuk menjawab asas ini jika agak sukar soalan. Bahasa pengaturcaraan apa yang harus saya pelajari?

Sedikit sejarah

Untuk mula memahami dan memilih bahasa pengaturcaraan, pertama-tama kita harus mengetahui sedikit tentang sejarah mereka, penggunaan dan fungsi mereka, dan bagaimana mereka menyelesaikan pelbagai keperluan dari masa ke masa.

Bahasa mesin (tahap rendah)

Biasa dikenali sebagai Membentuk Pau, adakah bahasa pengaturcaraan yang dapat kita definisikan sebagai dialek bahasa yang lebih umum ... Kedengarannya agak rumit tetapi saya akan memberikan contohnya ... Kita tahu bahawa bahasa pengkomputeran sejagat adalah elektrik, ini bermaksud bahawa akhirnya apa yang dibaca oleh komputer 0sy 1ya, mari kita sebut ini ebahasa inggeris komputer. Dalam contoh ini, bahasa Sepanyol adalah peraturan asas, tetapi seperti yang kita ketahui, bahasa Sepanyol yang dituturkan oleh orang Latin tidak sama dengan yang dituturkan di Sepanyol, dan walaupun begitu, bahasa Sepanyol Peru tidak sama dengan bahasa Sepanyol Argentina. Jelas kita semua mempunyai perkataan yang hampir sama (0sy 1s), tetapi penggunaan dan makna mungkin berbeza mengikut konteks.

Ini berlaku pada peringkat pemproses. Apabila kita bercakap mengenai seni bina pengkomputeran, (amd64, intel, arm, ...) kita merujuk kepada dialek itu komputer sepanyol. Ini kerana syarikat yang berbeza memahami urutan dan makna dengan cara mereka sendiri, jadi beberapa butirannya berbeza-beza seperti aliran arus, atau urutan di mana mereka akan disimpan. 0sy 1s.

Bahasa pengaturcaraan ini sangat pantas, kerana berfungsi pada tahap pengaturcaraan serendah mungkin, tetapi mereka sangat bergantung pada seni bina dan tentunya sedikit lebih rumit untuk dipelajari daripada yang lain. Ini sering memerlukan asas konsep yang lebih luas untuk mengubah data dan menjalankan perkara berguna di dalamnya. Bagi peminat permainan video, contohnya ialah konsol SEGA, yang menggunakan Assembly untuk memprogram permainan mereka. Jelas pada masa itu jumlah memori minimum berbanding hari ini, dan perlu menguasai bahasa yang pantas dan menghasilkan program ringan.

Bahasa peringkat tinggi

Kumpulan besar ini merenungkan bahasa-bahasa yang muncul selepas itu Membentuk Pau. Keperluan untuk mendapatkan kod mudah alih menimbulkan sekumpulan bahasa yang disebut disusun. Di antaranya, yang pertama mengambil keuntungan adalah C, yang telah mendominasi pengaturcaraan di tingkat sistem operasi sejak tahun 70-an.

Bahasa yang disusun

Mari lihat contoh praktikal dari apa yang saya komen. Mari lihat program bahasa C yang sangat mudah yang mencetak satu baris kod.

Milik. Christopher Diaz Riveros

Setelah menyusunnya, kami mempunyai perkara berikut:

Reka bentuk sendiri: Christopher Díaz Riveros

Tetapi sekarang mari kita lihat apa yang perlu kita tulis untuk mereplikasi hasil yang sama dalam kod Perhimpunan:

Milik. Christopher Diaz Riveros

Ini adalah terjemahan dari 3 baris kod kami dari simple.c, fail simple.s dibuat menggunakan arahan gcc -S simple.c dan inilah yang difahami oleh pemproses kami dalam dialek Membentuk Pau. Jelas sekali untuk mewujudkan sebuah eksekusi yang terdiri daripada 0sy 1s fail perlu diproses simple.s dan hubungkannya dengan perpustakaan bersama sistem kami. Ini dilakukan dengan menggunakan a penghimpun (as) dan penyambung (ld).

Bahasa yang disusun memberikan kelebihan yang besar berbanding bahasa yang rendah, memang begitu portabel. Portabiliti memberikan kod yang dapat dijalankan pada pemproses yang berbeza tanpa perlu menghasilkan kod khusus untuk setiap seni bina. Kelebihan lain yang jelas adalah kesederhanaan yang digunakannya semasa membaca dan menulis kod. Di antara kelemahan utamanya, kita mempunyai kerumitan yang tinggi, kerana jika dibandingkan dengan jenis bahasa berikut yang akan kita lihat, kebebasan yang ditawarkan C boleh memudaratkan jika anda tidak tahu bagaimana mengawalnya, pastinya seperti menyerahkan pistol , itu mungkin terjadi kerana kurangnya pengalaman seseorang akhirnya menembak kakinya sendiri dalam usaha membersihkan pistol.

Bahasa yang ditafsirkan

Di dalam kumpulan ini kami mempunyai pelbagai bahasa, antara yang paling penting kami mempunyai Python, Ruby, Javascript, PHP, dll ... Idea asas bahasa-bahasa ini adalah untuk menyediakan cara cepat untuk membuat dan menjalankan program , ini kerana banyak proses sukar dilakukan dalam pentafsir, dan pengaturcaraan logik adalah apa yang dilaksanakan dalam kod. Mari kita lihat contoh yang sama di atas tetapi kali ini ditulis dalam Python:

Milik. Christopher Diaz Riveros

Di antara perkara yang paling luar biasa kita dapat melihat bahawa baris pertama bertugas memanggil jurubahasa (program yang akan melaksanakan aplikasi kita) dan kod berikutnya lebih "sederhana" daripada versi dalam C, kerana semua kerja berat dilakukan pada jurubahasa.

Milik. Christopher Diaz Riveros

Bahasa yang ditafsirkan memberikan tahap keselamatan yang lebih besar kepada pengembang, kerana mereka mempunyai kawalan keselamatan yang lebih ketat (HATI-HATI bahawa ia tidak sempurna, kerana yang terbaik dapat membuat kesalahan) dan kita tidak lagi menghadapi risiko menembak senjata tanpa menyedari kerana pada percubaan pertama, jurubahasa akan memberi amaran dan pelaksanaannya akan dibatalkan. Kelemahan utama menjadi jelas ketika menjalankan program, kerana lebih lambat daripada rakan perduaan, ini disebabkan oleh jumlah pemprosesan yang lebih besar untuk memastikan kod tersebut berfungsi. Sekiranya program ini tidak memerlukan tarikh akhir yang sangat pendek, perbezaannya mungkin tidak disedari, tetapi jika kita berbicara mengenai ribuan atau berjuta-juta data sesaat, perbezaannya dapat dilihat secara eksponensial dalam bahasa yang disusun.

Menaip

Ini adalah ciri bahasa pengaturcaraan, ini boleh dengan kuat lemah ditaip. Saya akan meninggalkan topik ini untuk catatan lain, kerana perlu dan ingin tahu untuk memahami bagaimana memori disimpan dalam program, tetapi buat masa ini kita hanya perlu membezakan: Bahasa yang sangat ditaip adalah bahasa yang memerlukan mengetahui jenisnya data yang akan dikendalikan pada pemboleh ubah atau pemalar, sementara lemah jenis boleh melakukan penukaran sehingga tersirat dan semuanya akan bergantung pada hierarki penukaran diikuti oleh bahasa. (Sekiranya tidak difahami sekarang, tidak ada masalah, kami akan membiarkannya nanti)

Paradigma

Seperti semua perkara di dunia GNU / Linux, bahasa pengaturcaraan didasarkan pada paradigma, dan komuniti dihasilkan di sekitarnya. Contohnya kita mempunyai Yayasan Python o Ruby o PHP o Bash (dalam kes ini adalah komuniti GNU). Apa yang ingin saya sampaikan dengan ini adalah bahawa saya tidak dapat menyatakan sebilangan besar kebaikan dan keburukan yang dimiliki oleh masing-masing, tetapi saya dapat memberitahu anda bahawa di mana terdapat bahasa pengaturcaraan percuma, ada komuniti untuk belajar dan mengambil bahagian. Perlu disebutkan bahawa banyak jika tidak semua penafsir bahasa ditulis dalam C, atau beberapa kata terbitan yang dekat, dan perkembangannya biasanya dilakukan oleh sekelompok kecil masyarakat, yang bertanggung jawab mengambil keputusan yang akan mempengaruhi semua pengguna bahasa. Institusi bahkan boleh dibentuk untuk memastikan perkembangan bahasa yang betul, seperti halnya dengan C.

Yang hendak dipilih?

Kami sudah cukup bercakap tentang bahasa dan saya masih belum menjawab perkara yang paling penting  . Tetapi saya berharap bahawa selepas menyemak artikel kecil ini, saya tidak perlu memberitahu anda bahasa mana yang hendak dipilih, kerana dengan maklumat ini anda mampu sepenuhnya mencari yang membuat anda ingin tahu. Jelas sekali jika anda ingin belajar memprogram dalam bahasa Membentuk Pau akan memakan masa yang lama sebelum anda dapat melakukan sesuatu yang berfungsi, waktunya akan sangat berkurang jika anda memilih bahasa yang disusun, di mana selain mempunyai kemudahan untuk menggunakan * sistem NIX, anda akan dapat mempelajari maklumat mengenai pengoperasian sistem yang sama, kerana bersentuhan dengan C atau derivatif membuat anda dalam satu atau lain cara belajar bagaimana sistem operasi berfungsi secara umum. Akhirnya, jika anda ingin mempelajari sesuatu yang ringan dan yang membolehkan anda melakukan banyak perkara tanpa perlu memahami banyak, bahasa yang ditafsirkan adalah cara yang menyenangkan untuk belajar dan mengembangkan kemahiran pengaturcaraan.

Belajar dengan sesuatu yang menarik

Ini adalah nasihat terbaik yang dapat saya berikan kepada anda, jika anda ingin mempelajari sesuatu, anda perlu mencari sesuatu yang menarik terlebih dahulu, jika tidak, agak sukar untuk mengatasi kelengkungan pembelajaran khas dari mana-mana bahasa pengaturcaraan. Andaikan anda menguruskan sistem, sekiranya anda perlu mempelajari bahasa yang sesuai skrip (ditafsirkan), di dalamnya kita mempunyai Perl, Python, Bash, dll dan lain-lain ... Mungkin milik anda adalah permainan, terdapat banyak projek dalam bahasa seperti Javascript, Lua, C ++, bergantung pada jenis permainan yang anda mahukan untuk bermain. Mungkin anda ingin membuat alat di tingkat sistem, kerana kami mempunyai C, Python, Perl, kerana anda akan melihat beberapa diulang, dan ini kerana banyak bahasa dapat digunakan untuk banyak tugas, sebab itulah definisi daripada bahasa serbaguna dalam kebanyakan ini.

Mulakan projek

Dengan ini saya tidak bermaksud bahawa anda membuat penyusun berikut, atau bahkan bahasa pengaturcaraan berikut, sebuah projek boleh memperbaiki bug kecil dalam program kegemaran anda, bahkan mungkin dapat membantu meningkatkan dokumentasi. Mengapa dokumentasi? kerana tidak ada cara yang lebih baik untuk belajar bagaimana perisian berfungsi daripada dengan membaca dan membantu menulis dokumentasinya, kerana setelah kod sumber, ia adalah sumber maklumat terbaik yang akan anda dapati mengenai program ini. Sebentar lagi kita akan melihat bagaimana membaca kod projek dan memahami fungsi dan nilai yang mereka perolehi.

Terima kasih banyak kerana sampai di sini dan seperti biasa, komen anda membantu saya menghasilkan kandungan yang lebih baik dan tahu ke mana harus fokus, Salam.