Friday, August 13, 2010

2520 Vista Avenue
Olympia Washington 98501
Ph. 22-16789, email : beare_21@yahoo.com
April 19th, 2010
Mr. Bob Trimm
Personal Manajer
Importers Inc.
587 Lily road

Dera Mr. Trimm:

I am writing to you in response to your advertisement for a legal assistant specializing in port regulatory law, which appeared in the Seattle times on Sunday, June 15th. As you can see from my enclosed resume, my experience and qualification match this position requirements.
I especially would like to point out that I graduated cum laude from the university of Tacoma and was hired directly upon graduation due to my expertise in port authority regulation.
During the four years that I worked for Shoereman and Co., I furthered deepened my knowledge of fast changing regulatory laws in our state, my employer also thought highly enough of my abilities to promote me to head legal researches after my first year of employment.
I look forward to an opportunity to personally discuss the position with you.
Sincerely,

Kenneth Beare
Enclosure
-----------------------------------------------------------------------------------------------------------------------------------------
Document Makers
2398 Red Street
Salem, MA 34588
March 10th, 2010
Thomas R. Smith
Drivers Co.
3489 Green Ave.
Olympia, W 98502

Dear Mr. Smith:

I was very disappointed to read your letter of August 17th dealing with the issue of incorrectly produced publicity leaflets. As someone who values your business, I have already begun to find a solution to resolve this problem.
My top photographer will call you to arrange an appointment at your earliest possible convenience to re-take photos in full color also we will deduct another 15 percents of the bill for the misunderstanding.
Thank you for your patience

Sincerely,

Richard Brown
President

Selengkapnya...

Friday, August 6, 2010

0 Kopean Komunikasi Data

PROTOKOL
Kumpulan dari beberapa aturan yang berhubungan dengan komunikasi data  antara beberapa alat komunikasi supaya komunikasi data dapat dilakukan dengan benar. Protocol adalah yang menspesifikasikan secara detail bagaimana komputer berinteraksi, termasuk didalamnya format pesan yang mereka tukar dan bagaimana kesalahan ditangani. Hubungan telekomunikasi mencerminkan banyak aspek dari protokol dalam arti diplomatik, beberapa sinyal  diubah dengan mengirim dan menerima perangkat, misalnya, diistilahkan dengan berjabat tangan dan berkenalan. Tiga aspek utama komunikasi yang diperhatikan oleh protokol adalah: bagaimana data direpresentasikan dan dikodekan, bagaimana ditransmisikan, dan bagaimana kesalahan dan kegagalan diketahui dan ditangani.


SMTP
SMTP (Simple Mail Transport Protocol) mendefinisikan cara bagaimana suatu Message Transport Agent (MTA) saling menukar e-mail dengan MTA yang lain. Prosesnya dapat dijelaskan sebagai berikut: pemakai (user) berinteraksi dengan User Agent (UA), yang kemudian pada gilirannya UA ini akan berinteraksi dengan MTA. MTA inilah yang kemudian akan meneruskan e-mail  kepada MTA lainnya, dan juga MTA ini akan menerima pesan dari MTA lain untuk diserahkan kepada pemakai (user) melalui User Agent (UA).

E-mail client membuka sesi dengan melakukan inisialisasi sirkuit TCP/IP ke port 25, server SMTP kemudian memberikan respon dengan sebuah nomor ID dan status. Jika server tersedia untuk mentransfer pesan maka client dapat meneruskan sesi dan mentransfer pesan. Setelah koneksi TCP diinisialisasikan kemudian e-mail client mengirim perintah "HELO" bersama-sama dengan nama domainnya, hal ini bertujuan untuk memperkenalkan identitasnya kepada server sehingga bila server menerima perintah ini maka server akan menjawab bersama-sama dengan nama domainnya. Kemudian e-mail client akan mengirim perintah "MAIL FROM:". Selanjutnya e-mail client akan mengirimkan perintah "RCPT TO:".

Bila seluruh alamat e-mail dari penerima telah dikirim dan diterima oleh server, client kemudian mengirim perintah "DATA". Pesan tersebut akan dikirim oleh client jika server telah memberikan konfirmasi yang menyatakan siap untuk menerima data dari pesan e-mail tersebut. Bila telah selesai, selanjutnya client akan mengirim perintah terakhir yang akan menunjukkan bahwa pesan telah dikirim yaitu berupa titik("."), setelah server mengirimkan jawaban yang menyatakan bahwa pesan telah diterima maka client akan diberikan kesempatan untuk mengirim pesan lagi atau mengakhiri sesi tersebut yaitu dengan perintah "QUIT".


FTP
File Transfer Protocol (FTP) adalah suatu protokol yang berfungsi untuk tukar-menukar file dalam suatu network yang menggunakan TCP koneksi bukan UDP.

Dua hal yang penting dalam FTP adalah FTP Server dan FTP Client.
FTP server adalah suatu server yang menjalankan software yang berfungsi untuk memberikan layanan tukar menukar file dimana server tersebut selalu siap memberikan layanan FTP apabila mendapat permintaan (request) dari FTP client.
FTP client adalah computer yang merequest koneksi ke FTP server untuk tujuan tukar menukar file. Setelah terhubung dengan FTP server, maka client dapat men-download, meng-upload, merename, men-delete, dll sesuai dengan permission yang diberikan oleh FTP server.
Tujuan dari FTP server adalah sebagai berikut :
• Untuk tujuan sharing data
• Untuk menyediakan indirect atau implicit remote computer
• Untuk menyediakan tempat penyimpanan bagi user
• Untuk menyediakan transfer data yang reliable dan efisien


HTTP
HTTP Singkatan dari Hypertext Transfer Protocol, yang mana adalah suatu protokol yang digunakan oleh World Wide Web. HTTP mendefinisikan bagaimana suatu pesan bisa diformat dan dikirimkan dari server ke client. HTTP juga mengatur aksi-aksi apa saja yang harus dilakukan oleh web server dan juga web browser sebagai respon atas perintah-perintah yang ada pada protokol HTTP ini. Sebagai contoh, ketika Anda mengetikkan suatu alamat atau URL pada internet browser Anda, maka sebenarnya web browser akan mengirimkan perintah HTTP ke web server. Web server kemudian akan menerima perintah ini dan melakukan aktivitas sesuai dengan perintah yang diminta oleh web browser (misalnya akses ke database, file, e-mail dan lain sebagainya). Hasil aktivitas tadi akan dikirimkan kembali ke web browser untuk ditampilkan kepada pengguna.


OSI LAYER
Model referensi jaringan terbuka OSI atau OSI Reference Model for open networking adalah sebuah model arsitektural jaringan yang dikembangkan oleh badan International Organization for Standardization (ISO) di Eropa pada tahun 1977. OSI sendiri merupakan singkatan dari Open System Interconnection. Model ini disebut juga dengan model "Model tujuh lapis OSI" (OSI seven layer model).

7
Application layer
Berfungsi sebagai antarmuka dengan aplikasi dengan fungsionalitas jaringan, mengatur bagaimana aplikasi dapat mengakses jaringan, dan kemudian membuat pesan-pesan kesalahan. Protokol yang berada dalam lapisan ini adalah HTTP, FTP, SMTP, dan NFS.

6
Presentation layer
Berfungsi untuk mentranslasikan data yang hendak ditransmisikan oleh aplikasi ke dalam format yang dapat ditransmisikan melalui jaringan. Protokol yang berada dalam level ini adalah perangkat lunak redirektor (redirector software), seperti layanan Workstation (dalam Windows NT) dan juga Network shell (semacam Virtual Network Computing (VNC) atau Remote Desktop Protocol (RDP)).

5
Session layer     Berfungsi untuk mendefinisikan bagaimana koneksi dapat dibuat, dipelihara, atau dihancurkan. Selain itu, di level ini juga dilakukan resolusi nama.

4
Transport layer
Berfungsi untuk memecah data ke dalam paket-paket data serta memberikan nomor urut ke paket-paket tersebut sehingga dapat disusun kembali pada sisi tujuan setelah diterima. Selain itu, pada level ini juga membuat sebuah tanda bahwa paket diterima dengan sukses (acknowledgement), dan mentransmisikan ulang terhadp paket-paket yang hilang di tengah jalan.

3
Network layer
Berfungsi untuk mendefinisikan alamat-alamat IP, membuat header untuk paket-paket, dan kemudian melakukan routing melalui internetworking dengan menggunakan router dan switch layer-3.
2
Data-link layer
Befungsi untuk menentukan bagaimana bit-bit data dikelompokkan menjadi format yang disebut sebagai frame. Selain itu, pada level ini terjadi koreksi kesalahan, flow control, pengalamatan perangkat keras (seperti halnya Media Access Control Address (MAC Address)), dan menetukan bagaimana perangkat-perangkat jaringan seperti hub, bridge, repeater, dan switch layer 2 beroperasi. Spesifikasi IEEE 802, membagi level ini menjadi dua level anak, yaitu lapisan Logical Link Control (LLC) dan lapisan Media Access Control (MAC).

1
Physical layer
Berfungsi untuk mendefinisikan media transmisi jaringan, metode pensinyalan, sinkronisasi bit, arsitektur jaringan (seperti halnya Ethernet atau Token Ring), topologi jaringan dan pengabelan. Selain itu, level ini juga mendefinisikan bagaimana Network Interface Card (NIC) dapat berinteraksi dengan media kabel atau radio.




PERBEDAAN OSI & TCP


Dari gambar, dapat dilihat beberapa perbedaan OSI Layer dengan TCP/IP Layer yang aku simpulkan menjadi 5 buah perbedaan.

1. OSI layer memiliki 7 buah layer, dan TCP/IP hanya memiliki 4 Layer

2. 3 Layer teratas pada OSI layer, yaitu application, presentation, dan session direpresentasikan kedalam 1 lapisan Layer TCP/IP, yaitu layer application.

3. Layer Network pada OSI Layer direpresentasikan sebagai Layer Internet pada TCP/IP Layer, namun fungsi keduanya masih tetap sama.

