Jumat, 12 Februari 2010 di 01.27 | 0 komentar  
DSLAM ditempatkan di sentral telepon dan menerima semua line dari modem ADSL di terminal pelanggan. DSLAM mengumpulkan koneksi dari pelanggan dan meneruskan melalui jalur kecepatan tinggi ke Internet Service Provider (ISP). Akses dari end-user melalui DSLAM akan tersentralisasi melalui BRAS. DSLAM dapat mengakomodir banyak pelanggan yang dihubungkan dengan satu jaringan backbone kecepatan tinggi, baik ATM switch maupun IP base. DSLAM menyediakan layanan transmisi data kecepatan tinggi dengan memanfaatkan kabel tembaga yang sudah ada. Pada saat sentral telepon menerima sinyal DSL, maka modem ADSL akan mendeteksi suara dan data. Suara akan dikirim ke PSTN, sedangkan data akan dikirimkan ke DSLAM, yang akan melewati ATM atau IP menuju internet. Prinsip kerja DSLAM pada prinsipnya sama dengan ADSL. DSLAM memisahkan frekuensi sinyal suara dari trafik data kecepatan tinggi, serta mengontrol dan merutekan trafik digital subcriber line (xDSL) antara pengkat end–user, seperti: router, modem, dan network interface card, dengan jaringan penyedia layanan. DSLAM menyalurkan data digital memasuki jaringan suara (POTS). DSLAM mengalihkan kanal suara (biasanya dengan menggunakan splitter) sehingga sinyal tersebut dapat dikirimkan melalui PSTN, dan kanal data yang sudah ada kemudian ditransmisikan melalui DSLAM yang sebenarnya adalah kumpulan modem DSL. Setelah menghilangkan sinyal suara analog, DSLAM mengumpulkan sinyal-sinyal yang berasal dari end-user dan menyatukan menjadi sinyal tunggal dan bandwidth lebar, melalui proses multiplexing. Sinyal yang sudah disatukan ini disalurkan dengan kecepatan Mbps ke dalam kanal oleh peralatan switching backbone melalui jaringan akses (AN) yang biasa disebut network service provider (NSP). Sinyal yang dikirimkan melalui internet atau jaringan lain muncul kembali pada sentral telepon yang dituju, dimana DSLAM yang lain menunggu. DSLAM bersifat flexible dan dapat mendukung berbagai macam DSL yang terdapat dalam sebuah sentral telepon, yang juga menyediakan routing maupun penomoran IP secara dinamik untuk pelanggan (enduser). Jika tidak tersedia tempat di dalam MDF atau ternyata jarak antara sentral dengan pelanggan terlalu jauh maka solusinya dengan menggunakan mini DSLAM. Mini DSLAM ini dapat diletakkan pada RK yang terdapat di antara STO dengan pelanggan.

DSLAM terdiri dari:

a. Splitter – Low Pass Filter untuk melewatkan band suara dan high pass filter untuk melewatkan band ADSL.

b. Modul-modul pelanggan dapat berupa modul ADSL, SDSL, VDSL, dan lain-lain. Untuk layanan speedy dipergunakan modul ADSL. Modul ADSL di sisi DSLAM disebut ATU-C, sedangkan ADSL di sisi pelanggan disebut ATUR. ADSL Transceiver Unit – Central Office (ATU-C), melakukan multiplexing dasar, demultiplexing, receiving, fungsi kontrol system dan menyediakan interface untuk loop, jaringan transport serta sistem operasi dan switching. ADSL Transceiver Unit – Remote (ATU-R), menyediakan interface untuk distribusi lokal yang digunakan untuk layanan broadband melalui service module.


Fungsi DSLAM antara lain:

a. Sebagai filter voice dan data.

b. Sebagai modulator / demodulator DSL.

c. Sebagai multiplexer.
Diposting oleh Hadi Yudhitia
est sambungan antara Router ADSL ke DSLAM di sentral telepon Telkom merupakan titik paling kritis dalam semua proses instalasi dan konfigurasi Speedy. Tahapan ini adalah tahapan paling menentukan dan biasanya paling ringkih dari seluruh sambungan yang ada.

