10 ms·
Advanced programming languages
- sbirch 15y 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." What about libraries and code-bases available to the programmer? Legacy code might not be a concern, but what about having to reinvent wheels?
- lelele 15y agoAny advanced language worth his salt will allow you to link libraries from other languages. It may require some work, but at least it can be done; whilst you can't expand the capabilities of your programming language of choice as easily. I think no language is advanced enough to be used alone for everything. Steve Yeggie said that once a time at Amazon the only languages allowed were Lisp and C. It makes sense: an high level language plus a low level one. Those languages which try to encompass too much become too complex and hard to use effectively (think about C++).
- metaobject 15y agoWow! I never knew that Amazon was a Lisp company. I'd like to know more about their infrastructure setup with Lisp and C.
- lelele 15y agoI don't have any info besides Yeggie saying it.
- zak_mc_kracken 15y agoI read him religiously but I don't remember him even coming close to making such a claim and searching for "yegge amazon lisp" doesn't turn up anything.
- srparish 15y agohttps://sites.google.com/site/steveyegge2/tour-de-babel https://sites.google.com/site/steveyegge2/tour-de-babel
- cgrubb 15y agoYegge wrote that in "Tour de Babel". I don't think it is really true tho. When I started in 1997 (before Yegge) there was lots of C and Perl but no Lisp, at least not in the central repo. There were restrictions on Perl. The DBAs wouldn't let us use it to insert data in the database. Shel didn't care much for Perl. He might have warmed to it a little bit when he discovered it supported closures; I remember him sending a msg to the software alias about it. Eric Benson had been a principal at Lucid, though I didn't know it at the time. Once he gave a class to the perlhackers on how to write code. The advice, as I recall, was to put "use strict;" at the top of our scripts and to start every function by shifting all the arguments into local variables. Eric Benson wrote the initial version of the "customer who bought this also bought..." code, and he used Perl, not Lisp. I'm sure he thought about the problem in Lisp terms, tho. http://sites.google.com/site/steveyegge2/tour-de-babel http://sites.google.com/site/steveyegge2/tour-de-babel
- sbirch 15y agoThis is true, but there's a lot to be said for native libraries which can be used more naturally. More important for things like frameworks, etc. than algorithms / highly technical code. e.g. using the Python wrapper for OpenCV is fine -- a little bit jenky but it works, and I definitely don't want to write those myself if I'm focusing on a product. On the other hand, would you want to use a wrapper for a web framework written in C? Probably not.
- jiggy2011 15y agoAll the languages he suggests apart from Scala are or are pretty close to being pure functional languages. I'm not convinced that I would be more productive developing say a web app , database app or game using say Haskell rather than Java or Python especially since a large amount of programming is all about state and side effects. I'm not against learning a pure functional language as a way to improve your programming especially for concurrency or to solve specific problems. Are there any large pieces of software outside of academia that are written primarily in functional languages?
- jberryman 15y ago> Are there any large pieces of software outside of academia that are written primarily in functional languages? If you're asking about places where FP is often used, I know it's big in finance (though I have no idea what those guys are up to). The haskell web development space has also gotten to a pretty mature point. I think you'd have no problem building a web app with Yesod or Snap. http://www.yesodweb.com/ http://www.yesodweb.com/ http://snapframework.com/ http://snapframework.com/ You could also check out http://cufp.org http://cufp.org
- corysama 15y agoJane Street is pretty well known for their use of OCaml in finance. http://janestreet.com/technology/articles.php http://janestreet.com/technology/articles.php
- zak_mc_kracken 15y ago> If you're asking about places where FP is often used, I know it's big in finance I've heard this a few times (mostly from the Scala crowd) but very little data to back it up, so I'm still skeptical.
- nandemo 15y agoI wouldn't say FP is big in finance. On the other hand, financial companies are probably over-represented among the industrial users of FP. There are several prop trading firms (Jane Street, Tsuru Capital, etc) that use functional languages heavily. Also, many of the big banks (Credit Suisse, Deutsche Bank, Barclays, etc) use some FP in production, but as far as I know it's only used by small, strategic groups. FWIW I've interviewed or applied at many of those big banks in Tokyo and not one of them ever mentioned interest in FP skills. As far as I could gather the typical developer there doesn't know or is not interested in FP.
- buff-a 15y agoWhat exactly makes these languages "advanced" (as opposed to "complicated" or "difficult")? Or does "advanced" here mean "harder" as in "advanced math"?
- Darmani 15y agoProgramming language research is a very large and deep field, though a lot of industrial languages are fairly divorced from it. All of these languages have a strong theoretical foundation. This pays off well. One common statement from ML programmers is "If it compiles, then it works." http://en.wikipedia.org/wiki/Programming_language_theory http://en.wikipedia.org/wiki/Programming_language_theory
- buff-a 15y ago>Programming language research is a very large and deep field I agree with you. But to play devils advocate, if its so large and deep, why do I only hear about Haskell and Scala when language-geeks talk about "advanced" programming languages? Looking at the wikipedia link you provide, there's a list of bullet points by decade: 7 things worthy of a bullet in the 60's, 7 in the 70's, 4 in the 80's, 2 in the 90's and 0 in the 00's and 10's. Has nothing interesting happened lately? Is Haskell as good as it gets?
- nightski 15y agoNo, it is not. The deeper I get into Haskell, the more references I find to esoteric research languages like Agda (which itself is still pretty big compared to many others). The thing about Haskell is that it is probably the most "researchy" language that is also practical to use for general purpose programming.
- gnosis 15y ago"Is Haskell as good as it gets?" It's debatable just how good Haskell and similar languages are. Like any language, it has its ardent fans and bitter detractors. As for development of "advanced programming languages" in general, if you are interested in what's out there, I strongly recommend you browse the archives of the "Lambda the Ultimate" weblog: http://lambda-the-ultimate.org/ http://lambda-the-ultimate.org/ There are a lot of very knowledgeable language designers on there, and news of advanced language features and new languages filters through there all the time. The blog is not as active as it once was, but the archives are still very much worth studying. Another great resource is the old c2 wiki. Here are some relevant starting points: http://c2.com/cgi/wiki?search=haskell http://c2.com/cgi/wiki?search=haskell http://c2.com/cgi/wiki?search=lisp http://c2.com/cgi/wiki?search=lisp http://c2.com/cgi/wiki?search=scheme http://c2.com/cgi/wiki?search=scheme Finally, just hang around HN for a while, and you'll see plenty of posts discussing new "advanced" languages. The HN archives are also worth browsing through.
- moocow01 15y agoI agree with this article but I have to admit I'm tired of learning programming languages after a number of years in this industry. I've had gigs in just about everything and now I'm purposely restricting my efforts to just a couple different languages even if there is money on the table for work in something else. You can do just about everything in any mature language - after a while of so to say exploring the landscape for a number of years, its nice to just become deeply fluent in a couple of things. I know people love to talk about this language vs that and how language X will make you rethink everything and usually there is some truth to it but in the big picture its usually pretty trivial in terms of actually getting stuff done.
- supar 15y agoI agree with you here. Several languages (let's call them "advanced"?) are better than other, ok, but actually very few introduce actually "innovative" constructs. Most of the perceived differences in recent languages are actually in the design of the libraries built around the core language, which is underwhelming. After some years learning "advanced" languages, and having mastered the constructs, the biggest problem becomes becoming acquainted with the libraries. It takes time to re-learn what to use to do something, not how to do it. Another problem of mine is that a lot of time is spent writing/using bindings to other foreign code, or let alone re-implement the code in the current language. Or see your old code stop working because of new libraries, compilers, etc. In the end, it feels like you're writing just for the sake of writing instead of actually doing something.
- 198d 15y agoMy biggest desire to learn a language like Haskell or Scala would be the total shift in thinking required to grasp the language (the author mentions this). I've started playing with clojure lately and even though I've barely scratched the surface (primarily poking around 4clojure.com) I could already feel my brain twisting in ways I've never experienced before. I firmly believe once you turn that corner and really start to get it, you start seeing and attacking problems in such a different light that there's no going back. The big problem I've had recently is finding the motivation to learn anything outside of work (programming/engineering related at least); once you start getting paid to do something its really hard to do it for free, haha.
- nandemo 15y agoSo the article first states a mathematical definition: > A bounded lattice is a mathematical structure that has a least element (bot), a greatest element (top) And then proceeds to define a typeclass that does not satisfy the definition: instance (Ord k, Lattice a) => Lattice (Map k a) where top = error $ "Cannot be represented. :-( You can't even fix the definition of top, since union of arbitrary Maps is not bounded, e.g. there is no finite Map String foo (map with String keys) that is a superset of every Map String foo. You could change Lattice to a weaker structure, but I think it would be better to present a simpler typeclass like Show or Ord.
- x3c 15y 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. I disagree. If you're a startup, you're better off using a more mainstream language. I'm from India and if I start to find a good Haskell or Scala programmer I'll be looking for a long time and I'll be paying him/her a lot for those skills. Being a startup, you start small and its tempting to start using the bleeding edge technologies, but you must do a cost-benefit analysis; coders for PHP and Java are much easier to find and since the supply is more, the cost of skills will be less. Bootstrapped startups should particularly be wary of using technologies that have a very small talent pool in their part of the world. Use new/rare technologies if the benefits of using them outweigh the hassle and expenses of maintaining and extending the team/codebase for it.
- yuvipanda 15y agoInfinetly Beta would disagree.
- x3c 15y agoI cant comment on the specific case for your startup but given the wide adoption of PHP/Java/Ruby/Python compared to Haskell/Scala, it comes to a simple eq. No. of programmers for the former > No. of programmers for the latter But as someone in the thread already pointed out, definition of 'good' programmer is also subjective and different in each of the languages, so that will fuzz the simplicity of the above equation. PS: I'm very impressed with tech community in Pune in general. Very vibrant, diverse and passionate.
- yuvipanda 15y agoNumber of programmers is often not proportionate to the number of good programmers. By your simple equation, you'd be hiring only Turbo C programmers :D But I do agree with you - if your startup is not primarily a technology one, then maybe it doesn't matter. Throw enough people at it and it might just work
- deleted 15y ago[deleted]
- rdtsc 15y agoFrom an exploratory point of view I would suggest: * Haskell (functional programming, purity) * Prolog (logic programming) * Erlang (actor based concurrency)