Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Dennis Ritchie - The Creator of C Language, Passes Away

October 14, 2011
Dennis Ritchie, who is credited with creating the C language, has passed away.

Ritchie was one of the pioneers of computer science, and a well-deserved Turing winner for his many contributions, notably the creation of C — by far the most influential programming language in history, and still going strong today.

Source(s) : Rob Pike, via Herbsutter

JavaScript Language Advanced Tips And Tricks

July 05, 2011
Today I came across a fabulous trove of JavaScript tips and tricks. These are code snippets in JavaScript language. There are 100s of them all on a single page.

Check out the tips and tricks on JavaScript. If your job involves writing code in JavaScript, this set of tips are worth being bookmarked.

PS: To try all the JavaScript examples (code snippets), you can use a standalone JavaScript engine such as Rhino, Jhost, or SpiderMonkey. While on the topic of standalone programs that execute JavaScript code, do check out a list of other JavaScript engines.

GNOME Census - A Glance Into Developer Participation In GNOME

August 02, 2010
As a GNOME user, have you ever wondered - How big is the GNOME project ? What is its make up ? How are decisions taken ? And how many GNOME developers are there ? If yes, then you need look no further. Because Neary Consulting - A Free software consultancy, has released the GNOME Census giving an overview of the GNOME project and its functions. The census report analyzes how developers participate in the GNOME project and looks for patterns within the project itself.

A timeline of the history of programming languages

November 06, 2007 1 comments
Which was the first ever programming language created ? Well for your information, it is not C or Pascal but Fortran. Of course, before Fortran, there were a number of other languages such as the assembly language. But Fortran is considered the first major procedural language. In fact, Fortran was created way back in 1954. And till now I thought C was a relatively old language - silly me.

C language or rather the Brian Kernighan and Dennis Ritchie (K&R) C which we learn today is quite new in relation to the history of programming languages and was born in the year 1978 - over 20 years after Fortran and 8 years after Pascal. Btw, did you know that the Linux kernel itself is almost entirely coded in C ?

Fig: A slice of the timeline of programming languages

I came across this awesome timeline of programming languages which tracks the most important computer languages, that gives a fascinating insight into their roots and their development roadmap. The timeline is itself the work of Éric Lévénez which I have covered on this blog some time back. This timeline is by no means complete as it just includes 50 of the more than 2500 documented programming languages but these 50 languages can be considered to be the most important of them.

The future of C++ as seen by Dr. Bjarne Stroustrup

August 13, 2007 0 comments
Dr. Bjarne Stroustrup is credited with creating the ever popular C++ programming language. While there are pure object oriented programming languages such as 'smalltalk' for instance, it was C++ which shot the object oriented programming paradigm to popularity.

In this video interview, Dr. Bjarne Stroustrup answers a number of questions such as the following ....
  • Do you think you'll ever design a new language from scratch?
  • How long after the standard is out do you expect to see a production compiler?
  • Is it possible to do garbage collection cleanly and efficiently in C++?
  • How soon after you created C++ did you see it start to take over the industry?
  • Is there any particular naming convention you subscribe to?
  • What's your opinion about the Microsoft implementation of C++?
Very interesting questions indeed... which ask for equally interesting answers from Dr Bjarne Stroustrup. Watch the video.

Book Review : The Linux Programmer's Toolbox

June 08, 2007 2 comments
What does it take to start writing programs for Linux ? Most people will guess a text editor, knowledge of a programming language and the compiler and libraries of that language would suffice. But ask a professional programmer who has been writing code for Linux and he will differ with you and insist that while the three things stated above can very well help kick start ones programs, other things also come into play in writing efficient programs such as a debugger, memory profiler tools and above all a good understanding of the inner working of Linux kernel and its processes.

The book titled "The Linux Programmer's Toolbox" authored by John Fusco is a book which is a store house of knowledge which aims to make the average Linux/Windows programmer aware of the tools at his disposal which can help him write better programs for Linux.

The book is divided into 10 distinct chapters with the first 4 chapters describing various ways of boosting ones productivity while embarking on writing code for Linux as well as getting to know the various tools at ones disposal.

In the very first chapter titled "Downloading and Installing Open source tools", he talks about the different archive formats commonly used in Linux, various package managers such as Debian's own apt-get, Red Hat's Yum and how to properly authenticate the packages you download to ensure that they are not tampered.

The second chapter deals with building tools from source. Here apart from describing the actual steps involved in compiling the sources, the author also delves into explaining the concept behind the MakeFile, the common variables used in implicit rules and so on. In this chapter one also gets to acquire an understanding of the tools used to create projects as well as examine how these tools work together in the build process.

The book has a chapter exclusively devoted to explaining ways of ambulating through the myriad of documents; tools such as man, info, as well as some of the not so obvious ones. One thing I like about this particular chapter is how the author has provided tables which list a number of recommended manual pages with a short description of each of them.

Linux doesn't have a comprehensive IDE on the lines of Microsoft Visual Studio to develop programs - at least not yet. Most Linux programming gurus are perfectly at home with coding using their favorite text editor. And any book of this stature will be incomplete without a mention of the different editors available for coding in Linux and their pros and cons. The 4th chapter of this book introduces the different editors including Vim and Emacs and discusses their pros and cons. There are numerous tips in this chapter which aims to make writing code much more efficient, productive and a pleasant experience for the average Linux programmer. As a Vi enthusiast, I couldn't help but admire how one can convert Vim editor to work as a code browser with the help of Ctags which is explained in detail.

