raganwald
(This is a snapshot of my old weblog. New posts and selected republished essays can be found at raganwald.com.)

Sunday, March 09, 2008
  Drive and determination can most often be found in the slums


I’ve written before about how you can count the number of games written in a purely functional style on one hand. Is it that language tinkerers are less concerned about writing real applications? That they know you can solve any problem with focused grunt work, but it’s not interesting to them? That the spark and newness of a different language is its own reward? Either way, the BASIC programmers win when it comes down to getting projects finished.
—James Hague, Slumming with BASIC Programmers

Ouch. Now I must get back to work on real programming and stop blogging and farting around with abstractions.
 

Comments on “Drive and determination can most often be found in the slums:
I'm seeing a bit of that with the game I'm working on right now. I'm writing it in Scala on top of a pretty solid 2d Java game engine (named "Slick" if anyone cares).

Poking through the discussion forum I've seen plenty of impressive results threaded through examples of a near-total failure to understand the underlying concepts.

The point to take away from this, I think, is that a powerful language is just a tool. Sure, Java isn't terribly expressive. Yes the OOP system isn't flexible, and reflection is a great way to bounce a bullet around and shoot yourself in the foot. But at the end of the day programmers are what get things done, not languages.

Learning a language will teach you new ideas and ways to solve problems, some of which are only possible in this new language. If you took a typical Java programmer and taught them $favorite_language they'll probably be more productive, but you could look at that productivity increase as a variation of Amdahl's law: Language productivity is a portion of a programmer's overall productivity. Switching to a more productive language will help, but it won't fix everything.
 
Reg, you are forgetting that BASIC (generally) is a dynamic language, and according to the popular opinion, dynamic languages (like Basic) are far better than static languages like Haskell, ML, or Scala...
 
Reg, you are forgetting that BASIC (generally) is a dynamic language, and according to the popular opinion, dynamic languages (like Basic) are far better than static languages like Haskell, ML, or Scala...

Perhaps you misunderstand this post? I was merely quoting somebody else, not making a definitive statement about anything other than the importance of getting back to work!

But let's talk about dynamic languages. What do you mean by that phrase? Do you mean dynamically typed, as Ruby is? Or do you mean weakly typed, as PHP is? Or do you mean garbage collected, as all of the languages you mentioned are? Or something else?
 
It is nice to get it done, but it is also important for us to expand on our knowledge. With each new abstraction we find, we move up to the next level. Usually it allows us to focus less on the language and more on the solution; letting us to do more with less effort.

I can remember XORing bitmaps in BASIC for an Apple II+ to get animations. It was crude and it took a long time. It is a lost art, which has replaced by plenty of other higher-level problems.

Paul.
http://theprogrammersparadox.blogspot.com
 
Guess I forgot the smileys :)
My comment was with a huge tongue in cheek.
The quote is a reminder that what matters is creating solutions using software
 




<< Home
Reg Braithwaite


Recent Writing
Homoiconic Technical Writing / raganwald.posterous.com

Books
What I‘ve Learned From Failure / Kestrels, Quirky Birds, and Hopeless Egocentricity

Share
rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

Beauty
IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

Work
The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Management
Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

Notation
The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Opinion
Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

Whimsey
The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

History
06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /