DEV Community

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

Pato on January 20, 2020

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 language...
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

I like this

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

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

Collapse
 
osde8info profile image
Clive Da

just use JS everywhere :)

Collapse
 
wanoo21 profile image
Ion Prodan

and Swift )))

Collapse
 
devpato profile image
Pato

I mean ..... JS rocks ! 😎

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! :)

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

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 • 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
 
valentinogagliardi profile image
Valentino Gagliardi

Agree!

Collapse
 
smartcodinghub profile image
Oscar

Totally agree.

Collapse
 
santoshyadavdev profile image
Santosh Yadav

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