DEV Community

loading...

Stop telling people what are the "best" programming languages to learn

Pato
Google Developer Expert on Angular and Web Technologies | Auth0 Ambassador | Media Developer Expert for Cloudinary | Twilio Champ | Technical Coach at SpringBoard | Google Women Techmaker
Updated on ・3 min read

Okay, so I'm probably going to sound like the grumpie dude, but someone has to say it. Stop telling people what are the "best" programming languages to learn without giving proper context

Alt Text

The majority of the post are based on how popular the programming language is or how good the pay is, but that does that mean "X" is the best programming language to learn? uhmm.. NOOPEE.

Alt Text

Some of the problems with those post are:

  • Most of those "programming languages" I have seen in those post are actually libraries or frameworks like React, Angular, Vue etc. The author is already miss informing the reader

  • Those articles are bad for beginners, because a lot of them don't specify what those languages are good for. What about if the reader wants to learn about Machine learning and "x" language used for Machine learning doesn't appear in the article? they could think that "x" is not worth learning. What about if beginners think that "x" programming language is good for Machine learning? What about if they think is a backend/frontend language but they meant to learn the opposite?

As you could see, we already have too many "What if". Those articles are not good because there's no perfect programming language, library/framework. Depending on your knowledge learning x, y or z could be easier or harder. Also, they could lead to bad practices, example: I have seen some posts saying "Learn React". Bro, why? based on what? You know the context?

Tips to write about the "best programming languages"

So if you are going to write about "Best programming languages to learn", be more specific. For example:

  • "Best programming languages to learn in my experience". Tell us why they are the best for you, how did you use it? what kind of code you wrote, what problems you solved?

  • "Best frontend/backend technologies to learn". Please don't say "x" because it's popular. Explain why!!

  • "Best paid programming languages" ..cool but where? specify the country, or region (even the city if you can)

  • "Most popular programming languages". Post real data, statistic, links, etc

  • "Most used programming languages in (insert country here)"

  • Specify what the programming languages are for. Example: Angular (frontend)

  • Stop being fucking biased. Brahh not just because you love "x" means it's the best thing to learn

  • Stop talking shit about other programming languages. Just because you don't know them or because you like something else better

  • Know what you are talking about. Example: ReactJS isn't the same as React Native, or Angular isn't the same as AngularJS

  • If you are making a comparison between tools, post statistics, screenshots and definitely try to make sure, whatever examples you give are about the tools doing the same thing. Example: you can't compare a todo list app built in React and showing the performance, bundle size, etcetera with an Angular enterprise app

  • Specify if they are any requirements to learn "x" technology. Example: To learn NodeJS you need to know JavaScript

Alt Text

Conclusion

Stop gate keeping people, specially new programmers. Let them learn whatever they want

Discussion (24)

Collapse
lexlohr profile image
Alex Lohr

Or just do not write "best programming language" articles at all, because even at best, they are wasted time that could have been used better, i.e. an article about the concepts that make a good programming language.

  • flexible type system
  • useful messages for invalid code
  • syntax: high consistency and low complexity
  • security: how easy it is to shoot your own foot?
  • tooling: how convenient can it get?
  • and most important: documentation and community

Now look at the languages at your disposal and find out what is best for you.

Collapse
devpato profile image
Pato Author

I like this

Collapse
osde8info profile image
Clive Da

just use JS everywhere :)

Collapse
wanoo21 profile image
Ion Prodan

and Swift )))

Collapse
lukaszahradnik profile image
Lukáš Zahradník

not the best idea

Collapse
intrnl profile image
intrnl • Edited

is it? python and js is pretty similar as a scripting language yet js gets a lot of flak when you want to use it everywhere.

in my case, it's pretty convenient.

people should just use what they want to use, if they want to use js, then it's fine! :)

Thread Thread
lukaszahradnik profile image
Lukáš Zahradník

Yes, people should use what they want, but that doesn't mean it's always a good idea.

Not every language is the best choice in every case. For example JavaScript is not fast enough in some situations - that's why ffi or wasm exist.

