Saya ingin pemrograman C, karena kecil dan compiler yang banyak tersedia. Menggunakan bahasa C dapat menunjukkan pemahaman tentang mouse dan memori. Anda dapat menerapkan daftar link atau tabel hash menggunakan C Sehingga Anda dapat lebih memahami bagaimana daftar dan tabel hash pekerjaan terkait.

Tapi selama Anda ingin membangun aplikasi pengguna akhir, bahasa C tidak pernah merupakan pilihan yang baik. Pilih bahasa untuk produk kami adalah penting. Kami tidak mengembangkan aplikasi web dengan bahasa pemrograman tingkat rendah. Ini benar-benar praktis.


C dan C ++

Jangan berpikir bahwa bahasa C adalah bahasa tua. Hal ini dimungkinkan untuk hidup hari ini karena memiliki fitur canggih (saya tidak bisa menyebutkan nama mereka, karena aku bukan programmer C). Ada fitur baru dari C99 dan C11. Tapi hampir memecahkan masalah yang lebih penting seperti pengembangan game, C ++ jauh lebih baik daripada C (tapi itu adalah pilihan yang lebih baik daripada Lua.)


Syntax

Mengapa C ++ lebih baik dari C? Dari tingkat sintaks, lebih mudah untuk membaca dan mudah untuk menulis. Misalnya,

 strtolower (cut (cincin Myst)); 

Myst mana cincin adalah C band dan trim () adalah fungsi yang mengembalikan rantai strtolower pendek () adalah fungsi lain yang mengembalikan string ke huruf kecil. (Nama-nama fungsi yang saya gunakan di sini adalah berdasarkan PHP.) Jadi kita bisa melihat ketika kita membaca atau menulis, kita perlu membaca dari kanan ke kiri, memotong strtolower. Dan kurung harus benar fit

Di sisi lain, C ++,

. MyString- & amp; amp; gt; trim () - & amp; amp; gt; strtolower ();

Mari kita mengatakan bahwa cincin Myst adalah item kustom, yaitu Myst Ring, tapak. Dengan demikian, sintaks jauh lebih intuitif. panggilan Myst-up trim () method mengembalikan Myst Cincin objek, sehingga kita dapat melanjutkan strtolower () yang mengembalikan objek Myst Cincin. Ini disebut metode Lock .


Obyek Nama

berorientasi penemuan mengejutkan! Hal ini begitu kuat bahwa sebagian besar dari program dukungan berorientasi objek hari ini. Warisan, antarmuka polymorphoism, fitur ini mengurangi banyak kerja keras. Anda dapat menerapkan berorientasi objek C (misalnya GObject perpustakaan), bahasa C tidak dirancang untuk berorientasi objek.

Karena sintaks dan berorientasi objek, saya lebih memilih C ++ dan C


String

Keuntungan lain dari C ++ adalah band. C string adalah array karakter, dengan ukuran tetap. Hal ini tidak dinamis sebagai rantai C. Misalnya, Anda ingin menerapkan strcat (), Anda harus memiliki buffer yang lebih besar untuk menyimpan strcat (hasil). Dan jika Anda ingin lakukan dengan alokasi memori dinamis, maka Anda perlu untuk membebaskan memori secara manual. Ini selesai.


Metode Obyek

terkait dengan metode chaining, di C ++, kita dapat menulis metode. C seperti itu adalah untuk menggunakan struct , untuk melakukan metode seperti ini rumit. Misalnya,

 # include & amp; amp; lt; stdio.h & amp; amp; gt; #include & amp; amp; lt; Sertakan & amp; amp; gt; typedef struct {int a; Int (* b) (int a); } MyType; INT myTypeMethod (int a) {mengembalikan + 20; } MyType * myTypeNew () {myType MyType * = (MyType *) malloc (sizeof (MyType)); myType- & amp; amp; gt; a = 20; myType- & amp; amp; gt; b = myTypeMethod; // Tidak ada mekanisme dalam struktur, sehingga kita menghubungkan lagi callback myType; } Valid myTypeDelete (MyType ** myType) {gratis (* myType); * MyType = null; } Int utama (int argc, char ** argv) {MyType * myType myTypeNew = (); printf (& amp; amp; quot;% dari n & amp; amp; quot ;, myType- & amp; amp; gt; a); printf (& amp; amp; quot;% dari n & amp; amp; quot ;, myType- & amp; amp; gt; b (20)); myTypeDelete (& amp; amp; amp; myType); return 0; } 

