As an experienced developer, if you were to start all over again what would be the first programing language to learn?
Discussion started by someone anonymous
Learn Something New Everyday,
Connect With The Best Developers!
I started with C++ building console applications with no real use 😕
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 :/
Co-founder Moesif.com (API analytics). Previous Microsoft & Zynga. CS from MIT.
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.
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.
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.
- 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 fmtwill style the code automatically allowing the developer to focus on the problem statement and not be bogged down by trivialities
go lintcan 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.
- 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
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!
Well, it depends on the programming area that you used to work.
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!
I read through John McCarthy's paper “Recursive Functions of Symbolic Expressions” 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” 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.
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)
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.
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.
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.
Co-Founder, FutureStack Solution, Full Stack developer having more than 13+ years of experience in web technologies.
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.
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.
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:
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.