Also using only JavaScript (or any other language) can be contraproductive in sense of developing yourself as a developer - understanding different concepts of different languages and technologies.

Collapse
devpato profile image
Pato Author

I mean ..... JS rocks ! 😎

Collapse
adam_cyclones profile image
Adam Crockett

Learn lua, as a dead language you can do just any old thing guilt free and it's actually a good language for its size.

Collapse
sebbdk profile image
Sebastian Vargr • Edited

I picked up Lua to program Minecraft robots...
It was great, but left me wondering if i should be doing more with my life.

Collapse
caelumf profile image
CaelumF • Edited

Computercraft!! Good days.

I remember building a nuclear reactor on a server with ic2 that used electric wrenches and a deployer to safely (regular breaking would only yield a machine block) break the reactor itself. It was pretty cool because it needed current to run; the electric wrenches needed recharging, a buildcraft selective extractor pulled out empty wrenches, recharged them, and put them back in the deployer. A turtle routinely picked up the dropped reactor core and its uranium rods, placed them back and re-inserted the rods. After time for the reactor to heat up, it would generate more power and heat up faster until getting to a level where the wrench collected it again.

This server also had ICBMs. It was essential for a continuous stream of electricity to run the bases' radars, power AA guns and EMPs as a last resort. off-site mining turtle runs were providing enough uranium from slowly hollowing out the planet, but enemy factions were using dynmap to identifiy the underground disruptions and take the cache content and precious mining turtles, so energy reserves needed to account for dry spells.

A single powerhouse would have been a very lucrative target- with an adequate supply of missiles, an enemy could temporarily exhaust the EMP tower arrays and overrun the AA guns for long enough to get a missile directly into the powerhouse and severely limit the base's defences to further missile attack. To account for this, redundant MFSU powerhouses were distributed across the base in access-controlled areas, where even members of the base were not aware of all their locations.

This introduced another problem - how many reactor cores to run at once? when to stop running them? The reactors, although highly efficient, could very happily burn through uranium with no output without some way of telling when all of the distributed powerhouses were full.

MFSU powerhouses had power meters to report their energy levels over the network. This was visible from terminals, and from hand-held PDAs so that I could stay alert and stop an emergency in its tracks.

Doors within the base would be password unlocked and all computers were to use a custom operating system with a secure lock screen, it as the base grew in size and network complexity, I eventually implemented something similar to the TCP protocol, and a large WAN to be able to control the base from afar.

Back to the reactor, and lua.

As reactor heat increased, the power output increases as well, exponentially. Past a certain level there is a small chance fire blocks randomly replace blocks around the reactor -with the complex mechanism to keep the reactor cooled, this was obviously very dangerous, as when heat reaches a terminal point, an explosion would envelop the reactor room and much of the base. But the energy was pretty high at fire levels, and EMP towers were set to use a lot of electricty. If the alternative to dangerously boosting the reactors were successful missile strikes, it was worth doing for short periods of time! I added the ability to enter this mode on my PDA

While my faction was making great technological defence strides, the enemy was more focused on offence.

My brother, at the head of the enemy faction's tech efforts fancied himself as a reverse engineer, and he was pretty good. non-millitary networks had been routinely shut down with protocol exploiting DDoS attacks to hamper progress and we knew he was working on ways past the bases' security. What if he found a way to enable the reactors afterburner mode remotely?

In Computercraft, when messages are sent, their location can be triangulated. So I built a sort of certificate authority- firstly, GPS satellites (higher up gives further broadcast) were positioned far around the map. A computer could register their location with a public key on a specific channel, the satellites would send associated messages to the "CA" with their distance - verified cryptographically with prior exchanged keys - and the CA would triangulate the sender location. MITM or replayability attacks wouldn't be possible because they would clearly show a different origin from the "CA".

The PDA was still vulnerable to those attacks, so most of the time it proxied through nearby trusted "router"s with fixed locations.

What was the next point for my brother to attack? The CA server and satellites became new targets for physical and cyber attacks, and the war waged on...

...then I realized I was probably putting more effort into the game than its makers and I started college and work and other human responsibilities...