4. Layer Network Access pada TCP/IP menggabungkan fungsi dari Layer DataLink dan Physical pada OSI Layer, dengan kata lain, Layer Network Acces merupakan representasi dari kedua layer paling bawah dari OSI Layer, yaitu DataLink dan Physical.

5. TCP/IP layer merupakan “Protocol Spesific”, sedangkan OSI Layer adalah “Protocol Independen”

itulah sekilas perbedaan diantara keduanya. Aku bedakan berdasarkan pola pikir aku yg masih cetek, hehe.

Kritik dan saran, ditunggu ya.. Kalo ada perbedaan lain dari  OSI Layer dengan TCP/IP Layer, silahkan anda tuliskan di kolom komentar. Pasti akan lebih berguna. Trimakasih.



PENGERTIAN PORT
Dalam protokol jaringan TCP/IP, sebuah port adalah mekanisme yang mengizinkan sebuah komputer untuk mendukung beberapa sesi koneksi dengan komputer lainnya dan program di dalam jaringan. Port dapat mengidentifikasikan aplikasi dan layanan yang menggunakan koneksi di dalam jaringan TCP/IP. Sehingga, port juga mengidentifikasikan sebuah proses tertentu di mana sebuah server dapat memberikan sebuah layanan kepada klien atau bagaimana sebuah klien dapat mengakses sebuah layanan yang ada dalam server. Port dapat dikenali dengan angka 16-Bit (dua byte) yang disebut dengan Port Number dan diklasifikasikan dengan jenis protokol transport apa yang digunakan, ke dalam Port TCP dan Port UDP. Karena memiliki angka 16-bit, maka total maksimum jumlah port untuk setiap protokol transport yang digunakan adalah 65536 buah.

Port Logika ini di golongkan 3 jenis berdasarkan range dan klasifikasinya-nya yaitu:

1. Port umum (well known port)
port Pada kelas ini memiliki range dari 0-1023, port pada range ini kebanyakan dipakai oleh root,atau oleh program yang dijalankan oleh user,seperti ftp(21),ssh(22),telnet(23),http(80),jadi mislanya bila kita sedang browsing maka kita mengakses port 80 pada situs yang kita akses(http).

2. Port Terdaftar (Registered Ports)
memiliki range dari 1024-49151, port pada range ini kebanyakan digunakan oleh Networking utlities seperti Browser, Email Client, Messenger Utilities untuk berkomunikasi dengan remote
server. Biasanya Networking utlites akan membuka secara acak port pada range ini untuk terhubung dgn remote server. Port number pada range inilah yang membuat kita dapat melakukan surfing di internet,melakukan pengecekan e-mail,dll. Misalanya kita sedang Chat dengan Yahoo! Messenger maka kita sedang mengakses Port:1143,1155,5050,1177, 1186, 1187.

3. Port Pribadi atau Port Dinamis (Dynamic or Private Ports).
memiliki range dari 49152-65535, port ini terutama di gunakan program yang memerlukan range port number yang besar, seperti pada Sun yang menjalankan RPC pada port 32768.

Ok, jadi gambaran jelasnya misalkan komputer kita ibaratkan rumah maka TCP/IP adalah alamat rumah kita (masalah TCP/IP bisa di baca jelasnya pada posting saya dulu pada link ini) dan Port adalah pintu,jendela,lubang,celah dari Rumah itu yang memungkinkan sesuatu bisa keluar-masuk. contoh nya di bawah ini port-port yang sering di gunakan pengguna internet.

port 80 untuk HTTP
443 untuk https
53 untuk Domain name server (DNS)
port 443, 563 untuk SSH, HTTPS (SSL) dan SNEWS
port 21 untuk FTP
port 6901 untuk Voice Chat
port 2082 untuk cPanel
port 2095 untuk Webmail (cPanel)
port 2086 untuk WHM
port 1863 untuk MSN Messenger
port 113,194, 531, 6667,6668,6669, 31456, 31457, 31458, 7000, 6666, 6665, untuk IRC
port 5050 untuk YM
port 5000,5100 untuk Yahoo Webcam
port 2083 untuk secure CPanel
port 2096 untuk secure webmail
port 2087 untuk secure WHM
port 25 untuk SMTP
port 110 untuk POP3

Untuk port lebih lengkapnya Click disini

Selengkapnya...

Thursday, August 5, 2010

0 Komunikasi Data

