Something For (Almost) Every Developer
First up, reader martinjlogan sends along a tutorial for setting up a workable Erlang/OTP development environment on a Mac. Next, reader acid06 notes news of Perl 5.12, including what may be the first delivered fix for the Y2K38 bug. (Hit the Read More link below for some details on Perl's new release strategy.) "After two years of development, the new major version of Perl is now available. Notable new features are: better Unicode support, proper support for time after the Y2038 barrier, new APIs to allow developers to extend Perl with 'pluggable' keywords and syntax, warnings for deprecated features and more. From the linked post: You can get it from the CPAN right now or wait for a platform-specific release (such as Strawberry Perl for Windows)." Finally, from reader snydeq: "InfoWorld's Martin Heller provides an in-depth review of Visual Studio 2010 and finds Microsoft taking several large steps away from its legacy IDE code. 'Visual Studio 2010 is a major upgrade in functionality and capability from its predecessor. Developers, architects, and testers will all find areas where the new version makes their jobs easier. Despite the higher pricing for this version, most serious Microsoft-oriented shops will upgrade to Visual Studio 2010 and never look back,' Heller writes. Chief among the improvements are Microsoft's revamping the core editing and designer views to use WPF, its overhaul of IntelliSense and support for test-driven development, and its intelligent support for multiple versions of the .Net Framework."
Re: Perl. This release cycle marks a change to a time-based release process. Beginning with version 5.11.0, we make a new development release of Perl available on the 20th of each month. Each spring, we will release a new stable version of Perl. One month later, we will make a minor update to deal with any issues discovered after the initial ".0" release. Future releases in the stable series will follow quarterly. In contrast to releases of Perl, maintenance releases will contain fixes for issues discovered after the .0 release, but will not include new features or behavior.
Re: Perl. This release cycle marks a change to a time-based release process. Beginning with version 5.11.0, we make a new development release of Perl available on the 20th of each month. Each spring, we will release a new stable version of Perl. One month later, we will make a minor update to deal with any issues discovered after the initial ".0" release. Future releases in the stable series will follow quarterly. In contrast to releases of Perl, maintenance releases will contain fixes for issues discovered after the .0 release, but will not include new features or behavior.
I've been working with Erlang for about 9 months now. It's an interesting language, but prone to some of the most bizarre runtime problems because it doesn't do type checking (for example if you typo a "+" instead of "++" when concatenating strings it'll defer the error to runtime, when it reports an "arith error".)
One thing that really impresses me about Erlang is how tight the code is. We've been working on a PBX application (with Freeswitch and PostgreSQL) and it's not even 30,000 lines of code in Erlang, including database I/Os and client/server GUI access. C++ would have weighed in at around 100,000 lines for the same functionality.
I do not fail; I succeed at finding out what does not work.
When your project size starts getting large and the number of classes/functions/types/etc starts heading to the thousands its pretty nice to have something that will quickly show you the organization of the code base and help you find things faster. Stuff like "I'm in a source file, open the corresponding header" or "show me all the places that call this function" or "rename this function everywhere it was used" or even "let me browse through the 10 versions of the function to see the right one without having to load the header file and stare at it". Also, when there's tight checkout integration its nice to click on another file, check it out, etc. without having to drop to the command line or move to something else. That's not to say that the command line isn't useful - I still find it easier to sometimes run makes or grep or whatever so there's always one handy, but personally I get a lot more done than with a plain old editor.
I use IDE as a tool.
The problem is some people use it as a crutch... "If the IDE doesn't handle it then it cant be done" mindset
But it is a tool to keep in your cap. I know Visual Studio 2008 is good at showing me methods and properties I can access from the variables which is handy to let you know what is going on in a datatype/class you don't use much.
However sometime I will take the file out of Visual Studios to do some additional coding because Visual Studios Expects you to code in Top Down in this order...
IF (x == y)
{
msgbox("hello");
}
However real life has it more like this...
msgbox("hello");
run test...
Up arrow Return
if (x == y) {
return down arrow to go past the msgbox command
}
For this case the IDE is a pain because it will try to close my if statments {} which if I am not paying attention it will give me an extra } that I need to dig around and find when I get a compile error.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
I think CPAN is there to make you go nuts trying to get a downloaded Perl Script to work as you dig around trying to find the right libraries to make the freakin program work... But I am not a fan of Perl so I digress...
The 3rd party problem isn't a case of reinventing the wheel. But getting new wheels that already exist just because they are slightly different, eg a grid control that automaticly populates from the database vs. Loading it from 3 other commands...
But... Sometimes for programming reinventing the wheel is a good thing. Why...
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Eclipse might be better than VS, but I've never been able to get it to run fast enough to be usable.
Last time I installed it the person advocating it to me looked over my shoulder and said "yeah, I think you need to upgrade your video drivers".
How we know is more important than what we know.
If no one ever reinvented the wheel, we'd all be running around on stone wheels.
I really hate Eclipse actually. I find it buggy, slow, and non-intuitive in a lot of ways. For Java stuff, IntelliJ IDEA is really great. For non-MS C and C++...I'm not really sure anymore. I mostly end up using Vim and the command line.
It's interesting to contrast this with bash TAB-completion, which operates in a very similar fashion (albeit in a somewhat different context). The basic capability has been around for a long time, but increasing numbers of utilities are taking advantage of it.
These days, for example, you can use TAB-completion to see a list of available packages to install based on a given string; you can find the available options and arguments for countless different utilities, even when there are hundreds of available choices.
All of these improvements have arrived piecemeal, without requiring any particular effort from the bash developers themselves.
So why should Intellisense language bindings be limited to a particular version of Visual Studio? Surely one should be able add/update/change a language and have the bindings Just Work...?
I risk inciting a flamewar for saying this, but both vi and emacs can integrate new language/version modes without any fuss or bother. Why would it be an issue for VS?
Crumb's Corollary: Never bring a knife to a bun fight.
> This for instance is not something you do while the IDE is open
Then that pretty much rules using an IDE. It's crazy to imagine opening and closing an IDE every few minutes just because I want to backport my fixes to a different branch, or bisect to find a bug, etc.
Even plain old GDB lets you view raw types just by writing macros to display things however you want. Hell, it even has python scripting support, so you can go crazy with it.
grep is an interesting point actually.
Okay, so the IDE lets you search all files. Just like doing:
git grep someword
How do I now use the IDE to search all the files.. in all of time? e.g. I remember that the code once had a certain string somewhere, but it seems to have been deleted. How do I find that?
With git it's a single command.
Eclipse might be better than VS, but I've never been able to get it to run fast enough to be usable.
I used to have a lot of problems with that, and then I moved it to a machine with more memory and the problems went away. IOW, it's a bloaty hog but otherwise OK.
"Little does he know, but there is no 'I' in 'Idiot'!"
hear, hear, well, think Eclipse is alright, decent solid IDE once you get to know it. Jetbrains IntelliJ IDEA though rocks everything, best IDE ever.
Coming back to VS, the best part with it is that you can install the Jetbrains Resharper, which makes VS behave (almost) like IntelliJ!!
if (!signature) { throw std::runtime_error("No sig!"); }
My "day job" is C#
Sorry to hear that. Mine used to be too - then I started using QT and QtCreator for my main project. Bliss! Finally I am able to easily write apps that will run on multiple platforms, but still has a rich library of UI controls ( widgets) and plenty of abstract data types.
I really cant see me going back to C# - I just don't see a need for it any more, now it is so easy to write GUI intensive apps in C++. I have been working on my current project for a couple of years in C#, but it has only taken me a few months to get a C++/QT equivalent up and running - I was able to even ditch a lot of the code I had written in C# (eg. a docking panel interface, a MVC for treeviews, etc) because QT already provided those. In addition I have been able to completely ditch the third party control I was using for opengl too, since again, there's already an opengl widget in QT. (I'm writing a sort of Quantity surveying system / scriptable 3d CAD / quoting database thing for a construction company)
Only down side I had initially to moving to QT was getting my head around how QT form designs and widget layouts work compared to how forms work in C# (ie. using anchoring/docking for sizable forms), but I have pretty much nailed that now.
My biggest bitch with C# and Visual Studio Professional 2005 was the Complete lack of a profiler - I mean - WTF! I'm not forking out $15,000 for the team edition to get a profiler.
Parrot? It's out. It works.
how to invest, a novice's guide