5 ms·
Both of those examples obviously have very little to do with the quality of the language used, and everything to do with the ecosystems that were built around t
by nbouscal 13y ago
Both of those examples obviously have very little to do with the quality of the language used, and everything to do with the ecosystems that were built around them.
- taeric 13y agoThen give me a compelling example otherwise. Also... I was not meaning to make an argument to the quality of the languages. If anything, my argument is admittedly about the ecosystems garnered by the different types of languages.
- mightybyte 13y agoYou're not going to get concrete comparable examples because Haskell has not had enough adoption and resources thrown at it to be able to compare it in this way. What I can do is point you at another comment I wrote about this the other day and the responses it got. https://news.ycombinator.com/item?id=7299034 https://news.ycombinator.com/item?id=7299034
- taeric 13y agoAmusingly, I was in that thread, too. :)
- nbouscal 13y agoThe problem with these massive ecosystems of dynamic code extensions is that when you layer leaky abstraction on top of leaky abstraction, each layer being broken in its own subtle ways, the end result is a ticking time bomb waiting to cost its users thousands or millions of dollars in lost productivity. Your example of JavaScript in web browsers is a perfect demonstration of this. We are the only engineering discipline where there are a significant number of people who actually think extensibility is more important than stability or robustness. Imagine a civil engineer pooh-poohing the stability of the bridge he's building, pointing instead to how easy it is to add additional lanes. Imagine a mechanical engineer decrying running a formal analysis of a new design for a car, saying "forget about that, look at how easily customers can plug in custom dashboard attachments!" This is lunacy, plain and simple.
- taeric 13y agoThis reeks of what I have seen as a common attitude among software developers where we make sweeping statements about other professions with little to back it up. I will not claim that extensibility is the be all end all attribute. I will claim that it is a valuable attribute. More so for some applications than others. Similarly, I will make the same claim for formal checked programs. In some fields/industries, why wouldn't this be the norm? So, if the claim is that static typing can make for a more completely specified application and that we should demand that for some fields. I agree. If the claim is that static programming is superior to dynamic, I take issue.
- dllthomas 13y ago"If the claim is that static programming is superior to dynamic, I take issue." I think this would benefit from a little more clarity about what you mean when you say "static programming" versus "dynamic programming" - I'm sure you don't mean "Dynamic Programming". If you mean static types, then I think that they are a tremendous win wherever they apply, and I think that sufficiently sophisticated type systems exist that they can apply most places. Trying to express meaningful constraints in a brain dead type system is awkward and you wind up moving between over- and under-constraining yourself - though I've been surprised at what I can express in C (with zero runtime overhead) with a little creativity. If "static programming" is taken to mean "compiled, with runtime compilation of additional code made difficult to impossible", which often correlates with "statically typed" in existing languages but is technologically orthogonal, then I agree that this kind of "static programming" is not uniformly superior.
- taeric 13y agoYeah, apologies. I did not mean "dynamic programming." I thought the context made what I meant fairly clear, though. If you have any examples that show how this is technically orthogonal, I'm all ears. Hence my request for examples of things that are as extensible as emacs. And to be clear, my understanding is that ghc is actually fairly extensible. I would love if there were more examples. Preferably in more approachable domains than compilers.
- dllthomas 13y agoXMonad is an example of a Haskell application that is compellingly extensible. Edited to add: Also, since you asked specifically about extensible editors: http://www.haskell.org/haskellwiki/Yi http://www.haskell.org/haskellwiki/Yi
- deleted 13y ago[deleted]
- sparkie 13y agoI don't think XMonad is a poster child for advertising how great (read: awkward) haskell is for runtime extensibility. Sure it does the job, but it's based on a giant hack (invoking the compiler on your configuration, forking a new process, etc.), this is pretty specific to xmonad and is non-trivial, so you can't easily reproduce this kind of extensibility for other applications. It's completely different to the kind of extensibility offered by something like emacs/lisp, which is done purely in the runtime and doesn't require transferring some state to a new process.
- dllthomas 13y agoThe only real difference is that you can't extend live - which matters, but not tremendously for a window manager.
- enupten 13y agoHave you seen StumpWM ? The sad part is that CLX is terribly instable.
- dllthomas 13y agoI actually use ratpoison :-P
- pdpi 13y agoI'm pretty sure behemoths like NetBeans and Eclipse rate pretty damn high on extensibility. Anyhow, you don't have to take an all-or-nothing approach. It's pretty common to write game engines in C++ and then use a dynamic language to provide game-specific scripting on top (e.g. World of Warcraft uses Lua for the UI, Civilization V uses Python for most of the non-engine stuff). Also, Photoshop has javascript builtin.
- taeric 13y agoThey are high, no doubt. In my view they still fall well short of the heights that emacs reaches. Take a look at skewer-mode for emacs sometime, and realize that is less than 1.5k lines of javascript and elisp. I was also avoiding the approach of bundling in specially crafted hooks for extensions. If anything, that really just kind of makes my point. That for some things there is a highly perceived benefit to dynamic languages. (And yes, the converse is true.)
- discreteevent 13y agoMS Windows and a lot of Windows applications are extensible via COM. The core of COM is a dynamic cast at runtime to a static interface. You see something similar in a lot of Go code. For me this is the right balance. Static types but extremely late binding. Or static types, dynamic dependencies.