Quick reflections on yesterday’s post
I really enjoyed the conversations resulting from publishing “I want to fix programming“, and I’ve come to a few quick conclusions I want to share:
- It’s great to have so much intelligent feedback, both on Hacker News and on the post itself. Very smart and knowledgeable people, some of them having explored the same area. Lots of insights. Lots of pointers to interesting projects. Proposals for approaches to get somewhere. I’m really happy to have brought this up in the open. There are a few “haters” there too, but I guess it’s the price of being out there – and this is key to getting the invaluable feedback from other people!
- Raganwald suggested that just the notation could be useful. Invaluable advice. Maybe that should be the first goal. Still, I plan to publish the full series with my progresses so far before really getting down to work, so this is some time away. Also, Raganwald is probably the only person who uses github as a blogging platform.
- Gruseom suggested the great idea that restricting things to a given problem space could be a great way to get somewhere practical.
- There is interest out there. Many people are (more than reasonably) skeptical, but many other people would love to see some advance in this area and are happy to contribute ideas, etc… this is great.
I do not have an academic background, and I sure lack some or many of the necessary skills. But I’ve done my homework, or at least a lot of it. I have insights and approaches that can add some value. I may be able to contribute a “general sketch” that can help in building a practical tool. But in any case, attempting this here in the open and without any commercial interest can be the best way to advance!
Now, since we are launching a new startup and product later today, please excuse me from this topic and I’ll get back to posting on this topic in a few days. Thanks for all your comments.
I enjoyed reading the article on fixing programming. You make a good point–we write recipes, not goals. I do a fair amount of Mathematical Programming (e.g., LPs and MIPs) and some Constraint Programming for the BravoSolution Collaborative Sourcing practice area, and I recognize what you are writing. It’s called Constraint Programming. You specifiy the rules and you specify the goal(s). The engine (compiler) then gives you the (or an) answer. You can supplement that by guiding it with domain knowledge, additional rules, etc., but you don’t write the solver. You think and write rules and goals, essentially.
You can check out IBM’s ILOG (they bought ILOG) products. They even have their own language, OPL (Optimizaiton Programming Language) which is a JavaScript-based language. It’s a very elegant way of describing or defining problems and obtaining solutions. Very set-based and easy to grasp. No algorithms necessary. It’s almost right out of your “pseudo-code.” Give it a try.
I think the key to your effort is you can’t visualize / see what the computer does given the code you have. You have to keep a mental map between code and effect/computer behavior. Check out how Brett Victor tries to make this immediate, starts about 2 mins in http://vimeo.com/36579366
Greg, indeed, that definitely hits the nail, thanks for the link!