9 ms·
Which evidence do you see that points to obscurity or partial obscurity leading to success (or adoption, I can't tell which you're claiming)?
by JulianWasTaken 10y ago
Which evidence do you see that points to obscurity or partial obscurity leading to success (or adoption, I can't tell which you're claiming)?
- hubert123 10y agoThe fact that not every language on the planet is an implementation of Actionscript 3
- jonathanstrange 10y agoNot evidence, only subjective gut feelings, and I've had adoption in mind. But I'm hesitant to answer this question, because it will invariably lead to language flame-wars. Anyway, it seems to me that Algol68, Pascal, and Ada are less obscure than C and C++, but the latter are clearly more popular and have proven their worth over a long time. At the same time, implicit-block type procedural languages like Visualbasic and Realbasic/Xojo are popular, but they do not get much love from professional programmers, even though they are maybe the least obscure among all imperative mainstream languages. LISPs are also an interesting case, S-expressions are among the least complicated and easiest to grasp syntax and CommonLisp offers practically everything a programmer could ever wish for (including multiple dispatch) but it never became very popular. But maybe I'm wrong. For example, advanced Lisp macrology is definitely obscure, so that should count in favor of Lisp being more popular according to me 'hypothesis'. Haskell syntax is fairly easy, but monads are certainly obscure, yet Haskell does not seem very popular. Likewise, Python does not seem to be very obscure, it certainly isn't syntax-wise, and it's still very popular. So I don't know, perhaps my assessment was premature. It almost certainly was. ;-) I've just always had this impression that many programmers prefer a certain amount of special trickery and shortcuts over clarity. But perhaps it's the availability of libraries what counts most in the end.
- pjmlp 10y agoA big problem is that many of us that used to be on the Algol/Pascal camp had this utopic idea that engineers care for quality and would choose tools that provide such support. Wirth has a nice paper where he writes about the error of not doing any PR and thinking "build and they will come" would just work. https://www.inf.ethz.ch/personal/wirth/Articles/Modula-Oberon-June.pdf https://www.inf.ethz.ch/personal/wirth/Articles/Modula-Obero... Check the "Conclusions and Reflections" chapter.
- fpig 10y agoC is FAR less obscure than most of the languages you mention, ignoring things newbies generally don't need to worry about like standards, compiler implementations, memory alignment, virtual memory, etc. I was able to learn C reasonably well as a child precisely because of how straightforward it is. You can reserve a block of memory. You can free it. You can get the address of a value. You can get the value from an address. It works in an extremely straightforward way, unlike most languages. To a child, programming in C feels like the computer is doing exactly what it was told to do and nothing else. It feels like you understand what is going on, even though your understanding is a very simplified model of what is actually going on. Modern languages like C#, Javascript, Ruby... They are much harder to understand than C. The first time I saw a closure, I was completely dumbfounded. This doesn't make sense, a function is accessing a local variable of another function that has since been popped off the stack! What sorcery is this?? Even today things often confuse me, when I saw C# async/await for the first time I just couldn't understand how it can possibly work until I spent some time reading about it and I had been programming for decades by then including a decade in C#.
- paulddraper 10y ago> This doesn't make sense, a function is accessing a local variable of another function that has since been popped off the stack! That's only weird to you because C doesn't do it. For someone starting in one of those languages, it simply makes sense that I can use any variable in scope. (Stack allocation? What is this sorcery you speak of?)
- fpig 10y agoSo you're saying that my problem is having basic computer knowledge? Because stack allocation has nothing to do with C, C is not explicit about doing it (except alloca) just like most other languages, and other languages use it just like C does, including C# with its closures and async/await. It even has stackalloc.
- spdionis 10y agoYes but stack allocation is completely transparent in all languages except C. Well, almost, maybe all low level languages, the point still stands. In any non-systems language you don't need to know (and knowing it doesn't help you with anything) this stack sorcery you're talking about.
- rocho 10y agoActually Haskell strives to be unpopular. Their community has a nice motto for it, but at the moment it escapes me.
- portmanteaufu 10y ago"Avoid success at all costs."
- karmacoda 10y agoAvoid success at all costs. https://news.ycombinator.com/item?id=12056169 https://news.ycombinator.com/item?id=12056169
- fauigerzigerk 10y agoI share your gut feeling. It sometimes appears as if technologies that lack the opportunity for some to advance to magician status also lack a certain type of following. That doesn't mean all technologies that have the necessary properties to allow some people to appear super human necessarily become popular. It just makes these technologies more sticky if they manage to somehow stay afloat for long enough. I'm not sure whether or not these obscure sides of technologies are generally a bad thing. If a language provides opportunity for those who really understand it very deeply to come up with much better solutions, then that is a good thing. I would say this is the case with maths for instance, or rather with particular fields within maths. But there are other much less favorable examples where it feels that these supposedly smart solutions shouldn't be necessary in the first place and getting even trivial things consistently right requires memorizing book length lists of rules and exceptions. CSS and C++ come to mind.