I must say that the Red-Green-Refactor strategy makes my development faster than CreateMentalModel-ComeUpWithSolution-ThinkAboutImplications-ImplementSolution because generating the mental model and thinking about all implications is automated by the test suite.
I'd like to add that the automation of the tests provide an abstraction that allows for quick feedback that verifies or disproves your solution. This abstraction is a "thought abstraction" of a sort, because it allows focus on the localization of the mental model (I can focus on thinking about a smaller part of the system in detail) and globalization of thinking about the implications (if the changes affect the contract of the Object).
It is also valuable to come up with a coherent Domain Language that ties your tests, implementations, and thoughts together. Perhaps thats what Literate Programming is designed to do?
The "think first" school of programming is very out of favour (probably mostly because it actually involves thinking).
TDD asks you to design a test for the code block you're about to write.
I'm not sure what you mean by "thinking" then. I practice TDD and I think about the problem, the solution, and the process. We even have design sessions when the problem or solution is particularly complicated.
I have seen people suffer from paralysis by analysis, especially when the code base becomes too large to hold in one's head. Ultimately, abstraction, separation of concerns, and the many other ways of managing complexity is useful to combat this. Any development technique that establishes the discipline to manage the complexity will be beneficial.
One thing that TDD does very well is to establish a quick development rhythm. This leads to a very fast "evolution" of the code base. I must say that the Red-Green-Refactor strategy makes my development faster than CreateMentalModel-ComeUpWithSolution-ThinkAboutImplications-ImplementSolution because generating the mental model and thinking about all implications is automated by the test suite. Of course more global architectural problems are thought about and communicated with discussion, whiteboard, and modeling.
I'm not sure how Literate Programming and DbC fit in with rapid iterations and software evolution because I don't have experience with these disciplines, but I'm intrigued by the idea of learning new tools, especially if they have a low cost and high benefit.
The "think first" school of programming is very out of favour (probably mostly because it actually involves thinking).
Or mostly because building a large tree of assumptions has fallen out of favor. Requirements and technologies change. The world is not static.
One of the reasons test incrementally, like in unit testing, is to get feedback that your design is the simplest thing that could work (but no simpler). That does not mean "turn your brain off" and implement a stupid solution.
I like to think of TDD as an empirical activity because it involves creating an hypothesis of how the software will work and verifying it through the implementation satisfying the test.
Another benefit of automated testing (unit, functional, and integration) is to guard against regressions when refactoring or implementing new features.
I found Rails to also be maintainable. There can be a problem when you have large controllers or views, but you can break up the functionality into supporting classes.
Unfortunately, Rails does not seem to have a good community convention on where to put these supporting classes. I put them in a directory with the same name as the controller.
For example, app/controllers/a_controller.rb app/controllers/a_controller/supporting_class_a.rb app/controllers/a_controller/supporting_class_b.rb
And for views, I use rxml. Most Rails developers use rhtml, but I found that rxml gets me to think more about creating seams to create supporting classes, with unit tests.
For example, app/views/a_controller/view_a.r(x|ht)ml app/views/a_controller/view_a/supporting_class.rb
When I visited Guangzhou (Canton), these bikes where everywhere. There where also alot of crazy drivers.
I remember our tour bus almost hitting a couple of bike drivers because they cut off the bus.
Not that I blame the bike drivers, because nobody really follows western traffic conventions there. Its pretty much, drive on any side of the street you want and create your own lanes.
Outside a buddhist temple, I also noticed a newspaper posted on the wall with the picture of a bike driver on the pavement in a pool of blood.
Do we really want to risk our young daughters eating abnormal quantities of lactoferrin and risking a higher rate of gigantomastia and breast cancer?
Last I heard, breathing is carcinogenic if we do too much of it. How much lactoferrin and gigantomastia have the rats injected to show an increased risk of cancer?
The consequences of growing these types of crops and the impact on their surroundings may not be measureable or manifest themselves for years.
Enough with the scare tatics. Humans have been "genetically modifying" herbs, grasses, trees, and animals for thousands of years. Besides, you are merely justifying the fact that you have absolutely NO evidence that GM food hurts the ecosystem.
It's one thing to cross one tomato with another tomato strain to get a redder, juicier tomato, it's quite another to put drugs in them, or make them glow in the dark, or somesuch nonsense.
Ok, so you are appaled by using chemicals and changing genes to make tomatoes glow in the dark. Again I ask, where are the peoply dying left and right from GM corn? I can show you hundreds of millions of malnourished people.
Destroying, modifying, genetic diversity should be undertaken with *extreme* caution.
Who said anything about destroying genetic diversity? One of your doomsday scenarios? We arleady modify genetic diversity by breeding.
These corporations will tell you that they are doing it to feed poor people in starving nations. This is crap. There is *no* food shortage. There are food distribution problems caused by political or economical concerns.
Three words: Supply and Demand. Also, GM crops can be designed to survive in unfavorable conditions. This will empower poorer nations to grow their own food, rather than depend on handouts. You dont see the poorer nations protesting GM food.
By and large the vegetables that you eat today are not nearly as good for you as the ones that your grandparents ate because soil depletion and crappy farming techniques have robbed them of their minerals and nutrients.
Please provide the studies. I could say vegetables are by and large healthier now than in the past. Who right?
There is lots of room for scientists to come up with clever plans to increase crop yields and preserve soil *without* putting manmade chemicals and drugs in them.
Great idea. Why hasn't it taken root as firmly as you want it? Because it costs too much money. Money that could be better spent elsewhere. If someone can come up with a more (proven) economical solution (there are plenty of inefficincies with current system) and then I'll be for it.
cheap grab for a buck by people that have no concern what happens to your children
In fact, it looks like if you wanted to improve your chances of employment, you're better off reading one of those java books.
If you are starting out, you have a better chance with.NET. Since Java is an older technology, there are alot of Java programmers with 5+ years of Java experience. That means most of the job ads "require" 5+ years of Java experience.
On the other hand,.NET is much newer. Most of the job ads I've seen require 1 year.NET experience or less.
So assuming Joe Programmer can study a technology for 3-6 months until unemployment runs out, which technology choice would be better for Joe to break into the industry: one where the jobs require >=5 years or <= 1 year of experience.
Maybe this has already been mentioned, but why dont you just encapsulate the environments.
If an application works using Perl 5, then dont migrate it to Perl 6!! Encapsulate it and access it as a seperate process or web service.
An application works with Apache 1.x, but you want to start using Apache 2.x. Well, run Apache 1.x on one machine, and 2.x on another and access the 1.x app through web services.
Companies still run code from the 1960s on mainframes. They're not "forced" to upgrade. There is still a demand for COBOL programmers.
Maybe I didn't RTFA well enough, but if Neil Gunton did more homework, he would find that we have been using the solution all along.
This means what, precisely? Being a christian means you have a high IQ? Puhleese. Go tell it to Gallileo.
You're bantering the same horse as the parent. (Not)? Being a Christian does not preclude someone from being smart.
Anyways, Galileo was a Christian. However, a faction in the inquisition didn't like his discoveries because it threatened their world view and|or power.
I don't what this game promotes and how it influences some people, but America was created with free speech in mind. Unfortunately, people with poor taste are also allowed free speech.
Oops. I don't like what this game promotes and how it influences some people, but America was created with free speech in mind. Unfortunately, people with poor taste are also allowed free speech.
That presents him as unqualified to have a convincing opinion on parallelism.
I'd like to add that the automation of the tests provide an abstraction that allows for quick feedback that verifies or disproves your solution. This abstraction is a "thought abstraction" of a sort, because it allows focus on the localization of the mental model (I can focus on thinking about a smaller part of the system in detail) and globalization of thinking about the implications (if the changes affect the contract of the Object).
It is also valuable to come up with a coherent Domain Language that ties your tests, implementations, and thoughts together. Perhaps thats what Literate Programming is designed to do?
I'm not sure what you mean by "thinking" then. I practice TDD and I think about the problem, the solution, and the process. We even have design sessions when the problem or solution is particularly complicated.
I have seen people suffer from paralysis by analysis, especially when the code base becomes too large to hold in one's head. Ultimately, abstraction, separation of concerns, and the many other ways of managing complexity is useful to combat this. Any development technique that establishes the discipline to manage the complexity will be beneficial.
One thing that TDD does very well is to establish a quick development rhythm. This leads to a very fast "evolution" of the code base. I must say that the Red-Green-Refactor strategy makes my development faster than CreateMentalModel-ComeUpWithSolution-ThinkAboutImplications-ImplementSolution because generating the mental model and thinking about all implications is automated by the test suite. Of course more global architectural problems are thought about and communicated with discussion, whiteboard, and modeling.
I'm not sure how Literate Programming and DbC fit in with rapid iterations and software evolution because I don't have experience with these disciplines, but I'm intrigued by the idea of learning new tools, especially if they have a low cost and high benefit.
Or mostly because building a large tree of assumptions has fallen out of favor. Requirements and technologies change. The world is not static.
One of the reasons test incrementally, like in unit testing, is to get feedback that your design is the simplest thing that could work (but no simpler). That does not mean "turn your brain off" and implement a stupid solution.
I like to think of TDD as an empirical activity because it involves creating an hypothesis of how the software will work and verifying it through the implementation satisfying the test.
Another benefit of automated testing (unit, functional, and integration) is to guard against regressions when refactoring or implementing new features.
I found Rails to also be maintainable. There can be a problem when you have large controllers or views, but you can break up the functionality into supporting classes.
b b
Unfortunately, Rails does not seem to have a good community convention on where to put these supporting classes. I put them in a directory with the same name as the controller.
For example,
app/controllers/a_controller.rb
app/controllers/a_controller/supporting_class_a.r
app/controllers/a_controller/supporting_class_b.r
And for views, I use rxml. Most Rails developers use rhtml, but I found that rxml gets me to think more about creating seams to create supporting classes, with unit tests.
For example,
app/views/a_controller/view_a.r(x|ht)ml
app/views/a_controller/view_a/supporting_class.rb
And for all that cost, Visual Studio still hasn't got half the functionality of emacs...
At least with VS.Net, you wont get RSI as quickly. For an example look at Ben Wing, chief architect of XEmacs and his RSI, .
If you like pain, use Emacs.
When I visited Guangzhou (Canton), these bikes where everywhere. There where also alot of crazy drivers.
I remember our tour bus almost hitting a couple of bike drivers because they cut off the bus.
Not that I blame the bike drivers, because nobody really follows western traffic conventions there. Its pretty much, drive on any side of the street you want and create your own lanes.
Outside a buddhist temple, I also noticed a newspaper posted on the wall with the picture of a bike driver on the pavement in a pool of blood.
The /. groupthinkers will just call him anti-free and just spout more propaganda.
Ah, the wonderful world of the internet, geekdom, open source, and jealousy.
Becuase that's why I first started coming to Slashdot--the cool tech news. Not "let's fill our daily quota of one 'bash M$' article per day."
I agree too. All of this bash M$ stuff gets very passe very quickly.
all most companies need is Word & E-mail
Just about any company that markets to customers, orders supplies, and has employees can benefit from from databases vs. using paper for everything.
Thats the beauty of capitalism.
Its far more dangerous than GM food.
Do we really want to risk our young daughters eating abnormal quantities of lactoferrin and risking a higher rate of gigantomastia and breast cancer?
Last I heard, breathing is carcinogenic if we do too much of it. How much lactoferrin and gigantomastia have the rats injected to show an increased risk of cancer?The consequences of growing these types of crops and the impact on their surroundings may not be measureable or manifest themselves for years.
Enough with the scare tatics. Humans have been "genetically modifying" herbs, grasses, trees, and animals for thousands of years. Besides, you are merely justifying the fact that you have absolutely NO evidence that GM food hurts the ecosystem.
It's one thing to cross one tomato with another tomato strain to get a redder, juicier tomato, it's quite another to put drugs in them, or make them glow in the dark, or somesuch nonsense.
Ok, so you are appaled by using chemicals and changing genes to make tomatoes glow in the dark. Again I ask, where are the peoply dying left and right from GM corn? I can show you hundreds of millions of malnourished people.Destroying, modifying, genetic diversity should be undertaken with *extreme* caution.
Who said anything about destroying genetic diversity? One of your doomsday scenarios? We arleady modify genetic diversity by breeding.
These corporations will tell you that they are doing it to feed poor people in starving nations. This is crap. There is *no* food shortage. There are food distribution problems caused by political or economical concerns.
Three words: Supply and Demand. Also, GM crops can be designed to survive in unfavorable conditions. This will empower poorer nations to grow their own food, rather than depend on handouts. You dont see the poorer nations protesting GM food.
By and large the vegetables that you eat today are not nearly as good for you as the ones that your grandparents ate because soil depletion and crappy farming techniques have robbed them of their minerals and nutrients.
Please provide the studies. I could say vegetables are by and large healthier now than in the past. Who right?
There is lots of room for scientists to come up with clever plans to increase crop yields and preserve soil *without* putting manmade chemicals and drugs in them.
Great idea. Why hasn't it taken root as firmly as you want it? Because it costs too much money. Money that could be better spent elsewhere. If someone can come up with a more (proven) economical solution (there are plenty of inefficincies with current system) and then I'll be for it.
cheap grab for a buck by people that have no concern what happens to your children
My God...Not the Children!!!
In fact, it looks like if you wanted to improve your chances of employment, you're better off reading one of those java books.
If you are starting out, you have a better chance with .NET. Since Java is an older technology, there are alot of Java programmers with 5+ years of Java experience. That means most of the job ads "require" 5+ years of Java experience.
On the other hand, .NET is much newer. Most of the job ads I've seen require 1 year .NET experience or less.
So assuming Joe Programmer can study a technology for 3-6 months until unemployment runs out, which technology choice would be better for Joe to break into the industry: one where the jobs require >=5 years or <= 1 year of experience.
This solution would take David Farber 83.333 hours to send the email to his "nice" list. I dont think he would like that.
If you make your spreadsheet publicly available, then it has the potential to be "harvested".
Even Google has much room for improvement.
It will be interesting to see if Google can still innovate as the *Big* company in the search industry.
The Mormons have a good genealogy record database in place.
In fact, I wonder if Utah uses the Mormon's database to track who lives there.
Why is that comment a troll? Because someone dares to say something, *gasp*, bad about Google?
Maybe this has already been mentioned, but why dont you just encapsulate the environments.
If an application works using Perl 5, then dont migrate it to Perl 6!! Encapsulate it and access it as a seperate process or web service.
An application works with Apache 1.x, but you want to start using Apache 2.x. Well, run Apache 1.x on one machine, and 2.x on another and access the 1.x app through web services.
Companies still run code from the 1960s on mainframes. They're not "forced" to upgrade. There is still a demand for COBOL programmers.
Maybe I didn't RTFA well enough, but if Neil Gunton did more homework, he would find that we have been using the solution all along.
This is kindof like Spike Lee suing Spike TV because it uses "his" name.
This means what, precisely? Being a christian means you have a high IQ? Puhleese. Go tell it to Gallileo.
You're bantering the same horse as the parent. (Not)? Being a Christian does not preclude someone from being smart.
Anyways, Galileo was a Christian. However, a faction in the inquisition didn't like his discoveries because it threatened their world view and|or power.
You're right. Thanks for the correction.
I don't what this game promotes and how it influences some people, but America was created with free speech in mind. Unfortunately, people with poor taste are also allowed free speech.
Oops. I don't like what this game promotes and how it influences some people, but America was created with free speech in mind. Unfortunately, people with poor taste are also allowed free speech.