As an experienced developer, if you were to start all over again what would be the first programing language to learn?

·

Learn Something New Everyday,
Connect With The Best Developers!

Sign Up Now!

& 500k+ others use Hashnode actively.

Nicol√°s Parada's photo

I would start with JavaScript to start building actual things fast.

I started with C++ building console applications with no real use ūüėē

Marco Alka's photo

Software Engineer, Technical Consultant & Mentor

C++ in the console can be fun, I think it's more about being creative and having ideas what to code. You could create a text-based RPG, a classic game (tetris, Pong, Space Invaders, Snake,...) for the console, or a employee register. Ok, the last one was not meant seriously, but something I had to do as homework. It's stupid, but can teach you about linked lists and trees. Gives you a good feeling for pointers. No fun, though. Well, most teachers have no idea what's fun and teaches you the important stuff at the same time anyway :/

Ibrahim Tanyalcin's photo

{intrst:"Scnc&Art",msc:"admin@MutaFrame",strive:"Experiment&Learn",loves:"ES5",hates:"bandwagon",lang:"Javascript",twttr:"@ibrhmTanyalcin"}

There is Qt built on C++. And it is awesome. I'd give much much more credit to C++

Xingheng Wang's photo

Well, I wouldn't change what I learned first.

In high-school I learned C:

C: which really teaches you how computer works: e.g. what happens internally when you call another function (what does it mean by 'Stack Overflow' for example), and how data is represented in memory, and of course Pointers.

In college, my first computer science class is 6.001 at MIT, which is taught in Scheme at the time.

Scheme: which really distills every core concept to utter simplicity, shows a how elements of a language is built block by block, and how different approach to computer language with pro and cons, and of course open your mind with functional programming.

Although these days, I don't program in either of those two languages, just Javascript or Scala. But those fundamentals let me go into any language with ease.

Marco Alka's photo

If I started over and could decide now what I learned back then, it would probably be a FP language, like OCaml or Haskell, instead of Delphi.

I would go on with JavaScript and PHP, just as I actually did. Later on, I would go for C (instead of C++), because there was no Rust around, at the time.

Rust would definitely find its way into my life and replace C at some point.

Where will I go from here? I dunno. I am still not sold on anything transpiled to JS, however I am missing traits and types in JS more and more. I guess, for small projects, that stuff does not really matter, however, I would love to do big projects in Rust and only have minimal (automatic) JS bindings. Even current web-core libs still heavily rely on JS. Maybe I should take a look at Elm? Dunno. Let's see.

Arpit Mohan's photo

If I was to do it all over again, I'd definitely choose Golang & Javascript as my first languages.

Why Golang?

  • It has the right balance between being a high level language that abstracts certain features away from the developer (Eg. GC, memory management) and low enough for the developer to learn important concepts (Eg. pointers).
  • go fmt will style the code automatically allowing the developer to focus on the problem statement and not be bogged down by trivialities
  • go lint can enforce certain best practices such as adding comments, naming variables. It's great when a tool tells you that your variable names are awkward.
  • Can introduce multiple concepts around threading, event loops etc.
  • REPL cycle is really fast. Doesn't hold the developer back.

Why Javascript?

  • Because the web is built on it. Must learn to be remotely familiar with front-end development
  • Has gotten the functional programming paradigms right.
  • Great examples of how not to do things in future languages :D
Gijo Varghese's photo

Started with ActionScript and C. No regrets, I think it's still C the best language to start. Though I haven't coded in C for the last 6 years!

C gives you a better picture on how for loops works, how memory is allocated, typed variables, call by reference etc.

It's true, I've set up an Eslint rule in my projects that whenever it writes a for loop, it will show an error. But you need to know the basics!

Francisco Diez's photo

Well, it depends on the programming area that you used to work.

If I were you, I would start with some HTML 5 and CSS 3, If you are interested in front end. Perhaps, you could also learn some JavaScript.

If the front end wasn't your area, and you used to work in back end servers, probably PHP 7 would be ideal.

If not, learning C++ or python it's interesting.

Hope my post be useful to you and good luck!

Tommy Hodgins's photo

I read through John McCarthy's paper ‚ÄúRecursive Functions of Symbolic Expressions‚ÄĚ[1] where he lays out a way you can evaluate things (in a mathematical sense) in self-recursive functions. Then he elaborates on top of this to show you how you can write the basic building blocks of all programming languages, but it's written more like a mathematical proof than a program.

