DEV Community

Discussion on: What language should I learn?

Collapse
 
tux0r profile image
tux0r • Edited

Woo-hoo, one of my favorite topics!

Here's a number of (unsorted) recommendations:

  1. Try Common Lisp!

    Pros: Common Lisp, being a very mature language (first standardized in the 1980s), is quite unlikely to get major API breakages anytime soon, i.e. you won't have to adapt new language features every few years. It is basically an "executable lambda calculus", so it includes a lot of the shiny lambda and closure features other languages are still missing. The REPL allows you to gradually extend code which is currently running (i.e. modify your applications while using them). There are great and free books for it, e.g. Practical Common Lisp and Wikibooks. Paul Graham said that learning and using Lisp will make you a better programmer.

    Similar to Python, Perl and other popular languages, there is a shitload of libraries you can just include and use. The language ecosystem is, despite of its age, alive and kicking. SLIME is probably the world's greatest IDE for any language. Performance-wise, certain Lisp implementations can even be faster than C. Code examples: See rosettacode.org. With Caveman2 and Radiance you can have two mighty web frameworks as well.

    Cons: Due to Lisp's unique approach, it will be hard for you to adapt any Lisp knowledge to non-Lisp languages. Don't worry, there are a lot of other Lisp languages, e.g. Clojure and Scheme. You can even script certain GNU applications like Emacs and The GIMP in a Scheme. C-like languages are an entirely different thing though.

    You might also like: Racket. It comes with a built-in web framework and it still is "a Lisp" (to be precise, "a Scheme").

  2. Try Perl 5!

    Pros: Perl 5 is an ubiquitous language, it is a part of the standard distribution of quite some operating systems so there is a good chance that you can start right away. Its legendary CPAN directory includes modules for quite anything. Perl inherits some of its specialties from shell scripts, so if you have ever used the shell of a Unix-like system, you might feel right at home. Perl 5 is also rather mature, currently being in its 14th release (5.28) and still being maintained, so it is unlikely that you'll ever have to change your working code. As Perl is a pure scripting language (there is no official way to create a binary application with it), all it takes to modify your code is a good text editor. There is no REPL though.

    There is, of course, a good Wikibook for learning Perl. I have personally taught someone the basics of Perl within one week, so it is easy to adapt without any previous programming knowledge. Code examples are available on rosettacode.org again. As Perl uses certain constructs from C-like languages, you can even learn C, C++ etc. with your Perl knowledge later; also, PHP was initially based on Perl, so if you're interested in PHP, learning Perl might help you here. Concerning web frameworks: You should dance.

    Cons: Some people say that Perl's syntax reminds them of a swearing Donald Duck. Yes, there are a lot of symbols (@#$...) in a Perl script, helping you to understand what a certain variable is (array, hash, string, ...) and what it is not. - With Perl 6, officially considered a "non-competing sister language", (very) slowly replacing Perl 5, the advantage of having a very consistent package ecosystem may fade over the next decade.

    You might also like: Being beaten with a bag of wool for the rest of your life. ;-)

  3. Try C!

    Pros: C is everywhere. If your computer has an operating system, it (most likely) also has a C compiler, even on niche systems like RISC OS and Plan 9. Due to this fact, C has a library for anything, it can even be a great choice for web applications. As C's language core is often called a portable assembler (which is, technically, an outdated perception), C code is usually translated to very efficient machine code, making your code do exactly what you expect it to without too much fiddling from your compiler or linker. - And yes, there are web frameworks for it.

    Cons: The learning curve of C is actually a vertical line. Seriously, C is not your friendly beginner's language, it basically punishes you for even the smallest mistakes. This could as well be a positive aspect though, you will learn to avoid sloppy coding.

    You might also like: If you are afraid to jump into cold water, you might start with C++ instead, C++'s still current revision C++17 is rather beginner-friendly and (almost) every valid C program is also a valid C++ program, so you are able to slowly turn your C++ code into C code while you learn the differences. C++ also has decent web frameworks if you insist.

  4. Try Delphi (or Lazarus)!

    Pros: Object Pascal is the best RAD language I have ever seen. Nothing comes close. That includes Visual C++ and C#. Seriously, if you want to write desktop software, give Delphi (Windows-only) and/or Lazarus (multi-platform, can emulate most of Delphi) a try. The Lazarus wiki is a good starting point, I guess.

    Cons: Life has become rough for us Delphi users/veterans. We were legion in the 90s. We aren't anymore. If you can live with a language that is quite the opposite of a "hype", we'll happily welcome you in our circles.

    You might also like: Go. The Go language has adopted much of ALGOL's syntax, including the := assignment operator, just like Pascal/Delphi. It does not have RAD though - and it comes very close to C in some aspects.

Hope that helps!

Collapse
 
v0idifier profile image
void

I feel this is, like, way too complicated for me. I feel I need just an easy programming language that doesn't get in my way and neither makes me write a lot of code. I have heard that Go, Elixir and some others are more of "what I'm looking for." Is there something specific on the list that would fit what I'm saying?

Collapse
 
tux0r profile image
tux0r

Common Lisp, probably.