From: David Pollak Date: 2006-05-04T00:46:55+09:00 Subject: Re: Sharp knives and glue ------=_Part_47564_25818258.1146671211147 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Content-Disposition: inline I am a very, very good programmer. I've written more than a dozen commercial applications including Mesa which was used by Wall Street trader= s as part of a automated trading systems. I am pretty diciplined... just talk to any of the coders that have worked for me over the years. Talk to the folks at P&L Systems that took Mesa ove= r and only filed 2 support requests with me as they migrated Mesa for NextSte= p to OpenStep to Mac OS X. The code was very well laid out and very unstandable. Recently, I dusted off Integer (the world first real-time collaborative spreadsheet http://mesaonline.athena.com ) and over 2 days got the code to compile in Eclipse (the old build system used make because that's all we ha= d in 1997) and wrapped some crude AJAX layers around it so it could be used i= n a browser. I could not have done that if the code wasn't solid and the cod= e wasn't written in a diciplined way. But I used C++ and later Java to help keep order. I used the machine and the tools to help me do the right thing. After all, if you have tools, why not use them. I can refactor the Java code using Eclipse because of Java's strong typing (e.g., migrating some of the code in Integer to use generics and enumerations.) I would never have been able to write Mesa (95%+ of the code base came from my hands) or Integer (50%+ of the code base came from my hands) if not for the compiler tools. They helped me write better code. In the begining, Mesa was all Objective-C. I found it increasingly difficult to refactor code, etc. without the tools that C++ brought to the table (if I changed a method name, I'd do a compile and all the places in the code that called that method would be flagged, etc.) Ruby forces the developer to do more work and think more. This is okay if you've got a small team that has a mind-meld. This is more and more difficult when you have larger and larger teams. It's not a question of dicipline or quality of developers, it's a question of how much people can hold in their heads. People can only remember so many naming conventions, code conventions, etc. Using the machine rather than the developer to deal with these issues is why we have machines in the first place. Sorry to go off on you, but your argument is the same argument that people used to claim that C++ was better because developers managed memory rather than having the machine manage memory. Machines are better than developers at managing memory. Machines are better than humans at enforcing rules. In the begining of a coding project, it's better to worry about the thing one is building rather than worrying about the rules and structures of what one is coding. But as a project evolves and grows beyond a few people, it'= s better to have the rules by which the code was written included in the code... not mearly as comments, but as constructs that tools can enforce. This helps keep everybody in the same dicipline without some stupid construct like "The Hungarian System" with managers at Microsoft losing bonus if their developers weren't writing "Hungarian" code. Guard rails are good. Lines on the road are good. If I was the only drive= r on the road and I knew the roads that I was driving or was blazing new trails... sure... I'd prefer to have fewer obsticles. But once you have lots of drivers, even excellent drivers, driving over a well defined set of roads, keeping them driving in harmony is a lot better than letting them go willy-nilly all over the place. Ruby would be better if I could put up guard rails around certain system features so that one would have to be explicit about using those features ( e.g., the #unsafe block modifier in C#.) Ruby would be better if I could say, "only the following classes/modules can change the behavior of my classes" so that some MixIn that I know nothing about changes something in my code. This is not a binary argument (either Java or Ruby). This is not a "Java i= s absolutely better than Ruby" argument. This is a discussion about how to borrow from other systems to make an excellent system (Ruby) even better fo= r an important class of developers. On 5/3/06, kate rhodes wrote: > > Just want to point out that a secondary issue has been introduced to this > conversation that makes it much harder to answer the initial question. > People started talking about large scale development projects and > enterprise > this and that which are valid issues to address when comparing ruby to > other > languages BUT, the question at hand is should undiciplined, or just poor > quality, programmers be handed a language as dynamic and flexible as Ruby > or > something that limits their ability/options to do stupid things, like Jav= a > or Ada? Ada, as Ed pointed out, probably is a better choice than Java by > this criteria and it is alive and well in the defence industry. > > -kate > > -- -------- David Pollak's Ruby Playground http://dppruby.com ------=_Part_47564_25818258.1146671211147--