Tanyakan ke petugas Telkom jenis dari peralatan DSLAM di Sentral Telepon Telkom. Jaringan Speedy yang lama masih menggunakan DSLAM Alcatel biasanya membutuhkan parameter VPI / VCI 8/35, Protocol PPPoA, dan enkapsulasi LLC. Sementara, jaringan Speedy yang baru biasanya menggunakan DSLAM Hwahuei dengan protocol PPPoE, enkapsulasi LLC dan VPI/VCI yang berbeda-beda untuk setiap daerah.

Setelah beberapa saat router ADSL dinyalakan, cek lampu ADSL pada router ADSL, apakah tetap berkelip-kelip dan tidak konstan? Jika ini terjadi berarti router ADSL tidak berhasil melakukan sinkronisasi dengan DSLAM di sentral telepon Telkom. Masuk ke Web router ADSL, masuk ke WAN settings atau Internet setting -> PvC, untuk peralatan DSLAM Alcatel pastikan VPI / VCI 8/35, Protocol PPPoA, enkapsulasi LLC.

Pastikan router ADSL dapat mendeteksi kecepatan data, downstream (384Kbps atau 512Kbps) dan upstream (64Kbps). Tergantung jenis router ADSL yang digunakan, sebagian akan menampilkan pada menu utama, sebagian akan menampilkan pada bagian ADSL status, yang penting router ADSL harus berhasil mendeteksi sinyal data dari sentral telepon Telkom.

Cek kualitas sambungan, melalui parameter Noise Margin dan Attenuation. Memang tidak semua router ADSL akan menyediakan fasilitas untuk melihat noise margin & attenuation pada upstream / downstream. Biasanya informasi Noise Margin & Attenuation ada di bagian ADSL Status. Nilai noise margin & attenution dengan kondisi jaringan Telkom di Indonesia yang akan tampil kira-kira

Downstream noise margin 6-8dB (sebaiknya >10dB)
Downstream attenuation 40-44dB

Upstream noise margin 13-18dB
Upstream attenuation 62-64dB

Parameter yang fatal biasanya downstream noise margin yang sangat rendah, jika mendekati 0, kita harus memperbaiki sambungan-sambungan kabel telepon ke arah telkom karena noise terlalu tinggi.

Teknik menolong menaikan noise margin downstream yang lain adalah dengan menambahkan splitter / filter tambahan sebelum di masukan ke router ADSL.

Masalah yang paling pelik dan sering terjadi pada tahapan ini adalah kualitas router ADSL yang tidak baik, dan tidak sanggup beroperasi pada kondisi jaringan Telkom di Indonesia. Sebaiknya menggunakan router ADSL yang tahan banting yang mampu beroperasi di jaringan Telkom Indonesia. Beberapa yang dicoba dan berhasil dengan lumayan baik adalah.

Linksys modem ADSL
Tecom AR1031
SMC barricade smc7904bra
Thomson SpeedTouch 510
TP-LINK TD-8800
3COM 3CRWDR100A

Diantara router ADSL di atas, router TECOM dan TP-LINK yang termasuk kategori router ADSL yang harganya ekonomis.
Diposting oleh Hadi Yudhitia
DSLAM (Digital Subscriber Line Access Multiplexer), adalah piranti dalam jaringan komputer, yang diletakkan di kantor sentral telepon yang menerima sinyal dari koneksi banyak pelanggan DSL (Digital Subscriber Line)/ Sambungan Telepon, kemudian meneruskan ke backbone berkecepatan tinggi, menggunakan teknik multiplexing. Sesuai dengan spesifikasi produk dari vendor yang membuatnya, DSLAM multiplexer terhubung dengan line DSL dengan kombinasi Asyncrhonous Transfer Mode (ATM), Frame Relay atau Internet Protocol (IP). DSLAM dipergunakan oleh TELKOM dalam memberikan layanan ke pelanggan dengan kombinasi Sambungan DSL dengan teknologi backbone jaringan dengan ATM. Adapun gambar dari DSLAM itu sendiri dapat dilihat pada gambar berikut:

dslam.jpg

remote dslam.jpg

















DSLAM berfungsi untuk mengolah sinyal digital agar dapat mengoptimalkan bandwidth twisted pair untuk melewatkan data dengan kecepatan tinggi. DSLAM dilengkapi dengan POTS Splitter untuk memisahkan alokasi kanal data dan suara. DSLAM terdiri dari :

a. splitter – low pass filter untuk melewatkan band suara dan high pass filter untuk melewatkan band ADSL.

b. Modul-modul pelanggan dapat berupa modul ADSL ,SDSL,VDSL,dll. Untuk layanan speedy digunakan modul ADSL.

Fungsi DSLAM antara lain :

a. sebagai filter voice dan data

b. sebagai modulator dan demodulator DSL.

c. Sebagai multiplexer.

Cara Kerja DSLAM



Prinsip kerja DSLAM adalah dengan memisahkan frekuensi sinyal suara dari trafik kecepatan tinggi , serta mengontrol dan merutekan trafik Digital Subcriber line (xDSL) antara perangkat end-user , seperti router, modem, network interface card, dengan jaringan penyedia layanan. DSLAM menyalurkan data digital memasuki jaringan suara POTS ( Plain Ordinary Telephone Service) ketika mencapai di CO (Cental office). DSLAM mengalihkan kanal suara ( biasanya dengan menggunakan splitter POTS ) sehingga sinyal tersebut dapat dikirim melalui PSTN , dan kanal data yang sudah ada kemudian ditransmisikan melalui DSLAM yang sebenarnya adalah kumpulan modem DSL. Setelah menghilangkan sinyal suara analog , DSLAM mengumpulkan sinyal – sinyal yang berasal dari end-user dan menyatukannya menjadi sinyal tunggal dengan bandwidth yang lebar , melaui proses multiplexing. Sinyal yang sudah disatukan ini disalurkan dengan kecepatan Mbps ke dalam kanal oleh peralatan switching backbone melalui jaringan akses (AN) yang biasa disebut Network sevice Provider (NSP). Sinyal yang dikirimkan melalui internet atau jaringan lain muncul kembali pada CO yang dituju, dimana DSLAM yang lain menunggu. DSLAM bersifat fleksibel dan bias mendukung berbagai macam DSL yang terdapat dalam sebuah CO , dan juga bisa mendukung berbagai macam DSL yang terdapat dalam sebuah CO , dan juga bias mendukung berbagai protocol dan modulasi , seperti kedua macam modulasi yang digunakan yaitu CAP dan DMT , dan juga bias menyediakan routing maupun penomoran IP secara dinamik untuk pelanggan (end-user). Jika tidak tersedia tempat di dalam MDF atau ternyata jarak antara sentral dan pelanggan terlalu jauh , solusinya adalah dengan menggunakan Mini DSLAM. Mini DSLAM ini dapat diletakkan pada RK yang terdapat diantara sentral telephone dan pelanggan.



Parameter-parameter yang dibutuhkan untuk menentukan performansi DSLAM



Adapun parameter-parameter yang digunakan untuk menentukan performansi DSLAM

adalah sebagai berikut :

a. Throughput, yaitu kecepatan (rate) transfer data efektif, yang diukur dalam bps. Troughput juga mengacu pada banyaknya data yang dapat dikirimkan dalam suatu waktu. Hal ini sangat bergantung pada ketersediaan bandwidth pada jaringan.

b. Kecepatan upstream dan downstream, yaitu kecepatan saat melakukan upload dan download.

c. SNR (Signal to noise ratio), yaitu perbandingan puncak sinyal dengan noise yang diukur. Nilai SNR dipengaruhi oleh kekuatan signal dan besarnya noise. Secara kasar tanpa melihat nilai power signal dan noise, semakin besar nilai SNR maka kualitas yang didapat akan semakin baik (bisa jadi signalnya yang besar atau noisenya yang kecil).