Karena C tidak memiliki spasi , tapi kita bisa melakukan sesuatu seperti namespace ini menggunakan awalan.


C ++ 11 ++ 14 C, C ++ 1Z

Jika Anda tidak C ++ kekasih, Anda mungkin berpikir bahwa bahasa pemrograman C ++ adalah usang. Sama seperti HTML dan JavaScript, ada saran berkelanjutan untuk fitur baru untuk C ++. Oleh karena itu, C ++ tidak mati belum. Ada beberapa fitur utama saya harus dicatat di sini

sintaks New

Jenis Data "Auto"

 # include & amp; amp; lt; iostream & amp; amp; gt; #include & amp; amp; lt; ketik Info & amp; amp; gt; menggunakan namespace std; int main (int argc, char ** argv) {int a = 10; diri b = a; Biaya & amp; amp; lt; & Amp; amp; lt; b '& amp; amp; lt; ENDL; Biaya & amp; amp; lt; & Amp; amp; lt; typeid (b) .name () & amp; amp; lt; & Amp; amp; lt; ENDL; // & Amp; amp; quot; i & amp; amp; quot; bilangan bulat mengapung c = 20.0f; B = C; Biaya & amp; amp; lt; & Amp; amp; lt; b '& amp; amp; lt; ENDL; Biaya & amp; amp; lt; & Amp; amp; lt; typeid (b) .name () & amp; amp; lt; & Amp; amp; lt; ENDL; // Masih & amp; amp; quot; i & amp; amp; quot; return 0; } 

"Auto" seperti "itu" di C #.


foreach

Kebanyakan bahasa pemrograman modern memungkinkan foreach kata kunci, seperti JavaScript, PHP, dan Python sama. Sementara Python menggunakan "untuk" kata kunci, itu benar-benar bekerja sebagai foreach di PHP

. #include & amp; amp; lt; iostream & amp; amp; gt; menggunakan namespace std; int main (int argc, char ** argv) {int a [] = {4, 5, 3, 2, 1}; untuk (tim auto: a) {cout & amp; amp; lt; & Amp; amp; lt; objek & amp; amp; lt; & Amp; amp; lt; ENDL; } Kembali 0; } 

lain foreach

 # include & amp; amp; lt; iostream & amp; amp; gt; #include & amp; amp; lt; Ferry & amp; amp; gt; #include & amp; amp; lt; Algoritma & amp; amp; gt; menggunakan namespace std; int main (int argc, char ** argv) {vektor & amp; amp; lt; INT & amp; amp; gt; {4, 5, 3, 2, 1}; for_each (a.begin () a.end () [] (auto & amp; amp; amp; item) {cout & amp; amp; lt; & amp; amp; lt; objek & amp; amp; lt; & amp; amp; lt; ENDL;}); return 0; } 

di atas dapat dikompilasi dengan C ++ 14 standar. Jika Anda menggunakan standar C ++ 11, kita menggunakan "int" bukan "auto".


ekspresi Lambda

ekspresi lambda, a.k.a fungsi anonim . Jika Anda bekerja dengan JavaScript, seperti

 Adalah = [4, 5, 3, 2, 1]; Ditemukan a.find = (function (item) {if (item == 2) Point of return;}); 

Sebagai contoh di atas menunjukkan parameter find () adalah fungsi, fungsi yang tidak disebutkan namanya. Ini adalah sintaks umum pemrograman fungsional . pemrograman fungsional adalah kebijakan yang paling bahasa pemrograman modern. Fungsi anonim juga didukung PHP. Keuntungan dari pemrograman fungsional adalah penghapusan efek samping dan menghindari mengubah posisi data. Oleh karena itu, model yang baik untuk pemrograman paralel

Melihat contoh di atas, ada sintaks seperti

 ([] (B Int) {cout & amp; amp; lt; & amp; amp; lt; b & amp; amp; lt; & amp; amp; lt; ENDL;}) (12); 

Hal ini mirip dengan JavaScript,

 (function (b) {console.log (b);}) (12 ); 

