Haskell vs Lisp vs Assembly - Which one should be choosen for brain enlightenment?
ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Why did you pick these three? There are countless programming languages to learn for fun... Anyways, comparing LISP an Assembly is like comparing apples and swimming: there is nothing to compare.
Learn programming languages – all of the above, and Prolog, and more. Spend some serious time looking at each of these, then move on to another. Look at haXe. The list never ends.
On the one hand, all of these tools are built to do the same thing: to cause a digital computer to do something useful, and to cause you to pull-out all of your hair in the process. Yet, they are all different. Different in their approach to the problem, different both in their strengths and in their weaknesses. Most of them were the product of someone else's conclusion that all of the tools that were at that time "out there" were rubbish, and that the world of computing therefore obviously needed another one which would fix all of those problems and finally usher in Nirvana. So, you will learn a lot from this study – and, at least for me, have fun doing it. You will view the same tasks from many different points of view.
I once was presented with a Geocaching-like puzzle which involved multiple stages. One was a "sudoku puzzle from Hell," and another was a logic problem ("The lady wearing the red dress is not holding a pineapple.") with 21 clues. I used GNU Prolog ("gprolog") to solve both of these, and, just out of curiosity, to determine that one of the 21 clues could be omitted. I learned a lot by doing this, and later on I was able to use the same ideas in the context of paying $work, to come up with a very-elegant solution to a difficult business problem. Luck favors the well-prepared.
Programming language for brain enlightenment? Wow!
I've been reading somewhere that people who have written assembly code for MIPS architecture got so enlightened that they found writing assembly for other architectures, especially x86 and IA a brainf*ck.(?) You should try that.
Jokes apart, the only cross reference of programming language and enlightenment I found was reading Eric S. Raymond's commentary regrading LISP somewhere.
This is a good time to get into assembler because a Coursera course on it started a week and a half ago. It's still early enough to start and not be permanently behind:
I'll disagree, politely, with the notion that "C/C++ is the One Ring To Rule Them All.™" It isn't.
Language implementations are usually done in either C or C++, but the languages differ from one another in at least three useful ways:
The tools and facilities that they provide to the programmer, such that the programmer can happily forget about them.
The "metaphors." The ways that the languges encourage the programmer to think about the problem. For instance, "functional programming."
In the case of languages such as Prolog, the outright ability to describe a problem in an abstract way so that a pre-supplied engine that is part of the language will solve it for you.
You ultimately get to the same destination: syntax errorsuhhhead-banging frustrationuhh "getting to watch the computer solve your problem and do your bidding." But they all do it differently. Since you're in the business of creating computer software, it is useful to explore the vast toolbox. You don't have to stuff your cranium full of any of them; not yet. But it will help you to, as Apple once said, "Think Different.™"
I was also thinking about learning Haskell or Lisp recently (just for "fun"). I like C but I don't particularly like languages like Java (slow execution, simplified, garbage collection instead of memory management, runs in a JVM which is wasteful and an unreasonable dependency). Haskell and Lisp have some of those features, so I decided to learn Fortran77 instead.
I'm not sure what "enlightening the brain" means but for sheer challenge, assembler has no equal. FORTH with its "stackrobatics" is also a great brain developer.
Higher level languages will mask a lot of the lower level challenging details but introduce new challenges of their own.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.