Sabtu, 27 Juni 2009
Melihat Hari Jawa pada Tanggal Lahir Seseorang dengan AWK
Sebelumnya kita bisa memakai daftar nama yang berisi tanggal lahir yang sudah kita buat pada posting sebelumnya.
jaka 1 4 1989
candra 19 6 1990
yusi 3 2 1988
yayuk 2 9 1987
irna 23 7 1990
tantri 8 9 1990
budi 20 11 1988
fita 28 12 1987
adit 17 10 1984
ahsan 9 3 1988
sugeng 7 8 1990
eko 3 5 1988
ferdian 11 7 1988
karina 7 9 1990
adi 15 2 1988
adya 27 12 1990
Simpan sebagai input.awk
Berikut program menggunaka awk, kita simpan dengan nama pasaran.awk.
{ thn=$4-1; bln=$3-1; thk=thn/4;
{ if(thn%4==1)
{ b=0.25 }
if(thn%4==2)
{ b=0.50 }
if(thn%4==3)
{ b=0.75 } }
{ d=thk-b;
thb=thn-d; }
{ if(bln==0 && $4%4!=0)
{ a=0 }
if(bln==1 && $4%4!=0)
{ a=31 }
if(bln==2 && $4%4!=0)
{ a=59 }
if(bln==3 && $4%4!=0)
{ a=90 }
if(bln==4 && $4%4!=0)
{ a=120 }
if(bln==5 && $4%4!=0)
{ a=151 }
if(bln==6 && $4%4!=0)
{ a=181 }
if(bln==7 && $4%4!=0)
{ a=212 }
if(bln==8 && $4%4!=0)
{ a=243 }
if(bln==9 && $4%4!=0)
{ a=273 }
if(bln==10 && $4%4!=0)
{ a=304 }
if(bln==11 && $4%4!=0)
{ a=334 } }
{ if(bln==0 && $4%4==0)
{ a=0 }
if(bln==1 && $4%4==0)
{ a=31 }
if(bln==2 && $4%4==0)
{ a=60 }
if(bln==3 && $4%4==0)
{ a=91 }
if(bln==4 && $4%4==0)
{ a=121 }
if(bln==5 && $4%4==0)
{ a=152 }
if(bln==6 && $4%4==0)
{ a=182 }
if(bln==7 && $4%4==0)
{ a=213 }
if(bln==8 && $4%4==0)
{ a=244 }
if(bln==9 && $4%4==0)
{ a=274 }
if(bln==10 && $4%4==0)
{ a=305 }
if(bln==11 && $4%4==0)
{ a=335 } }
jum=(thb*365)+(d*366)+a+$2;
{ if(jum%5==1)
{ f="Pahing" }
if(jum%5==2)
{ f="Pon" }
if(jum%5==3)
{ f="Wage" }
if(jum%5==4)
{ f="Kliwon" }
if(jum%5==0)
{ f="Legi" } }
{ if(jum%7==1)
{ printf("%-12s %2d %2d %d Minggu %s\n",$1,$2,$3,$4,f) }
if(jum%7==2)
{ printf("%-12s %2d %2d %d Senin %s\n",$1,$2,$3,$4,f) }
if(jum%7==3)
{ printf("%-12s %2d %2d %d Selasa %s\n",$1,$2,$3,$4,f) }
if(jum%7==4)
{ printf("%-12s %2d %2d %d Rabu %s\n",$1,$2,$3,$4,f) }
if(jum%7==5)
{ printf("%-12s %2d %2d %d Kamis %s\n",$1,$2,$3,$4,f) }
if(jum%7==6)
{ printf("%-12s %2d %2d %d Jumat %s\n",$1,$2,$3,$4,f) }
if(jum%7==0)
{ printf("%-12s %2d %2d %d Sabtu %s\n",$1,$2,$3,$4,f) } }
}
Kemudian kita eksekusi:
# awk -f pasaran.awk input.dat
Hasilnya
jaka 1 4 1989 Sabtu Wage
candra 19 6 1990 Selasa Pon
yusi 3 2 1988 Rabu Legi
yayuk 2 9 1987 Rabu Pahing
irna 23 7 1990 Senin Pahing
tantri 8 9 1990 Sabtu Wage
budi 20 11 1988 Minggu Pahing
fita 28 12 1987 Senin Wage
adit 17 10 1984 Rabu Pahing
ahsan 9 3 1988 Rabu Legi
sugeng 7 8 1990 Selasa Pahing
eko 3 5 1988 Selasa Legi
ferdian 11 7 1988 Senin Kliwon
karina 7 9 1990 Jumat Pon
adi 15 2 1988 Senin Pon
adya 27 12 1990 Kamis Wage
Fin!
Kamis, 25 Juni 2009
Menentukan Hari pada Tanggal Lahir dengan AWK
Seperti biasa kita buat file yang akan kita jadikan input, yakni berupa nama, tanggal lahir. Seperti contoh berikut:
jaka | 1 | 4 | 1989 |
candra | 19 | 6 | 1990 |
yusi | 3 | 2 | 1988 |
yayuk | 2 | 9 | 1987 |
irna | 23 | 7 | 1990 |
tantri | 8 | 9 | 1990 |
budi | 20 | 11 | 1988 |
fita | 28 | 12 | 1987 |
yoga | 19 | 1 | 1989 |
purna | 17 | 7 | 1989 |
adit | 17 | 10 | 1984 |
ahsan | 9 | 3 | 1988 |
sugeng | 7 | 8 | 1990 |
eko | 3 | 5 | 1988 |
endika | 14 | 1 | 1989 |
simpan sebagai input.dat
{
hari[1] = "Minggu"; hari[2] = "Senin"; hari[3] = "Selasa"; hari[4] = "Rabu"; hari[5] = "Kamis"; hari[6] = "Jumat"; hari[0] = "Sabtu";
jumhar[0]=0; jumhar[1]=31; jumhar[2]=28; jumhar[3]=31; jumhar[4]=30; jumhar[5]=31; jumhar[6]=30; jumhar[7]=31; jumhar[8]=31; jumhar[9]=30; jumhar[10]=31; jumhar[11]=30;jumhar[12]=31;
jum = 0
thn = $4-1
x = thn % 4
z = thn / 4
if( x==1 ){a=z-0.25}
if( x==2 ){a=z-0.5}
if( x==3 ){a=z-0.75}
thnkab = a*366
thnb = (thn - a)*365
jumhari = thnkab + thnb
if($4 % 4== 0)
{
for (i=1; i< $3; i++){ jum += jumhar[i] } if ( $3 > 2){
tot = jumhari + jum + $2 +1}
else {
tot = jumhari + jum + $2 -1 }
}
else{
for (i = 1; i< $3; i++){ jum += jumhar[i] } tot = jumhari + jum + $2 -1 } tothar = tot % 7 printf ("%-10s %-5d %-5d %-5d %-10s\n", $1, $2, $3, $4, hari[tothar]); }
Simpan file tadi dengan nama formula.awk, kemudian kita jalankan!
# awk -f formula.awk input.dat hasilnya..
jaka | 1 | 4 | 1989 | Jumat |
candra | 19 | 6 | 1990 | Senin |
yusi | 3 | 2 | 1988 | Selasa |
yayuk | 2 | 9 | 1987 | Selasa |
irna | 23 | 7 | 1990 | Minggu |
tantri | 8 | 9 | 1990 | Jumat |
budi | 20 | 11 | 1988 | Minggu |
fita | 28 | 12 | 1987 | Minggu |
yoga | 19 | 1 | 1989 | Selasa |
purna | 17 | 7 | 1989 | Sabtu |
adit | 17 | 10 | 1984 | Rabu |
ahsan | 9 | 3 | 1988 | Rabu |
sugeng | 7 | 8 | 1990 | Senin |
eko | 3 | 5 | 1988 | Selasa |
endika | 14 | 1 | 1989 | Kamis |
fin..!
Jumat, 19 Juni 2009
Membuat Bujur Sangkar Ajaib dengan menggunakan AWK
Tugas 4
Kita bisa memulai membuat file programnya sebagai berikut:
#! /bin/awk -f
# bujur-ajaib.awk
{ n=$1;
X=1;
Y=1;
Z=1;
for(a=0; a<=n+2; a++)
{ for(b=0; b<=n+2; b++)
ordo[a,b] = 0;
}
a=1; b=(n+1) / 2;
X-=Y;
for(N=1; N<=n*n;)
{ if(ordo[a,b]==0)
{ X+=Y;
ordo[a,b] = X;
if(a==n) ordo[0,b] = X;
if(b==1) ordo[a,n+1] = X;
if(a==n && b==1 ) ordo[0,n+1] = X;
a--; b++; N++;
if(a==0&&b==n+1) continue;}
else
{ if (a==0) a=n;
if(b==n+1) b=1;
}
}
else
{ a+=2;
b-=1;
X=X-Y+Z;
}
}
for(a=1; a<=n; a++)
T1+=ordo[a,n+1-a];
for(a=1; a<=n*5; a++)
printf(" ");
printf("%5d\n\n",T1);
for(a=1;a<=n+1;a++)
{ for(b=1; b<=n; b++)
{ printf("%5d", ordo[a,b]);
ordo[a,n+2] += ordo[a,b];
ordo[n+1,b] += ordo[a,b];
}
T2 += ordo[a,b];
if(a==n+1) ordo[a,n+2] = T2;
printf("%5d\n\n",ordo[a,n+2]);
}
}
Kemudian kita simpan program tersebut dengan nama misalnya bujur-ajaib.awk
Nah, setelah itu mari kita coba jalankan! Buka terminal, kemudian jalankan filenya!
$ awk -f bujur-ajaib.awk
maka akan muncul kursor berkedip pada terminal, masukkan saja nilai sembarang.. maka awk akan mengeksekusinya dan kemudian menampilkan pada layar. Misalnya kita ketik angka 1, maka akan muncul:
# awk -f bujur.awk
Kita bisa mengetikkan lagi angka berapapun, dengan syarat bukan angka bernilai negatif atau angka bernilai genap. Kemudian untuk keluar dengan menekan tombol Ctrl-D
Namun cara ini terdapat sedikit keganjilan pada jumlah nilai diagonalnya, karena akan ditambahkan dengan diagonal nilai sebelumnya.
$ awk -f bujur-ajaib.awk
1
1
1 1
1 1
3
16
8 1 6 15
3 5 7 15
4 9 2 15
15 15 15 16
5
81
17 24 1 8 15 65
23 5 7 14 16 65
4 6 13 20 22 65
10 12 19 21 3 65
11 18 25 2 9 65
65 65 65 65 65 81
7
256
30 39 48 1 10 19 28 175
38 47 7 9 18 27 29 175
46 6 8 17 26 35 37 175
5 14 16 25 34 36 45 175
13 15 24 33 42 44 4 175
21 23 32 41 43 3 12 175
22 31 40 49 2 11 20 175
175 175 175 175 175 175 175 256
Ctrl-D
Dengan cara lain, kita gunakan perintah echo. Perintah echo adalah perintah untuk menampilkan banyaknya baris pada teks. Akan tetapi disini akan dihitung sebagai ordo matriks yang akan kita buat.
$ echo 9 | awk -f bujur-ajaib.awk
369
47 58 69 80 1 12 23 34 45 369
57 68 79 9 11 22 33 44 46 369
67 78 8 10 21 32 43 54 56 369
77 7 18 20 31 42 53 55 66 369
6 17 19 30 41 52 63 65 76 369
16 27 29 40 51 62 64 75 5 369
26 28 39 50 61 72 74 4 15 369
36 38 49 60 71 73 3 14 25 369
37 48 59 70 81 2 13 24 35 369
369 369 369 369 369 369 369 369 369 369
Selesai...
Rabu, 03 Juni 2009
Menghitung Harga Barang dan Diskonnya dengan AWK
Terdapat sebuah tabel pembelian barang yakni perangkat komputer sebagai berikut:
Barang | Jumlah | Harga satuan |
CPU | 7 | 5500000 |
Printer | 5 | 1500000 |
Scaner | 8 | 2700000 |
Monitor | 10 | 3500000 |
Hardisk | 6 | 1200000 |
Mouse | 12 | 100000 |
Webcam | 15 | 1000000 |
sedangkan hasil yang diinginkan adalah sebagai berikut:
Barang | Jumlah | HargaSatuan | Total | Diskon | Bayar |
CPU | 7 | 5500000 | 38500000 | 3850000 | 34650000 |
Total adalah jumlah barang dikalikan harga barang
Diskon adalah sebagai berikut:
-bila membeli barang 5 atau lebih, maka diskon 10%
-bila membeli barang 10 atau lebih, maka diskon 20%
Bayar adalah total harga barang dikurangi diskon
Nah, yang perlu kita kerjakan terlebih dahulu kita bisa membuat tabel seperti diatas kemudian menyimpannya dalam sebuah direktori dengan nama misalnya barang.dat. Kemudian kita buat programnya...
Seperti ini..
BEGIN { printf "Barang Jumlah HargaSatuan Total Diskon Bayar\n" }
{ jumlah = $2
satuan = $3
total = $2 * $3 }
{ if ( $2 >= 5 && $2 < diskon =" total">= 10) {diskon = total *0.20} }
{ bayar = total - diskon }
{ printf "%-8s %6d %11d %12d %7d %8d\n", $1, $2, $3, total, diskon, bayar }
Kemudian kita simpan program tersebut dengan nama out.awk misalnya. Kita tinggal menjalankan programnya..
$ awk -f out.awk barang.dat
maka hasilnya..
Barang | Jumlah | HargaSatuan | Total | Diskon | Bayar |
CPU | 7 | 5500000 | 38500000 | 3850000 | 34650000 |
Printer | 5 | 1500000 | 7500000 | 750000 | 6750000 |
Scanner | 8 | 2700000 | 21600000 | 2160000 | 19440000 |
Monitor | 10 | 3500000 | 35000000 | 7000000 | 28000000 |
Harddisk | 6 | 1200000 | 7200000 | 720000 | 6480000 |
Mouse | 12 | 100000 | 1200000 | 240000 | 960000 |
Webcam | 15 | 1000000 | 15000000 | 3000000 | 12000000 |
selesaiii...!! :)
Mencetak Bilangan Prima Menggunakan AWK
Dalam matematika, bilangan prima adalah bilangan asli yang lebih besar dari 1, yang faktor pembaginya adalah 1 dan bilangan itu sendiri. 2 dan 3 adalah bilangan prima. 4 bukan bilangan prima karena 4 bisa dibagi 2. Sepuluh bilangan prima yang pertama adalah 2, 3, 5, 7, 11, 13, 17, 19, 23 dan 29.
Ada beberapa cara untuk mencari bilangan prima, salah satunya dengan menggunakan saringan Eratosthenes. Namun disini agak kesulitan mengimplementasikannya dengan menggunakan AWK untuk mencarinya. Berikut cara lain untuk mendapatkannya.
awk 'BEGIN{
for(i=2;i<=100;i++)
{
if(i==2 || i==3 || i==5 || i==7) print i ;
if(i%2!=0 && i%3!=0 && i%5!=0 && i%7!=0) print i
}
}'
Hehehe, lain kali akan saya update kalo saringan Eratosthenesnya udah bisa di AWK.. :)
Selasa, 12 Mei 2009
Menghitung Indeks Prestasi menggunakan AWK
Dalam AWK kita juga bisa menghitung IP, bagaimana caranya? berikut contohnya:
Sebelum kita membuat perhitungannya, seperti biasa kita buat terlebih dahulu tabel yang berisikan daftar prestasi mahasiswa, misalnya tabel prestasi Joko dari Teknik Komputer seperti berikut:
1 | JokoSusilo | BahasaInggris5 | 2 | 80 | 85 | 75 |
2 | JokoSusilo | BahasaIndonesia | 2 | 75 | 80 | 90 |
3 | JokoSusilo | PengolahanSinyalDigital | 2 | 80 | 70 | 75 |
4 | JokoSusilo | SistemEmbedded2 | 2 | 70 | 80 | 80 |
5 | JokoSusilo | KonsepJaringan | 2 | 80 | 85 | 90 |
6 | JokoSusilo | RekayasaPerangkatLunak | 2 | 90 | 90 | 90 |
7 | JokoSusilo | SistemPengaturanKomputer1 | 2 | 75 | 75 | 90 |
8 | JokoSusilo | P.PengolahanSinyalDigital | 2 | 80 | 80 | 80 |
9 | JokoSusilo | P.SistemEmbedded2 | 2 | 75 | 85 | 70 |
10 | JokoSusilo | P.KonsepJaringan | 2 | 80 | 65 | 75 |
11 | JokoSusilo | P.RekayasaPerangkatLunak | 2 | 75 | 80 | 90 |
12 | JokoSusilo | P.SistemPengaturanKomputer1 | 2 | 70 | 70 | 75 |
Dimana tabel diatas menunjukkan bahwa pada kolom pertama adalah kolom nomor, kolom kedua adalah nama Joko yakni Joko Susilo dan ketiga nama matakuliah, diikuti kolom keempat adalah jumlah sks, kelima nilai tugas, nilai uts kemudian terakhir nilai uas.
Disini yang harus kita cari adalah nilai per mata kuliah, kemudian kriteria nilai tersebut yakni dalam huruf, kemudian Indeks Prestasi mahasisw per Semester tersebut, yang dapat kita hitung dengan formula:
IPS = Xn/ Xs
IPS : indeks prestasi per semester
Xn : jumlah nilai untuk semua mata kuliah
Xs : total sks
Skala Penilaian Hasil Belajar
NILAI ANGKA | NILAI HURUF | NILAI NUMERIK | KATEGORI |
80 - 100 | A | 4 | Istimewa |
71 - 80 | AB | 3,5 | Baik Sekali |
66 - 70 | B | 3 | Baik |
61 - 65 | BC | 2,5 | Cukup Baik |
56 - 60 | C | 2 | Cukup |
41 - 55 | D | 1 | Kurang |
0 - 40 | E | 0 | Kurang Sekali |
awk '
BEGIN {print "\nMenghitung Indeks Prestasi semester"}
{print $0; $8 = ($5 + $6 + $7) / 3; print $8;
if($8>80) print $9,"A";
else if($8 > 70 && $8 <= 80) print $9,"AB";
else if($8 > 65 && $8 <= 70) print $9,"B";
else if($8 > 60 && $8 <= 65) print $9,"BC";
else if($8 > 55 && $8 <= 60) print $9,"C";
else if($8 > 40 && $8 <= 55) print $9,"D";
else if($8 <= 40) print $9,"E"}
{print $10}
{ if($8 > 80) num = 4;
else if($8 > 70 && $8 <= 80) num = 3.5;
else if($8 > 65 && $8 <= 70) num = 3;
else if($8 > 60 && $8 <= 65) num = 2.5;
else if($8 > 55 && $8 <= 60) num = 2;
else if($8 > 40 && $8 <= 55) num = 1;
else if($8 <= 40) num = 0}
{nx =+ num}
{nsks =+ $4}
END { print "\nIPS ="nx/nsks }' ip_joko
Hasilnya akan seperti demikian:
Menghitung Indeks Prestasi semester | ||||||
1 | JokoSusilo | BahasaInggris5 | 2 | 80 | 85 | 75 |
80 |
|
|
|
|
|
|
AB |
|
|
|
|
|
|
|
|
|
|
|
|
|
2 | JokoSusilo | BahasaIndonesia | 2 | 75 | 80 | 90 |
81.67 |
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 | JokoSusilo | PengolahanSinyalDigital | 2 | 80 | 70 | 75 |
75 |
|
|
|
|
|
|
AB |
|
|
|
|
|
|
|
|
|
|
|
|
|
4 | JokoSusilo | SistemEmbedded2 | 2 | 70 | 80 | 80 |
76.67 |
|
|
|
|
|
|
AB |
|
|
|
|
|
|
|
|
|
|
|
|
|
5 | JokoSusilo | KonsepJaringan | 2 | 80 | 85 | 90 |
85 |
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
6 | JokoSusilo | RekayasaPerangkatLunak | 2 | 90 | 90 | 90 |
90 |
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
7 | JokoSusilo | SistemPengaturanKomputer1 | 2 | 75 | 75 | 90 |
80 |
|
|
|
|
|
|
AB |
|
|
|
|
|
|
|
|
|
|
|
|
|
8 | JokoSusilo | P.PengolahanSinyalDigital | 1 | 80 | 80 | 80 |
80 |
|
|
|
|
|
|
AB |
|
|
|
|
|
|
|
|
|
|
|
|
|
9 | JokoSusilo | P.SistemEmbedded2 | 1 | 75 | 85 | 70 |
76.67 |
|
|
|
|
|
|
AB |
|
|
|
|
|
|
|
|
|
|
|
|
|
10 | JokoSusilo | P.KonsepJaringan | 1 | 80 | 65 | 75 |
73.33 |
|
|
|
|
|
|
AB |
|
|
|
|
|
|
|
|
|
|
|
|
|
11 | JokoSusilo | P.RekayasaPerangkatLunak | 1 | 75 | 80 | 90 |
81.67 |
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
12 | JokoSusilo | P.SistemPengaturanKomputer1 | 1 | 70 | 70 | 75 |
71.67 |
|
|
|
|
|
|
AB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IPS =3.5 |
Rabu, 18 Maret 2009
Summary - AWK
NAWK - A newer, improved version from AT&T
GAWK - The Free Software foundation's version
History - AWK dibuat pada tahun 1970 oleh Aho, Peter Weinberger dan Brian Kernigan.
AWK, merupakan bahasa pemrograman yang berfungsi untuk menangani manipulasi data teks secara bersamaan dengan hanya menggunakan sedikit baris program. AWK tidak memerlukan deklarasi untuk variabel, oleh karena itu pemrograman ini menjadi singkat.
AWK menangani input, pemisahan field, inisialisasi, dan manajemen memori secara otomatis, tidak memerlukan deklarasi variable.
Struktur AWK
- BEGIN segment ( optional )
- Pattern-action pairs ( inputing data )
- END segment ( optional )
awk '(pattern + action)' '(filenames)'
Pattern merepresentasikan pola yang ingin dicari oleh AWK dan action merupakan
action yang ingin dilakukan jika pola yang sesuai ditemui.
Cara Menjalankan AWK
• AWK ‘program’ input_file(s) : program dan input merupakan perintah.
• AWK ‘program’ : program bertindak sebagai perintah, input berasal dari standart input.
• AWK –f program_file_name input_files : program dibaca dari suatu file.
Penyimpan Output AWK
• Lining Up Fields ( printf=untuk menghasilkan output terformat )
Output AWK
• Dapat menampilkan number of field ( NF )
• Dapat melakukan perhitungan pada nilai field dan menampilkannya sebagai output.
• Dapat menampilkan line numbers yang kita inginkan ( NR )
• Dapat menambahkan text pada output.
• Dapat menampilkan output seluruh line apabila tidak terdapat pattern.
• Dapat menampilkan multiple items dengan 1 print statement.
Sejarah Bahasa Pemrograman
Berikut adalah ringkasan sejarah bahasa pemrorgraman.
Sebelum 1940
Bahasa pemrograman yang pertama kali muncul sebelum adanya komputer modern, artinya bahasa pemrograman lebih tua dari komputer itu sendiri. Pada awal kemunculannya, bahasa pemrograman masih dalam bentuk kode-kode bahasa mesin. Bahasa mesin merupakan bahasa yang terdiri atas kode-kode mesin dan hanya dapat diinterpretasikan langsung oleh mesin komputer. Bahasa mesin ini tergolong bahasa tingkat rendah, karena hanya berupa kode 0 dan 1 saja.
Periode 1940-an
Seiring dengan kebutuhan dan perkembangan teknologi para programer mulai mengahadapi masalah dengan bahasa mesin, karena selain sulit dibuat dan dibaca juga akan sulit memperbaiki bila terjadi kesalahan coding. Tahun 1940-an komputer bertenaga listrik dibuat, dengan kecepatan yang sangat terbatas dan kapasitas memori yang mencukupi untuk programmer memprogram, emudian terciptalah bahasa assembly (Assembly language). Bahasa assembly adalah bahasa simbol dari bahasa mesin. Setiap kode bahasa mesin memiliki simbol sendiri dalam bahasa assembly. Misalnya ADD untuk penjumlahan, MUL untuk perkalian, SUB untuk pengurangan, dan lain-lain. Penggunaan bahasa Asembly dirasa belum sempurna karena selain sulit untuk diimplementasikan, ternyata bahasa ini juga sulit jika sang programer ingin mengembangkan program buatannya. Pada tahun 1948, Konrad Zuse mempublikasikan sebuah paper tentang bahasa pemrograman miliknya yakni Plankalkül. Bagaimanapun, bahasa tersebut tidak digunakan pada masanya dan terisolasi terhadap perkembangan bahasa pemrograman yang lain. Beberapa bahasa pemrograman yang berkembang pada masa itu antara lain:
- Plankalkül (Konrad Zuse) - 1943
- ENIAC coding system - 1943
- C-10 - 1949
Pada tahun 1950 untuk pertamakalinya bahasa pemrograman modern muncul, yang turun-temurun dan tersebar luas hingga saat ini. Bahasa ini menggunakan istilah atau frase-frase yang dekat dengan bahasa manusia, sehingga susah untuk ditulis. Hingga saat ini kita menggunakan bahasa tingkat tinggi.Dalam perkembangannya Bahasa Tingkat Tinggi juga terdiri dari beberapa metode pemrograman, yaitu Procedural Programing dan Object Oriented Programing. Letak perbedaannya yaitu, jika pada procedural programing program dijalankan dengan menggabungkan variable, procedure-procedure yang saling keterkaitan dan berjalan berurut, sedangkan pada OOP seluruh task dijalankan berdasarkan kedalam object.
- FORTRAN (1955), the "FORmula TRANslator", ditemukan oleh John W. Backus dll.
- LISP, the "LISt Processor", ditemukan oleh John McCarthy dll.
- COBOL, the COmmon Bussines Oriented Language, dibuat oleh the Short Range Commitee, dan Grace Hopper berperan sangat besar disini.
Overview:
- Regional Assembly Language - 1951
- Autocode - 1952
- FORTRAN - 1954
- FLOW-MATIC - 1955
- COMTRAN - 1957
- LISP - 1958
- ALGOL - 1958
- COBOL - 1959
- APL - 1962
- SIMULA - 1962
- BASIC - 1964
- PL/I -1964
Periode diantara tahun 60-an sampai dengan 70-an membawa pengaruh yang besar dalam perkembangan bahasa pemrograman. Kebanyakan dari pola bahsa pemrograman yang utama yang saat ini banyak digunakan:
- Simula, ditemukan pada akhir 60-an oleh Nygaard dan Dahl sebagai superset dari Algol 60, merupakan bahasa pemrograman pertama yang didesain untuk mendukun pemrograman berorientasi object.
- C, sebuah tahapan awal dari sistem bahsa pemrograman, yang dikembangkan oleh Dennis Ritchie dan Ken Thompson di Bell Labs antara tahun 1969 dan 1973.
- Smalltalk (pertengahan tahun 70-an) menyajikan desain ground-up yang lengkap dari sebuah bahasa yang berorientasi objek.
- Prolog, didesain pada tahun 1977 oleh Colmerauer, Roussel, and Kowalski, merupakan bahasa pemrograman logika yang pertama.
- ML membangun sebuah sistem polimorfis (ditemukan oleh Robin Miller pada tahun 1973) diatas sebuah Lisp, yang merintis bahasa pemrograman fungsional bertipe statis.
- Pascal - 1970
- Forth - 1970
- C - 1970
- Smaltalk - 1972
- Prolog - 1972
- ML - 1973
- SQL - 1978
1980s adalah tahun dari konsolidasi relatif. C++ dikombinasikan dengan sistem programming dan berorientasi obyek. Pemerintah Amerika Serikat menstandardisasi Ada, sebuah sistem pemrograman yang bertujuan untuk digunakan para kontraktor untuk bertahan. Di Jepang dan di tempat lain, penjumlahan luas yang telah di selidiki disebut" generasi ke lima" bahasa-bahasa yang menyatukan logika pemrograman konstruksi. Masyarakat bahasa fungsional gerak ke standarisasi ML dan Cedal. Dibandingkan dengan menemukan paradigma-paradigma baru, semua pergerakan ini menekuni gagasan-gagasan yang ditemukan di dalam dekade sebelumnya.
However, one important new trend in language design was an increased focus on programming for large-scale systems through the use of modules, or large-scale organizational units of code. Modula, Ada, and ML all developed notable module systems in the 1980s. Module systems were often wedded to generic programming constructs generics being, in essence, parameterized modules (see also parametric polymorphism).
Bagaimanapun, satu kecenderungan baru di dalam disain bahasa adalah satu fokus yang ditingkatkan di pemrograman untuk sistem besar-besaran melalui penggunaan dari modul, atau kesatuan organisasi besar-besaran dari kode. Modula, Ada, dan ML semua sistem modul terkemuka yang dikembangkan pada 1980-an.
Beberapa bahasa pemrograman yang berkembang dalam periode ini termasuk:
- Ada - 1983
- C++ - 1983
- Eiffel - 1985
- Perl - 1987
- FL (Backus) - 1989
Beberapa bahasa pemrograman yang berkembang dalam periode ini termasuk
- Haskel - 1990
- Python - 1991
- Java - 1991
- Ruby - 1993
- Lua - 1993
- ANSI Common Lisp - 1994
- JavaScript - 1995
- PHP - 1995
- C# - 2000
- JavaFX Script