Labels: C
Saturday, March 29, 2008
Serial Port component in VB.NET 2005
Download Here
.NET Zip Component ZipForge.NET
Managing ZIP files with ZipForge.NET is really easy - be sure to read a great tuturial Zipping Up Code with ZipForge by Jeff Cogswell.
ZipForge.NET main features:
* Opens and creates archives encrypted with strong AES encryption algorithm
* Allows to create large ZIP files - up to 9,223,372,036,854,775,808 bytes in size
* Supports unicode file names
* Includes transaction system which allows you to rollback changes if archive update failed
* Adds compressed data directly from streams and extracts archived files to streams without creating temp files
* Lets you store full path with drive for each file
* Supports BZIP2 and PPMd compression algorithms, featured in WinZip 10
* Allows to search for files inside archive by mask
* Progress indication with remaining time estimation
* 100% managed C# code, without unsafe blocks
To view ZipForge.NET full features list, click here.
An individual may use Personal edition of ZipForge.NET in a project for free if he / she is the only user of this project. If your project is public or if you represent a company, you must order a commercial edition of Zipforge.NET.
more
Side by side installation of a VB.Net app plus Sql Express
asked in the subject line?
I have a VB.Net 2008 Pro application that uses Sql 2005 Express. What is
required is to make an install set that will install both and also attach an
application database. Stuff like surface area configuration needs to be
covered as well.
In other words, an install that does everything and when the user runs the
application, all works without further intervention.
more
How can I install VB.net2008
more
Saturday, March 22, 2008
Cara menjalankan file flash pada Delphi
Untuk memainkan file flash di Delphi kita perlu menginstal Plug-in Flash terlebih dahulu…
Setelah kita instal plug-in flash langkah berikutnya sebagai berikut :
Pada Delphi IDE
- click pada “Component”, “Import ActiveX Control”
- pilih “Shockwave Flash” and click on “install”.
Nah sekarang anda telah mempunyai komponen dengan nama TShockwaveFlash pada IDE Delphi di komponen pallet ActiveX.
LETAKKAN KOMPONEN TShockwaveFlash pada form, ubah ukuran sesuai dengan kebutuhan.
kemudian anda klik 2x object TShockwaveFlash nya pada URL anda isi alamat file flash anda. Ex : D:/data/gen/coba.swf
kemudian anda ok.
File flash siap untuk dijalankan....
Sebenarnya sampai disini sudah selesai membuat file flash, tapi kalo mau lebih lengkap anda ikuti langkah berikut dan lihat hasilnya.
Anda memerlukan registrasi file ocx jika tidak di instal pada sasaran yang benar di komputer kita, sehingga perlu menyertakan file sumber
- File swflash.ocx dan file Flash ( *.swf).
- Copy swflash.ocx (dari cth. windows\system32\macromed\flash) dan file swf kamu ke project path.
- buat sebuah textfile dengan berisi kode seperti ini:
SHOCKWAVEFILE RCDATA yourfile.swf
SHOCKWAVEOCX RCDATA swflash.ocx
(Dimana yourfile.swf adalah swf-file Anda)
- Simpan file ini sbg flash.rc
- Pada Commandline, pindah ke dir project anda dan masukkan baris:
“Brcc32 -r flash.rc”
- Sekarang anda telah mempunyai file resource baru bernama file flash.res
{************************************************************}
uses
ShockwaveFlashObjects_TLB; // otomatis
implementation
{$R *.DFM}
{$R flash.res} // resource baru anda yang telah dibuat
{…}
procedure TForm1.FormCreate(Sender: TObject);
var
SystemDir: array[0..MAX_PATH] of Char;
SWFDir, AppDir: string;
Fres: TResourceStream;
Ffile: TFileStream;
begin
GetSystemDirectory(@SystemDir, MAX_PATH);
SWFDir := SystemDir + ‘\macromed\flash\’;
GetDir(0, AppDir); // Get current directory
//check apakah sw-flash ocx telah ter-install
if FileExists(SWFDir + ’swflash.ocx’) = False then
begin
//buat direktori jika diperlukan dan extrak file dari resource.
{$i-} //compiler directive to suppress i/o error messages
MkDir(SystemDir + ‘\macromed’);
MKDir(SystemDir + ‘\macromed\flash’);
{$i+}
Fres := TResourceStream.Create(0, ‘SHOCKWAVEOCX’, RT_RCDATA);
Ffile := TFileStream.Create(SWFDir + ’swflash.ocx’, fmCreate);
Ffile.CopyFrom(Fres, Fres.Size);
Fres.Free;
Ffile.Free;
//register ocx (sederhana tapi berguna)
WinExec(PChar(’regsvr32 /s ‘ + SWFDir + ’swflash.ocx’), SW_HIDE);
end;
// extrak ShockwaveFile dari resource ke directory applikasi
Fres := TResourceStream.Create(0, ‘SHOCKWAVEFILE’, RT_RCDATA);
Ffile := TFileStream.Create(’flashmovie.swf’, fmCreate);
Ffile.CopyFrom(Fres, Fres.Size);
Fres.Free;
Ffile.Free;
//Assign swf file ter-extrak ke obyek TShockwaveFlash anda
FlashMovie.Movie := AppDir + ‘\flashmovie.swf’;
end;
sumber : tutorial delphi
Hanoi Game (Delphi)
dulu ada seorang biksu yang ingin memindahkan kuilnya dari suatu tempat ke tempat lain. ditempat yang baru itu dia harus melewati suatu bukit. Biksu itu hanya mampu membawa satu bagian saja dari kuilnya tersebut. Persoalannya adalah bagaimana membawa bagian2 tersebut secara cepat. cerita itu dapat digambarkan sesuai dengan gambar dibawah ini.
Balok-balok tersebut harus dipindahkan dari tiang 1 (asal) ke tiang 3 (tujuan) dengan bantuan tiang 2 (bantuan).
Sekarang kita mulai masuk pada logika kita. untuk mempercepat waktu pemindahan maka kita membutuhkan langkah terpendek. Nah menurut perhitungan secara matematika dan statistik didapat persamaan :
(2^jumlah balok) - 1
contoh:
1. jumlah balok = 2 =========> (2^2)-1 = 3
2. jumlah balok = 3 =========> (2^3)-1 = 7
3. jumlah balok = 4 =========> (2^4)-1 = 15 dst
Dari contoh game yang dulu kita hanya bisa memainkan saja akan tetapi kita tidak bisa menganalisa pergerakannya. dengan game yang saya buat, maka dengan memencet tombol Solusi maka akan secara animatif terlihat pergerakan balok tersebut yang disertai dengan tabel untuk memperjelas. Hal itu dapat di lihat pada gambar berikut:
Seperti yang terlihat, bahwa pada langkah ke 76 balok 10 berpindah dari tiang 1 ke tiang 2 dan gambar menunjukkan akan memulai langkah ke 77 yaitu balok 12 akan berpindah dari tiang 3 ke tiang 1 sampai pada langkah terakhir yaitu
(2^12) -1 = 4095.
Disini saya buat dengan bahasa program delphi 5 yang akan saya terangkan secara singkat mengenai logika dan kodenya
Untuk mencari jumlah langkah terpendek, function berikut akan sedikit membantu:
function Tfrmha.langkahterpendek(nilai:integer) : integer;
var i: integer;
begin
Result:=1;
for i:=1 to nilai do
Result:=result*2;
Result:=Result-1;
end;
Fungsi diatas pasti sudah jelas, bagi yang belum jelas kebangetan.....ha....ha....ha. Maaf cuma guyon. tapi pada waktu lain pasti akan saya jelaskan kode dasar delphi atau dapat dilihat diblogku yang lain yaitu http://belajardelphi.blogspot.com
Oke selanjutnya untuk kode dari gerakan balok maka prosedur ini akan sangat membantu:
procedure Tfrmha.hanoi(var cacah_gerak : integer; Cacah,Asal,Lewat,Tujuan :integer);
begin
if Cacah > 0 then
begin
hanoi(cacah_gerak,Cacah-1,Asal,Tujuan,Lewat);
cacah_gerak:=succ(cacah_gerak);
StringGrid2.Cells[0,cacah_gerak]:=IntToStr(cacah_gerak);
StringGrid2.Cells[1,cacah_gerak]:=IntToStr(jum-cacah+1);
StringGrid2.Cells[2,cacah_gerak]:=IntToStr(Asal);
StringGrid2.Cells[3,cacah_gerak]:=IntToStr(Tujuan);
hanoi(cacah_gerak,Cacah-1,Lewat,Asal,Tujuan);
end;
end;
Catatan saya menggunakan komponen StringGrid untuk tabelnya.
Nah sekarang anda silahkan mencoba dengan kreativitas anda sendiri. Bagi yang masih bingung dan memerlukan bantuan silahkan email ke feribayek@telkom.net
Membuat program dengan ukuran exe yang kecil
Jika kita membuat sebuah form kosong saja, maka akan dihasilkan file exe yang berukuran sekitar 290 KB dengan delphi 5, 360 KB dengan delphi 7 dan lebih besar lagi untuk delphi 2006. Walaupun kapasitas memory dan hardisk saat ini bisa dibilang lebih dari cukup, tetapi jika kita hanya ingin membuat program sederhana, ukuran seperti itu mungkin terlalu besar, belum lagi ditambah komponen lainnya dan harus di distribusikan melalui internet. Maka adakah solusinya agar aplikasi yang kita hasilkan memiliki ukuran yang kecil ?
jawabnya ada… sebenarnya bisa saja aplikasi tersebut di kompress dengan tools seperti UPX, yang bisa menjadikan aplikasi lebih kecil menjadi setengahnya atau lebih. Tetapi ada beberapa kelemahan menggunakan Exe compressor seperti UPX tersebut. Alternatif lainnya adalah langsung menggunakan fungsi-fungsi windows API (Application Programming Interface), file yang dihasilkan dijamin akan kecil. Tetapi dengan ini pemrograman jauh lebih sulit dan mungkin sangat menyita waktu hanya untuk membuat sebuah form kosong saja. Bagi programmer delphi ada komponen khusus yang sangat powerfull, supaya aplikasi yang dihasilkan berukuran kecil, cepat seperti menggunakan windows API secara langsung, bahkan mungkin lebih. Komponen ini namanya KOL ( Key Object Library ). Bagi yang belum pernah mendengar tentang KOL, bisa dilihat artikel tentang ini disini
Tertarik menggunakan komponen ini ?
Penggunaan komponen ini berbeda dengan komponen standard delphi lainnya. Setelah komponen ini diinstall ( sama seperti instalasi komponen lainnya ) maka untuk membuat sebuah program langkahnya sebagai berikut :
1. Buat project baru ( File > New > Application )
2. Save All Project ( File > Save All ) dan biarkan namanya unit1.pas dan Project1.dpr
3. Tempatkan komponen KOLProject ( dari tab KOL yang sudah diinstall) di Form1
4. Isi Property projectDest di komponen KOLProject1 tersebut dengan nama Project, misalnya Programku
5. Tempatkan sebuah komponen KOLForm di Form1
6. Gerakkan / geser salah satu komponen KOLProject atau KOLForm untuk menghasilkan kode tambahan di source codenya
7. Klik Save All, kemudian tutup semua project ( Close All )
8. Buka folder dimana file project ini disimpan, dan hapus semua file yang bernama Project1 (Project1.cfg, Project1.dof, Project1.dpr dan Project1.res)
9. Buka project Programku.dpr dan Compile atau Run
10. Jika langkah benar, akan dihasilkan file Programku.exe yang besarnya sekitar 22 KB
Program yang dihasilkan masih belum mempunyai icon, tetapi jangan khawatir, icon bisa ditambahkan nantinya. Ukuran 22 KB jauh lebih kecil dibandingkan dengan komponen standard yang mencapai 360 KB. Bahkan ukuran ini masih bisa diperkecil. Download komponen tambahan sysdcu yang sesuai dengan versi delphi yang digunakan, dan sertakan dalam Library path urutan pertama ( di menu Tools > Enviromment Options ). Kemudian Compile / Run lagi… maka aplikasi yang dihasilkan akan berukuran 13.5 KB …!!
.NET dan VB.NET 2005
Apa itu .NET yang sering dibicarakan orang? Mungkin kita sering melihatnya online atau tampil dalam bagian pekerjaan yang terdapat dalam majalah. Untuk gambarannya , .NET akan tampak jelas bila kita login ke dalam hotmail® atau dalam iklan online dimana perusahaan membutuhkan developer dengan keahlian .NET.
Pengertian .NET sendiri tidaklah banyak. Kita bisa menanyai 10 orang dalam industri, maka kita akan mendapatkan 10 jawaban yang berbeda. Pengertiannya luas dan dengan maksud yang berbeda. Faktanya, .NET telah digunakan dengan dalam berbagai bisnis, hampir sama dengan maksud dan pengertian MP3. Bila kita mendengar atau membaca tentang .NET, kita pasti berpikir tentang Framework .NET.Inilah definisi formal tentang Framework .NET:
Framework .NET adalah platform yang memungkinkan kita untuk membangun software aplikasi dan library yang disebut “managed application” (aplikasi yang diatur); memberikan kita compiler dan tool agar bisa di-build, debug, dan mengeksekusi managed application.
Untuk tujuan ini, bisa dikatakan bahwa .NET adalah platform yang memberikan kita semua yang kita perlukan untuk membangun dan menjalankan managed application yang berjalan di windows.
Dikatakan aplikasi yang diatur (managed application), karena eksekusinya diatur oleh Framework .NET. Faktanya, Framework .NET adalah yang mengatur eksekusi dengan menyediakan lingkungan pengontrol runtime (runtime controlled) yang memberikan variasi layanan yang luas seperti loading aplikasi, pengaturan memori, dan akhirnya memonitor dan menjaga keamanan dan integritas ketika aplikasi dijalankan. Sebelum .NET (dan Java), aplikasi tidak diatur karena tidak dijalankan menggunakan runtime controlled. Aplikasi haruslah mengatur servisnya sendiri, yang kadangkala menciptakan terjadinya error-error dalam kode, bug, dan pemborosan data. Karena masalah inilah, aplikasi sebaiknya dijaga dan di debug.
Framework .NET memberikan kita tool yang beragam seperti compiler, debugger, programming language, dan execution engine (CLR-Commong Language Runtime-merupakan bagian paling utama, karena merupakan mesin yang mengatur proses pengaturan dalam menjalankan source code), developer tool, dan masih banyak lagi librari-librari yang telah didefinisikan. Librari-librari itu dinamakan FCL (Framework Class Libraries).
Visual Studio
Visual Basic 2005
Visual Basic 2005 adalah salah satu bahasa pemrograman yang ditargetkan dalam Framework .NET. Seperti bahasa sehari-hari, Visual Basic memiliki sintaks dan beberapa kata-kata yang valid yang bisa digunakan dalam membuat aplikasi. Visual Basic merupakan pilihan yang populer bagi yang mulai belajar pemrograman karena sintaks penulisan kodenya begitu mudah dibandingkan dengan bahasa pemrograman yang lain.
Apakah Visual Basic 2005 sudah OOP?
Visual Basic 2005 sudah full OOP!. Maksudnya?
Object-oriented programming (OOP-pemrograman-berorientasi objek) adalah gaya dalam pemrograman (atau pola pemrograman). Masih banyak pola pemrograman yang lain, seperti pemrograman fungsi dan prosedur. Bahasa seperti C, Fortran, Pascal, dan versi sebelum dari Visual Basic, semuanya adalah pola pemrograman. Tetapi pola ini terfokus pada proses sementara OOP terfokus pada data itu sendiri.
Aplikasi yang menggunakan pola OOP dibangun menggunakan bahasa OOP (OOPL). OOPL pertama kali diperkenalkan pada tahun 1960-an, tapi lebih populer di akhir tahun 70-an. Saat ini sering digunakan karena mudah untuk dipelajari, digunakan, didebug, dan dijaga. OOPL menjelaskan tentang objek yang nyata. Visual Basic 2005 merupakan bahasa pemrograman yang telah mendukung OOP seperti C#, C++, Java, SmallTalk, dan Lisp.
Programmer menggunakan OOP untuk menulis program yang mewakili masalah dan objek nyata ke dalam bentuk modul. Modul tersebut menjelaskan tentang objek yang nyata yang biasa dinamakan Class atau Type. Kita bisa membayangkan suatu program OOP sebagai kumpulan objek yang saling berinteraksi satu sama lain. Menggunakan OOP, programmer mendefinisikan tipe baru untuk mewakili objek nyata seperti pesawat, orang, konsumen, atau mobil. Type atau Class tersebut membuat objek atau instance (contoh). Objek merupakan suatu unit yang mewakili suatu contoh dari dunia nyata. Objek dibuat dalam aplikasi yang terdiri dari informasi yang menggambarkan objek itu sendiri dan proses yang bisa mengatur dan merubah informasi tersebut.
Contoh:
Anjing saya , Dolly, merupakan turunan dari Class Anjing dan Class Anjing merupakan SubClass dari Class Binatang. Karena Dolly adalah Anjing, maka dolly memiliki tingkah laku dan data sepertihalnya seekor Anjing. Tapi karena Anjing juga merupakan binatang, Dolly juga memiliki turunan dari Class Binatang.
Katakanlah kita ingin membuat suatu aplikasi klinik binatang. Untuk mengatur kucing yang datang ke klinik kita, yang harus kita lakukan adalah membuat Class Kucing yang juga diturunkan dari Class Binatang. Dan dari tiap Class (Kucing maupun Anjing) bisa meng-override fungsi dari Class Binatang bila diperlukan.
Sampai disini kita telah mempelajari tentang apa itu Framework .NET dan CLR-nya. Bisa dikatakan .NET merupakan rumah dengan CLR sebagai pondasi utamanya.
Kita juga telah mengetahui bahwa Visual Basic 2005 telah full OOP.
Sumber : http://soetrasoft.com
Sumber : Salman Widodo
Shared Members
Imagine that you have an data file or other mechanism for the student data listed earlier, and you want to define a method to be able to find a student, given his name, and return the student object. Rather than the COM model of having a factory to create the object, you could add the Find functionality as a shared method to the student class.
For example:
Public Class Student
Inherits Person
Public Shared Function Find(ByVal studentName As String) _
As Student
Dim Student As New Student()
Dim xmlobj As Xml.XmlElement
‘get the xml object
‘fill in the mName field
‘fill in the mAddress field
Return Student
End Function
End Class
Shared methods are commonly used in the runtime for this ability to create a specific instance of an object, for example System.IO.CreateDirectory() that will create a directory in the file system, and return a DirectoryInfo object. The same System.IO. Directory class also provides a shared method, Move, to rename a directory.
Thursday, March 20, 2008
How Bitwise Operators are Used, an Example Program
// Example Program to demonstrate how
// One's Complement (~) and XOR (^)
// Opeartors are used.
#include
// prototype
void showbits(short int);
// defined
void showbits(short int dec_num)
{
short int loop, bit, and_mask;
for(loop=15; loop>=0; loop--)
{
and_mask=1<
if(bit==0) printf("0");
else printf("1");
}
}
void main()
{
// declare three short ints
// for storing user inputs
// and results
short int a,b,res;
int ch;
while(ch!=7)
{
// show main menu
printf("\t\tMain Menu\n");
printf("\t\t---------\n");
printf("1. Perform Left Bit Shift Operation\n");
printf("2. Perform Right Bit Shift Operation\n");
printf("3. Perform AND Operation\n");
printf("4. Perform OR Operation\n");
printf("5. Perform One's Complement Operation\n");
printf("6. Perform XOR Operation\n");
printf("7. Quit\n");
scanf("%d",&ch);
switch(ch)
{
case 1:
// take input
printf("\n\nEnter a decimal number: ");
scanf("%d",&a);
printf("\nEnter number of places to shift bit: ");
scanf("%d",&b);
printf("\n\n\tEntered Number: ");
showbits(a);
printf(" (decimal %d)",a);
// perform left bit shift
// operation
res=a<
// show the formatted output
printf("\n\tLeft Shifted : ");
showbits(res);
printf(" (decimal %d)\n\n",res);
break;
case 2:
// take input
printf("\n\nEnter a decimal number: ");
scanf("%d",&a);
printf("\nEnter number of places to shift bit: ");
scanf("%d",&b);
printf("\n\n\tEntered Number: ");
showbits(a);
printf(" (decimal %d)",a);
// perform right bit shift
// operation
res=a>>b;
// show the formatted output
printf("\n\tRight Shifted : ");
showbits(res);
printf(" (decimal %d)\n\n",res);
break;
case 3:
printf("\n\nEnter two decimal number: ");
scanf("%d",&a);
scanf("%d",&b);
printf("\n\n\tEntered Number 1: ");
showbits(a);
printf(" (decimal %d)",a);
printf("\n\tEntered Number 2: ");
showbits(b);
printf(" (decimal %d)",b);
// perform AND operation on two
// variables a and b
res=a&b;
printf("\n\tAND'ed : ");
showbits(res);
printf(" (decimal %d)\n\n",res);
break;
case 4:
printf("\n\nEnter two decimal number: ");
scanf("%d",&a);
scanf("%d",&b);
printf("\n\n\tEntered Number 1: ");
showbits(a);
printf(" (decimal %d)",a);
printf("\n\tEntered Number 2: ");
showbits(b);
printf(" (decimal %d)",b);
// perform OR operation on two
// variables a and b
res=a|b;
printf("\n\tOR'ed : ");
showbits(res);
printf(" (decimal %d)\n\n",res);
break;
case 5:
// take input
printf("\n\nEnter a decimal number: ");
scanf("%d",&a);
printf("\n\n\tEntered Number: ");
showbits(a);
printf(" (decimal %d)",a);
// perform one's complement
// operation
res=~a;
// show the formatted output
printf("\n\t~'ed : ");
showbits(res);
printf(" (decimal %d)\n\n",res);
break;
case 6:
printf("\n\nEnter two decimal number: ");
scanf("%d",&a);
scanf("%d",&b);
printf("\n\n\tEntered Number 1: ");
showbits(a);
printf(" (decimal %d)",a);
printf("\n\tEntered Number 2: ");
showbits(b);
printf(" (decimal %d)",b);
// perform XOR operation on two
// variables a and b
res=a^b;
printf("\n\tXOR'ed : ");
showbits(res);
printf(" (decimal %d)\n\n",res);
break;
}
}
}
Test Run:
Main Menu
---------
1. Perform Left Bit Shift Operation
2. Perform Right Bit Shift Operation
3. Perform AND Operation
4. Perform OR Operation
5. Perform One's Complement Operation
6. Perform XOR Operation
7. Quit
1
Enter a decimal number: 3476
Enter number of places to shift bit: 3
Entered Number: 0000110110010100 (decimal 3476)
Left Shifted : 0110110010100000 (decimal 27808)
Main Menu
---------
1. Perform Left Bit Shift Operation
2. Perform Right Bit Shift Operation
3. Perform AND Operation
4. Perform OR Operation
5. Perform One's Complement Operation
6. Perform XOR Operation
7. Quit
2
Enter a decimal number: 543
Enter number of places to shift bit: 5
Entered Number: 0000001000011111 (decimal 543)
Right Shifted : 0000000000010000 (decimal 16)
Main Menu
---------
1. Perform Left Bit Shift Operation
2. Perform Right Bit Shift Operation
3. Perform AND Operation
4. Perform OR Operation
5. Perform One's Complement Operation
6. Perform XOR Operation
7. Quit
7
Press any key to continue...
Related Articles:
*
One's Complement and XOR Operators
*
Decimal Number to Binary Conversion Program
*
Right/Left Bit Shift Operators
*
Operation on Bits and Bitwise Operators
*
C++ Data Types in Detail
C++ Programming - BST Level Order Printing
Node:
struct Node {
Node *left;
Node *right;
int data;
Node(int value) : data(value)
{
left = right = NULL;
}
};
Explaination:
This is a common solution.
The logic behind this we start of with a queue which is having the root node as the only entry in the queue. Then we starts traversing the queue till it become empty during which we will be pushing the node's left and right into the queue along with pop the first entry and printing its data value.
BinaryTree Class:
class BinaryTree {
Node *root;
void insert(Node **node, int data)
{
if ( *node == NULL )
*node = new Node(data);
else {
if ( data <= (*node)->data )
insert(&((*node)->left),data);
else
insert(&((*node)->right),data);
}
}
public:
BinaryTree() : root(NULL) { }
void insert(int data)
{
insert(&root,data);
}
void levelorder() {
std::queuelevelq;
levelq.push(root);
while( levelq.size() > 0 ) {
Node *cur = levelq.front();
std::cout <<>data << " ";
levelq.pop();
if (cur->left) levelq.push(cur->left);
if (cur->right) levelq.push(cur->right);
}
}
};
Labels: C++
Continue Reading -C++ Programming - BST Level Order Printing
C Programming - Three Beautiful Quicksorts (by Jon Bentley)
Continue Reading -
C Programming - Three Beautiful Quicksorts (by Jon Bentley)
Program C++
Polyglot Programming
We are entering a new era of software development. For most of our (short) history, we've primarily written code in a single language. Of course, there are exceptions: most applications now are written with both a general purpose language and SQL. Now, increasingly, we're expanding our horizons. More and more, applications are written with Ajax frameworks (i.e., JavaScript). If you consider the embedded languages we use, it's even broader: XML is used as an embedded configuration language widely in both the Java and .NET worlds.
But I'm beginning to see a time where even the core language (the one that gets translated to byte code) will cease its monoculture. Pretty much any computer you buy has multiple processors in it, so we're going to have to get better writing threading code. Yet, as anyone who has read Java Concurrency in Practice by Brian Goetz (an exceptional book, by the way), writing good multi-threading code is hard. Very hard. So why bother? Why not use a language that handles multiple threads more gracefully? Like a functional language? Functional languages eliminate side effects on variables, making it easier to write thread-safe code. Haskell is such a language, and implementations exist for both Java (Jaskell) and .NET (Haskell.net). Need a nice web-based user interface? Why not use Ruby on Rails via JRuby (which now support RoR).
Applications of the future will take advantage of the polyglot nature of the language world. We have 2 primary platforms for "enterprise" development: .NET and Java. There are now lots of languages that target those platforms. We should embrace this idea. While it will make some chores more difficult (like debugging), it makes others trivially easy (or at least easier). It's all about choosing the right tool for the job and leveraging it correctly. Pervasive testing helps the debugging problem (adamant test-driven development folks spend much less time in the debugger). SQL, Ajax, and XML are just the beginning. Increasingly, as I've written before, we're going to start adding domain specific languages. The times of writing an application in a single general purpose language is over. Polyglot programming is a subject I'm going to speak about a lot next year. Stay tuned...
Professional JavaScript for Web Developers
Professional JavaScript for Web Developers provides a developer-level introduction along with the more
advanced and useful features of JavaScript.
Starting at the beginning, the book explores how JavaScript originated and evolved into what it is today. A detailed discussion of the components that make up a JavaScript implementation follows, with specificfocus on standards such as ECMAScript and the Document Object Model (DOM). The differences inJavaScript implementations used in different popular Web browsers are also discussed.
Building on that base, the book moves on to cover basic concepts of JavaScript including its version of
object-oriented programming, inheritance, and its use in various markup languages such as HTML. An
in-depth examination of events and event handling is followed by an exploration of browser detection
techniques and a guide to using regular expressions in JavaScript. The book then takes all this knowledge
and applies it to creating dynamic user interfaces.
The last part of the book is focused on issues related to the deployment of JavaScript solutions in Webapplications. These topics include error handling, debugging, security, optimization/obfuscation, XML, and Web Services.
Subscribe to Posts [Atom]