This paper has been the basis of programming languages like Lisp, Scheme, SmallTalk, and many more.

Recently I've been reading through the ‚ÄúRevised (6) Report on the Algorithmic Language Scheme‚ÄĚ[2] which builds even more on top of this McCarthy-style way of thinking about computing.

I'm learning it now, but I feel like for all of programming for all time, this is probably the right 'starting place', even if you dislike math, and have no computer science background at all. The clarity and simplicity of it make it so easy to understand - even if it looks ugly at first glance.

1: jmc.stanford.edu/articles/recursive.html

2: r6rs.org

Joe Graham's photo

This might sound weird but I would choose LISP, here's why

  • Declarative style thinking. Teaches you to "think in LISP" which is a skill I am still learning today but some of the CS greats already have this luxury like Peter Norvig and other pioneers of AI research.
  • Functional programming patterns without the overhead of type systems. breaking up data and functions is a good first step but types and type systems adds a lot of overhead to the mix (at least for me) until you are really good at translating problems into functions that can be composed over data structures
  • The books! There are some absolute CS gems out there written specifically for LISP (just to name a couple)

Great thing about LISP is that you can transfer those skills to almost any other language including LISP's cousin JavaScript. It's a great foundation to build on and it seems the kind of language people never lose a fondness for, even though Peter Norvig is all about Python and TensorFlow and all that cool stuff, he never lost his passion for LISP (norvig.com/lispy.html).

Jos Fabre's photo

That's a bit paradoxical, given that you wouldn't know why to pick that language because of the fact that you are blank again.

That being said, I think the obvious choice would be Javascript because of it's humongous adoption. For being both a server side and client side language. For being the control language for so many types of hardware. For having a huge audience, community, ecosphere.

And, last but most certainly not least, for the ability to start in any browser, without any compiler or tools, almost as easy as typing itself, and work your way up to advanced use years later, using compilers, linters, tools and frameworks and awesome extensions such as typescript.

Emm Jk's photo

Python -> Javascript -> Java

Mark's photo

Probably Python.

It's a bit tempting to say Rust, learn the low level stuff and proper type system etc.

But I actually think it's better to learn in a more loose environment where you can play around without knowing everything. You can fill in the details later, at which point they'll seem more useful.

And it's motivating to get fast results in the beginning. Motivation is essential, if you're programming for the first time, you don't want to do it for 200 hours before it starts being fun.

And Python is a more consistent and less quirky language than other dynamic ones of similar popularity.

jalpesh vadgama's photo

If you start looking over I would definitely look into following languages.

Golang - It has cool features specially built in concurrency . It build from scratch and performance is awesome.

TypeScirpt and ES6- Typescript is from Microsoft and is a super set of JavaScript and It has got lots of cool features while es6 is going to be new version of JavaScript and got lots of cool features.

Joe Clark's photo

Carpentry

Mev-Rael's photo

Still the same language of the paper, pencil and flow charts.

Ibrahim Tanyalcin's photo

The one that enables me to get away with learning least as possible while doing most out of the box --> ultimately allowing me to concentrate on things that matter more like math, geometry etc. rather than dealing with application logic and some bs* cool new addon and so forth.

I like things that don't change and stay stable while allowing me to build on them without worrying.

Jason Knight's photo

My first I wouldn't change, but that's because I learned machine language (hand assembling and entering one bit at a time on toggle switches) in 1977.

BUT, if I were to make a change it would be how soon it was I took C (and by extension *nix) seriously. I learned Wirth family languages first -- Pascal, Modula, ADA -- and to me C syntax remains aggravatingly and pointlessly cryptic, with most posixisms and unixisms following suit. It was as if it were intentionally designed to make programming harder and making mistakes easier... to the point that for the most part few if any in the 1980's working on Microcomputers even took C seriously... and really until Linus came along Unix was on its way to the graveyard, C along with it.

There's a reason I'm STILL not convinced this is a joke:

gnu.org/fun/jokes/unix-hoax.html

The... revival of the language from '89 onward I would never have called, and the transformation of the industry to being C based left me unnecessarily flat-footed for a good seven or eight years.

It's still a shit language syntax, as is most everything in the C family (PHP, JavaScript, Java -- they're all just C in drag). I just wish I'd taken the time to get over the agonizing obtuseness of C sooner since the industry as a whole moved to it seemingly out of nowhere.

Want to read more?

Browse featured discussions

© 2020 · Hashnode