d. Attenuation (dB), yaitu besarnya faktor redaman kabel. Kabel mempunyai velocity factor yang menyebabkan semakin panjang kabel maka loss-nya akan semakin besar. Setiap kabel memiliki nilai yang berbeda - beda tergantung dari bahan dan luas penampang kabel. Dengan begitu, semakin kecil nilai Line Attenuation maka akan semakin baik.
Diposting oleh Hadi Yudhitia
String dalam bahasa C direpresentasikan dalam bentuk array of character (char string[30]), nah bagaimana cara membentuk array of String? Tentu saja dengan membuat array of array of character, contohnya : char arrString[30][100] yang dapat dikatakan terdapat 30 string mulai dari indeks 0 – 29 yang setiap stringnya memiliki panjang tidak lebih dari 100 character. Kemudian muncul pertanyaan bagaimana cara mengurutkan sejumlah nama yang terdapat dalam array secara ascending ataupun descending. Caranya tentu mudah saja, sama seperti melakukan sorting dengan menggunakan salah satu metode sorting dalam array of integer namum dalam membandingkan antar string-nya dapat menggunakan salah satu fungsi dari library string.h, yaitu : strcmp. Bagaimana cara menukar / swap antar string? Jika dalam penukaran dua nilai integer biasanya digunakan :


int temp = a;
a = b;
b = temp;

Maka pada swap string hanya perlu menukar pointer antara dua buah string dalam array of string.

Dinamis yang dimaksud adalah program melakukan alokasi memori dinamis sehingga program hanya mengalokasikan memori seperti yang diinginkan oleh user. Untuk alokasi memori dinamis tersebut, digunakan fungsi malloc yang terdapat dalam library stdlib.h
Untuk lebih dapat memahami sorting string dinamis, di bawah ini disertakan source code program sederhana dengan menggunakan metode selection sort secara rekursif. Ingat ‘Practice Makes Perfect ’ . Semoga bermanfaat :D

Untuk lebih lengkapnya, silahkan download : Sorting String Dinamis dalam Bahasa C
Ditulis dalam Bahasa C. Tag: Bahasa C. 2 Komentar »
Latihan Debugging Logic Error dalam Bahasa C – Reverse
Desember 24, 2009 — Jeffrey Hermanto

Reverse
Sebuah fungsi balik dan tambah dimulai dengan sebuah angka, membaliknya, kemudian menambahkannya ke angka yang asli. Jika ternyata hasilnya bukan sebuah palindrome (angka yang sama jika dibaca dari kiri maupun dari kanan), kita mengulanginya sampai hasilnya palindrome.

Sebagai contoh, jika kita memulai dengan 195 sebagai angka awal, kita akan mendapatkan 9339 sebagai hasilnya setelah 4 kali penambahan.

195 + 591 = 786
786 + 678 = 1473
1473 + 3741 = 5214
5214 + 4125 = 9339
Metode ini akan menghasilkan bilangan palindrome dalam beberapa langkah untuk hampir seluruh bilangan bulat positif. Namun ada beberapa pengecualian. 196 merupakan bilangan yang tidak akan menghasilkan palindrome. Buatlah sebuah program yang mengambil inputan berupa angka dan hasilnya adalah sebuah palindrome dan jumlah iterasi/perulangan yang diperlukan. Diasumsikan batas perulangan maskimum 1000 kali, dan sebuah palindrome tidak lebih dari 4.294.967.295.

Input
Baris pertama berisi n (0 < n ≤ 100) yang menyatakan jumlah kasus, sedangkan n baris selanjutnya berisi sebuah bilangan bulat p yang palindromenya Anda cari.

Output
Untuk setiap kasus, tampilkan jumlah iterasi minimum untuk mendapatkan palindrome, sebuah spasi, kemudian palindrome yang didapat.

