Linux Programmer's Toolbox
Ravi writes "What does it take to start writing programs for Linux? Most people will guess a text editor, knowledge of a programming language, the compiler and libraries of that language. Ask a professional programmer and he will differ with you. Insisting that while those things can help get you started, other things 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 the Linux kernel and its processes." Read below for the rest of Ravi's review.
Linux Programmer's Toolbox
author
John Fusco
pages
622
publisher
Prentice Hall
rating
9
reviewer
Ravi
ISBN
0132198576
summary
Teaches you the use of tools which help you become a better Linux programmer
The book The Linux Programmer's Toolbox by John Fusco is a storehouse of knowledge, which aims to make the average Linux/Windows programmer aware of the tools at his disposal, that 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 writing code.
In the very first chapter titled "Downloading and Installing Opensource 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 with.
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. Any book of this stature would 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. There are numerous tips in this chapter to make writing code 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 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 that 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. 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 a 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 the 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 been listed where one can acquire more knowledge about the topic being covered. Throughout 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, which can be understood considering that the bulk of the Linux kernel has been written using C.
Most programmers with a Windows background will be forced to make a paradigm shift while embarking to program for Linux. While the Windows programmers are used to taking 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. 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.
I found this book to be an excellent resource for programmers (not necessarily only those with a Windows background) who wish to develop programs for Linux.
Ravi Kumar is a Linux enthusiast who maintains a blog related to Linux, Open Source and Free Software at linuxhelp.blogspot.com.
You can purchase Linux Programmer's Toolbox from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
The book The Linux Programmer's Toolbox by John Fusco is a storehouse of knowledge, which aims to make the average Linux/Windows programmer aware of the tools at his disposal, that 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 writing code.
In the very first chapter titled "Downloading and Installing Opensource 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 with.
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. Any book of this stature would 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. There are numerous tips in this chapter to make writing code 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 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 that 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. 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 a 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 the 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 been listed where one can acquire more knowledge about the topic being covered. Throughout 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, which can be understood considering that the bulk of the Linux kernel has been written using C.
Most programmers with a Windows background will be forced to make a paradigm shift while embarking to program for Linux. While the Windows programmers are used to taking 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. 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.
I found this book to be an excellent resource for programmers (not necessarily only those with a Windows background) who wish to develop programs for Linux.
Ravi Kumar is a Linux enthusiast who maintains a blog related to Linux, Open Source and Free Software at linuxhelp.blogspot.com.
You can purchase Linux Programmer's Toolbox from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
And a true hate for Windows OS.
"Please, shut up. Just when I think you can't say anything more stupid, you speak again." -Archie Bunker.
Need to do web development? Try Zend + PHP
Driver or hardware layer coding? emacs/vi/gas/gcc
Cross-platform application? Java + eclipse
I wish linux did have a great IDE, but i guess Emacs is good enough :)
WulframII - Free Online Mutiplayer 3D Tank Shooting Game
C/C++ use Qt, kdevelop, or gnomes IDE
Java use Eclipse.
There are several IDE's for programming on a linux system. Also you have to define IDE, if you mean VS like then the previous should suffice. But there are also IDE's like rhide, but that is a bit old school.
You need to know about kernel internals to start writing programs on Linux? Sure - maybe if you start your programming on Linux by writing device drivers.
One out of 20, at most, projects I've done on Linux required anything more than an editor, a compiler, and the "print" statement. It's not that I write simple programs, it's just that in real life these usually end up being sufficient (especially if you program in Python or Java as opposed to C or C++).
It's a useless language. PL/1 and BASIC are more powerful.
Well, there is Kylix (which is Delphi for Linux)!
w ww.uniforum.chi.il.us/slides/linuxGUIdev/LinuxGUID evelopment.ppt+%22Kylix%22+and+%22Qt%22&hl=en&ct=c lnk&cd=7&gl=us
Linux RAD/GUI Development
http://72.14.209.104/search?q=cache:A8yKIFPg_HYJ:
Borland's Kylix allows you to (for the MOST part) easily & nearly instantly, no added work needed really (other than loading the code's text & gui's into the compiler IDE), to rather easily "port" your Win32 designed apps to Linux IF you avoid a few 'Windows specific things' like"
1.) Win32 API calls being used directly in code
2.) Windows registry work (does not exist on Linux afaik, lol)
3.) Some diff.'s/issues in the GUI interface in KDE vs. Windows (but, Kylix does the Qt lib, & Tcp/IP diff.'s that exist between Linux & Windows!)
(There may be more, but that is what I recall now...)
Keep it in mind - sometimes, having done code on Win32 OS is a GOOD THING, for rapid ports of it to Linux using Kylix (Delphi for Linux!)...
APK
one compiler to compile them all : gcc
one debugger to debug them all: gdb
one memory profiler to profile them all: valgrind
and in the darkness bind them : *EMACS*
Yeah, before ten years ago no one wrote complex programs.
The world's burning. Moped Jesus spotted on I50. Details at 11.
"...While the Windows programmers are used to taking deceptive comfort within the cozy confines of a Visual IDE,..."
Deceptive comfort? And here I thought the visual IDE to be just as valid a tool as anything else, that being the one that solves the need of the programmer. Silly me. I guess I need to overdevelop my zealousy in computing.
Bearded Dragon
Editor - gedit for syntax highlighting
:)
Compiler - gcc
Debugger - gdb
Mem Checker - valgrind
Build - make and a custom build system written in Python
Image processing - ImageMagick
That's it. Spartan, yes, but it forces me to write good code instead of relying in fancy tools
My website
it is Eclipse. I'm no kernel hacker or huge application designer, over the years I've picked up c++ to create plug-ins for applications I use and also for making little tools designed for myself. For the longest time I tried finding an IDE on Linux but was unable to find one I actually liked. I've tried Anjuta and KDevelope, while I prefer Anjuta if I had to choose between the two I still didn't use it. It wasn't until about 3 months ago when I downloaded and tried out Eclipse that I was finally able to dump gedit and start using an IDE finally. For me KDevelope seemed a bit to much while Anjuta was just about right for my needs Ubuntu unfortunately used some messed up beta as the version in synaptic. I know thats not Anjuta's fault and I could of compiled an earlier version or spent some time maybe searching for a .deb file but I didn't want to spend the time doing that, besides gedit was doing just fine for my simple needs so it would of been a waste for something that wasn't all that important to me at the time. Anyways I'm glad I tried out Eclipse and am glad I gave it a shot because I really enjoying using it now over a simple text editor.
I don't do nearly as much Linux coding as I used to (I'm a switcher). I certainly got by with Emacs, editing makefiles, and I've never been big on debuggers or profilers (std::cerr). Not to say this is either right or wrong -- much of it is personal preference. But that's what sounds good about the book, is that it gives a good amount of background of where to find the information. That's something that takes a while to learn. It's also nice to see books which are (potentially) more than just a regurgitation of the information. I own several O'Reilly books which are the same info you get in the docs. It seems to be a trend, as the Ogre3D book I recently got gave very little information which wasn't already online. Convenient to have in paper, perhaps .. worth $40, probably not. Would it hurt to try a little, and give examples that *aren't* already written? Maybe give some background that wouldn't be found elsewhere? Maybe an interview with the author? Is it really that hard to try?
On a slight tangent, I was never a big fan of the Visual Studios. While XCode is definitely not perfect, it works very well. Sometimes I still miss how Emacs did things, but not having to put together a Makefile, but still have a fairly complex build process is really nice. Having a real graphics UI that works well, also really nice.
For Linux there is the KDevelop program which is an attempt to copy Visual Studios using the KDE toolkit. Because of my general dislike of VS, I always preferred Emacs over it, but others might like it. I should probably also give a shout-out to code::blocks, which runs on Windows, Linux, and Mac. However, the last official update is quite old, so you'll probably have to use a nightly build, and the nightly builds are still fairly buggy. I finally gave up on using it, as it was causing more pain then actually helping me do anything. Again, it mostly copies VS, and so I'm not the biggest fan.
The fact that you were able to get a job as a professional programmer hurts my soul.
Programmer: an ingenious device that converts caffeine into code.
To answer the question in the summary: It depends on what you want to do.
It's more about knowledge than software. There are many different languages, compilers, editors and IDE's out there. I would say that there are a lot more options when developing on GNU/Linux than on most other platforms. If you want to do cross-platform development, Linux is a good development environment but you will need special knowledge to design a cross-platform project from the start. If you just want to do standard C, C++, Java, Ruby, Python, etc. then that is generally the same on Linux as anywhere else but as you try to do more advanced things, you may find that having knowledge of the underlying system or special libraries could be useful or required.
If you want to develop graphical apps, you will probably need to know how to use a widget toolkit whether that be GTK, Qt, WxWidgets, Swing, etc. Some of these are even cross platform.
As far as software goes, many developers use text editors like vim and emacs. GDB is a console-style debugger that has graphical front-ends available. If you want a graphical IDE, there are many choices: Dev C++, Eclipse, KDevelop, Anjuta...
* nedit for syntax highlighting (yeah, it requires LessTif or OpenMotif, still lighter than GTK)
* gcc is my compiler
* Xaw3D is my gui widget library (yeah, I know we know have FTLK, GTK, etc...)
The vast majority of what gets written isn't in C or C++. It is in scripting languages. Occasionally, that doesn't work very well. Large applications written in Python (for instance) have been known to be bog slow. On the other hand, if an application becomes popular and supported, it is probably worth porting it to a lower level language.
One of my favorite applications is Moodle. It does a fine job of replacing WebCT. If the people who wrote it had to write it in C, my guess is that it would never have happened.
The computers we have now are so powerful that we don't usually have to worry about how we squander resources. We can just write an application (in Python or whatever) and get something useful much faster than we could if we had to write it in C.
Is there a place for things like memory profilers? Sure. In the embedded world we still have to worry about resources but that's not where the majority of programming is happening. I bet there are far more db applications with a Visual Basic front end than there are device drivers being written. You give a ratio of 20:1. My wag is closer to 100:1.
Kylix died a long time ago. From my understanding it sucked compared to Delphi and Borland never really supported it. Not trolling because I really wish it was still around. I just recently had to convert a lot of old Delphi code to linux so I had to translate it to C. Not hard work, but time consuming. If I could have just dumped it into Kylix it would have made life a lot more simple, and saved me a couple months.
I can't remember the last time I saw a professional programmer that only spoke AOL.
I'm still waiting for the CTL-Ia CTL-Ia CTL-Ftagn! command!
"If god did not exist, it would be necessary to invent him" --Voltaire
Then it takes a stick of bubblegum (actually, just the wrapper), a shoelace and a pair of toenail clippers.
34486853790
Connection too slow for X forwarding? Try "ssh -CX user@host"
If you want to move into the murky world of C/C++ development these are IMHO the basic tools:
There are many more tools but those are good start. It also helps to have a thick skin, getting to know which library does what, being persistent and making heavy use of search engines rather than posting every problem to mailing lists and newsgroups. Also remember that a lot of enterprise grade software can be had for free under various conditions. Just to name two examples... OS X actually ships with the Xcode development suite and Oracle offers various developer suites as well as many of it's products for download under a development license if you sign up for an Oracle account.
Only to idiots, are orders laws.
-- Henning von Tresckow
I agree. Professional programmer here as well, and IDEs significantly improve my productivity and accuracy. IDEs aren't a new Windows thing - I still remember the Turbo C environment for DOS. Having an integrated, interactive debugger is incredibly useful...
All in all, the book gives suggestions that will help you get a good grade at CS, and maybe Software Engineering, but probably not more formal courses (too little emphasis on the thinking part). It will help you write good programs, without a doubt, but not great programs and certainly not masterpieces. Nor will it help you with the history of programming (programmers predate text editors OR debuggers) or the future of programming (this book is only marginally useful on fourth- and fifth-generation languages, RAD, specification compilers, massively parallel programs, fuzzy logic, self-modifying code, and other such fun stuff).
All in all, there will be many people who will get great value from this text, but they will never be language-agnostic and they will never write the truly brilliant software that they are quite capable of. Yes, it's easy to criticise and harder to do, and it's most unlikely I would ever write a computer book. Mostly because nobody would be able to understand it - my writing style is hard enough to follow on Slashdot, I can guarantee you'd see people jumping off bridges if faced with 500+ pages of my degenerate writings. However, the fact is that there are many good books for novice programmers who want to be adequate, a few for adequate programmers to unlearn bad habits and become good programmers, far fewer that skip the middle step and go straight to good, and none at all that show someone how to go the extra mile that turns something good into something amazing.
That's the book I want to see someone write, and get reviewed on Slashdot.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
I meant computers couldn't run complex programs like they can today so everyone slimmed them down and didn't add stupid features that take up 99% of a modern processor for like a minute. I don't think it would be possible to write the newest version of Norton's security suite in notepad for example. And don't you dare say nobody writes complex programs for Linux cuz there's cool stuff out there
Google's Super Secret Search Algorithm: SELECT @search_results FROM internet WHERE @search_results = 'good'
after 5 years of developing apps on Linux using C++, I prefer the following:
Debugger: gdb
Compiler: gcc 4x
IDE: Netbeans IDE 5.5 w/ C++ Pack (actually download all the cool packs)
GUI IDE: QT Trolltech
Images: Gimp !!!!!
Kernel: 2.6x
Build: Make
Version Control: Subversion
Depending, of course, on how one defines that. Regardless, Anjuta is a great IDE for C/C++ coding and Eclipse is a great IDE for Java coding.
Ben Hocking
Need a professional organizer?
Take a look at Lazarus. It's not meant to be 100% compatible with Delphi, but I imagine it would be much faster to port to that than to rewrite it in C.
I'll wager a good chunk of most modern programs is library bloat. You could and still can write some pretty damn complex software on minimal systems. The fact is that some very large and very complex software packages have been written using what we would consider antiquated tools. I'm not saying we should still use such tools, though I think there's an argument to be made that most programmers aren't sufficiently well-versed in the more esoteric methods, and sometimes that means they put a rather large amount of faith in the operating system and/or libraries doing what they want and doing it correctly.
The world's burning. Moped Jesus spotted on I50. Details at 11.
Personally, I think all coding should be done using a hex editor and in machine language (none of that fancy assembly - it rots the brain!).
Ben Hocking
Need a professional organizer?
thank microsoft, apparently if it is syntactically correct it ships. :(
"Premature optimization is the root of all evil"
Ben Hocking
Need a professional organizer?
Ask a professional programmer, and a good source control system should be high in the list.
Back when we had to write code that would fit in about 590k or so, we would employ all sorts of "tricks" to reduce memory usage. The result was that the code was usually less readable and arguably more complex than it would otherwise be.
Ben Hocking
Need a professional organizer?
Not really. I've written many, many programs for various Unix and Unix-like systems over the past 20 years and only rarely have I needed a debugger or memory profiler.
Furthermore, understanding the "inner workings ...", while beneficial, only really matters when writing programs that interact with said "inner workings".
In short, one doesn't need an IDE or SDK to develop quality software, just skill and experience -- though the former can be helpful when the latter are lacking.
It must have been something you assimilated. . . .
I seem to frequently shift between tools of choice on *nix. They all have their flaws, and all have their advantages, each of which becomes more or less relevant depending on what your working on. I find that:
Eclipse absolutely rules for working on a system dealing with multiple languages and database environments.It's perspective system is genius in my opinion, as it lets you easily switch from one "environment" to the next without having to close your work, and also lets you merge environments (ie. be working on a C++ source file with the database info in the side/bottom bars. It's major flaw though, in my opinion, is that it's too resource intensive. Even on a reasonably powerful machine, it tends to feel laggy. It also seems to have a few quarks due to its Java-ness.
Vim, well, like all *nix geeks I love vim. It's only real shortcoming in my opinion is when dealing with many source files, and while gvim supports tabs.. it's still clunky and awkward compared to most other GUI tools.
On that note, I am kind of warming to gvim lately. I used to scoff at it, but after forcing myself to try it, I am actually finding it fairly nice. Still feels like a cli app hacked to run in a GUI shell, but it doesn`t seem to take anything away from the vim experience.
Code::Blocks would be awesome, if it was a little more stable, and like eclipse, a little less bloated.
Anjuta.. well.. I didn't mind it, but I found its insistence that you do everything through its project management facilities a little annoying. I don't mind editors having project management features, but they shouldn't force their use.
gedit is fairly nice, although it's syntax highlighting is a little wonky (especially when it comes to things like treating apostrophes as single quotes...)
nedit is nice, but it suffers from the same wonky syntax highlighting issues gedit does.
kdevelop is in my opinion just plain overkill. If your working on a huge project it might be nice, but for a medium to small project, its just insane. Also feels very laggy.
In short, I don`t think there will ever be a perfect editor. Most developers are like me, that is, opinionated and picky. Little things will put us off an entire tool set.
My perfect editor would probably be an mix of vim and eclipse (less the bloat). But some people would want more vim, and some people would want more eclipse... and trying to make it customizable with plugins and massive sets of options is probably what contributes a lot of eclipses bloat (besides the Java).
"Kylix died a long time ago" - by jshriverWVU (810740) on Wednesday June 13, @03:22PM (#19495745)
I had no idea that happened, & like yourself here:
"I really wish it was still around." - by jshriverWVU (810740) on Wednesday June 13, @03:22PM (#19495745)
You & I both - if no MAJOR changes to the Qt libs it calls have occurred for KDE? It ought to still work though... has this happened (major changes to Qt that make Kylix in its final version unusable for development on Linux)?
Thanks for the info., if you know of this happening... sounds like you might, because of your next reply quote below:
"I just recently had to convert a lot of old Delphi code to linux so I had to translate it to C. Not hard work, but time consuming. If I could have just dumped it into Kylix it would have made life a lot more simple, and saved me a couple months." - by jshriverWVU (810740) on Wednesday June 13, @03:22PM (#19495745)
You're right - it WOULD have saved you a great deal of time... too bad it's disco'd now!
APK
kdevelop is nice, but I don't do a lot of GUI programming. For what I do, Kate and kdbg work great.
Kate is a good GUI text editor and a joy to use. It has a file browser and quick picker for open files. Sessions act like project files, so you can quickly load all the files you need to work on. The editor itself has excellent syntax highlighting, tabs and split screens, so you can see multiple versions of the same file and compare it to others.
Kdbg is a GUI front end to the gnu debugger. It has all the usual things and a few nice extras all workable with a mouse. It has easy to manipulate step through, locals and watches. Variables that change are highlighted in red. One of the neat extras the watches has is the ability to do simple math and return values of functions used in your code. If you have a function dot_ab(a b) that returns dot products, you can put variables you are watching in and get back the answer you want.
Friends don't help friends install M$ junk.
Bloodshed Software - Dev-C++ (A free C++ IDE for Windows and Linux for MinGW/GNU compiler.)
or
SciTE (Scintilla Text Editor with Extensions) platforms include Windows,Linux,and Mac
Both travel well on USB 2.0
Be Safe and Good Hunting...
On an odd note though, while doing the translation I did have my first look at Delphi for Windows, and to honest I was blown away. I still like emacs + gdb, but the Delphi IDE was pretty sweet. *waits to be flamed*
Not sure if it still work or not. You use to be able to download Kylix (free? eval?) and that doesnt appear to be the case anymore. So it's not even that it's not supported anymore, I can't even find it. With no distribution channels there are no legal ways of buying it. In the end would it even be worth it? It might have had potential but alas it's gone for better or worse.
Oh, please.
What about emacs?
In the course of every project, it will become necessary to shoot the scientists and begin production.
Is the coverage of Make, et al, in Chapter 2 from the POV of using them to build stuff you've downloaded, or using them to build your own project? Same question for the coverage of packages (apt, rpm, etc.).
These can be a major bitch to figure out on your own, and are a pain in the ass even when you think you know what you're doing.
No coverage of source control?
No coverage of bug tracking?
And about this line: Linux doesn't have a comprehensive IDE on the lines of Microsoft Visual Studio to develop programs... Did the Eclipse project fold up and call it a good run?
This terrible review make the book sound terrible as well.
obviously no deficiencies vs. no obvious deficiencies
When I have to go to the darkside I use Code::Blocks, SharpDevelop, and as absolute last resort VS.Net. I still use SVN, mingw, qt.
And the most important tool of course is a fast internet connection and a speedy browser. Firefox is the current favorite.
This simple setup gives me crossplatform support all the way from Desktop Apps, Through Server Apps, to Embedded Linux.
I've tried eclipse and I bet I could make it as usable, given enough time, but I'm not paid to redevelop my tools, only to produce code.
Rounding out the list is perhaps the most vital component of all, a nearly endless supply of CocaCola. I guess that goes without saying. Lately I've added VirtualBox or VMware to keep from getting dizzy from switching PCs. ( I keep myself surrounded with a server a Linux Box, a windows box and several embedded devices.)
OSGGFG - Open Source Gamers Guide to Free Games
environments like visual studio DOES make budding coders dumber imho.
The Visual IDE is just as valid a tool as everything else and if you know what goes on under the hood,
thats perfectly fine.
I've just seen to many people posting to mailinglists/forums with linker errors (especially places
like the libSDL list to give an example) they could have easily fixed themselves, if they had a clue
on how the compiler toolchain works, on each step of the process.
other than that im perfectly cool with IDE's. Right now im using netbeans with the C++ pack or KDE's Kate editor (why
they removed projectmanagement for session management is beyond me).
No VI or Emacs for me thank you very much.
XEMACS, EMACS, KDEVELOP, Glade, hmmm... all I got to say is N00B!
I'm just curious if anyone has developed programs for Linux using Real Basic. How is man enough to admit it? I'll say yes, if you do :)
If you want commercial IDE, you can try out Active State's Komodo IDE. They do have linux version.
I used VS professionally for several years before returning to grad school. Perhaps it has improved a lot since then (I used VS6, not .Net), but I don't see any significant differences between it and Anjuta *or* Eclipse. What features do you think are missing from Anjuta or Eclipse?
Ben Hocking
Need a professional organizer?
In a large crufty codebase, a good test harness may not be easily made. We had unit tests required for checkin at my last job. God I wish we had that where I am now...
As for printing state, depending on the system, printing may not be possible (embedded), or may throw off timing (or whatever) enough to make the problem go away...
A good debugger and skills in using it properly can be a huge advantage.
Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
Crappy by what standards? Since when is a powerful text-based editor bad for editing text? I was raised on the Visual Studio IDE, but as soon as I discovered vim I jumped ship and have never returned. I find vim/make/gdb to be a far easier/faster/more convenient way to code. However much of an "archaic modality" this is, it is superior for my needs, and something that I encourage any coder to at least try.
I acknowledge that the "command line" part of the equation may cause problems for debugging GUI programs, that it may be subpar for managing a large number of files, etc. Indeed, it certainly isn't for everyone or every task; however, for the majority of the data-slinging / scientific computation / non-graphical coding and development I do, I wouldn't use a visual IDE if I was paid. The reason why I believe Linux is pretty advanced is because it supports an array of powerful tools like vim, make and gdb.
If we start buying CDs then the terrorists have already won.
Doesn't matter what platform I'm developing for (Linux/Solaris/Windows):
IntelliJ IDEA
A bunch of JDKs
JProbe
Knowledge of the internals of the JVM is valuable, of the linux kernel - less so.
---- Den ene knappen er powerknapp, den andre er Bender voice knapp "Bite My Shiny Metal Ass"
What is a decent way to read API documentation under Linux? I'm comfortable using vim, and will happily edit Makefiles, but haven't found anything similar to the MSDN documentation.
...).
Using 'man' and 'info' has been fine for finding out usage of command line programs, but (for example) I've been using GnoChm to read the Windows python documentation, because of the index, table of contents, and search facility features.
The ubuntu help (which includes the python docs) is no good for me; it's too slow to search, doesn't have a table of contents, and can't be restricted to just python (or C libraries, or
What do you use for reading API documentation?
No thats why said that I think they're great as long as you know how the compilation process work.
Was that some kind of attack on my person?.
As previous posters suggested there are numerous IDEs for linux so your last question is irrelevant.
But if people must have big and fullblow IDE to even consider coding for a platform I think they
should reconsider their profession. Its not to much to ask for that a programmer knows how compilation work,
we are not talking about the average joe user here.
What a fantastic fantasy world to live in. Did I miss something, or is the software that millions of people run worldwide on Windows PCs somehow not 'real software'? Did the Windows developers who wrote large and/or mainstream applications such as Word, Photoshop, Quark, Winamp, Skype, etc somehow not actually know how to program?
I really would like to hear more about these 'hard facts' of programming...it makes it sound like it is harder to program for Linux - is this supposed to be a good thing? However, I don't believe this, and suspect it's the usual macho Linux bullshit that some F/OSS advocates seem to be afflicted with.
Luckily the rest of us can just get on with programming our software for whatever platform using the most appropriate tools, instead of banging nails in with our fists.
Why restrict yourself to Linux tools just because you're developing a Linux app this week? I do all development (both Windows and Linux) from my Windows machine.
When coding for Windows, I have my editor open editing local files, and a console window open, for doing builds or whatever.
When coding for Linux, I have my editor open editing what looks like local files (but are actually a network share of the Linux development directory), and a Putty console window open, for doing builds or whatever.
It helps that my editor is Visual SlickEdit, which is very smart and flexible about handling end-of-line conventions. It also provides most of the IDE conveniences of Visual Studio.
To get started writing programs on Windows, you need a copy of Visual Basic.NET Express Edition. No programming skills required. Is that a problematic imbalance?
I am a Gnome user, but Gedit sucks for coding. I still haven't found a better graphical editor for coding.
Yup. If you write the code to have good logging and good exception handling, you'll rarely (if ever) need a debugger. This is especially true if you're using a modern language with automatic memory management.
As for profilers, they should be used once you hit beta, if at all. And even then, chances are you're going to use them in a very superficial way, to find out which chunks of code are taking the most time so you can see which algorithms might need replacing. Very little code these days needs the kind of call-by-call optimization that profilers will give you.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
> I can inspect a binary file better in emacs, as it prints non-printable characters as escaped ...
By the way, emacs also has a hexadecimal mode: M-x hexl-mode
This needs to be repeated loudly and often. C/C++ is a great language, but there are only a very few instances where you really need to use it. C/C++ is optimized for making efficient use of hardware resources, CPU and memory in particular. On modern hardware, this is seldom the limiting factor -- you are far more likely to be constrained by I/O (network bandwidth / latency, database queries, etc). If you really need that kind of low-level control or cpu optimization, it's usually isolated to few critical functions -- the majority of the work that wraps those functions is better handled by a higher-level language. Writing an entire application end-to-end in C/C++ is usually a mistake
More importantly, most projects are constrained by PROGRAMMER TIME. A language that optimizes programmer efficiency rather than hardware efficiency provides a bigger benefit for the vast majority of development projects. Why write 100 lines of C or Java code when you can accomplish the same task with 10 or fewer lines of Perl, Python, or Ruby? Programmer productivity really soars when you have an easy-to-use repository of pre-written code modules like CPAN.
Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
IIRC netbeans runs on linux platform fine and has addon for c/c++.
http://netbeans.org/
I may not be a smart man, but I know what an inode is.
Kdevelop is very close to VS in features, and much better than Eclipse for anything other than Java. I have done lots of development in C++, PHP, and Python using kdevelop.
It's hard to tell if it's kdevelop itself that's better, or if I'm comparing Qt with MFC, but for me at least, developing in kdevelop is several times more productive than in Visual Studio.
Besides, the fact that Qt is now very well integrated with Python brings even more productivity because we do not need to use C++ for GUI development. I don't know how well Visual Studio handles GUI development in Python, but I certainly do not miss the old days when I did develop for Windows using MFC and C++. Even better, there is PyQt for Windows, so you can do multiplatform development in kdevelop.
In my experience, the most productive platform for code development is a kubuntu machine with kdevelop creating Python code with Qt, using C libraries where needed. For integrating C libraries in Python I use swig.
lol i mean, you're so funny lol
i mean, your so funny lol
I'm surprised nobody mentioned Sun Studio 12, which just came out recently. This time, the Linux release comes (for the first time) with its own compilers, instead of relying on gcc. It'll be interesting to see how they compare to Intel's, specially on AMD chips...
I can't stand the Delphi IDE. The Delphi debugger though is excellent, except for exception handling. Though its all personal preference anyway, plus I'm stuck using Delphi 7, which is a bit out of date now.
Well, you're comparing a VS version from what, 11 years or so ago, to a current version of Anjuta, or Eclipse... Honestly, I was a bit put off by Visual Studio .Net and 2003... 2005 is much better than any other VS version. Will probably try another Linux run before too long... I ran it for about 8 months as my main desktop last year, but switched back to XP, because 80% of my time was work related, and spent in a windows VM. Linux is a constantly moving and growing beast, though it would be nice to see some consolidation among some of the tools in Linux... Sometimes all the choices are simply *TOO* much to even have enough of a comparative grasp on to make a good decision.
Michael J. Ryan - tracker1.info
Perl, Perl, Perl, Perl -- that is the only answer to everything! Bugzilla, DVD decoders, SSL, apache2.pm and a Tomcat -- all written in Perl! Even Windows 98 is written in Perl (Vista is just rewrite to C++ from Perl)...
*running away* :-)
You aren't really stuck. I use Delphi 6 and find no reason to upgrade. The later enhancements aren't exactly killer features. Personally, for what I do, I think Delphi 3 is quite adequate and I am fine with Wine performance.
Anyone who claims they program without a debugger is either lieing, writing embedded code (or something that a debugger won't work with) or is a bad programmer.
I highly recommend both eclipse and netbeans, they are great
True programmers only program in machine code.
Write your own Choose Your Own Adventure. http://www.freegameengines.org/gamebook-engine/
These tools do not have point and clicky sexyness; They just work. They are portable. You can even port to a winTurd OS, but only God would know why you would want to. They are all free as in freedom can be downloaded from the internet, and come with most GNU/Linux distros.
They were designed by programmers for programmers, without any care for what the suits might think.
They are complex in spots. But every bit of complexity addresses some real problem or issue.
Programmers that understand and use these tools, would not use any other.
If you can write better tools that replace all the features of these tools, please do so.
As for VB and descendants with the same name that are very different - the lack of backwards compatibility and the difficulty of obtaining the source of even in-house applications should be considered more than a shiny GUI that repeat the flaws of 1990s graphical development environments. If you can't easily get it in text and change that one thing that stops it working today with a search and replace the environment is not paticularly useful. Keeping a machine stuck in late 1996 for one app to work and another in 1999 for a different app to work is annoying - virtual machines are a bandaid but environments the focus on fluff more than substance are the problem.
If the Fortran 9X support would be better, i'd use Slick Edit as IDE/Editor.
vi is madness.
It's much more language-agnostic and focused on finding the way to do the job right. Take a look, though it does have a bit of that Agile infection.
Ha! I'm far sneakier than that. I'm crazy AND I like to post on Slashdot whilst my code recompiles. :)
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
If you look at the context in which I pointed out Knuth's warning, it is appropriate. They were talking about using tools to determine where an application spends all of its time. Also, note the use of the word "premature". Most people would not consider choosing your programming language up front "premature". (Yes, some would.)
What does optimization mean? Well, in this context he's referring to computer resources - memory, cpu (speed), disk I/O. "Premature optimization" in part refers to trading off code complexity for computer resource concerns. It also alludes to the fact that what you think is an optimization might actually end up using more resources. Anyone who has been programming for a significant period of time can tell you stories about cases like that.
If you find using a hash table makes the code much more complicated (even if it makes it faster or use less memory), then that's probably premature optimization. Of course, a list of pairs would actually be more complicated, IMO.
And here you seem to address all of the concerns you appeared to be raising. You're absolutely right, of course, but I don't know that anyone was suggesting otherwise.Ben Hocking
Need a professional organizer?