Something For (Almost) Every Developer 263
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.
Erlang is an interesting language (Score:5, Interesting)
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.
Re:IDEs (Score:4, Interesting)
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.
Re:IDEs (Score:4, Interesting)
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.
Re:VS upgrade cycle (Score:3, Interesting)
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...
Re:IDEs (Score:5, Interesting)
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".
Re:Erlang is an interesting language (Score:2, Interesting)
In many languages ++ means concat the lists, so I assume that if a string is a list of characters then its a concat of the two lists? I'd guess that once you understand the underlying concepts and seen a few functional languages then its not too confusing to debug. It is frustrating to have to wait until runtime to find errors that a decent IDE would identify immediately..
I always wondered how well Erlang handles caching. An LRU is generally a list crosscutting a hash-table and is done O(1) by reordering the entry. As Erlang uses persistent values, this would be O(n). Also, since an actor handles messages sequentially it couldn't handle a high load. Do Erlang folks do caching in the VM or is it purely externalized? I suspect that the common apporoach is to use memcached with a pool of actors that make the out-of-process calls? This would resolve the shared state issues, though how expensive is the serialization overhead?
Re:VS upgrade cycle (Score:5, Interesting)
Re:Erlang is an interesting language (Score:3, Interesting)
I've been using Erlang as my primary language for the past 2 years and I have to say that you are essentially correct. My worst typo-leading-to-weird-bug situation was forgetting a comma in a list of strings. Apparently ["foo", "bar" "baz"] is interpreted as ["foo", "barbaz"]. That led to some subtle failures in a totally different part of the code.
However, occasional weird issues aside, it does reduce the size of the code and the number of bugs by a factor of 4 or 5. I have been able to write non-trivial pieces of code in the range of 100 lines that ran fine the first time around. That never happened with C/C++/Java. And the way Erlang and the OTP environment handles product deployments and maintenance is really superb.
Re:IDEs (Score:5, Interesting)
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.
Re:VS upgrade cycle (Score:3, Interesting)
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?
Re:IDEs (Score:3, Interesting)
> 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.
Re:IDEs (Score:3, Interesting)
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.
Re:IDEs (Score:3, Interesting)
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.
Re:IDEs (Score:3, Interesting)
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!!
Re:VS upgrade cycle (Score:3, Interesting)
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.
Re:Perl 5.12? (Score:2, Interesting)
Parrot? It's out. It works.