6 ms·
I think, to some degree, the idea that drives strongly typed, theorem proved languages is a bit different than what most people think of when coding. A large s
by Karrot_Kream 9y ago
I think, to some degree, the idea that drives strongly typed, theorem proved languages is a bit different than what most people think of when coding.
A large set of people in that community want to derive algorithms mathematically, using a deductive or proof based process, as in math.
Iterative development conflicts with a top down form of development, and also conflicts with the safety oriented culture of strong typing. While rapid iteration languages and environments are good for initial development, they can be awful for projects requiring maintenance.
About a decade ago, I built a small web app using Common Lisp (SBCL) and a lot of the development I did was done through adding new features and debugging in the REPL. While I saved the VM, reading the code months later to add a feature was terrible because the app was hacked together. I wonder if there's a way to fix this. Typed Racket looks like a promising move in that direction.
FWIW, ghci already interprets Haskell quite quickly for iterative development.
- mpweiher 9y agoGood points. > derive algorithms mathematically Of course, most of what computers do is not algorithms (or even "computing"). > can be awful for projects requiring maintenance Or wonderful, see Smalltalk. Not that it is perfect and can't be improved, but it sure has been successfully maintained over a long period of time.
- mbrock 9y agoCan you expand on what is meant by algorithms and computing, and what you mean that computers mostly do instead?
- vanderZwan 9y agoThe skill of programming is really about translating tasks that are semantically meaningful to humans (ie making a user friendly online booking site for a hotel) into "meaningless" instructions that can be computed by a turing complete machine. That's very different from, say, deriving a faster partition algorithm by using half-swaps instead of full swaps (as demonstrated by Andrei Alexandrescu last year).
- Karrot_Kream 9y agoBut aren't all forms of engineering about translating semantically meaningful tasks into {problem-domain}? What makes software different?
- mcguire 9y ago"...into "meaningless" instructions that can be computed by a turing complete machine." Pssst! Hey, buddy, that's what an algorithm is.
- mpweiher 9y agoComputers today mostly (a) communicate and (b) store/retrieve data. Both at the macro level, what they are used for, but also at the micro level. Actual computation tends to be incidental.
- mbrock 9y agoYet you can't just tell the computer to communicate or do I/O -- it's all controlled by decisions, and making those decisions is basically what I call computation.
- mpweiher 9y agoYep...incidental computation. Also: "primarily"/"mostly". Not all/none.
- mbrock 9y agoHmm, maybe a lot of computation is outsourced to server farms, but "clients" still do a lot of it: image processing, codecs, scheduling, layout, speech recognition, etc etc.
- mpweiher 9y agoSo what are codecs for? Communication, storage. What is speech recognition for? Communication. etc. I think you keep arguing against something I never said, which is that computers do no computing whatsoever.
- abhirag 9y ago"About a decade ago, I built a small web app using Common Lisp (SNACK) and a lot of the development I did was done through adding new features and debugging in the REPL. While I saved the VM, reading the code months later to add a feature was terrible because the app was hacked together. I wonder of there's a way to fix this." -- I think you might like clojure.spec, I feel that it is a step in the right direction towards keeping the flexibility and interactivity of lisp while making the code more maintainable. You can find more about it here -- [https://clojure.org/about/spec https://clojure.org/about/spec]. I also wrote a small article on it, not very detailed but maybe it can help you get a rough idea of the power of clojure.spec when combined with generative testing -- [http://abhirag.in/articles/spec_oracle.html http://abhirag.in/articles/spec_oracle.html]
- falcolas 9y agoOne thing to remember - the domain under discussion in the article is gaming. There's little maintenance typically involved with games. There's more today than there was yesterday, but it's still not a system expected to be built, maintained, and extended for decades.
- marksellers 9y agoThe engines, though, absolutely
- sbov 9y agoYeah, this sounds right 99% of the time, although there is at least one genre that, if successful, breaks that mold - MMOs. WoW is 13 years old, Everquest is 18 years old, and Ultima Online is 20 years old. For us hobbyists, there are MUD codebases based upon code written 27 years ago.
- tormeh 9y agoIf you're WoW you are printing money. You can just throw people at the problem.