10 ms·
Advanced programming languages (2009)
- vinceguidry 10y agoI personally would really hesitate before picking a language that will be hard to hire for to build a business around. Yes, you'll be more productive in the short-term, but a business is more than just code and you will need to wear those hats too before you'll have enough understanding and resources to hire those out. At this point, I'm fairly certain your first hire should be someone to take the engineering load off of you. Engineering will be the only thing you really, truly understand about your business and so it will be the only thing you'll be able to effectively manage others doing.
- theaustinseven 10y ago> you'll be more productive in the short-term I'm not so sure. One of the advantages of these more mainstream languages is the combination of an incredibly large selection of libraries and many people having already made the mistake you will make. This means when you run into an issue, there are already several posts on stack overflow about it, and you move on without issue.
- jlouis 10y agoThe really interesting problems have the property that there is no library written for them yet. Granted, you need some kind of interaction with the outside world, but this is easy to handle in another language layer. The "existing libraries" are only going to be efficient if your entrepreneurship is based around the idea of rehashing or recombining existing tooling, which is already there. But far from all projects has that property. Also, one of the really intriguing thing about splitting your service into smaller micro-service based architectures, is that you can mix and match different languages. Which gives you the ability to pick languages which suits a solution. A good example is the TensorFlow system by Google. Model building usually happens in Python, but you then load that model into a thin C++ layer which serves the requests on the network as a standalone application. The same approach can be taken with some of the more advanced languages. Even better, as a startup, the least of your worries straight away is horizontal scaling. Modern machines are so fast you can run an incredible amount of concurrency on a single large node, so why bother too much with scaling? This help the micro-service model even more, as there is less reason to worry about the communication overhead.
- pdpi 10y ago> The really interesting problems have the property that there is no library written for them yet. But it's the reverse of that that's precisely the point though. If all the uninteresting problems already do have nicely packaged solutions, you get to focus on the interesting problem instead. The question then becomes: are you better off solving the interesting problems in better language at he cost of having to solve more of the uninteresting ones?
- eva1984 10y ago> Modern machines are so fast you can run an incredible amount of concurrency on a single large node, so why bother too much with scaling. Because that node might die any second.
- melling 10y ago"I personally would really hesitate before picking a language that will be hard to hire for to build a business around" Unfortunately, this is HN so we know you're wrong: http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html
- cle 10y agoNot everyone here accepts PG articles as infallible scripture, and many people have lots of experience to back up their disagreement. (I agree with PG on this issue.)
- dsacco 10y agoJane Street Capital's Yaron Minsky once said that contrary to popular belief hiring for OCaml developers was easier because the signal to noise ratio in the OCaml community is so much better than other, more approachable languages. He would send a job post to the OCaml mailing list, get 15 responses, interview 10 people, bring five onsite and ultimately hire three new people. I don't have direct experience with this, but it makes sense in theory. PHP is an easy language to find developers for, but it's incredibly annoying to figure out how competent the developers you're interviewing in that ecosystem will be. But languages like Haskell and Scala have a (perceived or real) barrier to entry, so you typically have a higher median ability among developers in those languages.
- iheartmemcache 10y agoI've got managerial experience hiring (on both ends of the spectrum of talent) and engineering experience in computational finance at a prop firm similar to Jane Street. He has a fast-hire ability and high-signal to noise for sure but he works at a prop firm. His hiring practices are a market anomaly simply because he can pay effectively whatever a competent developer wants. Jane Street can basically throw money at the problem. What you have at a 'normal' company is a real difficult time finding someone who can tell me when to use a lens and when to use a zipper in Haskell who are actively looking for employment. Anecdotal but I casually attend Boston Haskell and I can't remember the last time someone was out of work other than 'funemployment' (e.g. a startup goes bust and they have accrued more than enough money to just sit around, stretch and work on pet projects). The second they 'need' a job, they'll casually mention it and I think ~3 out of the ~7 times this has happened, someone in the crowd went like "oh Bill, yeah come in to <his office> Monday and meet our CTO". No recruiters, no wait. The CTO trusts Joe has heard Todd ask enough insightful questions consistently enough that he's going to be a good hire. Tuesday 9AM HR, 10AM pull the repo down, setup stack, start poking around Haddock and start closing the easy tickets. Good talent (10 of the 15 applicants are quality) might respond to Minsky but those other 9 guys will be picked up almost invariably in well under two weeks
- dsacco 10y agoThanks for adding more color to this!
- ethbro 10y ago> In academic research and in entrepreneurship, you need to multiply your effectiveness as a programmer, and since you (probably) won't be working with an entrenched code base, you are free to use whatever language best suits the task at hand. ... with the extreme caveat that your language has bindings to {insert language with libraries that already implement 50-85% of your functionality}.
- tr1ck5t3r 10y agoSelect the best language for the task in hand. At the end of the day, they all ultimately control the same instruction sets on the chip's either directly or indirectly through a framework or libray and/or operating system.
- AtticHacker 10y agoI'm really surprised that "Learn you a Haskell" is not in the Haskell resources list.
- MichaelBurge 10y agoI've seen people recommending this book more recently: http://haskellbook.com/ http://haskellbook.com/ I'm not sure I like LYAH as a practical resource: It's silly and might put people at ease, but I wouldn't feel comfortable writing a database or parsing tool or compiler after reading it. Real World Haskell is better for these, but is a little dated by now.
- jerf 10y agoLYAH is really good for getting you over the first big humps of learning Haskell, if you've never learned a language like Haskell before. I still really like it's explanation of monadic values. It builds up to them in a nice way. If you can pull open a GHCi session while reading that portion of the book and play around on the interpreter while reading it, you'll learn some good stuff. (As with many programming books, it may not seem logical, but I recommend typing out all the examples you find yourself. It works.) It does not itself teach you much practical stuff. But if you learn what is in LYAH, you'll be pretty close to what you need to pick up most of the practical libraries in Haskell and understand the API level enough to use it, because once you get over that particular difference of Haskell's libraries, you can start working with them like you would any other language's libraries, and incrementally fold in the "Haskell special sauce" as you go, while you are at least learning things instead of stuck adding numbers together and filtering lists and all of the other handful of things you can do without files, network, or anything else you need an IO-based library for.
- bogomipz 10y agoI agree, I was immediately turned off by Learn You a Haskell, it felt way to dense to me. This looks like a promising and more approachable(in my opinion) book: https://www.manning.com/books/learn-haskell https://www.manning.com/books/learn-haskell
- 10y ago
- tonyjstark 10y agoFor a real world project pick a suitable language that will not only help you to implement whatever you have to implement but also to maintain the project. Also you should be able to find other programmers knowing that language if you need to. Maybe even use the language you already know even if it is not the newest and hottest stuff. But for private or side projects use whatever enlightens you. Those projects should be fun and it's always good to learn new things on the way. I even think you don't have to learn all new languages in depth but just do a small project and reflect if it is something that gets you somewhere. You probably wont write a big business application in Smalltalk but all that message passing, awesome. Seriously have a look at Smalltalk.
- lil1729 10y agoYes, that's exactly what I practice. My "breadwinner" language is C/Java/C++ at the moment because that is what others in the project know and that is what makes sense in the ecosystem the project is in, my sideproject language is Haskell.
- zZorgz 10y agoI had a small server written in Haskell but since the other contributor familiar with Java/C/C++ was not able to pick at it effectively, we switched to Rust and we all were happy, and transitioning was fine. At work I deal with Java code, but we have a framework we wanted to use that's written in Scala, and since Scala can interop with Java, we were all productively able to transition over for the better. For a hobby project we use Objective-C, but we are starting to write some bits in Swift. Apple is especially effective at trying to convince the developers to change over to this shiny language. I think "advanced" languages can be used in real world applications, and the transition experience from other well known languages can certainly matter.
- kensai 10y agoHas anyone experience with "Curry" (functional logic programming)? If it has all the advantages of Haskell plus some possibilities of logical languages, it should be really interesting for experimental approaches. http://www-ps.informatik.uni-kiel.de/currywiki/ http://www-ps.informatik.uni-kiel.de/currywiki/
- eatonphil 10y agoIf you are interested in picking up or dabbling in SML, I recommend checking out the /r/sml wiki [0]. I'll also single out the #sml channel on Freenode as a great place to get help if you get stuck. [0] https://www.reddit.com/r/sml/wiki/index https://www.reddit.com/r/sml/wiki/index
- dsacco 10y agoThis post is very fortuitous for me. I've been looking to learn a functional language and I had more or less narrowed my options to Haskell, OCaml and Scala. I liked the breakdown between these languages and the resources. Can anyone who programs in Haskell or OCaml regularly tell me the current state of standard and third party library support? I'm very attracted to Scala because it has JVM support, which sounds fantastic for overall ecosystem maturity. That said, I come from a C++ and Python background, so do I need to know Java well before learning Scala?
- jerf 10y agoIf you're really interested in learning a language for itself, rather than using it for some practical goal, libraries that are "just" bindings to some other language with radically different semantics don't really count as a positive. They generally end up non-native and a real pain to try to write "language-A in language-B", unless someone has taken the time to write a native-idiom wrapper around them, which is pretty uncommon. So for educational purposes, I'd only look at the pure-Scala libraries rather than "the JVM ecosystem". Or, similarly for Haskell, Haskell still AFAIK does't have a great binding to native QT or GTK or any other really good desktop toolkit. There are bindings, but you're writing C in Haskell at that point, which is definitely a pain, and not a great way to learn the language. If you want to do practical things with the language, by all means count the bindings as an asset. It's still better to have a foreign-library binding to some capability than no capability at all, and it's not hard to imagine that using another language for some reason, even with the cost of the foreign-idiom binding, is still net cost/benefit positive.
- BrandonBradley 10y agoAnswering your second question: Since you have experience with a statically typed language, you'll be fine with little no to Java knowledge.
- programLyrique 10y agoOcaml has opam, a package manager, with currently 1227 packages in it. https://opam.ocaml.org/ https://opam.ocaml.org/ The standard library of ocaml is quite basic, so usually, you use either Core (https://github.com/janestreet/core https://github.com/janestreet/core) or Batteries Included (https://github.com/ocaml-batteries-team/batteries-included https://github.com/ocaml-batteries-team/batteries-included) I personnally prefer Batteries because it tries to stay compatible with the standard library.
- coygui 10y agoI once watched this youtube video:https://www.youtube.com/watch?v=02_H3LjqMr8 https://www.youtube.com/watch?v=02_H3LjqMr8 as the entry to Haskell world.
- knucklesandwich 10y agoHaha here was my personal intro to the world of haskell: https://www.youtube.com/watch?v=RqvCNb7fKsg https://www.youtube.com/watch?v=RqvCNb7fKsg . Was instantly hooked.
- AnthonyLloyd 10y agoAny reason F# is not in the list?
- throwawaysocks 10y agoWriting/deploying F# on a non-Windows machine is a huge pain. Been there, won't do that again.
- kxyvr 10y agoThough, candidly, OCaml has historically been a pain to deploy on Windows outside of some very Cygwin specific setups. The OCaml group has made a lot of improvement as of late, but so has F# on Linux.
- saosebastiao 10y agoIt's not. I actively refuse to use Windows and have never had any trouble installing or using F#. I've only really used it in the last 1.5 years or so, so maybe what you claim was true in the past, but it is not true anymore. There are other reasons to not like it though. For me those would be a lack of HKT and functors, and its primitive compiler optimization due to relying heavily on a VM built for a very different language.
- throwawaysocks 10y agoThis was > ~3 years ago, so maybe things have gotten better lately.
- anoplus 10y agoI would argue that a well-known language is fairly expressive in the sense that it is well-known. Imagine English itself was a programming language - this is the best. But for now I would recommend using those who are commonly used in the common platforms of interest (Java, javascript, C etc)
- greydius 10y ago> Imagine English itself was a programming language That's a terrible idea. https://en.wikipedia.org/wiki/Buffalo_buffalo_Buffalo_buffalo_buffalo_buffalo_Buffalo_buffalo https://en.wikipedia.org/wiki/Buffalo_buffalo_Buffalo_buffal...
- lispm 10y agoSteele developed the early Scheme language together with Gerald Jay Sussman. Common Lisp wasn't designed by Steele alone, but by a larger group of people, including Steele, Weinreb, Fahlman, Gabriel and Moon.
- jenenliu 10y agoc++ programmer wants to learn scala now :)
- RobertDeNiro 10y agoWhat about javascript? Could that be a decent language to get into functional programming? It's definitely mainstream enough.
- Roboprog 10y agoYou're lucky you didn't get voted down -5, with the Type Police out and about. I like ES5 (would be ES6, but for IE support...) Javascript, but it is a bit light on the immutability aspect, given the environment and problem set it usually runs in. Check out the "Ramda.js" library for JS (http://ramdajs.com/0.21.0/index.html http://ramdajs.com/0.21.0/index.html). There's some good concepts put to use there. (although I have my own version of "currying" implemented at work, as I like to sometimes have "0 arity" functions for event handlers -- but those types of "functions" aren't particularly "pure")
- RobertDeNiro 10y agoWhat about javascript? Could that be a decent language to get into functional programming? It's definitely mainstream enough.
- agounaris 10y agowhat "advanced" even mean? All those languages, they don't do something that others are not capable of(not mention that all the jvm ones just produce bytecode over the same vm)...different development principles is not a reason to call a language advanced.
- MichaelBurge 10y agoHaskell and ML at least have advanced type systems. Since types are erased during compilation, you can't reason about type systems in terms of their impact on the generated code. An example of a simple type system is C with its structs. Haskell also has lazy evaluation, which is very difficult to do in C. Obviously you could encode your own trampolines, but at that point you might as well be coding in a Turing tar pit language "where anything is possible but nothing of interest is practical". Pattern-matching and ADTs are also usually difficult to do in other languages. Most of the benefits of something like Haskell only show up on larger projects, so it's not meaningful to point to specific language features as a point against it. I can do just about anything in C. The type systems you probably can't do; you'd have to embed a language and that doesn't count.
- superuser2 10y ago* A lot of mainstream languages are syntactic skins on top of substantially the same semantics and skill in one is easily transferrable. A person skilled in C should be able to understand a Java program, but may find similarly high-quality, idiomatic Haskell totally inscrutable. * The number and complexity of concepts with which you should be familiar are much higher. To tread water in most imperative languages, you need to find if/else, while, for, assignment, function call, and function definition. To tread water in these languages, you will generally need more. * The idioms provided by these languages provide for and encourage code that is more expressive (says more with fewer characters) but may be more difficult to think about and write. * All languages are equivalent in the sense that you can simulate them all by each other, i.e. by writing a compiler from X programs to lambda calculus expressions, and a lambda calculus interpreter in Y. This result does not imply that you can always express the same concepts in a reasonable, space-efficient manner. I do have some nits to pick with the list, though. I would consider C++ advanced, in that there is a lot you need to know and think about to work with it. Scheme itself is very simple: the entirety of its syntax and semantics can be learned by a laymen in an hour, and by the end of a semester first-year computer science students can write their own Scheme interpreters in Scheme. Its complexity is an emergent property of the kinds of abstractions it supports, not inherent to the size and complexity of its design like Haskell or Scala.
- agumonkey 10y agoAfter walking in the land of functions for a long time I wonder if there are advanced advanced languages.
- MichaelBurge 10y agoThere's theorem provers like Coq. I'm pretty comfortable with Haskell, but concepts like the difference between Propositions and Booleans are enlightening to my Haskell the same way Haskell can be enlightening to use of other languages.
- agumonkey 10y agoCool, that's the kind of derivative I was looking for.
- acangiano 10y agoThe language itself is not, but I would argue that the Wolfram Language has an advanced, advanced standard library.
- agumonkey 10y agoI'm warry of Wolfram Lang. I'd need to see field report because I think what was demoed, as nice as it looks; is only the working subset. I feel a huge ontological mess underneath.
- sgeisenh 10y agoHave you explored languages with dependent type systems such as Agda, Idris, Coq, or Twelf? You could also explore languages from an academic perspective. Benjamin Pierce has written several high quality texts about topics in programming languages.
- agumonkey 10y agoNot yet (watching some youtube talks and introductory classes in college not couting). But even then I'm not sure they're more 'advanced' than Haskell. Do they implement the full lambda cube ? Even then it feels like constructive proofs are a 'normal' step after recursive functions. I'm curious about complete new way of thinking and modeling, something that would allow full graph exploration and multistaged/layered partial evaluation easily... from abstract concept down to signals and fixed-sized electronic compositions. I don't know what precisely. I don't want to say Categories because it's overloaded these days and I only know it through the 'monad tutorial' end, but I liked the idea of adjoint functors to jump back and forth between concepts. ps: Esterel/Lustre synchronous programming comes to mind too, or Petri nets ..
- YeGoblynQueenne 10y agoDatalog for constraint programming, but not Prolog? Oh come on. If you're going to recommend languages, look some up, already.
- Bromskloss 10y ago> It's untyped, which makes it ideal for web-based programming and rapid prototyping. Given its Lisp heritage, Scheme is a natural fit for artificial intelligence. Why does being untyped and having a Lisp heritage make Scheme suitable for these three tasks?
- _ph_ 10y agoAnd of course, it is not "untyped". It is dynamically typed.
- rayiner 10y agoPL theorists generally talk about whether or not syntactic terms (as opposed to runtime values) have types. Scheme is untyped by that definition.
- klibertp 10y agoPL theorists - from what I saw, not being one - prefer the term "unityped". It's not true that there are no (static!) types - there is a single, unnamed type which contains all possible values.
- kazinator 10y agoPL theorists who know what they are talking about know that this is false, because the actual diverse types of those values can be reasoned about at compile time. Such a "unityped" program is made up of syntax. We can reason about an expression more deeply than just "it returns a value" and we can do so statically. For instance in Lisp we know more about an expression like (cons 1 2) than that it returns a value. We know statically that it returns a cons. From that we can infer that (+ (cons 1 2) 3) is not well-typed. Type isn't just an implementation system; it's how we can reason about the program, as a mathematical object. The reasoning which informs us that (+ (cons 1 2) 3) is not well-formed without evaluating it, has to do with type. How we implement values (using a generic "cell" that is type-tagged) is just a convenience. We can get things working without being concerned for up-front type checking. It also represents the philosophy that type is innate to objects (not just a syntactic property of programs). A piece of compiled code can have a type passed into it which didn't exist when that code was compiled, and sensible things can happen anyway.
- eddd 10y agoI don't know much about Scala but Erlang/Elixir fits quite good to the description as well: > Scala is the programming language I use for tasks like writing web servers or IRC clients.
- yawaramin 10y agoScala has a very well-regarded implementation of Erlang's actor system. I have personally seen it handle hundreds of thousands of requests spun off as lightweight threads.
- kmiroslav 10y agoThe JVM (well, Java really) has been supporting orders of magnitude of that for many years.
- im_down_w_otp 10y agoI still don't quite understand the point of actor-model concurrency systems running on runtimes that can't perform pre-emptive scheduling, but I guess 80% of a solution is better than none at all.
- galangalalgol 10y agoI need a suitable sized project to implement in a niche language I am learning. I used to use tetris but it isn't big enough. It needs to exercise multi threaded updates of some state consisting of many elements and their relationships based on user or file inputs. I think. I want to write it in c++ then learn Haskell and use that. Then use c++ again and look at the differences.
- baby 10y agoI can't seriously read an article that promotes Scheme over any other languages. We had a class in university and everybody hated it. How can you write complex program with so many parenthesis?
- jghn 10y agoHow can you write a complex program with so many semicolons? How can you write a complex program with so many braces? Your statement sounds more like unfamiliarity of other major PL styles than anything else.
- jjnoakes 10y agoYour argument would make sense if the only punctuation in a language was semicolons or braces. But comparing a language with almost nothing but parens to a language with a mix of things like braces, brackets, parenthesis, periods, and more, then I don't think the comparison is a fair one. I'm not advocating one way or the other, just pointing out the comparison seems flawed.
- lgas 10y agoWhat problems do the parentheses cause you? They've always worked just fine for me and I notice no difference between the programs I can write in Scheme and the programs I can write in other languages.
- justinhj 10y agoYou're missing out on a huge amount of great things if you let the parenthesis stop your lisp journey. With editor support for formatting and matching they are easy to deal with. In fact the main reason closing brackets are so noticeable in lisp languages is because of the minimal syntax needed. In other languages you need to deal with statements and expressions that end in many ways such as "fi" in bash, the lack of a tab in Python, ")};" in JavaScript.
- StreamBright 10y agoUsing a good editor helps a lot. Actually I usually do not understand how can people write Java. People are different and different things seem logical or useful for different people. If you are hung up on syntax problems you probably haven't used different languages yet. After a while it gets less and less relevant.
- shocks 10y agoCan someone comment on what it's like building a webapp with Scala/Play?
- virtualwhys 10y agoUnlikely you'll be cranking out a Rails style MVP in Scala + Play, but you will produce a robust, blazing fast, scalable application that's a dream to maintain and build upon. In short, Play is a really, really good MVC framework. For SPAs you can go lightweight with just Play's router and WS api, or try something like http4s for a more FP-based REST api. Throw Scala.js into the mix and you've a got a fully typed stack across the board. and then Scala Native on the horizon...things are looking good in Scala land ;-)
- draven 10y ago> you will produce a robust, blazing fast, scalable application that's a dream to maintain and build upon. At work I'm working on a scala/play app. It was 2 years old already when I joined, and the first scala/play project for the team. It's not that fast or scalable. That is to say, scala and/or play are not silver bullets that will make your code hyper optimized and scalable. ATM I'm working on performance. There are a few blocking calls in the API that are used everywhere and they manage to block the various execution contexts (controller, akka, etc.) It's a mistake to use blocking calls when it can be avoided, but it's an easy mistake to make. So yeah you can write robust / fast / scalable / maintainable apps in Scala but you need to properly learn it first.
- feiss 10y agoWhat's up with functional languages nowadays? The exists since the dawn of humanity, but they are getting very trendy lately. Is it just my perception? Is it a HN thing? (I've been a reader for just some months)
- shrugger 10y agoReasonability. In an age where billion dollar companies are gutted by 16yo hackers on a monthly basis, it's worth the effort to build strong, secure systems that can be formally reasoned about.
- formula1 10y agoIts disengenious to imply that functional cant be as insane as procedural. Also, everything is strong and securw until vulnerabilities are found (heartbleed as an example). Its in the hackers best interest to never let these vulnerabilities known. Also since there are many less eyes on less popular languages, vulnerabilities will take more time to be discovered.
- nv-vn 10y agoThe combination of stronger type systems (especially dependent typing), less error-prone design (no manual memory management, no mutation, no global state, no loops/off-by-one errors), separated side effects (crashing during computation won't break things, less places for outside interference/external failure, etc.), and better error handling (no null, usually no exceptions meaning you have to encode failure into the return value itself without losing type information) solves many common bugs in imperative code.
- formula1 10y agoType systems - already available in the most popular languages no memory management - c++, go, java come to mind No mutation - has a side effect which you probably will never mention. But it will become important as the internet of things gets smaller No global state - in what environments would that ever be an encouraged paradigm? Javascript? No loops/off by one - you still need loops, they are just recursive. The difference is you need to jump around to figure out what the hell is going on instead of reading it top to bottom Better error handling - nothing you just said seems better to me Sure, there are many thing I like about functional languages. I like how you can create a tree to reason about you code to the point it looks like a flowchart. It has forced me to question my own coding style and how I compartmentalize and where I can run things in parralel. How infinite lists, streams and arrays can all be considered the same interface. But I think there is room for growth. - forces me to the bottom of a document to find out where it starts - uses obscure language in order to avoid oop - Cannot use symbols represent the start and end of a typed object constructor with a single string argument (regex, jsx, queries, etc)
- jkot 10y ago> Scala is a rugged, expressive, strictly superior replacement for Java. Scala is not replacement for Java. It runs on JVM and can invoke java code, but has completely different approach than Java. Use Kotlin if you want Java replacement. Also I would argue that Scala is much better suited for writing compilers than Haskel.
- hibikir 10y agoScala can be a fine Java replacement, if you drop 20% of its features on the floor. As long as you never see a higher-kinded type, I think you are ahead of Kotlin, and the learning curve is not really any different. The problem with this approach is that 90% of Scala libraries are built by people that live in higher-kinded land, and believe that since they have reached that level of expertise, so should everyone else, the second they start learning the language. For instance, look at SummingBird: The hello world example includes F bounded polymorphism, and path dependent types! Anyone new to the language would run away screaming, and I'd not blame them.
- jkot 10y agoScala compatibility is not so great. It has its own collections and other libraries. And it does not even support java getters and setters.
- premium-concern 10y agoWhy would you create a new language and then keep a huge part of what developers interact with on a daily basis in such a broken shape as in Java? (Or rack up a massive amount of complexity and break your typesystem by trying to put lipstick on the Java collection pig? (Kotlin).)
- jkot 10y ago1 billion lines of code, that is why.
- nv-vn 10y ago
- michaelfeathers 10y agoPrediction: APL, J, K, or Q will be on this list soon.
- adamnemecek 10y agoidk if you are serious or not but part of me feels like the fact that those languages haven't gained much attention in the last 30 years means that they won't get much attention in the future.
- michaelfeathers 10y agoI think it's inevitable we'll use some of their toolset. The problems we solve don't get easier so we will reach for more powerful tools. As an example, just being able to think in terms of a transpose makes many problems trivial: http://michaelfeathers.silvrback.com/moving-quickly-with-compositional-chains http://michaelfeathers.silvrback.com/moving-quickly-with-com...
- Maro 10y agoI prefer practical programming language extensions, like the new C++ standard which adds useful things, or Hack which makes PHP useful, or the typed extensions to Javascript and Python.
- edwinyzh 10y agoWell said!
- brett40324 10y agoI am still stuck on why this is titled Advanced Programming Languages. Wait, so anything other than the most widely adopted robust language technologies used in enterprise systems is 'advanced'? Language compilers, interpreters, database engines, and runtime implementations are advanced. Who says, "we need an advanced language for this solution", as opposed to "this problem requires an advanced solution"?
- tomc1985 10y agoOP reeks of subjectivity. "Scala is a rugged, expressive, strictly superior replacement for Java." I have nothing for or against Scala, and Java is a popular target. But "strictly superior"? There are critiques of the language and its toolset that contradict the strictness of its superiority. (https://www.quora.com/What-are-some-criticisms-of-Scala https://www.quora.com/What-are-some-criticisms-of-Scala)
- premium-concern 10y agoI think "strictly superior" makes sense in the way that Scala was never designed or intended to be a worse-is-better language like Java and people were willing to make that happen by evolving the language. It was never intended to be a Java-with-more-concise-syntax unlike some other newer languages. If something was clearly worse, it would have been changed years ago already. That some design is still there might suggest that some people just have a different minority opinion on some aspects. (Assuming that "strictly superior" does not mean "100% of devs agree 100% that this is 100% better than Java".)
- dang 10y agoThere have been many discussions of this post: https://hn.algolia.com/?query=Advanced%20programming%20languages%20might&sort=byDate&dateRange=all&type=story&storyText=false&prefix&page=0 https://hn.algolia.com/?query=Advanced%20programming%20langu.... I fear that the current one shows signs of HN's inevitable reversion to the mean.
- sgt101 10y agoHelp us break away : nothing is inevitable, the future is unwritten!
- iLemming 10y agoI am a bit surprised Clojure and Clojurescript are not in this list. I guess Clojure still was a bit young at the time this article was written. Within past few years Clojure has become extremely popular.
- calibraxis 10y agoYes, its first stable release (1.0) was around the same year this article was written.
- ikurei 10y agoHe only mentions Clojure in passing. At some point I decided that, were I to learn a functional language, it would be Clojure. How would you say Clojure fits in this comparison? Is it only relevant or interesting for concurrency?
- calibraxis 10y agoThe article's 7 years old. Clojure's first stable release (1.0) was released the same year.
- ikurei 10y agoThanks, I knew it wasn't new but didn't think it was so old.