C, C++, C#, Java

Di awal-awal gw masuk kuliah, gw dapet mata kuliah yang ngajarin dasar-dasar pemrograman pake bahasa C. Terus gw ketemu sama sepupu gw yang ngambil jurusan Sistem Informasi di Binus, dia dapet mata kuliah yang sejenis. Bedanya, dia pake bahasa pemrograman Java. Nggak berapa lama habis itu, gw ketemu temen SMA gw yang masuk Teknik Informatika di kampus yang beda dengan gw, temen SMA gw ini juga diajarin pemrogramannya pake Java. Lalu ada temen lagi yang ngambil Teknik Informatika di ITB, yang ini beda lagi. Dia dapet Lisp dulu, baru ntar nyambung ke C. Sementara temen gw yang lain lagi yang ngambil Teknik Industri di ITB dapet Pascal & C, lalu baru-baru ini satu orang temen ngambil jurusan Computer Science di Amerika (gw gak tanya kampusnya) bilang dia dapet pelajaran dasar pemrogramannya pake bahasa C++.

Anggeplah temen gw yang di Amerika itu juga dapetnya C biasa, bukan C++. Soalnya bahasa C++ biasanya kalo dipake buat belajar dasar-dasar pemrograman sih fitur-fitur yang dipakenya cuma fitur-fitur yang ada di C, yang asli dari C++ masih kurang banyak dipake. Lisp & Pascal mungkin agak jarang gw denger sih. Strukturnya yang beda dari C juga bikin gw agak bingung ngebaca source codenya, terutama Lisp. Kalo Pascal sih gw lumayan bisa ngerti pas bacanya, cuma gw nggak bisa ngodingnya karena nggak pernah bikin program pake Pascal.

Oke, jadi kali ini gw mau ngebandingin antara C, C++, C#, & Java. Kenapa empat bahasa ini? Karena ini semua bahasa yang lumayan banyak gw pake. Gw sendiri sering pake PHP & JavaScript juga, tapi itu nggak masuk ke kategori yang sama dengan empat bahasa tadi. Visual Basic juga kadang-kadang gw pake sih, tapi nggak begitu sering. Kalo ngoding pake Visual Studio juga yang gw pake biasanya C# sih.

Sebelumnya mungkin perlu gw kasih tau dulu, C, C++, C#, & Java punya struktur bahasa yang agak mirip. Untuk C++ & C# sih keliatannya udah cukup jelas dari namanya kalo dua bahasa ini turunan dari C.

C termasuk ke golongan bahasa pemrograman yang pake konsep procedural programming. Program yang dibikin pake bahasa C sih jalannya paling kenceng dibandingin dengan program yang sama yang dibikin pake bahasa pemrograman high-level yang lain. Kalo sama bahasa pemrograman low-level kayak assembly sih….kalah cepet lah ya. Di bahasa C kita bisa ngakses langsung alamat memory RAM yang kita mau pake fitur pointer & reference. Karena bisa langsung ngakses mesin, sistem operasi & driver untuk hardware biasanya dibikin pake bahasa C.

C++ nambahin fitur untuk object-oriented programming di bahasa C, ditambah dengan fitur-fitur lain kayak operator overloading & function overloading. C++ nggak murni object-oriented, berarti kita bisa ngoding pake gaya kodingan bahasa C di C++ karena C++ masih support procedural programming. C++ juga bisa langsung ngakses mesin kayak C, tapi nggak sekenceng C jalannya. Program-program yang ditulis pake C++ sedikit lebih lambat pas dijalanin.

Java juga turunan dari C & C++, tapi tanpa fitur pointer. Bedanya dengan C++, Java murni object-oriented. Di sini semua data-data harus dibuat dalam bentuk object. Function main() di Java harus dideklarasiin sebagai method dari satu class, sementara kalo di C++ function main() bisa berdiri sendiri. Kalo di C++ ada fitur multiple inheritance, di Java itu diilangin. Pas ngoding Java juga perlu diinget, satu file source code Java isinya cuma bisa satu class aja & nama filenya harus sama dengan nama class yang ada di dalamnya. Pengecualian untuk class yang dibuat dalam class lain, class ini boleh numpang di file class utamanya. Java sih punya pemikiran WORA (Write Once Run Anywhere), jadi program yang kita tulis satu kali bisa kita jalanin di mana aja selama mesin yang mau ngejalaninnya punya Java Virtual Machine (JVM). C++ juga udah punya fitur ini sekarang sih kalo pake Qt. Kita nulis programnya sekali aja terus tinggal dicompile pake compiler yang sesuai dengan mesin yang mau dipake ngejalaninnya nanti, nggak perlu virtual machine.

C# itu turunan dari C, C++, & Java. Sejauh yang gw tau sih C# juga murni object-oriented kayak Java & nggak support multiple inheritance, tapi C# punya fitur pointer. Fitur pointer di C# nggak begitu disarankan untuk dipake juga sih, jadi ya…begitulah. File source code C# nggak dibatasin satu file buat satu class doang aja tapi, & nama filenya nggak harus sama dengan nama classnya. C# ada ketergantungan sama framework .NET (kalo di OS Windows) atau Mono (kalo di OS lain) sih buat bisa jalannya. Mirip dengan Java yang butuh JVM deh kira-kira.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s