but left me wondering if I should be doing more with my life

same.

Really a great game with great mods. I wish there was other games with such battles of engineering that involved real world skills!

Thread Thread
sebbdk profile image
Sebastian Vargr • Edited

Nice story, i wish i had gotten more into it when i had the time, that sounds awesome. :)

My scripts were probably simpler, i wrote some duplication/construction scripts for the turtles so they could copy and build things. I also included setup scripts etc. i kept in pastebins so i could configure the turtles for different tasks, supplier, mining, builder, farmer, logging etc.

I thought about making them autonomous by having them receive commands from pastebins that they would also ping back information to.

That way i could create a web GUI and control them with that instead.

But i never got around to it, because of the time it would take.... :D

Thread Thread
adam_cyclones profile image
Adam Crockett • Edited

This is all way over my head, am I getting to old.. I did write some lua in gmod. Lua not in a gaming context to build apps as actually good as well. But I can see people enjoy it, actually it always seems to bring back memories from anyone who knows what it is. Lua has a very interesting back story you should check it out.

You see it embedded into games as a garbedge collected scripting language for the same reason it was invented, C was hard to write and had to be compiled, companies wanted to hire less skilled sometimes non technical people to write lua and not have to recompile C. Because lua runs in C it can even have C like performance, it also has a good package manager luarocks.

Sadly it's dead due to articles shunning its lack of market share, ignore this, lua is a fantastic language that I can't justify using for anything other than fun which is a shame. But I can name some webservers like nginx that actually script with lua and openresty, tons of games and a bunch more, it's just not known on the web side. Shame.

Collapse
devpato profile image
Pato Author

Just learned something new! Never heard of Lua before. Thanks :)

Collapse
sebbdk profile image
Sebastian Vargr • Edited

An equivalent analogy would asking the question, which tool in the toolbox is the best?

And while i'm pretty sure it's maybe the knife or hammer, i doubt i would use either to fix my broken drain that's currently leaking shit all over my floor.


Arguably it could also be duct tape.

Collapse
devpato profile image
Pato Author

Hahahaha! You will be surprised how many people will use the duct tape hah

Collapse
denisgaidul profile image
denisgaidul

Yes, as a newbie I can say, that there is too much useless information...
The best article, that helped me to make decision was on some humour version of Wikipedia :)
And still, I think that I'll better check few languages by myself, than read countless articles and opinions.

Collapse
juancarlospaco profile image
Juan Carlos

Good post!. Some of your comments may or may not always apply:

Some programming languages can blurry the Frontend/Backend line,
and some people have a hard-wired that something must be Backend-only or Frontend-only.

Geolocate programming languages by country does not make too much sense in the remote world.

Not always you can specify what the programming languages are for,
some are truly multi-purpose and flexible by design.

Opinions can be biased, because opinions are opinionated by definition.

Collapse
devpato profile image
Pato Author • Edited

Thanks for your feedback.

-Correct some programming languages are both, frontend and backend...but you can still specify that.

It's okay to be biased as long as you specify that it's your opinion and as long as you do not manipulate the statistic etc etc to mean your agenda

-Correct you can not always specify 100% what a PL is for. E.g python. Python is used for data science, ML, server side, scrypting and who the fuck knows what else 😂😂😂😂

-I work remote and still makes sense to specify region for remote employees most of the times, because at least a lot of American companies pay you based on where you live. E.g you can live in Argentina, and the company is in California, but most likely you won't be paíd Cali money. You will be getting paid based on your location. Also, if you really really want to get a remote job in the USA, and let's say in the USA, JAVA is super popular, most likely you won't go and learn idk R let's say. You can, but it might take you longer to land a job.

Collapse
madza profile image
Madza • Edited

When it comes to programming:
BEST = biased every single task

Collapse
santoshyadav198613 profile image
Santosh Yadav

Agreed, stop comparing Angular, React and Vue for God sake, it's 2020 and we still see those blogpost.

Collapse
smartcodinghub profile image
Oscar

Totally agree.

Collapse
valentinogagliardi profile image
Valentino Gagliardi

Agree!