Sample Input
3
195
265
750

Sample Output
4 9339
5 45254
3 6666
Diposting oleh Hadi Yudhitia
C K&R

Pada tahun 1978, Dennis Ritchie dan Brian Kernighan menerbitkan edisi pertama dari buku yang berjudul The C Programming Language. Buku ini hingga sekarang diakui sebagai kitab suci bahasa C dan merupakan referensi utama seorang pemrogram yang ingin mengetahui tentang bahasa C, terutama karena begitu lengkapnya cakupan buku ini tentang bahasa C dan mudahnya program yang dicontohkan dalam buku ini.

Versi bahasa C yang ditampilkan dalam buku ini kemudian dikenal dalam kalangan pemrogram sebagai C K&R. Pada buku The C Programming Language edisi kedua kemudian melingkupi ANSI C yang diperkenalkan belakangan.
[sunting] ANSI C & ISO C

Pada perkembangannya, muncul versi-versi C lain yang pada akhirnya membuat kebingungan di kalangan pemrogram. Karena itu, pada tahun 1983, American National Standards Institute (ANSI) membuat sebuah komite untuk membuat sebuah versi standar dari bahasa C. Setelah melalui proses yang panjang dan sengit, pada tahun 1989, telah berhasil disahkan standar yang dinamakan ANSI X3.159-1989, versi ini seringkali dinamakan ANSI C, atau kadang-kadang C89.

Pada 1990, versi ANSI C diadopsi oleh Organization for Standardization (ISO) dengan sedikit perubahan dengan nama ISO/IEC 9899:1990. Versi ini seringkali dinamakan ISO C atau C90. Karena versi ANSI C dan ISO C hanya memiliki sedikit perbedaan, pemanggilan C90 dan C89 merujuk pada bahasa yang sama.
[sunting] C99

Versi C99 dibuat oleh ISO C pada tahun 1999. Versi ini dimaksudkan terutama untuk memperbanyak dukungan kepada pemrograman berorientasi objek, terutama setelah C++, yang dibuat berdasarkan bahasa ini mendapat tempat yang istimewa di kalangan pemrogram
[sunting] Pustaka

Pustaka (seringkali dirujuk sebagai library), adalah kumpulan fungsi-fungsi yang terkandung dalam satu file, Setiap file pustaka mempunyai satu Header file yang menyimpan cetak biru dari fungsi-fungsi yang terkandung dalam file pustaka.

Bahasa C seringkali dipakai untuk membuat file-file pustaka yang menyimpan fungsi-fungsi tertentu, dikarenakan C dapat dikompile menjadi bahasa mesin yang sangat cepat dan kecil ukurannya, kemudian bahasa pemrograman lain seperti Python yang akan menciptakan antar-muka dari fungsi-fungsi yang dikandungnya.

Pustaka yang paling sering dipakai adalah Pustaka Standar C, yang berisi fungsi-fungsi standar yang berasal dari ANSI C. Pustaka standar ini sekarang telah terkandung dalam hampir setiap kompiler C yang dipakai.
[sunting] Hello, World!

Berikut ini adalah contoh program sederhana yang akan mencetak kalimat "Hello, World!" dengan menggunakan pustaka stdio.h (ANSI C):

#include

