7 ms·
Try these 4 languages from 4 corners of Programming
- bhalp1 6y agoGreat post
- itsjzt 6y agoThanks
- vmchale 6y agoC and Lisp are pretty well-known! I'd shill APL/J/etc.
- ectoplasmaboiii 6y agoI would also shill one of the APL derivatives. I've gone from a happy Python dev to a die hard k/q guy very quickly. These languages completely change the way you approach a problem. It's just a shame that q isn't free for commerical use (though it's free for personal use) and there aren't many jobs outside of finance.
- eggy 6y agoI didn't see your reply before I brought up APL and J here. I've tried k several times, but I always fall back on J, then APL, and then k. I think it's personal bias, since I found J first. I like the symbols of APL as I like mathematical formulas, and now that Dyalog has adopted some J-isms, I've been trying reimplement my J stuff in Dyalog APL. Also Roger Hui of J fame is a Dyalog user too. I thought I would gravitate to k because of my Lisp background, but J is sticking with me.
- empath75 6y agoThey may be well known but a lot of people have never tried them.
- itsjzt 6y agoThey are certainly very well known still in my experience I find a lot of people who haven't done C or any lisp before specially people who arent coming from CS backgroud
- non-entity 6y agoI still want to try smalltalk, just waiting on an idea where it makes sense to use it.
- itsjzt 6y agoYou can try it in backend server for your pet peojects.
- mamp 6y agoGood article. I’ve been fortunate to try them all, even SmallTalk when it was released for the Mac in the 80’s. Lots of code in Lisp and C. Not as much in Haskell. My favourite so far are the ML family and F# in particular. The only language(s) I regret not learning earlier. Try F# or OCaml if you haven’t already.
- erk__ 6y agoMy university recently put a package manager for SML up on its GitHub page. So there is still a chance for a comeback https://github.com/diku-dk/smlpkg https://github.com/diku-dk/smlpkg
- codr7 6y agoAgree, and I've written substantial amounts of code in all of them; though I strongly prefer Common Lisp to Clojure unless already chained to the JVM. Besides Prolog & APL, I would add Forth to the list.
- MaxBarraclough 6y agoWhat do you make of Joy, Forth's functional cousin?
- dbcurtis 6y agoIs Joy getting any active development? The only resources I could find with a quick search seem to be almost 20 years old.
- MaxBarraclough 6y agoI think not, unfortunately. The official git repo hasn't been touched in 2 years. [0] More recently though, a brave functional programming adventurer has been working on a Joy compiler written in Haskell, for what that's worth. [1] I skimmed the 'overview' page [2] and it looks unusual enough that I might give it a more serious go at some point. I'm not especially au fait with functional programming, and have only a basic familiarity with Forth, so it's rather alien. Which is of course the appeal. [0] https://github.com/joy-language/joy-lang.org https://github.com/joy-language/joy-lang.org [1] https://github.com/owainlewis/joy https://github.com/owainlewis/joy [2] http://joy-lang.org/overview-of-joy/ http://joy-lang.org/overview-of-joy/
- codr7 6y agoNever did find the motivation to dive into Joy. I did write a lot of Haskell though, and it left a slightly sour taste. I feel the same about statically typed functional programming as about Rust, it's a nice theory but in practice you end up squeezing problems into weird shapes to keep the language happy.
- exdsq 6y agoIf I had to come up with 4 languages I'd suggest C, Idris, Lisp, and Prolog.
- myth_drannon 6y agoYou need to be very familiar with Haskell to tackle Idris.
- exdsq 6y agoThere are some pretty good tutorials on Idris which cover just enough Haskell to get you started but yes, maybe it's too much in one go. Dependent Types though <3
- ska80 6y agoActually no. Familiarity with Haskell can actually make learning Idris more difficult :). It is better if you start from scratch when learning Idris.
- eggy 6y agoHow about adding APL and Forth and make it the 6 corners! An array-oriented language and a stack-based language would make the round trip truly mind-blowing. I have tried all of the languages mentioned, and I find myself always using J (ASCII character, APL-like language) and Lisp without intending to do so.
- piinbinary 6y agoAnd Prolog and Erlang to round things out.
- eggy 6y agoDefinitely Prolog. I have barely played with Prolog except when it is included in the PL as in picoLisp or Shen, but it's in its own category. I agree about Erlang too, but it made me stop to think. Erlang without the BEAM or OTP is pretty much a functional language like Haskell, no? I looked at Pony once. Yeah, ok, Erlang too! I prefer the Lisp version: LFE!
- jetti 6y agoI'm curious as to what you use J for. I know very little about the array-oriented languages and what domain they specialize in.
- eggy 6y agoI started playing with it, and J became a very powerful desktop calculator. Then I started to tackle other programs in it, and I was hooked by the way it made me think about a problem. All of the selling points of functional programming, which didn't resonate when I was learning F# or Haskell or Lisp, became crystal to me when tacit programming in J or solely functions. I am a polyglot, but I like the array as the basic unit of computation (now very popular with GPUs, Pandas, and Tensorflow and all other array-laden technologies). I feel like I am distilling a problem down to a very well thought out distillation, and it brings me joy!
- jheriko 6y agothats 2 corners...
- Smaug123 6y agoThe usual four corners I give as my examples are Haskell, C, Lisp, SQL. (That is, I usually replace the author's Smalltalk with SQL.) I then go further and describe languages as linear combinations of these: Python as C minus Haskell plus Lisp; Mathematica as Lisp plus SQL; F# as (Haskell plus C)/2.
- idsout 6y agoI really enjoyed the book, Seven More Languages in Seven Weeks and regularly recommend that to people looking to expand their arsenal.
- itsjzt 6y ago+1 seven language, seven database, seven concurrency models all are great books
- throw51319 6y agoIs the original 7 languages worth reading?
- bluedays 6y agoIs lisp considered a functional language? I thought it more imperative
- itsjzt 6y agoParadigm Multi-paradigm: functional, procedural, reflective, meta Actually it is both
- fnordsensei 6y agoThough Clojure in particular probably leans heavily to the functional side.
- brutt 6y agoC + Haskel = Rust.
- smlckz 6y agoI think, C++ U OCaml ===> Rust. Do you know about any language with as strong or stronger borrow checker than that of Rust?
- jancsika 6y agoIf a mad scientist removed all the outermost parentheses in the clojure example and made it work the same as the current example in the article, what bad things would happen as a result?
- JoelMcCracken 6y agoAt this point I think the most interesting thing in smalltalk is not the OO aspects, but the integrated VM/image. Hacking around in smalltalk is such an incredible difference.
- itsjzt 6y agoYeah
- navdb 6y agoTry Nim too: https://onlinetechinfo.com/pros-and-cons-of-nim https://onlinetechinfo.com/pros-and-cons-of-nim
- smlckz 6y ago>> Currently the most popular lisp variant is Clojure. Really?
- kgwxd 6y agoI'd add a corner and include 6502 assembly. It's so fun, I think Atari 2600 specifically adds some more intimacy with the hardware compared to other classic systems, but they're all fun to learn.
- channel_t 6y agoWhile definitely not the same, it seems somewhat misinformed to put Lisp and Haskell on 2 different corners.
- em-bee 6y agonot at all. lisp and haskell are entirely different worlds. don't be fooled by the claim that lisp and haskell are both functional languages. haskell is functional to a fault, but lisp is anything you want it to be. it depends on which lisp you choose. i believe that clojure is more on the functional side, scheme somewhere in the middle, but common lisp (the language i am familiar with), is barely more functional than python. functional programming is not using functions as the main method for code organization.