The shoutbox is currently out of service. Join us on Discord instead.

Best programming language to learn?(For beginners)

Started by Araidia, February 05, 2016, 03:06:43 am

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Lionel Debroux

February 05, 2016, 04:08:39 pm #15 Last Edit: February 05, 2016, 05:11:17 pm by Lionel Debroux
There are multiple families of programming languages, spanning dozens of languages each. It's important to know about the realm of possibilities and their relative strengths and weaknesses. I'll sketch a quick view, but the topic is much broader, and you can learn about it by yourself through Internet resources :)

1) Scripting, dynamically typed, usually interpreted languages: writing programs is easier, writing foolproof programs is hard, execution is slow (usually 10x-1000x slower than native code when not using a Just In Time compiler).
* nowadays, Python has displaced Java as the first programming language taught at school, and is generally considered a good choice for a learning language, despite being object-oriented. That would be my advice for a first programming language.
* JavaScript and PHP are very poor choices for a first language, they have lots of quirks and lend themselves to tons of bad habits because they're so lenient, even in ES6 and PHP 7 times. Just don't do that disservice to yourself and to others (should you want to become a professional software developers, like a number of community members) - really, only learn JS or PHP later, when you have more clues about not spitting loads of crappy, insecure code :)
* Lua's not that bad, TI put it on the Nspire with a crippled standard library and some proprietary layer of their own, but Lua is far from being as popular as Python and Java.
* TI-Basic is non-portable and has its share of quirks, it's not a good choice either for a first language. When TI calculators were the only programmable platform readily accessible to most beginners for a decade, until, say, a decade ago, alright, but... not any longer.

2) Compiled, more or less strongly typed languages: writing programs is harder, but a number of silly and less obvious issues are eliminated by compilers, and execution is very fast because most languages of that class are compiled to native code Ahead Of Time.
* the usual C/C++ are powerful multi-edged swords. With a good book (sorry, I don't have any to recommend, especially for non-French languages), C is great for imperative programming, and doesn't distort the mind from the get go with object-oriented programming, which should be introduced only later, IMO, when one's comfortable with imperative programming, or functional programming, as mentioned by bb010g. I started with C, long before university taught me any form of programming.
* Java is object-oriented, compiles to bytecode and is executed as a mix of interpretation and Just In Time compilation, so it's not quite as fast as good equivalent C/C++ on average. It's still very popular, but its popularity is waning somewhat, as it faces competition from improved C++ and powerful newcomers, such as...
* ... the Go / Swift / Rust triplet of efficient, relatively safe languages, compiled AOT. Go has a large popularity head start on the two others thanks to its portability, Swift isn't really portable yet (it expanded beyond the Apple ecosystem, which is a minority on both desktop and mobile platforms, only pretty recently), and Rust is far less popular than the two others but has safety features that the others don't have.

3) Functional programming: closer to math-oriented thinking, execution can even be fast when compiled to native code.
* I'm not really qualified about functional programming, but it's a fact that some of its fundamental concepts (map, filter, reduce, any, all, and friends) are useful in all other languages, and being completely ignorant about them is a bad thing. I'm using e.g. map and filter in a JS code base at work, because that's the appropriate thing to do.

4) Visual programming
* Scratch and friends. Good as well for beginners, but I'm incompetent about them :)

5) Other families
For instance, logical programming ala Prolog. To some people, that is the only language which makes sense, while most others find it highly specific (niche) and confusing ^^
Member of the TI-Chess Team.
Co-maintainer of GCC4TI (GCC4TI online documentation), TIEmu and TILP.
Co-admin of TI-Planet.

alexgt

I just started learning Python today to ^.^

I started with TI-BASIC and with Java on PC but that is just me ;)

Dudeman313

I'm a beginner, and I've found it easy to mess around with TI-BASIC programs.
Does this qualify as a signature? 
The answer is "Sure."


alexgt

Yeah, but I think he meant PC languages :P

That is what I would start with on calc tho ;)

bb010g

Quote from: Lionel Debroux on February 05, 2016, 04:08:39 pm
2) Compiled, more or less strongly typed languages: writing programs is harder, but a number of silly and less obvious issues are eliminated by compilers, and execution is very fast because most languages of that class are compiled to native code Ahead Of Time.

Writing programs in compiled langs doesn't have to be hard. Look at Haskell, Crystal, or Ceylon. Also, I think C and C++'s corner cases would like to talk to you about "silly and less obvious issues". :)
Quote from: Lionel Debroux on February 05, 2016, 04:08:39 pm
* the usual C/C++ are powerful multi-edged swords. With a good book (sorry, I don't have any to recommend, especially for non-French languages), C is great for imperative programming, and doesn't distort the mind from the get go with object-oriented programming, which should be introduced only later, IMO, when one's comfortable with imperative programming, or functional programming, as mentioned by bb010g. I started with C, long before university taught me any form of programming.

C++ w/ Core Guidelines will be a lot stronger language IMHO, but there's not too much out there resource wise yet.
Quote from: Lionel Debroux on February 05, 2016, 04:08:39 pm
* ... the Go / Swift / Rust triplet of efficient, relatively safe languages, compiled AOT. Go has a large popularity head start on the two others thanks to its portability, Swift isn't really portable yet (it expanded beyond the Apple ecosystem, which is a minority on both desktop and mobile platforms, only pretty recently), and Rust is far less popular than the two others but has safety features that the others don't have.

Rust is amazing for system programming too, and is rather easy to use and unsurprising after a bit. All of these listed are pretty nice to write too.
Quote from: Lionel Debroux on February 05, 2016, 04:08:39 pm
4) Visual programming
* Scratch and friends. Good as well for beginners, but I'm incompetent about them :)

Snap! is actually pretty awesome for introducing people to programming.

Powered by EzPortal