int main(void) {
printf("Hello, World!\n");
return 0;
Diposting oleh Hadi Yudhitia
Sulit menguraikan perubahan kode C atau C++ jika ditulis dalam Ruby karena perbedaan diantara mereka besar. Satu alasannya adalah Ruby melakukan banyak hal untuk anda. Ini berbeda dengan kenyataan bahwa di dalam C anda harus melakukan segalanya sendiri. Tujuan Ruby adalah untuk membuat pekerjaan programmer lebih gampang dengan cara melakukan hal-hal yang bisa diotomatisasi.

Ruby disebut dynamically typed language, berbeda dengan C yang statically typed. Perbedaan paling terlihat adalah: pada dynamically typed language sebuah variable bisa menunjuk ke obyek-obyek dengan tipe-tipe berlainan.

Misalnya, kalau pada bahasa C++ variabel siapa hanya bisa merujuk pada obyek bertipe Manusia (dan turunannya), pada bahasa Ruby variabel tersebut (dan variabel apa pun) bisa merujuk pada obyek bertipe Manusia, Pegawai, Perempuan, atau obyek yang lain, meski pun objek tersebut bukan turunan dari obyek Manusia.

Implementasi Ruby yang sekarang menjalankan kode Ruby lebih lambat daripada implementasi C atau C++ menjalankan C atau C++ code yang setara. Tetapi, Anda akan terkejut betapa cepat dan gampangnya menyelesaikan sebuah program dengan Ruby dan juga betapa sedikitnya kode yang Anda harus tulis. Ruby jauh lebih jelas daripada C++—anda pasti akan suka.

Lagipula, Anda bisa menulis extension module untuk Ruby dengan C. Module tersebut bisa dipakai dari Ruby code sama seperti module-module lainnya. Dengan cara ini, bagian kode Ruby Anda yang sensitif terhadap kecepatan eksekusi bisa diganti dengan C.

Dan tentu saja Ruby sendiri ditulis dengan C.
Contoh Source Code

Berikut ini adalah contoh program untuk menjumlahkan dua angka (diinputkan dari keyboard) di C:

#include

int main(int argc, char *argv[])
{
int a, b, c;

scanf("%d", &a);
scanf("%d", &b);

c = a + b;
printf("%d\n", c);
}

Anda dapat menuliskan program tersebut di Ruby sebagai berikut:

a = gets.to_i
b = gets.to_i
c = a + b
puts c

Sumber: A Very Quick Comparison of Popular Languages for Teaching Computer Programming
Kemiripan Ruby dengan C

Seperti di C, di Ruby,...

* Anda bisa memprogram secara prosedural jika Anda suka (tetapi di balik layar sebenarnya kode Ruby Anda tetap berorientasi obyek).
* Kebanyakan operator sama (termasuk operator compound assignment dan bitwise). Tetapi Ruby tidak punya ++ atau --.
* Anda punya __FILE__ dan __LINE__.
* Anda juga punya konstanta, tetapi tidak ada keyword khusus const. Konstanta menggunakan pengaturan penamaan, yaitu variabel yang diawali dengan huruf kapital adalah untuk konstanta. Misalnya NAMA_PERUSAHAAN.
* String dapat menggunakan petik tunggal (tanpa interpolasi) maupun petik ganda (dengan interpolasi).
* String bersifat mutable yaitu isinya bisa berubah meskipun objeknya sendiri tidak berubah.
* Sama seperti man, Anda juga bisa membaca dokumentasi langsung di terminal Anda dengan menggunakan perintah ri.
* Tersedia command-line debugger.

Kemiripan Ruby dengan C++

Sama seperti di C++, di Ruby,...

* Anda punya banyak operator-operator yang sama (bahkan ::). Operator << juga sering digunakan untuk append elemen ke list. Tetapi perlu dicatat: di Ruby Anda tidak akan pernah menggunakan ->, di Ruby selalu menggunakan ..
* Ada public, private dan protected. Namun perlu diperhatikan bahwa arti semantiknya mirip, namun tidak sepenuhnya sama dengan penggunaan C++.
* Sintaks inheritance (penurunan kelas) sama satu karakter juga, tetapi menggunakan < bukan :.
* Anda bisa menaruh kode Anda dalam “module”, mirip kalau di C++ Anda menggunakan namespace.
* Ada juga Exception yang kurang lebih sama tetapi berbeda keyword.

Perbedaan-Perbedaan Ruby dengan C

Tidak seperti C, di Ruby,...

* Obyek bersifat strongly typed (dan nama-nama variabel tidak punya type sama sekali). Obyek bisa berubah type, tapi Ruby akan selalu mengecek type obyek pada saat melakukan sesuatu. Bila Anda memanggil method atau instance variable yang tidak ada, Ruby akan memberikan pesan kesalahan.
* Tidak ada macro ataupun preprocessor. Tidak ada cast. Tidak ada pointer (juga tidak ada pointer arithmetic). Tidak ada typedef@s, @sizeof, maupun enum.
* Tidak ada file-file header. Anda cukup definisikan function Anda (biasanya disebut method di Ruby) dan kelas pada file source code utama.
* Tidak ada #define. Cukup gunakan konstanta.
* Di Ruby 1.8, kode diinterpretasi pada saat run-time daripada di_compile_ ke machine-code ataupun ke byte-code.
* Semua variabel ada di heap. Lebih jauh, Anda tidak perlu membebaskan variabel, sudah ada garbage collector untuk itu.
* Argument-argument di metode (atau function) di pass by reference, bukan by value.
* require 'foo' bukan #include atau #include "foo".
* Anda tidak bisa drop down ke assembly.
* Tidak pakai semicolon (titik koma ;) di tiap akhir baris kode.
* Tidak perlu pakai buka dan tutup kurung untuk if dan while untuk ekspresi kondisi.
* Buka dan tutup kurung untuk pemanggilan metode (atau function) boleh dipakai boleh juga tidak (opsional).
* Biasanya Anda tidak menggunakan kurung kurawal (brace) untuk mengakhiri banyak baris (seperti perulangan while), karena Anda menggunakan keyword end.
* Keyword do digunakan untuk “blok”. Jadi tidak ada “do statement” seperti di C.
* Istilah “blok” berbeda dengan C. Blok adalah untuk blok kode yang Anda asosiasikan dengan pemanggilan metode sehingga body metode bisa memanggil blok saat kode dijalankan.
* Tidak ada deklarasi variabel. Anda langsung bisa assign nama baru ke variabel disaat Anda memerlukan variabel.
* Ketika dites, hanya false dan nil yang dianggap value false. Semuanya selain itu adalah true (termasuk 0, 0.0 dan "0").
* Tidak ada char, yang ada string 1-letter.
* String tidak diakhiri dengan null byte. Pada Ruby 1.8 elemen pembentuk String merupakan byte, dan Ruby belum membedakan antara string single-byte dan multibyte (misalnya encoding Unicode, dsb.), namun ada beberapa library yang berguna untuk mendukung aplikasi internasional di Ruby.
* Array literal masuk dalam kurung kotak (bracket), bukan dalam kurung kurawal (brace).
* Array secara otomatis membesar dan semakin membesar ketika Anda menambahkan elemen-elemen lagi ke array.
* Jika Anda menambahkan dua array, Anda kembali dengan array baru yang membesar (tentu, dialokasikan di heap) daripada melakukan aritmetik pointer.
* Pada sebagian besar kasus, semua hal adalah berupa expression (misalnya, statemen while sebenarnya menghasilkan sebuah rvalue).

Perbedaan-perbedaan Ruby dengan C++

Tidak seperti C++, di Ruby,...

* Tidak ada reference secara eksplisit. Jadi setiap variabel di Ruby sudah otomatis dereference obyek tersebut. Apabila di C++ ada perbedaan antara orang.nama dengan orang->nama, di Ruby hanya ada orang.nama. Sintaks &orang juga tidak diperlukan di Ruby.
* Obyek strongly tetapi dynamically typed. Jadi runtime-lah yang menentukan at runtime (disaat runtime) bahwa suatu pemanggilan metode berjalan atau tidak.
* Konstruktor dinamakan initialize ketimbang nama kelas.
* Semua metode selalu virtual.
* Nama variabel (static) kelas selalu diawali dengan @ (seperti @total_widget).
* Anda tidak bisa langsung mengakses variabel member, semua akses ke variabel member public (kalau di Ruby dikenal sebagai atribut) dipanggil lewat metode.
* Pakai self, bukan this.
* Beberapa metode diakhiri dengan ’?’ atau ’!’. Sebetulnya tanda tanya dan tanda seru tersebut juga merupakan bagian dari nama metode.
* Tidak ada multiple inheritance. Tetapi Ruby punya “mixin” (jadi Anda bisa “inherit” / menurunkan semua metode instan dari module).
* Ada pengaturan penamaan (mis. nama kelas selalu diawali dengan huruf kapital, nama variabel lokal diawali dengan huruf kecil).
* Buka dan tutup kurung untuk pemanggilan metode boleh dipakai boleh juga tidak (opsional).
* Anda bisa membuka lagi kelas kapan saja dan menambahkan metode-metode ke kelas tersebut.
* Tidak perlu C++ template (karena Anda bisa assign obyek apa saja ke suatu variabel, dan type akan diketahui ketika runtime). Juga tidak ada casting.
* Iterasi dilakukan dengan sedikit berbeda. Di Ruby, Anda tidak menggunakan obyek iterator terpisah (seperti vector::const_iterator iter) tetapi obyek Anda cukup melakukan mixin module Enumerator dan memanggil metode seperti obyek_saya.each.
* Hanya ada dua container type, yaitu Array dan Hash.
* Tidak ada konversi tipe dan typecasting. Dengan Ruby, Anda akan mengetahui kenapa hal tersebut tidak diperlukan.
* Mendukung multithreading, tetapi di Ruby 1.8 masih “green thread” (diimplementasikan hanya dengan interpreter) yang didukung.
* Library unit testing sudah standar bawaan di Ruby.
Diposting oleh Hadi Yudhitia
Contoh program sederhana C++ untuk hello world dengan menggunakan Pustaka Dasar C++ dapat dilihat di bawah ini:

#include // provides std::cout

int main()
{
std::cout << "Hello, world!\n";
return 0;
}

[sunting] Kata yang dipesan
[sunting] Kelompok pertama

C++ mempunyai 32 buah kata yang dipesan (reserved words). Kata kunci kelompok pertama merupakan turunan dari bahasa C, di antaranya:
auto const double float int short struct unsigned
break continue else for long signed switch void
case default enum goto register sizeof typedef volatile
char do extern if return static union while
[sunting] Kelompok kedua

Kata yang dipesan kelompok kedua berjumlah 30. Kata-kata ini adalah baru dan hanya ada di bahasa C++.
asm dynamic_cast namespace reinterpret_cast try
bool explicit new static_cast typeid
catch false operator template typename
class friend private this using
const_cast inline public throw virtual
delete mutable protected true wchar_t

Kata-kata yang dipesan tersebut di atas tidak boleh dipakai sebagai nama variable, class, enum, macro, dan struct.
[sunting] Tipe data dasar

Untuk menyimpan suatu variabel diperlukan tempat khusus di dalam memori komputer. Besar dan tipe dari variabel-variabel di dalam standar program C++ dispesifikasikan sebagai berikut.
Nama Keterangan Ukuran Jangkauan
char Abjad/karakter atau untuk bilangan bulat kecil 1 byte signed: -128 to 127

unsigned: 0 to 255
short int (short) Bilangan bulat dengan jangkauan pendek 2 byte signed: -32768 to 32767

unsigned: 0 to 65535
int Bilangan bulat 4 byte signed: -2147483648 to 2147483647

unsigned: 0 to 4294967295
long int (long) Integer dengan jangkauan panjang 4 byte signed: -2147483648 to 2147483647

unsigned: 0 to 4294967295
bool Boolean, dapat bernilai benar atau salah (true or false) i byte true or false
float Angka dengan titik mengambang (bilangan cacah) 4 byte 3.4e +/- 38 (7 digit)
double Bilangan cacah dengan ketelitian ganda 8 byte 1.7e +/- 308 (15 digits)
long double Bilangan cacah dengan ketelitian ganda panjang 8 byte 1.7e +/- 308 (15 digits)
wchar_t Karakter lebar, biasa dipakai untuk Unicode karakter 2 byte 1 karakter lebar
Diposting oleh Hadi Yudhitia