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.
most serious Microsoft-oriented shops will upgrade to Visual Studio 2010 and never look back
Of course, implying that you're not a serious Microsoft-oriented shop if you don't upgrade. This is the exact opposite of the case. As Microsoft regularly changes stuff in VS that no-one wants, most people don't upgrade until necessity forces it on them. It's entirely network effects. If you're using precompiled third party libraries and they upgrade, chances are you'll be forced to upgrade. If Microsoft made it easier to use the new IDE without upgrading the compilers, the standard lib, the header install, etc, I imagine more people would accept the feature improvements (and the bug fixes!) to the IDE without trepidation.
How we know is more important than what we know.
proper support for time after the Y2038 barrier
Good to know that my time machine written in PERL will no longer malfunction due to improperly handled timestamps! Now to test this baby out. This knob here, this button here, and... %^$%^$%^$%^$%^ NO CARRIER
So almost every developer either: a) Uses Erlang and a Mac b) Uses Perl or c) Uses VS2010? Is it just me, it would there still be a fair chunk of developers not included?
We've started churning out pointless stories all day and then cramming four actual news posts into a single thread?
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.
Would it hurt to just write 2038? No space is saved writing it the other way.
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.
Strawberry Perl has been doing betas all the way through the 5.12.0 RC process, so the production release should be out in a week or so.
What the summary doesn't mention is that there's some stuff in 5.12 that allows Strawberry to add:
GCC-based 64-bit support for Windows servers
Strawberry Portable (flash drive) stuff finally works in a first-class manner (with separate core/vendor/site installation targets).
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.
While you're waiting for Strawberry Perl to put out a release, why not try a package from a company that has their stuff together? Activestate's ActivePerl 5.12.0 is free-for-non-commercial-use and already out. 32- and 64-bit builds for Windows, Mac, and select Linux distros are available.
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.
Awesome. From now on, let's just post 1 story on Slashdot per day with all of the good stuff in it, so that we may discuss everything in it in one big unrelated clusterfsck of comments.
It's considered trolling because that's purely what it is.
Perhaps you'd like to enlighten us with some examples of "byzantine syntax", since Greek and Latin aren't valid Perl. Perhaps you meant "British" syntax, since the language is based more off of English than other programming languages. Yes, I'm aware this places it in the same group as COBOL, but hear me out.
Perl's syntax is based off natural language. You should be able to tell the computer what to do in the same way you'd tell another person, with some obvious extra clarity needed. In this regard, it is the opposite of INTERCAL. In Perl, when you want to run a function 'foo' if and only if 'bar' is true, the statement is very close to what I've just said.
foo if bar;
Sure, it's not like C, but why should we limit our thinking? Alternatively, just as in English you can say "If 'bar' is true, run 'foo'":
if (bar) { foo }
Perl is a language for people who use language. Even the more ugly syntax makes perfect sense with a bit of thought:
s/foo/bar/g;
That's a full statement, saying "substitute foo with bar globally". It applies to whatever you happen to be working on at the moment, just like how there are many statements in English that carry an implied 'you'.
The syntax of the Perl language is only ugly if you try to forget that it is a language. Perhaps other languages should try to emulate Perl's features, and actually gain some readability. Sometimes, it just makes more sense to express things differently. Would COBOL be so bad if it allowed BASIC's syntax as well (and allowing non-computer people to write in it carried the death penalty)?
You do not have a moral or legal right to do absolutely anything you want.
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.
%^$%^$%^$%^$%^ NO CARRIER
Just to clarify, does that actually do something in Perl?
If it's for-profit but free, you're not the customer -- you're the product (e.g., the Slashdot Beta's "audience").
Perl 6 is mainly usable, and some form of it is being used in production at multiple sites. It's just not ready for public "launch" yet. If you really want it, you can get it. Perl6.org has it.
Perl 5 hasn't exactly been sitting still the past decade. The changes between 5.6 and 5.8 or 5.8 and 5.10 are huge. I haven't looked over the full changes list for 5.12 yet, but it sure isn't the language Perl 5 was in 2000.
I've been using VC++ Express 2008 and was excited to get an upgrade. But instead I was surprised by a few seemingly "dumb" moves:
1. The default fonts for the editor and tool windows have been changed to a font that looks very blurry on Windows XP. To change them back, you have to change them one by one for every window.
2. The drag'n Drop capability to add buttons to the tool bars is gone. You have to find the button from another dialog and then click "MoveUp/Down" several times to move it to the place you want.
3. The GUI I used the most in the Option Dialog, the directories of Exe/Include/Lib, is moved to a place that I haven't yet found.
4. The startup time is much longer than that of 2008.
5. The new GUI has a high contrast. Maybe it's just me, but after staring at it for a long time, I feel like I am starting to see ghost images.
A few days ago, I used a copy of Visual Studio 2010 that I got from my MSDN Academic Alliance account. It looks really nice, but it ran absolutely dog slow. And this was for debugging VBScript!
I gave it another shot with Visual Studio 2010 Web Developer Express, which I heard can debug VBScript just like the full devenv can. It was a little faster (though still slower than VS2008), but it nor Visual Basic 2010 Express would debug my VBScript.
I haven't tried coding on it for real (I also do C/C++ development; can't wait to port that script over to a REAL effin' language), but if it's as slow as I remember it being, I can see lots of companies turning back really quickly.
"It's always been very snappy on Windows"
Hmm. And I always thought that "snappy" implied fast and responsive. I guess not.
bugs would creep in, undoubtedly
Impossible, if you follow Micosoft's guidelines, such as those published in the Microsoft Programming Series book by Steve Maguire: "Writing Solid Code: Microsoft Techniques for Developing Bug-free C" ISBN 978-1556155512
Microsoft uses these very techniques themselves, in every single one of their bug-free programs. Uh, on second thoughts...
Those who can make you believe absurdities can make you commit atrocities. - Voltaire
I'm offended by your statement that it's impossible to write valid Perl in Latin, and offer this counterexample. Arguably, a Latinised syntax fits it even better than an English-like one; in both Perl and Latin, there's often enough context to put things in a (relatively) arbitrary order. Of course, I'm someone whose signature is an INTERCAL statement, so you may want to take what I've said with that in mind.
(1)DOCOMEFROM!2~.2'~#1WHILE:1<-"'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"
> 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!"); }
I don't know about "just opening it", but you can simply select Import -- Existing Project into Workspace and that's that. This has never been an issue for me with all kinds of projects (some of them rather large). A workspace is just a set of projects; I think many IDEs have a concept like that. If you don't want to bother with it, you can simply have one workspace for all projects with no real downside, that's what I do at home.
That said, setting up the development environment for a legacy project can be anything but mundane. You need to have all the dependencies available, deal with version changes, have the compiler settings in place. Project files help a lot with that.
Switch back to Slashdot's D1 system.
> since Greek and Latin aren't valid Perl
Well, there is Lingua::Romana::Perligata. Predictably, we have Damian to blame for that.
Cut that out, or I will ship you to Norilsk in a box.
Parrot? It's out. It works.
how to invest, a novice's guide