Kamis, 30 Januari 2014

Gambaran Umum Bahasa Pemrograman X++

X + + dirancang untuk menjadi superset dari Java dengan fitur akses data yang kuat. Dalam beberapa hal fitur akses data yang seperti LINQ, tapi jauh lebih tua dan dalam beberapa hal lebih kuat. Misalnya, X + + mendukung set berbasis manipulasi data melalui insert_recordset, update_recordset, dan kata kunci delete_from. Peta ini untuk Insert, Update, dan Delete pernyataan dalam SQL. Sementara ini menawarkan performa terbaik, Anda juga dapat menggunakan pendekatan hybrid yang menggabungkan set-berbasis akses dengan pernyataan imperative-style.

Pernyataan pada kode di atas  " myTable.AmountMST + = 100 ; " sebenarnya operasi berbasis set yang akan mempengaruhi semua record yang cocok dengan klausa sebelumnya.

Perbedaan lain adalah bahwa tidak seperti LINQ , yang bergantung pada objek proxy yang dibuat dengan ORM , X + + memiliki real-time kompilasi akses ke metadata database . Hal ini memungkinkan untuk pemeriksaan
statis yang lebih ketat  daripada C # atau VB.

Seperti banyak bahasa pemrograman , pada dasarnya  X++ stack yang eksklusif . IDE , compiler , Format p -code , dan penerjemah yang khusus untuk IBM Axapta , produk yang akhirnya akan menjadi Microsoft Dynamics AX . X + + hampir selalu ditulis untuk instalasi spesifik Axapta , x++ bisa mengikat compiler langsung ke database . Ini berarti bahwa ketika seseorang mengakakses kelas tabel Pelanggan mereka benar-benar mengakses tabel Pelanggan .

Dimulai dengan Dynamics AX 2009 , X + + memperoleh compiler kedua dibangun di atas . NET stack. Hal ini menyebabkan beberapa masalah yang menarik . Seperti versi Visual Basic , X + + digunakan pengumpulan deterministik . Sayangnya pengumpul itu mengakibatkan beberapa masalah kinerja yang parah. Setelah itu mereka memutuskan untuk memanfaatkan salah satu di . NET runtime .

Pindah dari runtime eksklusif untuk . NET menimbulkan tantangan tersendiri . The X + + tim tidak berpikir mereka bisa mendapatkan dana untuk menulis ulang compiler dari end- to-end . Jadi, mereka mulai pada tingkat p -code . Compiler yang sama digunakan , tapi
mereka malah menafsirkan p - kode kemudian menjalankan alat bantu yang mengkonversi ke kode IL . Keduanya  p - kode dan IL adalah tumpukan berbasis bahasa sehingga hasil terjemahan mengherankan .

Selain pengumpulan deterministik , X + + juga kehilangan fitur client-server yang menarik . Seperti DCOM atau . NET Remoting , fitur di X + + bisa hidup pada kedua server dan klien pada saat yang sama . Setiap metode client - side panggilan pada salah satu kelas ini kemudian akan melakukan perjalanan melintasi eksekusi , memungkinkan untuk beberapa desain arsitektur yang menarik . Sayangnya  desain stateful ini  skalanya
tidak baik sehingga X + + tim ingin berhenti menggunakannya cara itu.

Di beberapa kasus X + + memiliki kelemahan dibandingkan Jawa . Sebagai contoh, dalam sebuah kondisi " if" pernyataan tidak perlu menjadi Boolean : bilangan bulat non - nol dan non -null dievaluasi sebagai benar . Operator = akan mencoba untuk melakukan konversi implisit bahkan jika kehilangan data. Casting dari tipe dasar ke tipe turunan juga implisit sebelum AX 2012 .

Penanganan string di X + + berbeda juga. String dapat bekerja dengan baik dengan tanda dan perbandingan tunggal atau double- kutipan yang tidak sensitif . X + + tidak memiliki tipe data char, tapi satu dapat mendeklarasikan string tetap ukuran 1 . Seperti kebanyakan bahasa berbasis - c , X + + tidak akan membuat kesalahan dengan menggunakan operator tambahan untuk penggabungan . Seperti C # , string literal akan menggunakan backslash ( ) untuk escape sequence kecuali string diawali dengan tanda (@ ) .

Variabel lokal harus dideklarasikan sebelum pernyataan di X + + metode . Ini termasuk variabel lingkaran , membuat sintaks yang sedikit berbeda dari bahasa berbasis C lainnya . Sementara pernyataan yang sama dan mendukung terus dan istirahat .

Pernyataan switch di X + + mendukung beberapa nilai dan ekspresi untuk kasus-kasus . Setiap ekspresi konstan atau pada kasus tertentu dipisahkan dengan koma. X + + tidak mendukung rentang ( misalnya kasus > 5 ) , menempatkannya di antara VB dan C # dalam kurva daya .

X + + memiliki kedua enumerator dan iterator . Iterator di X + + adalah seperti sebuah iterator di Jawa , tidak hanya itu x++ dapat menavigasi  juga dapat menambah dan menghapus item sebagai kelanjutannya . X + + pencacah adalah seperti IEnumerator dalam . NET , adalah pandangan read-only yang akan mengotori jika koleksi dimodifikasi .

Penanganan kesalahan yang sebagian besar didasarkan pada penanganan eksepsi terstruktur ditemukan di Jawa dan C # dengan tiga perbedaan penting . Sebuah X + + pengecualian adalah benar-benar hanya kode kesalahan numerik sehingga tidak memiliki informasi yang kaya ditemukan dalam bahasa-bahasa tersebut . X + + juga memiliki pernyataan retry , yang secara efektif goto yang melompat ke awal dari blok try terdekat . Ini bisa sangat berguna untuk menangani kesalahan intermiten seperti kunci mati . X + + tidak memiliki akhirnya blok , yang bisa menjadi masalah mengingat bahwa itu tidak lagi memiliki pengumpulan sampah deterministik baik .

X + + mendukung warisan dan metode utama , tetapi tidak overloading . Untuk mensimulasikan overloading kita harus menggunakan parameter opsional . Seperti Jawa , metode yang virtual secara default , tetapi dapat disegel menggunakan " akhir " kata kunci .


Source: http://sixghadesign.vv.si

Tidak ada komentar:

Posting Komentar