Pengertian Modem 
Modem adalah singkatan dari Modulator-Demodulator.  (Lubis, 2004 : dalam surat Kabar Harian Analisa dalam  http://safri-lubis.info/file/index.php?option=com_content&task=view&id=24&Itemid=56) Modulate adalah  proses penerjemahan  data dari digital ke analog  sehingga bisa ditransmisikan. Demodulate adalah  sebaliknya,  proses menerjemahkan dari analog ke digital.  
Modulator merupakan bagian yang mengubah sinyal informasi kedalam sinyal pembawa (Carrier) dan siap untuk dikirimkan, sedangkan Demodulator adalah bagian yang memisahkan sinyal informasi (yang berisi data atau pesan) dari sinyal pembawa (carrier) yang diterima sehingga informasi tersebut dapat diterima dengan baik. (http://id.wikipedia.org/wiki/Modem) Modem merupakan penggabungan kedua-duanya, artinya modem adalah alat komunikasi dua arah. Setiap perangkat komunikasi jarak jauh dua-arah umumnya menggunakan bagian yang disebut "modem", seperti VSAT, Microwave Radio, dan lain sebagainya, namun umumnya  istilah modem lebih dikenal sebagai Perangkat keras yang sering digunakan untuk komunikasi pada  komputer. (http://id.wikipedia.org/wiki/Modem)



Asynchronous ini maksudnya bahwa ketika modem ini mengirimkan data tanpa menggunakan clock untuk menyinkronisasikan kegiatan dari kedua sistem yang terhubung. Data dikirim dalam 1 byte yang berada dalam sebuah frame pada satu waktu. Frame tersebut berisikan sebuah start bit, data, dan biasanya satu atau lebih stop bit. Start dan stop bit inilah yang memberitahukan kapan dan  dimana data tersebut. Karena fungsi inilah, si penerima akan tahu mana  yang data dan mana yang noise, sehingga dapat diketahui mana yang dapat diterima atau tidak.

cara kerja

Data dari komputer yang berbentuk  sinyal digital diberikan kepada modem untuk diubah menjadi  sinyal analog. Sinyal analog tersebut dapat dikirimkan melalui beberapa media telekomunikasi seperti  telepon dan  radio. Setibanya di modem tujuan, sinyal analog tersebut diubah menjadi sinyal digital kembali dan dikirimkan kepada komputer.


Pengantar Model Open Systems Interconnection(OSI)
Model Open Systems Interconnection (OSI) diciptakan oleh International Organization for Standardization (ISO) yang menyediakan kerangka logika terstruktur bagaimana proses komunikasi data berinteraksi melalui jaringan. Standard ini dikembangkan untuk industri komputer agar komputer dapat berkomunikasi pada jaringan yang berbeda secara efisien.

Model Layer OSI
osigroupedlayers.gif
Terdapat 7 layer pada model OSI. Setiap layer bertanggungjawwab secara khusus pada proses komunikasi data. Misal, satu layer bertanggungjawab untuk membentuk koneksi antar perangkat, sementara layer lainnya bertanggungjawab untuk mengoreksi terjadinya “error” selama proses transfer data berlangsung.
Model Layer OSI dibagi dalam dua group: “upper layer” dan “lower layer”. “Upper layer” fokus pada applikasi pengguna dan bagaimana file direpresentasikan di komputer. Untuk Network Engineer, bagian utama yang menjadi perhatiannya adalah pada “lower layer”. Lower layer adalah intisari komunikasi data melalui jaringan aktual.




Perangkat Hardware/Software :
Layer 4 s/d 7 : Aplikasi, misalnya : FTP, UDP, HTTP, dll
Layer 3 : Router
Layer 2 : Bridge, Switch
Layer 1 : Hub, Repeater


1. Pendahuluan
            Komunikasi voice ataupun data tidak terlepas dari teknik switching. Berikut adalah uraian beberapa teknik switching yang diterapkan. Teknik Switching dikenal ada dua buah yaitu Circuit Switching and Packet Switching.

2. Circuit Switching
 Menerapkan sebuah path komunikasi yang dedicated (permanen) antara 2 buah station
q    melibatkan tiga fase :
v    Circuit Establishment
v    Signal Transfer (mungkin analog voice, digitized voice, binary data)
v    Circuit disconnect
q    kurang efisien karena koneksi tetap established walaupun tidak ada data yang ditransfer
q    contoh konkret adalah public telephone network, PBX (Public Branches eXchange utk gedung)
q    tidak complex dalam routing, flow control, dan syarat-syarat error control

2.1 Routing dalam Circuit Switching
            Efisiensi jaringan diperoleh dengan cara meminimisasi switching and kapasitas transmisi. Komponen dalam arsitektur jaringan telekomunikasi umum adalah :
q    pelanggan
q    local loop : link antara pelanggan dan jaringan. Hampir semuanya menggunakan twisted pair. Panjangnya antara beberapa kilometer dan beberapa puluh kilometer.
q    exchanges : switching lokal dalam sebuah jaringan.
Switching Lokal mendukung pelanggan-pelanggan yang dikenal dengan nama end office yang biasanya dapat mendukung beribu-ribu pelanggan dalam local area.
q    trunks : cabang-cabang antara exchanges. Trunks membawa multiple voice-frequency dengan menggunakan FDM (Frequency Division Multiplex) atau synchronous TDM (Time Division Multiplex).
 











Gbr. 1 Routing

a dan b koneksi dalam satu buah end office, sedangkan c dan d koneksi yang lebih kompleks. Lebih disukai menggunakan dynamic routing daripada static routing dikarenakan kondisi traffic yang makin kompleks dan lebih fleksibel. Adapun dalam kelas-kelas dalam dynamic routing adalah sebagai berikut :

            1. Alternate Routing
            Adalah routing-routing pilihan yang dapat digunakan antara dua end office. Tiap switch diberikan sejumlah route untuk mencapai tiap tujuan. Jika hanya ada satu route dalam tiap pasang source-destination, ini disebut dengan fixed alternate routing. Yang lebih umum digunakan adalah dynamic alternate routing. Routing decision didasari atas status current traffic (akan ditolak jika sibuk) dan historical traffic patterns (urutan-urutan route yang diinginkan).

            2. Adaptive Routing
            Didesain untuk memfungsikan switch dalam mengubah bentuk traffic pada sebuah jaringan. Situasi seperti ini, switch yang ada saling bertukar informasi untuk mempelajari kondisi jaringan sehingga tipe routing ini lebih efisien daripada alternate routing dalam hal resourcing jaringan.
DTM (Dynamic Traffic Management) yang dikembangkan oleh Northern Telecom menggunakan central network untuk mencari the best alternate route bergantung dari congestion (kepadatan) dalam jaringan tersebut. Central controller mengumpulkan status data dari tiap switch untuk mencari alternate route yang diinginkan.
Jaringan dengan menggunakan circuit-switched adalah didesain untuk voice traffic. Walaupun demikian, circuit-switched network juga digunakan dalam komunikasi data dimana akan terjadi :
q    untuk terminal-to-host data connection, waktu pada line terbuang percuma. Jadi komunikasi data akan tidak efisien jika menggunakan circuit-switched network.
q    koneksi menyediakan rate yang konstan. Jadi device yang saling terhubung mempunyai rate yang sama saat transmit atau receiving data. Ini membatasi utilitas dalam jaringan yang banyak terdapat variasi komputer dan terminal.

3. Packet Switching
Dalam Packet Switching, data yang ditransmisikan dibagi-bagi ke dalam paket-paket kecil. Jika source mempunyai message yang lebih panjang untuk dikirim, message itu akan dipecah ke dalam barisan-barisan paket. Tiap paket berisi data dari user dan info control. Info control berisi minimal adalah info agar bagaimana paket bisa melalui jaringan dan mencapai alamat tujuan.
Beberapa keuntungan yang diperoleh dari packet switching :
q    efisiensi line sangat tinggi; hubungan single node-to-node dapat dishare secara dinamis oleh banyak paket. Paket-paket diqueue dan ditransmisikan secepat mungkin. Secara kontras, dalam circuit switching, waktu pada link node-to-node adalah dialokasikan terlebih dahulu menggunakan time-division multiplexing.
q    jaringan packet-switched dapat membuat konversi data-rate. Dua buah station yang berbeda data-ratenya dapat saling menukar paket.
q    ketika traffic mulai padat, beberapa call diblok, yang menunjukkan jaringan menolak permintaan koneksi tambahan sampai beban di jaringan menurun. Dalam packet switchied network, paket masih dapat diterima akan tetapi delay delivery bertambah.
q    prioritas dapat digunakan. Jadi kalau sebuah node mempunyai sejumlah queued packet untuk ditransmisikan, paket dapat ditransmisikan pertama kali berdasarkan prioritas yang lebih tinggi. Paket-paket ini mempunyai delay yang lebih kecil daripada lower-priority packets.

4. Operasi Internal
Ada dua pendekatan yang berhubungan dengan jaringan, yaitu datagram dan virtual circuit. Pada datagram tiap paket bisa diroutekan berbeda, misalnya station A akan kirim paket 1, 2, dan 3. Route A menuju E ada dua route, maka kemungkinan paket 1 menempuh route yang berbeda dengan paket 2 tergantung dari kepadatan masing-masing jalur. Sedangkan pada virtual circuit, sebuah route antara station dikonfigurasi sebelum terjadi transfer data. Ini bukan dedicated path seperti dalam circuit-switching. Sebuah paket masih disimpan dalam tiap node. Perbedaannya dengan datagram adalah node tidak perlu melakukan routing decision untuk tiap paket, dilakukan hanya sekali dan berlaku untuk semua paket.
Jika ada dua station yang akan saling menukar data dalam periode waktu tertentu, maka dapat dipastikan keuntungan banyak diperoleh jika menggunakan virtual circuit. Pertama, jaringan menyediakan pelayanan yang berhubungan dengan virtual circuit termasuk sequencing and error-control. Sequencing berfungsi apabila semua paket mengambil route yang sama. Error control adalah pelayanan untuk meyakinkan semua paket dapat tiba di tujuan, tapi juga tiba dengan paket yang benar-benar diinginkan, tidak ada cacat.
Keuntungan dari datagram adalah call setup phrase dapat dihindari. Jadi sebuah station yang mengirim hanya satu atau sedikit paket pengiriman datagram akan lebih cepat. Keuntungan yang lain adalah lebih flexible, lebih primitive. Sebagai contoh, apabila ada satu bagian network yang buntu, maka datagram yang dikirim akan mengambil route menjauhi network tersebut. Dengan penggunaan virtual circuit, karena paket-paket didefinisikan routingnya sebelum dikirim maka hal ini akan menjadi sulit apabila route yang diambil mengalami buntu. Keuntungan ketiga adalah pengiriman datagram secara tersirat lebih reliable. Pada virtual circuit, apabila ada node yang gagal, semua virtual circuit yang mendefinisikan lewat node tersebut akan lenyap. Pada datagram, paket-paket akan mencari alternatif routing dimana akan mengabaikan node yang gagal. Di virtual circuit pada operasi internalnya digunakan packet-switching.
Dari sudut pandang user, tidak akan dapat begitu berbeda apabila provider menggunakan packet-switched atau circuit-switched network.


Selengkapnya...

Wednesday, August 4, 2010

1 PSI

aktifitas implementasi
-pemilihan dan pelatihan personel
-pemilihan tempat instalasi perangkat lunak dan perangkat keras
-pemrograman dan pengujian program
-pengujian sistem
-konversi sistem

metode unit testing
-black box : terfokus apakah unit program memenuhi kebutuhan yang disebutkan dalam spesifikasi pengujian haya dilakukan dengan menjalankan atau mengeksekusi unit atau modal kemudian diamati apakah hasil dari unit itu sesuai dengan proses sistem yang diinginkan.
-white box : cara pengujian dengan melihat ke dalam modul untuk meneliti kode2 program yang ada dan menganalisa apakah ada kesalahan atau tidak. jika ada modul yang menghasilkan output yang tidak sesuai dengan proses sistem yang dilakukan. maka baris2 program variabel dan parameter yang terlibat dalam unit tersebut akan di cek atau satu persatu dan diperbaiki kemudian di compile.

Flowmap adalah merupakan bagan yang menerangkan bagaimana data dokumen mengalir dari satu bagian kebagian lain, setelah melalui suatu proses pengolahan data.
simbol2 flowmap  :
-dokumen
-trapesium terbalik beraturan: proses manual
-trapesium tak beraturan : input keyboar
-persegi panjang : proses komputerisasi
-belah ketupat : pilihan
-lingkaran : penghubung halaman yang sama
-tabung : database
-segitiga titajong: arsip
-cangcut : penghubung halaman berbeda

DAD  adalah alat pembuatan model yang memungkinkan profesional sistem untuk menggambarkan system sebagai suatu jaringan proses fungsional yang dihubungkan satu sama lain dengan alur data, baik secara manual maupun komputerisasi

Diagram Kontek (Contex Diagram) adalah bagian dari Data Flow Diagram (DFD) yang berfungsi memetekkan model lingkungan yang dipresentasikan dengan lingkaran tunggal yang mewakili keseluruhan sistem

simbol2 DAD
-persegi panjang: terminator/entitas
-belah ketupat: relationship
-elips: atribut
-elips dengan strip: atribut primary key
-elips dengan elips: atribut multivalue
-kotak di dalam kotak: weak entitas
-tiga lingkaran dihubungkan garis: atribut composit

Data flow Diagram (DFD) adalah diagram yang menggunakan notasi-notasi untuk menggambarkan arus dari sistem

Kamus data atau data dictionary adalah katalog fakta tentang data dan kebutuhan-kebutuhan informasi dari suatu sistem informasi.

ERD (Entity Relationship Diagram) adalah gambaran mengenai berelasinya antarentitas

karakteristik sistem
-batasan sistem: daerah yang dibatasi antara suatu sistem dengan sistem lainnya
-komponen2 sistem: suatu subsistem yang memiliki sifat dan menjalankan fungsi tertentu dari sistem
-lingkungan sistem : apapun yang berada diluar batasan sistem yang mempengaruhi operasi sistem
-penghubung sistem: media penghubung antara subsistem
-masukan sistem: energi yang dimasukan kedalam sistem
-sistem analis: sumber dalam mengidentifikasi masalah dan menyampaikan dokumentasi tertulis mengenai cara komputer membantu pemecahan masalah

fungsi sistem analis
-mengidentifikasi masalah kebutuhan user
-menyatakan secara spesifik sasaran yang harus dicapai
-memilih alternatif metode pemecaha masalah
-merencanakan dan menerapkan rancangan sistem

tugas sistem analis
-mengumpulkan data dan menganalisa dokumen
-menyusun dan menyajikan rekomendasi
-merancang dan mengidentifikasi sistem
-menganalisa dan menyusun biaya
-mengawasi kegiatan penerapan sistem

Pengembangan software : sebuah metodologi pengembangan perangkat lunak (software) yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal spesifikasi sistem hingga pada tahap pemeliharaan sistem setelah digunakan dengan tujuan untuk membuat perangkat lunak yang tepat dengan metode yang tepat.

Sedangkan Pengembangan sistem informasi merupakan proses pengembangan sistem untuk menghasilkan sistem informasi (CBIS atau computer based information system) dimana metodologi pengembangan sistem digunakan sebagai sarana untuk meningkatkan pengelolaan dan pengendalian komponen sistem informasi (sumber daya manusia, hardware, software, jaringan, sumberdaya data dan produk informasi).

FLOWCHART :   Adalah Bagan-bagan yang mempunyai arus yang menggambarkan langkah-langkah penyelesaian suatu masalah
Selengkapnya...

Wednesday, January 27, 2010

0 History of Programing Language and Evolution

First language

Ada Lovelace and Babbage and its nephew were writing programs for the project of "difference engine", and then the "analytical engine".
In 1945, the german K. Zuse, inventor of the Z3 computer would have defined an evolved language for this engine (with arrays and records). Few documents of the epoch about this language exist.


Assembly

Assemblers exist since the beginning of computers. They associate a symbolic name to the machine-language code, for example:
add bx, 4
cmp [adr], 3
jmp address
Assembly programming is no longer frequently practiced, even to build fast routines...

Autocode - 1952 (Alick E. Glennie)

Implemented firstly on Mark 1, then on other computers, this is a symbolic code.

IPL - 1956 - Information Processing Language

A. Newell, H. Simon, J.C. Shaw

Low-level list processing language. Implements the RECURSIVITY.

Fortran - 1954-1958 - FORmula TRANslator system

John Backus and other researchers at IBM

Language dedicated to mathematical calculations.
Fortran II (1958) introduced SUB-ROUTINES, FUNCTIONS, LOOPS, a primitive FOR control structure.
Identifiers were limited to six characters.

Lisp - 1958-1960 - LISt Processing

Mac Carthy

Functional language for list processing.
It is purely recursive, and not iterative. There is no difference between code and data.

IAL - 1958 - International Algebraic Logic

First name for Algol 58, never implemented.

Algol - 1960 / Algol W - 1966 / Algol 68 - ALGOrithmic Language

Defined by an international consortium of computer science specialists, coordinated by IFIP.

This was the fist universal language to be machine independent.
Introduces the use of the BNF (Backus Naur Form) grammar to create a syntax parser.
Introduces BLOCKS of STATEMENTS, and LOCAL VARIABLES inside a block.
Recursivity was implemented but with reticence as this was considered as useless!
Uses DYNAMIC ARRAYS, and this means that following language (Pascal, C) have regressed by using static arrays, for better performance.
It has IF THEN ELSE, FOR, the := symbol for assignment (used then by Pascal), a SWITCH with gotos, the BEGIN END markers, the WHILE loop.

Algol W by Niklaus Wirth in 1966 was using RECORDS, that are dynamic data structures, CASE, passing parameters by value, precedence of operators.
The same year, Niklaus Wirth has created Euler, a language between Algol and Pascal.

Algol 60 was still oriented toward mathematical calculations. To try to reach the original goal of a general purpose language, a new version has been started in 1964, Algol X, renamed further Algol 68.
Algol 68 was using the =+ sign to merge both assignment and add. It has introduced UNION and CAST of types. It owns IF THEN ELIF FI, CASE, GOTO, user-defined operators.
Incremental compiling was not allowed.

Cobol - 1960 - COmmon Business Oriented Langage

Defined by a committee, the CODASYL, COnference on DAta SYsystems Languages

The committee under the auspices of the Department Of Defense, and manufacturers, universities and users, worked from may 1959 to april 1960.
Grace Murray Hopper, who had designed Flow-Matic, a compiled language in the 50's, has participated to the committee.
Cobol is a classical procedural language aimed at enterprise management, in wich a program is divided in 4 divisions: identification, environment, data, procedure, and they may be divided in sections. It was founded on data and a program must describe precisely the hardware and input/ouput data format.
It introduced the RECORD data structure. Programs are documented by the syntax and are all but ligthweight...

APL - 1964 - A Programming Language

K. Iverson

Language using a mathematical notation, with lot of operators. A unique type, the array.
Defined from 1957 to 1960, implemented in 1964.

Basic - 1964 - Beginner’s All-purpose Symbolic Instruction Code

John Kemeny, Thomas Kurtz

Has been designed in 1963, to be easy to learn and has been implemented in 1964. The first version was compiled, then it becomes interactive and interpreted. Each line has a number to allow GOTOs statements to jump to the line!
Bill Gate and Paul Allen have win an international contest by designing and implementing a fast and compact Basic, firstly for the Altair (in 4 kb memory!) and then on other micro-computers.
Micro-computers were delivered with Basic in ROM until late 80.
In 1977, the Apple II was sold with an integer Basic. Then the Applesoft Basic of Microsoft with floating-point. Applesoft was using two-letter identifiers! Sub-programs were called by GOSUB to line numbers.
The first PC from IBM, (in 1981) was using MS-DOS from Microsoft and its interpreted Basic (Basica). In 82 Microsoft produced its first compiled Basic (Quick Basic).
Pascal and C have replaced Basic in the same decade. Microsoft still uses Basic. Visual Basic for application, ASP for the web, and applications are extended with a language (macro) that is basic also.
True Basic, by the original authors of the language is compiled and no longer uses line numbers.

Iswim - 1965 - If You See What I Mean

P. Landin

First purely fonctional language, in the mathematical sense. The first to use LAZY EVALUATION.

Attribute grammars - 1965

Donald Knuth

Completing the BNF method, attribute grammars describes the semantic of languages to be made of functions. This type of grammar helps the building of compilers.

Simula 67 - 1962-67

Ole-Johan Dahl, Kristan Nygaard

The Simula project started in 1962. The goal was to build a tool to describe discrete event system, or network, and a language to program simulating real world.
Was firstly designed as an Algol extension.
In 1964, Simula 1 has been implemented on Univac 1107. It was used to control administrations, airports, planning, transport, or social systems.
This was a specialized tool. In 1966, it has been decided to make it an universal language. Several projects has been launched with the help of several makers (IBM, Univac, Digital) and this leaded to Simula 67.
This universal language has introduced CLASSES, INHERITANCE and OBJECTS that are instances of classes. Classes allow to link functions (methods) to objects.

Logo - 1966

Fuerzeig, Seymour Papert, and others

Aimed to teach programming to children, near Lisp, and based on moving a "turtle" on the screen.

Snobol 4 - 1967 - StroNg Oriented symBOlic Language

D. J. Farber, R. E. Griswold, F. P. Polensky at Bells Labs

Snobol appeared in 1962.
Snobol 4 is the first stable distributed version of Snobol, available in 1967.
This is a processor of strings, founded on the principle of pattern-matching, concatenation and alternation.
It was the first language to implement associative arrays, indexed by any type of keys.
It allows to run code stored inside strings.
Data types are: string, integer, real, array, table, pattern and user-defined types.

CPL - Combined Programming Language

Cambridge and London Universities

This was a combination of Algol 60 and functional language aimed at proof of theorems. It was using polymorphic testing structures. Typed language with the "any" joker type. Had list and array.
Complex, was not implemented. I quote it only because it was a step toward the design of the C language.

BCPL - 1965? - Basic CPL

Martin Richards

It has been intended to be a simplified version of CPL.
Was using these control structures: FOR, LOOP, IF THEN, WHILE, UNTIL, REPEAT, REPEAT WHILE, SWITCH CASE, etc...
Owns procedures and functions, unlike C.
Block delimiters were $( ..... $) which has inspired probably /* ... */ in C.

PL/1 - 1965? - Programming Language number One - Originally NPL (New Programming Language)

IBM

The language was designed to be general-purpose and modular.
Keywords are reserved only in the context where they are used as keywords.
It is more hardware independent than predecessors. These types are recognized: fixed, real, complex, character, bit, bin, pointer, picture, file, etc.... Data have default attributes (as precision for example), that depends upon the context.
These compound types are built-in: array, structures, unions, and combinations of them. IF THEN and SELECT .. WHEN .. OTHERWISE are conditional structures, and variations on the DO structure allows various conditional loops.
Storage classes are introduced: automatic, static (life of the program), controlled, based. Exceptions are implemented.

Pascal - 1970 - Named from the french mathematician Blaise Pascal

Niklaus Wirth

Language aimed to ease the building of compilers, and to lead teaching by forcing to a structured programming.
UCSD Pascal, written by a group of programmers leaded away by Kenneth Bowles is the first version for micro-computers. It compiles programs in P-code, that is portable and interpreted (as Java later). It included a complete development environment, a principle used successfully further by Turbo Pascal.
In 1981, a role playing game written in Pascal, Wizardry, has had a big success on Apple II.
When Turbo Pascal (by Anders hejlsberg) appeared in 1983 , fast and having a complete IDE, the language gained success and is still widely used.
Control structures are near C ones.

Forth - 1971 - Fourth reduced to Forth by the constraint of 5 letters of the IBM 1130

Charles H. Moore

Defined during 60+, seems to have been implemented in 1971.
Language for astronomical instruments using a stack to replace variables.
Its goal was to be the fourth generation language.

Smalltalk - 1972

Alan Kay and the Software Concept Group

This is a fully object oriented language wich runs always inside a graphical environnment, with windows, mouse, etc...

C - 1973 - C is the successor of B, which is the successor of BCPL

Dennis Ritchie

It was firstly destinated to program the UNIX operating system, but has become quickly universal thanks to its portability and speed.
Allows incremental compiling. In 1965, ATT programmers were using Bcpl to work on implementing Unix. Displeased with this language, they made it evolve to a new version named B, then to a new language named C.
This was the evolving of the hardware that instigate to create C. Bcpl and B was using integer for pointers, but this was not working on the new computers.
Bcpl has no type (as Php or other modern scripting languages!). The declarations int i, char b were created in C. Other types will appear later.

The += operator comes from Algol 68 (but was written =+)
In Bcpl, a block of statements was enclosed inside the (* and *) symbols as the comment in /* and */ and sub-expressions inside ( and ). I suppose this symbolism was intended to denote that anything is an expression in the language, and also to reduce the parsing time. The C language simplified the writting with the { and } symbols, that does the original idea doesn't remains.
Union and cast come from Algol 68.
++ was already in the B language.
The keyword "include" comes from PL/I.
The preprocessor was implemented in 1973, and C has been used from this date to write Unix, but Ritchie worked on it since 1969. The language has evolved until 1980. .

Prolog - 1970+

A. Colmerauer, D. Roussel

Has been developped both in France at Aix-en-Provence and at Edimburg.
Has introduced LOGIC PROGRAMMING. A program is made of Horn clauses.
Prolog is declarative, its system of logic inference is an engine of resolution.

Sql - 1970+ - Standard Query Language

IBM

Language of query for relational databases. Successor of the Square language.

Awk - 1974 - First letters of authors' names

Aho, Kerninghan, Weinberger

Word processing language based on regular expressions, using a pattern-action principle.

Scheme - 1975 - From "schemmer"

Gerald Jay Sussman and Guy L. Steele at MIT

Language derived from Lisp but simplified. The types are boolean, integer of indefinite size, rational and complex, characters, symbols, vectors, oriented pairs, lists, associative lists, hash tables. The S-expression generic type is used to extend the language.
It is often used as a scripting language, by the Gimp for example. Standard.
The language and development tool Hop from Inria is Scheme extended into a functional HTML dialect to build Web 2.0 application.

Plasma - 1975

Carl Hewitt

Language of actors. Implemented in Lisp.

Sasl - 1976 - Saint Andrews Static Language

D. Turner

Aimed to teach the functional programming.
Comes from Iswim, unlimited data structures.

Icon - 1977

Griswold

Procedural language, with word processing function as Snobol4, and powerful constructs.
It has structured types: list, set, table (dictionary).
A list is declared: name := [ "word", "word", number, etc...]
A list may be indexed in the form a[i] or be used as a stack.
A "set" hold elements without doubloons, and has several functions: union, intersection, removing.
The RANGE construct is written: a to b where "to" is a keyword and "a" and "b" are variables..
A range may used inside an expression or as argument of a function. The expression or the function are called with each value in the range.
Ex: write(1 to 5) will display 1, 2, 3, 4 ,5.
Expression don't return a boolean value, but are either evaluated or rejected. The operation are executed if the expression may be evaluated. This is the first language where expression evaluating it leaded by the GOAL.
There is a statement of the C language: if ( x= expression) ... which means: assign to x the result of the expression, and if a is non zero, then..., this construct is generalized in Icon, if the expression may be evaluated, x gets the value, else x remains unchanged and the condition is ignored.
The EVERY..DO construct associated to an expression works as an iterator. As the range.
The ALTERNATION is another powerful construct. It allows to use a sequence of parameters until a result is obtained. The symbol is "|".
For example the statement : if a | b | c = 0 | 1 means for.... if a or b or c is 0 or 1 then ...

ML - 1973? - Meta Language

R. Milner

Functional language inspired by Iswim.
Its goal was to proof theorem at the Edimburg University.
Functions are replaced by pattern models.
Implemented in Lisp.

Modula 2 - 1979 - MODUlar LAnguage

Niklaus Wirth

Modula 1 would be defined in 1977. Implemented on the Lilith workstation at first.
The idea is to reduce the risk of error with coercive programming rules. However, it adds to Pascal some features of the C language. A call of function without argument is written f() as in C rather than f as in Pascal.
A program is splitted in modules with local scope, and interfaces for other modules. Use coroutines. Allows access to the hardware.
Was only used in Universities, because these new features has been added also to Pascal by the makers of compilers (the units of Turbo Pascal mainly).

Ada - 1980+ - Nickname of Ada Byron de Lovelace, first woman to program

Designed by a committee leaded by Jean Ichbiah, for the U.S. Department Of Defense.

Inspired by Pascal and Algol W. Is rather heavy.
Introduces GENERICITY of algorithms and a kind of primitive object orientation, but becomes really object oriented later.
Introduces PACKAGES, that are independent modules.

C++ - 1981-1986

Bjarne Stroustrup

Object oriented version of C.
Introduces OPERATOR OVERLOADING. Methods may be inline.
Use // for one-line comment, that comes from BCPL, of which C is a successor!
Further, multiple inheritance and template (generic classes or functions) has been implemented.

Objective C, invented by Brad Cox in 1984, is another objet oriented version of C, inspired by smalltalk. No operator overloading. Used to write NextStep, the operating system of the Next computer.

Standard ML - 1984

R. Milner, University of Edimburgh and Cambridge and Inria

Search for Standard ML Moscow on a search engine.
An implementation of ML.

Eiffel - 1985

Bertrand Meyer

Procedural language fully object oriented , implementing persistency and programming per contract (using precondition and postcondition on functions). Was designed for security of software.
Compiled in C. May be interfaced with other langages. Has features of functional languages, generic classes, garbage collector.
An open source version exist, Sather, (from the name of a tower at Berkeley).

GAP - 1986 - Groups, Algorithms and Programming

Johannes Meier, Werner Nickel, Alice Niemeyer, Martin Schönert and others

The language has been defined to program mathematical algorithms.
It is interpreted, interactive an untyped. List and records are complex variables.
The syntax is that of Pascal with some differences. Comments for exemple are introduced by #.
An end of bloc is denoted by inverted keywords: if fi, do od.
The for loop has the forms: for in list, for in from to.
The language has procedures and functions.
What made it apart if that variables point out values and not memory addresses, and the form of a definition of function is as a call: x := function(arguments) body.
A function may be embedded inside another function.

Miranda - 1989 - From the name of a Shakespeare's heroin (Miranda, means for admirable in latin)

D.Turner

Inspired by Sasl and ML. Lazy evaluation: arguments of functions are evaluated only when they are used. Embedded pattern-matching, modules.

Caml - 1987 - Categorical Abstract Machine Language

Suarez, Weiss, Maury

Caml and Objective caml in 1996, has implemented ML.

Perl - 1987 - Practical Extracting and Report Langage

Larry Wall

Destinated to replace the command line language of Unix, Sh, Sed and Awk, it kept the same ugly syntax. Used mainly for system administration, CGI scripts.
Includes lists and associatives arrays. The FOREACH control structure allows to scan lists.

Oberon - 1988

Niklaus Wirth

Successor of Modula 2 (and Pascal).
Several commonly used constructs are suppressed to reduce the risk or error! A garbage collector is added to.

Haskell - 1990 - Nickname of a logician, Haskell Curry

Purely functional language. Inspired by Miranda and Sasl.
Functional arrays, pattern matching.

ABC 1980-90 - ABC (equivalent to EZ in english)

CWI - Meertens, Pemberton and Guido Van Rossum

Scripting language elaborated at CWI in Netherlands, and the goal of which was to become a successor to Quick Basic or scripting languages of Unix.
Perhaps the first to use INDENTING to denote statements of a block: no markers as begin/end.
Another innovation, there is no file management, but rather persistency of the global variables: the value is stored from a session to another!
There are five types: number, string, list, composed (structure without fieldnames), array.

Python - 1991 - From the english TV movie "Monty Python Flying Circus"

Guido Van Rossum

Scripting language with dynamic types. This is a replacement to Perl.
Inspired by ABC, but is extensible with C libraries, and object oriented.
As ABC, used evolved types: tuple, list, dictionary.
The slicing operator [a : b] allows to extract a sub-list from a list.
There is a version that compiles in Java bytecode, jython and ports for .NET.

Pov-Ray - 1991 - Persistence Of Vision (title of a mediocre science-fiction book).

D. & A. Collins, and contributors

Pov-Ray is a language for describing 3D images.

DisCo - 1992 - Distributed Co-operation

Reino Kurki-Suonio

Disco is a specification language for reactive systems with Pascal-like syntax. Constructs of the language are objects, event-driven functions (named here actions), and relations. A function is activated when a state of the system occurs and may be overwritten, this is named "refinement" in the language. Disco focuses on collective behavior. Layers are modules of the language. It is an system oriented language with objects and behavior (not action oriented as it is said in the presentation).

Ruby - 1994 - As the jewel, analogy with Perl

Yukihiro Matsumoto

Ruby has been designed as successor to Perl and alternative to Python, to be clearer than the first one, and more object oriented than the second one. The syntax comes from these two languages, it want to be without surprise and natural but may be complex.
There is no new control structure as in Scriptol, but a lot of minor innovations to make the code smaller.
It is an interpreted language easy to extend. Statements are terminated by end of line. Blocks of statement and loop are delimited by "end". Most Python's features are present: associative arrays, iterators...
The originality is the dynamic object feature (adding methods to instances) and scope of variables denoted by a prefix.

Java - 1994 - Java (coffee)

James Gosling and other programmers at Sun

Conceived at the beginning, in 1991, as an interactive language named Oak, was unsuccessful. But in 1994 has been rewritten for Internet and renamed Java. In 1995 navigators can run applets. In january 1996, Javasoft distributes JDK 1.0, the Java Developpement Kit.
Java is a classical procedural language, near C++. It compiles in bytecode, interpreted on any computer. ..
It is simpler than C++: one class by file, automatic memory management, no pointers. No multiple inheritance nor operator overloading, but integrated multi-tasking.
Unlike C and C++, has only dynamic arrays.

PHP - 1995 - Personal Home Pages Hypertext Processor

Rasmus Lerdorf

Multi-platforms scripting language, embedded inside HTML.
Near C but not typed. Variables are prefixed by the $ symbol as the shell of Unix or as Perl. The interpreter parses a html page that embeds php code and delivers a pure html page.
An extended library of functions allows webmasters to build dynamic pages.
Microsoft uses an equivalent language under Windows, ASP, near Basic.

JavaScript - 1995 (Has been firstly named LiveScript)

Brendan Eich at Netscape

Scripting language to embedd procedural code into web pages.
May be used to other applications, XML based languages for example.
Share the syntax of C or Java, but with untyped variables. The element of the web page (window, table, etc...) are accessed through the Document Object Model.

UML - 1996 - Unified Modeling Language

Standard by OMG (Object Management Group) - Grady Booch, Jim Rumbaugh, and Ivar Jacobson

UML is the union of three modeling languages designed by the three authors above. The language uses a graphical notation to design software projects. A source is a diagram expressing objects and their interactions. A model is made of views and the combination of them describes a complete system. The model is abstract and domain-independent.

ECMAScript - 1997

Standard by the european standardization organisation E.C.M.A.
Standard to the langage invented by Netscape, to let dynamic HTML pages client-side.

Rebol - 1997 (The design is older) - Relative Expression Based Object Language

Carl SassenRath

Interpreted, extensible scripting language that produces compact code. It is aimed at communication on Internet and distributed computing.
Has 45 types using same operators (Ex: date, money...). Use [ ] to enclose blocks of statements.

C# - 2000 - (C-sharp), want to succeed to C++

Anders Hejlsberg / Microsoft

This is the main language of the .NET environment, to program software working thought Internet. As Java, it keeps the C syntax, a 34 years old language, with same improvments: garbage collector, no pointer, interfaces, multi-tasking...
C# compiles to intermediate language, the MSIL (MicroSoft Intermediate Language), and uses a multi-languages library, the CLR (Common Language Runtime). The originality of the .NET system is that various language may be compiled to MSIL and share their classes.
Other new features come with this language:
- structs are now special kind of object, passed by values.
- literals are objects also, with methods..
- attributes are descriptive objects attached to elements of the program and used by the runtime.
- properties: methods that may be used as variables (prop = 5 is equivalent to prop(5).
- foreach() to scan arrays (new only for Java and C++).
- delegate replaces pointer of functions of C.
There are improvements on Java also:
- event management is improved.
- operator overloading is present.
- simpler access to the the native system.

AspectJ - 2001 - Aspect for Java

Palo Alto Research Center

Aspect J is a Java extension that implements aspect oriented programming. A technique that modularizes crosscutting concerns. The unit is not the class, but a concern, that spans multiple classes. Concern may be, for example, properties, area of interest of a system and AOP describes their relationship, and compose them together into a program. Aspects encapsulates behavior that concerns multiple classes.

Scriptol - 2001 - Scriptwriter Oriented Language

Denis Sureau

The most recent, the most powerful among procedural languages. Scriptol is either compiled in PHP or in C++ or native, giving it a great portability. It is both a language for applications, for scripting and to make dynamic web pages.
Blocs of statements and control structures are not closed by "end" or "}" but, as in XML, with the form "/if", " /for", "/while" and so ones...
The language has new control structures: "for in", "while let", "scan by", etc... The "composite if"structure eases to implement rules.
Variables and literals are objects. Basic object (number, text, etc...) and compound ones are created by direct assignment of a value or a list of arguments to the name.
Scriptol is destinated to evolve and to have, along classes, other high-level structures to allow programs to be nearest human thought.
Since October 2003, Scriptol allows to use XML as internal data structure.

Scala - February 2004

Ecole Polytechnique Federale de Lausanne

Scala is a pure object oriented language that implements some Python features in Java syntax. It is statically typed and both procedural and functional. It currently runs on JVM and .NET.

E4X - June 2004 - EcmaScript For XML (E four X)

ECMA

E4X is not a language but an addition to a language. In the same manner Scriptol uses XML as data structure with attributes and methods, E4X allows to assign XML to ECMAScript variables, and to access elements by indices or attributes.

JavaFX Script - 2005-2007

This language which is built on Java, incorporates and expands its syntax. It is intended to create rich graphical interface for the Web. It is used with NetBeans.
The langage was designed en 2005 and named F3 (Form Follows Function), but after the company has been bought by Sun, it was renamed JavaFX Script and open sourced.
The future

Some trends:

Scripting languages
Several modern scripting languages offer a simple, natural syntax: NetRexx, Python, Ruby, Scriptol. Python is the most widely used for now. Ruby is mainly used for the Rail library. Scriptol has innovative features.

Internet languages
These languages allows to embed code inside HTML page and thus to combine statements and data. PHP, ASP, JavaScript are the most used ones. The .NET platform will allow any language to be embedded into HTML.

Markup languages
A recent trend is to turn XML documents into executables.
- XML is embedded into Scriptol sources as a data structure, that is usable by any statement in the source. This is a next step beyond object oriented programming.
- XUL is a Mozilla project that embeds JavaScript into XML to easily produce GUI (the one of Mozilla for example). On the Web with Firefox or locally with the XULRunner runtime.
- Microsoft uses XAML to define graphical interfaces, on the Web with the cross-browsers plug-in Silverlight or locally on .NET.

A new C++ language
C++0x, will be probably C++09. This new version will include as standard a lot of external libraries. It will have tuples and garbage collector and an extended standard library with regular expression and threads.

SQL
Thanks to Web applications and dynamic sites of the Web 2.0, SQL trends to be more and more popular, and so is now a part of modern programming.

Conclusion
The .NET or compatible platforms will ease to put code inside data, but XML may be an alternative. C# will be a leader language of such platform at start, but its success is due mainly to that programmers are used with the C++ and Java syntax. As the platform allows to use any language with common resources, it will permit new and powerful languages to emerge. The .NET platform uses XML by converting it into objects. It is possible to use it directly as data structure instead.
Other trends are higher level for languages, programming by aspects, or by schemas with UML and further concepts.

Selengkapnya...

Tuesday, January 26, 2010

0 History of Programming Languages

First language

Ada Lovelace and Babbage and its nephew were writing programs for the project of "difference engine", and then the "analytical engine".
In 1945, the german K. Zuse, inventor of the Z3 computer would have defined an evolved language for this engine (with arrays and records). Few documents of the epoch about this language exist.

Assembly

Assemblers exist since the beginning of computers. They associate a symbolic name to the machine-language code, for example:
add bx, 4
cmp [adr], 3
jmp address
Assembly programming is no longer frequently practiced, even to build fast routines...

Autocode - 1952 (Alick E. Glennie)

Implemented firstly on Mark 1, then on other computers, this is a symbolic code.

IPL - 1956 - Information Processing Language

A. Newell, H. Simon, J.C. Shaw

Low-level list processing language. Implements the RECURSIVITY.

Fortran - 1954-1958 - FORmula TRANslator system

John Backus and other researchers at IBM

Language dedicated to mathematical calculations.
Fortran II (1958) introduced SUB-ROUTINES, FUNCTIONS, LOOPS, a primitive FOR control structure.
Identifiers were limited to six characters.

Lisp - 1958-1960 - LISt Processing

Mac Carthy

Functional language for list processing.
It is purely recursive, and not iterative. There is no difference between code and data.

IAL - 1958 - International Algebraic Logic

First name for Algol 58, never implemented.

Algol - 1960 / Algol W - 1966 / Algol 68 - ALGOrithmic Language

Defined by an international consortium of computer science specialists, coordinated by IFIP.

This was the fist universal language to be machine independent.
Introduces the use of the BNF (Backus Naur Form) grammar to create a syntax parser.
Introduces BLOCKS of STATEMENTS, and LOCAL VARIABLES inside a block.
Recursivity was implemented but with reticence as this was considered as useless!
Uses DYNAMIC ARRAYS, and this means that following language (Pascal, C) have regressed by using static arrays, for better performance.
It has IF THEN ELSE, FOR, the := symbol for assignment (used then by Pascal), a SWITCH with gotos, the BEGIN END markers, the WHILE loop.

Algol W by Niklaus Wirth in 1966 was using RECORDS, that are dynamic data structures, CASE, passing parameters by value, precedence of operators.
The same year, Niklaus Wirth has created Euler, a language between Algol and Pascal.

Algol 60 was still oriented toward mathematical calculations. To try to reach the original goal of a general purpose language, a new version has been started in 1964, Algol X, renamed further Algol 68.
Algol 68 was using the =+ sign to merge both assignment and add. It has introduced UNION and CAST of types. It owns IF THEN ELIF FI, CASE, GOTO, user-defined operators.
Incremental compiling was not allowed.

Cobol - 1960 - COmmon Business Oriented Langage

Defined by a committee, the CODASYL, COnference on DAta SYsystems Languages

The committee under the auspices of the Department Of Defense, and manufacturers, universities and users, worked from may 1959 to april 1960.
Grace Murray Hopper, who had designed Flow-Matic, a compiled language in the 50's, has participated to the committee.
Cobol is a classical procedural language aimed at enterprise management, in wich a program is divided in 4 divisions: identification, environment, data, procedure, and they may be divided in sections. It was founded on data and a program must describe precisely the hardware and input/ouput data format.
It introduced the RECORD data structure. Programs are documented by the syntax and are all but ligthweight...

APL - 1964 - A Programming Language

K. Iverson

Language using a mathematical notation, with lot of operators. A unique type, the array.
Defined from 1957 to 1960, implemented in 1964.

Basic - 1964 - Beginner’s All-purpose Symbolic Instruction Code

John Kemeny, Thomas Kurtz

Has been designed in 1963, to be easy to learn and has been implemented in 1964. The first version was compiled, then it becomes interactive and interpreted. Each line has a number to allow GOTOs statements to jump to the line!
Bill Gate and Paul Allen have win an international contest by designing and implementing a fast and compact Basic, firstly for the Altair (in 4 kb memory!) and then on other micro-computers.
Micro-computers were delivered with Basic in ROM until late 80.
In 1977, the Apple II was sold with an integer Basic. Then the Applesoft Basic of Microsoft with floating-point. Applesoft was using two-letter identifiers! Sub-programs were called by GOSUB to line numbers.
The first PC from IBM, (in 1981) was using MS-DOS from Microsoft and its interpreted Basic (Basica). In 82 Microsoft produced its first compiled Basic (Quick Basic).
Pascal and C have replaced Basic in the same decade. Microsoft still uses Basic. Visual Basic for application, ASP for the web, and applications are extended with a language (macro) that is basic also.
True Basic, by the original authors of the language is compiled and no longer uses line numbers.

Iswim - 1965 - If You See What I Mean

P. Landin

First purely fonctional language, in the mathematical sense. The first to use LAZY EVALUATION.

Attribute grammars - 1965

Donald Knuth

Completing the BNF method, attribute grammars describes the semantic of languages to be made of functions. This type of grammar helps the building of compilers.

Simula 67 - 1962-67

Ole-Johan Dahl, Kristan Nygaard

The Simula project started in 1962. The goal was to build a tool to describe discrete event system, or network, and a language to program simulating real world.
Was firstly designed as an Algol extension.
In 1964, Simula 1 has been implemented on Univac 1107. It was used to control administrations, airports, planning, transport, or social systems.
This was a specialized tool. In 1966, it has been decided to make it an universal language. Several projects has been launched with the help of several makers (IBM, Univac, Digital) and this leaded to Simula 67.
This universal language has introduced CLASSES, INHERITANCE and OBJECTS that are instances of classes. Classes allow to link functions (methods) to objects.

Logo - 1966

Fuerzeig, Seymour Papert, and others

Aimed to teach programming to children, near Lisp, and based on moving a "turtle" on the screen.

Snobol 4 - 1967 - StroNg Oriented symBOlic Language

D. J. Farber, R. E. Griswold, F. P. Polensky at Bells Labs

Snobol appeared in 1962.
Snobol 4 is the first stable distributed version of Snobol, available in 1967.
This is a processor of strings, founded on the principle of pattern-matching, concatenation and alternation.
It was the first language to implement associative arrays, indexed by any type of keys.
It allows to run code stored inside strings.
Data types are: string, integer, real, array, table, pattern and user-defined types.

CPL - Combined Programming Language

Cambridge and London Universities

This was a combination of Algol 60 and functional language aimed at proof of theorems. It was using polymorphic testing structures. Typed language with the "any" joker type. Had list and array.
Complex, was not implemented. I quote it only because it was a step toward the design of the C language.

BCPL - 1965? - Basic CPL

Martin Richards

It has been intended to be a simplified version of CPL.
Was using these control structures: FOR, LOOP, IF THEN, WHILE, UNTIL, REPEAT, REPEAT WHILE, SWITCH CASE, etc...
Owns procedures and functions, unlike C.
Block delimiters were $( ..... $) which has inspired probably /* ... */ in C.

PL/1 - 1965? - Programming Language number One - Originally NPL (New Programming Language)

IBM

The language was designed to be general-purpose and modular.
Keywords are reserved only in the context where they are used as keywords.
It is more hardware independent than predecessors. These types are recognized: fixed, real, complex, character, bit, bin, pointer, picture, file, etc.... Data have default attributes (as precision for example), that depends upon the context.
These compound types are built-in: array, structures, unions, and combinations of them. IF THEN and SELECT .. WHEN .. OTHERWISE are conditional structures, and variations on the DO structure allows various conditional loops.
Storage classes are introduced: automatic, static (life of the program), controlled, based. Exceptions are implemented.

Pascal - 1970 - Named from the french mathematician Blaise Pascal

Niklaus Wirth

Language aimed to ease the building of compilers, and to lead teaching by forcing to a structured programming.
UCSD Pascal, written by a group of programmers leaded away by Kenneth Bowles is the first version for micro-computers. It compiles programs in P-code, that is portable and interpreted (as Java later). It included a complete development environment, a principle used successfully further by Turbo Pascal.
In 1981, a role playing game written in Pascal, Wizardry, has had a big success on Apple II.
When Turbo Pascal (by Anders hejlsberg) appeared in 1983 , fast and having a complete IDE, the language gained success and is still widely used.
Control structures are near C ones.

Forth - 1971 - Fourth reduced to Forth by the constraint of 5 letters of the IBM 1130

Charles H. Moore

Defined during 60+, seems to have been implemented in 1971.
Language for astronomical instruments using a stack to replace variables.
Its goal was to be the fourth generation language.

Smalltalk - 1972

Alan Kay and the Software Concept Group

This is a fully object oriented language wich runs always inside a graphical environnment, with windows, mouse, etc...

C - 1973 - C is the successor of B, which is the successor of BCPL

Dennis Ritchie

It was firstly destinated to program the UNIX operating system, but has become quickly universal thanks to its portability and speed.
Allows incremental compiling. In 1965, ATT programmers were using Bcpl to work on implementing Unix. Displeased with this language, they made it evolve to a new version named B, then to a new language named C.
This was the evolving of the hardware that instigate to create C. Bcpl and B was using integer for pointers, but this was not working on the new computers.
Bcpl has no type (as Php or other modern scripting languages!). The declarations int i, char b were created in C. Other types will appear later.

The += operator comes from Algol 68 (but was written =+)
In Bcpl, a block of statements was enclosed inside the (* and *) symbols as the comment in /* and */ and sub-expressions inside ( and ). I suppose this symbolism was intended to denote that anything is an expression in the language, and also to reduce the parsing time. The C language simplified the writting with the { and } symbols, that does the original idea doesn't remains.
Union and cast come from Algol 68.
++ was already in the B language.
The keyword "include" comes from PL/I.
The preprocessor was implemented in 1973, and C has been used from this date to write Unix, but Ritchie worked on it since 1969. The language has evolved until 1980. .

Prolog - 1970+

A. Colmerauer, D. Roussel

Has been developped both in France at Aix-en-Provence and at Edimburg.
Has introduced LOGIC PROGRAMMING. A program is made of Horn clauses.
Prolog is declarative, its system of logic inference is an engine of resolution.

Sql - 1970+ - Standard Query Language

IBM

Language of query for relational databases. Successor of the Square language.

Awk - 1974 - First letters of authors' names

Aho, Kerninghan, Weinberger

Word processing language based on regular expressions, using a pattern-action principle.

Scheme - 1975 - From "schemmer"

Gerald Jay Sussman and Guy L. Steele at MIT

Language derived from Lisp but simplified. The types are boolean, integer of indefinite size, rational and complex, characters, symbols, vectors, oriented pairs, lists, associative lists, hash tables. The S-expression generic type is used to extend the language.
It is often used as a scripting language, by the Gimp for example. Standard.
The language and development tool Hop from Inria is Scheme extended into a functional HTML dialect to build Web 2.0 application.

Plasma - 1975

Carl Hewitt

Language of actors. Implemented in Lisp.

Sasl - 1976 - Saint Andrews Static Language

D. Turner

Aimed to teach the functional programming.
Comes from Iswim, unlimited data structures.

Icon - 1977

Griswold

Procedural language, with word processing function as Snobol4, and powerful constructs.
It has structured types: list, set, table (dictionary).
A list is declared: name := [ "word", "word", number, etc...]
A list may be indexed in the form a[i] or be used as a stack.
A "set" hold elements without doubloons, and has several functions: union, intersection, removing.
The RANGE construct is written: a to b where "to" is a keyword and "a" and "b" are variables..
A range may used inside an expression or as argument of a function. The expression or the function are called with each value in the range.
Ex: write(1 to 5) will display 1, 2, 3, 4 ,5.
Expression don't return a boolean value, but are either evaluated or rejected. The operation are executed if the expression may be evaluated. This is the first language where expression evaluating it leaded by the GOAL.
There is a statement of the C language: if ( x= expression) ... which means: assign to x the result of the expression, and if a is non zero, then..., this construct is generalized in Icon, if the expression may be evaluated, x gets the value, else x remains unchanged and the condition is ignored.
The EVERY..DO construct associated to an expression works as an iterator. As the range.
The ALTERNATION is another powerful construct. It allows to use a sequence of parameters until a result is obtained. The symbol is "|".
For example the statement : if a | b | c = 0 | 1 means for.... if a or b or c is 0 or 1 then ...

ML - 1973? - Meta Language

R. Milner

Functional language inspired by Iswim.
Its goal was to proof theorem at the Edimburg University.
Functions are replaced by pattern models.
Implemented in Lisp.

Modula 2 - 1979 - MODUlar LAnguage

Niklaus Wirth

Modula 1 would be defined in 1977. Implemented on the Lilith workstation at first.
The idea is to reduce the risk of error with coercive programming rules. However, it adds to Pascal some features of the C language. A call of function without argument is written f() as in C rather than f as in Pascal.
A program is splitted in modules with local scope, and interfaces for other modules. Use coroutines. Allows access to the hardware.
Was only used in Universities, because these new features has been added also to Pascal by the makers of compilers (the units of Turbo Pascal mainly).

Ada - 1980+ - Nickname of Ada Byron de Lovelace, first woman to program

Designed by a committee leaded by Jean Ichbiah, for the U.S. Department Of Defense.

Inspired by Pascal and Algol W. Is rather heavy.
Introduces GENERICITY of algorithms and a kind of primitive object orientation, but becomes really object oriented later.
Introduces PACKAGES, that are independent modules.

C++ - 1981-1986

Bjarne Stroustrup

Object oriented version of C.
Introduces OPERATOR OVERLOADING. Methods may be inline.
Use // for one-line comment, that comes from BCPL, of which C is a successor!
Further, multiple inheritance and template (generic classes or functions) has been implemented.

Objective C, invented by Brad Cox in 1984, is another objet oriented version of C, inspired by smalltalk. No operator overloading. Used to write NextStep, the operating system of the Next computer.

Standard ML - 1984

R. Milner, University of Edimburgh and Cambridge and Inria

Search for Standard ML Moscow on a search engine.
An implementation of ML.

Eiffel - 1985

Bertrand Meyer

Procedural language fully object oriented , implementing persistency and programming per contract (using precondition and postcondition on functions). Was designed for security of software.
Compiled in C. May be interfaced with other langages. Has features of functional languages, generic classes, garbage collector.
An open source version exist, Sather, (from the name of a tower at Berkeley).

GAP - 1986 - Groups, Algorithms and Programming

Johannes Meier, Werner Nickel, Alice Niemeyer, Martin Schönert and others

The language has been defined to program mathematical algorithms.
It is interpreted, interactive an untyped. List and records are complex variables.
The syntax is that of Pascal with some differences. Comments for exemple are introduced by #.
An end of bloc is denoted by inverted keywords: if fi, do od.
The for loop has the forms: for in list, for in from to.
The language has procedures and functions.
What made it apart if that variables point out values and not memory addresses, and the form of a definition of function is as a call: x := function(arguments) body.
A function may be embedded inside another function.

Miranda - 1989 - From the name of a Shakespeare's heroin (Miranda, means for admirable in latin)

D.Turner

Inspired by Sasl and ML. Lazy evaluation: arguments of functions are evaluated only when they are used. Embedded pattern-matching, modules.

Caml - 1987 - Categorical Abstract Machine Language

Suarez, Weiss, Maury

Caml and Objective caml in 1996, has implemented ML.

Perl - 1987 - Practical Extracting and Report Langage

Larry Wall

Destinated to replace the command line language of Unix, Sh, Sed and Awk, it kept the same ugly syntax. Used mainly for system administration, CGI scripts.
Includes lists and associatives arrays. The FOREACH control structure allows to scan lists.

Oberon - 1988

Niklaus Wirth

Successor of Modula 2 (and Pascal).
Several commonly used constructs are suppressed to reduce the risk or error! A garbage collector is added to.

Haskell - 1990 - Nickname of a logician, Haskell Curry

Purely functional language. Inspired by Miranda and Sasl.
Functional arrays, pattern matching.

ABC 1980-90 - ABC (equivalent to EZ in english)

CWI - Meertens, Pemberton and Guido Van Rossum

Scripting language elaborated at CWI in Netherlands, and the goal of which was to become a successor to Quick Basic or scripting languages of Unix.
Perhaps the first to use INDENTING to denote statements of a block: no markers as begin/end.
Another innovation, there is no file management, but rather persistency of the global variables: the value is stored from a session to another!
There are five types: number, string, list, composed (structure without fieldnames), array.

Python - 1991 - From the english TV movie "Monty Python Flying Circus"

Guido Van Rossum

Scripting language with dynamic types. This is a replacement to Perl.
Inspired by ABC, but is extensible with C libraries, and object oriented.
As ABC, used evolved types: tuple, list, dictionary.
The slicing operator [a : b] allows to extract a sub-list from a list.
There is a version that compiles in Java bytecode, jython and ports for .NET.

Pov-Ray - 1991 - Persistence Of Vision (title of a mediocre science-fiction book).

D. & A. Collins, and contributors

Pov-Ray is a language for describing 3D images.

DisCo - 1992 - Distributed Co-operation

Reino Kurki-Suonio

Disco is a specification language for reactive systems with Pascal-like syntax. Constructs of the language are objects, event-driven functions (named here actions), and relations. A function is activated when a state of the system occurs and may be overwritten, this is named "refinement" in the language. Disco focuses on collective behavior. Layers are modules of the language. It is an system oriented language with objects and behavior (not action oriented as it is said in the presentation).

Ruby - 1994 - As the jewel, analogy with Perl

Yukihiro Matsumoto

Ruby has been designed as successor to Perl and alternative to Python, to be clearer than the first one, and more object oriented than the second one. The syntax comes from these two languages, it want to be without surprise and natural but may be complex.
There is no new control structure as in Scriptol, but a lot of minor innovations to make the code smaller.
It is an interpreted language easy to extend. Statements are terminated by end of line. Blocks of statement and loop are delimited by "end". Most Python's features are present: associative arrays, iterators...
The originality is the dynamic object feature (adding methods to instances) and scope of variables denoted by a prefix.

Java - 1994 - Java (coffee)

James Gosling and other programmers at Sun

Conceived at the beginning, in 1991, as an interactive language named Oak, was unsuccessful. But in 1994 has been rewritten for Internet and renamed Java. In 1995 navigators can run applets. In january 1996, Javasoft distributes JDK 1.0, the Java Developpement Kit.
Java is a classical procedural language, near C++. It compiles in bytecode, interpreted on any computer. ..
It is simpler than C++: one class by file, automatic memory management, no pointers. No multiple inheritance nor operator overloading, but integrated multi-tasking.
Unlike C and C++, has only dynamic arrays.

PHP - 1995 - Personal Home Pages Hypertext Processor

Rasmus Lerdorf

Multi-platforms scripting language, embedded inside HTML.
Near C but not typed. Variables are prefixed by the $ symbol as the shell of Unix or as Perl. The interpreter parses a html page that embeds php code and delivers a pure html page.
An extended library of functions allows webmasters to build dynamic pages.
Microsoft uses an equivalent language under Windows, ASP, near Basic.

JavaScript - 1995 (Has been firstly named LiveScript)

Brendan Eich at Netscape

Scripting language to embedd procedural code into web pages.
May be used to other applications, XML based languages for example.
Share the syntax of C or Java, but with untyped variables. The element of the web page (window, table, etc...) are accessed through the Document Object Model.

UML - 1996 - Unified Modeling Language

Standard by OMG (Object Management Group) - Grady Booch, Jim Rumbaugh, and Ivar Jacobson

UML is the union of three modeling languages designed by the three authors above. The language uses a graphical notation to design software projects. A source is a diagram expressing objects and their interactions. A model is made of views and the combination of them describes a complete system. The model is abstract and domain-independent.

ECMAScript - 1997

Standard by the european standardization organisation E.C.M.A.
Standard to the langage invented by Netscape, to let dynamic HTML pages client-side.

Rebol - 1997 (The design is older) - Relative Expression Based Object Language

Carl SassenRath

Interpreted, extensible scripting language that produces compact code. It is aimed at communication on Internet and distributed computing.
Has 45 types using same operators (Ex: date, money...). Use [ ] to enclose blocks of statements.

C# - 2000 - (C-sharp), want to succeed to C++

Anders Hejlsberg / Microsoft

This is the main language of the .NET environment, to program software working thought Internet. As Java, it keeps the C syntax, a 34 years old language, with same improvments: garbage collector, no pointer, interfaces, multi-tasking...
C# compiles to intermediate language, the MSIL (MicroSoft Intermediate Language), and uses a multi-languages library, the CLR (Common Language Runtime). The originality of the .NET system is that various language may be compiled to MSIL and share their classes.
Other new features come with this language:
- structs are now special kind of object, passed by values.
- literals are objects also, with methods..
- attributes are descriptive objects attached to elements of the program and used by the runtime.
- properties: methods that may be used as variables (prop = 5 is equivalent to prop(5).
- foreach() to scan arrays (new only for Java and C++).
- delegate replaces pointer of functions of C.
There are improvements on Java also:
- event management is improved.
- operator overloading is present.
- simpler access to the the native system.

AspectJ - 2001 - Aspect for Java

Palo Alto Research Center

Aspect J is a Java extension that implements aspect oriented programming. A technique that modularizes crosscutting concerns. The unit is not the class, but a concern, that spans multiple classes. Concern may be, for example, properties, area of interest of a system and AOP describes their relationship, and compose them together into a program. Aspects encapsulates behavior that concerns multiple classes.

Scriptol - 2001 - Scriptwriter Oriented Language

Denis Sureau

The most recent, the most powerful among procedural languages. Scriptol is either compiled in PHP or in C++ or native, giving it a great portability. It is both a language for applications, for scripting and to make dynamic web pages.
Blocs of statements and control structures are not closed by "end" or "}" but, as in XML, with the form "/if", " /for", "/while" and so ones...
The language has new control structures: "for in", "while let", "scan by", etc... The "composite if"structure eases to implement rules.
Variables and literals are objects. Basic object (number, text, etc...) and compound ones are created by direct assignment of a value or a list of arguments to the name.
Scriptol is destinated to evolve and to have, along classes, other high-level structures to allow programs to be nearest human thought.
Since October 2003, Scriptol allows to use XML as internal data structure.

Scala - February 2004

Ecole Polytechnique Federale de Lausanne

Scala is a pure object oriented language that implements some Python features in Java syntax. It is statically typed and both procedural and functional. It currently runs on JVM and .NET.

E4X - June 2004 - EcmaScript For XML (E four X)

ECMA

E4X is not a language but an addition to a language. In the same manner Scriptol uses XML as data structure with attributes and methods, E4X allows to assign XML to ECMAScript variables, and to access elements by indices or attributes.

JavaFX Script - 2005-2007

This language which is built on Java, incorporates and expands its syntax. It is intended to create rich graphical interface for the Web. It is used with NetBeans.
The langage was designed en 2005 and named F3 (Form Follows Function), but after the company has been bought by Sun, it was renamed JavaFX Script and open sourced.

The future

Some trends:

Scripting languages
Several modern scripting languages offer a simple, natural syntax: NetRexx, Python, Ruby, Scriptol. Python is the most widely used for now. Ruby is mainly used for the Rail library. Scriptol has innovative features.


Internet languages
These languages allows to embed code inside HTML page and thus to combine statements and data. PHP, ASP, JavaScript are the most used ones. The .NET platform will allow any language to be embedded into HTML.

Markup languages
A recent trend is to turn XML documents into executables.
- XML is embedded into Scriptol sources as a data structure, that is usable by any statement in the source. This is a next step beyond object oriented programming.
- XUL is a Mozilla project that embeds JavaScript into XML to easily produce GUI (the one of Mozilla for example). On the Web with Firefox or locally with the XULRunner runtime.
- Microsoft uses XAML to define graphical interfaces, on the Web with the cross-browsers plug-in Silverlight or locally on .NET.

A new C++ language
C++0x, will be probably C++09. This new version will include as standard a lot of external libraries. It will have tuples and garbage collector and an extended standard library with regular expression and threads.

SQL
Thanks to Web applications and dynamic sites of the Web 2.0, SQL trends to be more and more popular, and so is now a part of modern programming.

Conclusion
The .NET or compatible platforms will ease to put code inside data, but XML may be an alternative. C# will be a leader language of such platform at start, but its success is due mainly to that programmers are used with the C++ and Java syntax. As the platform allows to use any language with common resources, it will permit new and powerful languages to emerge. The .NET platform uses XML by converting it into objects. It is possible to use it directly as data structure instead.
Other trends are higher level for languages, programming by aspects, or by schemas with UML and further concepts.
Selengkapnya...