The fifth chapter titled "What every developer should know about the kernel" is a turning point in the book and gives a comprehensive understanding of the working of the Linux kernel. It is by far the largest chapter - with nearly 100 pages devoted to this topic - in this book. In this chapter the author talks in lucid detail about the different modes in Linux, the process scheduler, device drivers, the I/O scheduler and the memory management in user space, understanding all of which is instrumental in writing better programs for Linux.

The next two chapters deal with Linux processes and the communication between processes. Here one gets to know more about the technical vagaries related to processes such as forking, cloning, process synchronization and the basics of inter process communication. The author has introduced several APIs and basic examples of each.

In the 8th chapter, the author introduces many tools which are installed by default in most Linux distributions which aid in debugging communication between processes. The tools include (but are not limited to) lsof, fuser, stat, hexdump, strace and so on. And each tool is accompanied by its usage and its output with a short discussion of the output.

In the 9th chapter titled "Performance Tuning", one gets to know more about fine tuning ones Linux program. Here the author explains the factors affecting system performance as well as the tools for finding system performance issues.

Finally, the last chapter of this book explores some of the most common debugging tools and techniques for Linux. More specifically, I found the discussion on the use of GNU debugger quite informative.

At the end of each of the 10 chapters in the book, the author has provided a short synopsis of the tools that are used. Also many additional online resources have also been listed where one can acquire more knowledge about the topic being covered. Through out the book, noteworthy sections have been highlighted in dark background which makes it quite eye catching and also easy for quick reference.

The book is written with a slant towards the C language especially when depicting the examples in the latter half of the book. But that is something which can be understood considering that the bulk of the Linux kernel has been written using C language.

Book Specifications

Name : The Linux Programmer's Toolbox
ISBN No: 0-13-219857-8
Author : John Fusco
Publisher : Prentice Hall
No of Pages : 600
Price : Check the latest price at Amazon.com
Verdict : An excellent resource for those who are interested in improving their productivity as a Linux programmer.

Most programmers with Windows background will be forced to make a paradigm shift while embarking to program for Linux. While the Windows programmers could take deceptive comfort within the cozy confines of a Visual IDE, when they make the shift to write Linux programs, they are suddenly faced with the hard facts of programming as it really is. And this book could be an ideal companion for this set of programmers who wish to lessen their learning curve and make programming for Linux a much more pleasurable experience.

Having said that, I found this book to be an ideal companion for any programmer (not necessarily only of Windows background) who wish to develop programs for Linux.

Create a Linux Desktop application In 14 minutes flat using QDevelop and Qt

June 03, 2007 0 comments
Who said creating gui applications for Linux were difficult, tedious and mind numbing ? Ok, perhaps this was true 10 years back or so. But now Linux has a plethora of tools which make it possible to create GUI applications - I dare say as easily as programming in Visual Basic for Windows.

You can literally drag'n'drop, move and resize all the widgets such as buttons, text areas, radio buttons and so on and design a very good GUI in minutes. And in the forefront of ease of use is QDevelop which acts as a visual integrated development environment (IDE) for developing Qt applications for Linux.

Clive a 54 year old programmer who has over 25 years of developing experience walks one through the nuts and bolts of creating a GUI application from scratch. What is really interesting is that he uses QDevelop to design the application and also walks one through the steps involved in installing Qt & QDevelop, the different layouts in Qt as well as the final finished product. A very informative tutorial targeted at beginners.

Shouldn't this be reason enough to opt for an Open Source development model?

August 22, 2006 1 comments
In a traditional software development model, the client asks for one thing and is delivered something else not to say anything about the galloping costs involved as is rightly illustrated by the cartoon below.

Fig : Traditional software development model (original link)

Shouldn't it be reason enough to take a long hard look at the development model of open source software instead of sticking to the traditional model of software development with its all too evident fallacies?

A Device Driver Development Kit for Linux

May 28, 2006 2 comments
A driver development kit provides a build environment, tools, driver samples, and documentation to support driver development for a particular operating system. Linux had always lacked a proper driver development kit. And anybody who intended to write a device driver had to do with sifting through tons of documentation and example source code that other operating systems provide for their developers.

Greg KH has posted at LKML (Linux Kernel Mailing List) that a device driver kit has indeed been released for Linux which contain everything that a Linux driver author would need to create Linux drivers. Additionally, it also contain a copy of the O'Reilly book "Linux Device Drivers". The device driver kit for Linux can be freely downloaded as an ISO image here (92 MB).

Steps to compile C / C++ programs using GNU compiler

April 11, 2006 8 comments
Till a few years back, it was really difficult to obtain a free version of a compiler to run on ones machine to learn C or C++. And one had to resort to using a commercial compiler either by paying money and buying a licence or using a pirated copy of the same. I still remember, many years back, Borland C was considered to be the best compiler in the market for windows platform but later Microsoft's Visual-C usurped it to take the most popular position. Then GNU/Linux got wider acceptance and the rest as they say is history.

How to Compile Qt Programs on Command line

January 13, 2006 7 comments
Qt is a cross-platform application framework (toolkit) that is widely used for developing GUI applications, and also for developing non-GUI programs such as command-line tools and consoles for servers.

Qt is the underlying library in KDE and all the KDE specific applications. Qt allows you to create robust, well designed, GUI applications in the shortest period of time.