Dalam C ++, hook digunakan untuk menangkap ruang lingkup bidang variabel. (Saya pikir itu mirip dengan PHP "menggunakan" kata kunci).

Sebelum Anda dapat menggunakan fungsi panggilan balik yang

 # include & amp; amp; lt; iostream & amp; amp; gt; menggunakan namespace std; Int foo (int (* CB) (int, void *), ukuran int, Data * void) {return CB (ukuran, data); Int} callback (ukuran int, kekosongan data *) {int sum = 0; intData int * = (int *) data; Typecast // untuk (int i = 0; i & amp; amp; lt; ukuran; i ++) {sum + = intData [i]; Biaya & amp; amp; lt; & Amp; amp; lt; intData [i] & amp; amp; lt; & Amp; amp; lt; ENDL; } Kembali penjumlahan tersebut; } Int utama (int argc, char ** argv) {int a [] = {4, 5, 3, 2, 1}; Int sum = foo (callback, 5, a); Biaya & amp; amp; lt; & Amp; amp; lt; sum & amp; amp; lt; & Amp; amp; lt; ENDL; return 0; } 

Karena kita dapat menggunakan fungsi anonim, kita tidak perlu membuat fungsi callback seperti di atas. Hal ini dapat ditulis sebagai

 # include & amp; amp; lt; iostream & amp; amp; gt; menggunakan namespace std; Int foo (int (* CB) (int, void *), ukuran int, Data * void) {return CB (ukuran, data); } Int utama (int argc, char ** argv) {int a [] = {4, 5, 3, 2, 1}; Int hasil = foo ([] (ukuran int, kekosongan data *) {int sum = 0; int * intData = (int *) Data for (int i = 0; i & amp; amp; lt; ukuran; i ++ ) {sum + = intData [i]; cout & amp; amp; lt; & amp; amp; lt; intData [i] & amp; amp; lt; & amp; amp; lt; ENDL;} pulang sum;}, 5, memiliki ); Biaya & amp; amp; lt; & Amp; amp; lt; Hasil & amp; amp; lt; & Amp; amp; lt; ENDL; return 0; } 

Multi-threading, pemrograman asynchronous, pujian

Kita dapat menerapkan multi-threading digunakan perpustakaan lain seperti pthread. Tapi dengan C ++ 11, Anda dapat membuat perpustakaan pihak ketiga nirkabel, melakukan tidur, tidur dengan milidetik atau bahkan nanodetik. Ada juga perpustakaan untuk mutex (saling eksklusif).

C ++ 11 juga mendukung pemrograman asynchronous sebagai C # dan Nama seperti JavaScript. Dengan tindakan ekspresi lambda sintaks beberapa kesamaan dengan C # dan JavaScript. Dengan async, kita dapat melakukan sesuatu di latar belakang (dengan benang), dan menggunakan hasilnya nanti. Dengan janji, Anda setuju untuk memberikan beberapa nilai, jika tidak membuang pengecualian.


ekspresi reguler

Sebuah ekspresi reguler sangat penting untuk mengedit teks. C ++ 11 mendukung ekspresi reguler. Ada sintaks yang berbeda untuk ekspresi reguler .. BRE (regex dasar) sintaks digunakan secara default oleh perintah "grep", sebelum (ekspresi reguler diperpanjang ekspresi reguler, Perl dan Perl ekspresi reguler sangat kuat jika Anda menggunakan Python, JavaScript, Ruby dan C #, Anda akan menemukan mereka memiliki sintaks yang berbeda.

Tapi menarik C ++ menggunakan reguler sintaks ekspresi ECMAScript default (meskipun kita dapat memilih BRE sebelum atau awk). ini berarti bahwa jika Anda tahu JavaScript RegExp, maka Anda tidak punya masalah dengan C dari regedit.

(kebijakan saya termasuk berbagai bahasa pemrograman, yang berarti bahwa fungsi-fungsi ini membantu, intuitif, dan kuat)

& amp ;. amp; nbsp;

pengumpulan sampah

sejauh ini tidak pengumpulan sampah baik untuk C ++

& amp; amp; nbsp;.

hal lain yang harus saya katakan karena tren jaringan dan data dalam jumlah besar dan pemrograman aplikasi paralel. . memastikan bahwa data yang berubah, pemrograman fungsional akan berhasil.