What programming language would you recommend to a beginner?

Yokel

LE
I never did do anything.....doh!

Today, I need to up my skills with relation to employment and I need something positive to do. I keep seeing job adverts that mention Python so I assume it is widely used. Is it easy to learn and use? Could it used in say an Engineering job? I remember that one of the things with C is that it allows interaction with hardware.
 
Last edited:
I never did do anything.....doh!

Today, I need to up my skills with relation to employment and I need something positive to do. I keep seeing job adverts that mention Python so I assume it is widely used. Is it easy to learn and use? Could it used in say an Engineering jon? I remember that one of the things with C is that it allows interaction with hardware.
I'm not sure trying to learn a new language now for your next job is going to work out quite how you expect.

Get yourself a Raspberry Pi and learn how to make it do engineery things with Python.

And have a look through here:

 
I never did do anything.....doh!

Today, I need to up my skills with relation to employment and I need something positive to do. I keep seeing job adverts that mention Python so I assume it is widely used. Is it easy to learn and use? Could it used in say an Engineering job? I remember that one of the things with C is that it allows interaction with hardware.
Just about any language can be used to interact with hardware. Whether that’s done through a library that allows access to say a USB peripheral, or a more basic register-based method is broadly irrelevant. Most languages will be capable of this in some manner.

Whether Python is any use in an Engineering job is highly subjective. I have ”Engineering” in my job title, but it would be of no use at all to me at work. In a prior job, yes, I could have made use of it. But that’s Telecom Engineering. If you’re making nuts & bolts, welding boat anchors or grinding cylinder bores, probably not.

Process automation, bespoke CNC machines, software engineering and cyber security are all likely candidates for it. As @dogmeat says, get yersen a RPi. If funds don’t allow, download Oracle VirtualBox and the x86 version of Raspbian. You’ll then have a virtual RPi, but without the hardware. Plenty enough to play with Python and several other languages.
 

lert

LE
I'd echo some of the points upthread about examining why you want to 'learn to code' now. Unless you're looking for entry level jobs then you're likely to be competing with people with years of experience for any jobs that have a significant programming requirement.

That said, it is useful to at least be able to join or lead the conversation with a team of Devs/coders. In my current team I have people working in Py, -R and React (okay it's just another flavour of JS). I don't need to write or review code, but I do need to follow what's being said. Py is probably as easy to grasp the principle of as any other and the principle are often relatively common.

If, on the other hand, you really do want to retrain then the one thing I would say is that a good FE Developer can earn a lot, lot more than a back end Py monkey.
 

TotalBanker

Old-Salt
Not read whole thread so apologies if already covered, but any job that uses data in MS Excel is likely to want VBA, and the ability to write macros for excel. That's worth learning!
 

Bob65

War Hero
I'd echo some of the points upthread about examining why you want to 'learn to code' now. Unless you're looking for entry level jobs then you're likely to be competing with people with years of experience for any jobs that have a significant programming requirement.
The people who will really benefit from learning to code late in their careers are those with significant domain knowledge who are looking to use code to improve or automate existing processes with which they are very familiar.
 

lert

LE
Not read whole thread so apologies if already covered, but any job that uses data in MS Excel is likely to want VBA, and the ability to write macros for excel. That's worth learning!
To be completely honest, any job that processes data in MS Excel really shouldn't any more!
 

lert

LE
The people who will really benefit from learning to code late in their careers are those with significant domain knowledge who are looking to use code to improve or automate existing processes with which they are very familiar.
I tend to disagree. People with significant domain knowledge should be applying that knowledge and getting other people with significant knowledge of coding to apply that to their processes.
I have lost count of the number of times I have seen a sledgehammer of clumsy, ineffecient code used to crack a nut because someone with 20 years of experience with nuts thought they could learn from Udemy what it takes a computer scientist years to learn to apply.
 

Yokel

LE
Process automation, bespoke CNC machines, software engineering and cyber security are all likely candidates for it. As @dogmeat says, get yersen a RPi. If funds don’t allow, download Oracle VirtualBox and the x86 version of Raspbian. You’ll then have a virtual RPi, but without the hardware. Plenty enough to play with Python and several other languages.
Thank you for a helpful answer - likewise @dogmeat. I am not interested in trying to be a software engineer, my background is in electronics and communications. I heed some help getting back into a proper job. I know of a local consultancy that specialises in high integrity systems, and a local firm that makes bespoke industrial equipment - mostly PLC based.

I might have acess to a laptop to use for learning, and getting involved in the hardware side will be useful to me.
 

AlienFTM

MIA
Book Reviewer
I have lost count of the number of times I have seen a sledgehammer of clumsy, ineffecient code used to crack a nut because someone with 20 years of experience with nuts thought they could learn from Udemy what it takes a computer scientist years to learn to apply.
I hope I haven't related this in this thread. If so, apologies.

People may know DOS/Windows command language, that allows users to write more complex command .bat files than simply listing commands.

The mainframe equivalent language was called EXEC, became EXEC2 and then CLIST, for writing command lists. In the 80s, Mike Cowlishaw invented a restructured, extended executor language, REXX (see the acronym?) to replace all the above. It was shipped with mainframe software packages as the System Product Editor.

For my role (at Worthy Down, through my consultancy days to my time building, packaging, installing, testing the app that takes incoming messages, e.g. from ATM, home PC, from bank or retailer to the Head Office mainframe), REXX was my bread and butter (as it was for anyone doing more than writing application software).

One day, on an internal forum, someone asked how to perform a certain complex calculation in REXX. The number of replies offering half-page answers and longer was breathtaking. I offered a 4-line (written, as the norm in lines of 80 characters or less) solution and went home.

Got in the next morning, did my daily initial tasks and looked at the forums. Saw a reply to my post. From Mike Cowlishaw. My heart missed a beat, expecting to be shot down. No, he suggested the thread be closed as this was the DS solution.

Kudos for Alien.
 
Last edited:
I never did do anything.....doh!

Today, I need to up my skills with relation to employment and I need something positive to do. I keep seeing job adverts that mention Python so I assume it is widely used. Is it easy to learn and use? Could it used in say an Engineering job? I remember that one of the things with C is that it allows interaction with hardware.

If you want to get an idea of how various transducers can be used with a microprocessor (ie. as in lots of typical engineering work, machine-control etc.) then get yourself an Arduino kit with a few sensors in it. The language is pretty much C, though I think there is a version of the compiler in Python too but with fewer control libraries available.

If you want to program human interfaces and make pretty screens etc. then simply get a Raspberry Pi kit, as mentioned above. Any compiler or interpreter you can think of will run in Linux.
 
I'm not sure trying to learn a new language now for your next job is going to work out quite how you expect.

Get yourself a Raspberry Pi and learn how to make it do engineery things with Python.

And have a look through here:

@Yokel
Or an Arduino

I’ve had a Raspberry Pi sat in the drawer for quite some time, and bought an Arduino mega & selection of electronics bits on a reviews discount.
In Covid I’ve got it back out and have been trying out some ideas for gadgets.

I think the Pi is more powerful and the Arduino suited for little projects.
I’ve stocked up on normal Arduino Unos and some small Arduino Nanos.
There are other programming environments such as Python, but it’s default is based on C++
You’re looking at under £15 for a mega, under £10 for a Uno and under £5 for a Nano. Buy a few and the price drops. Kits cost around £20+ depending on how much is in there
There is a vast array of Arduino projects around the Internet where you can just assemble the electronics and either copy their code (and read it to understand what’s going on) or tweak it to your customisation

Any programming will get you into the flow, and then specific languages would be more common in whichever flavour of engineering you went to
 
The best choice is "C". I don't mean "C++" but namely "C". You could learn "C++" later.
"C" is an excellent starting point for many reasons. If you plan to write programs for microcontrollers (with ARM architecture for example) then you would have to use namely "C".
In 1985 I began to give lectures in informatics for students in Moscow Pedagogical Institute (Mathematical faculty). I had to teach them Pascal. That is also not a bad choice. Though with "C" in your pocket you would be able to learn easily many other programming languages, including Pascal, Basic, ST (Structured Text programming language for PLC controllers) and many others.
 
Last edited:
(...) Today, I need to up my skills with relation to employment and I need something positive to do. I keep seeing job adverts that mention Python so I assume it is widely used. Is it easy to learn and use? Could it used in say an Engineering job? I remember that one of the things with C is that it allows interaction with hardware.
Thank you for a helpful answer - likewise @dogmeat. I am not interested in trying to be a software engineer, my background is in electronics and communications. I heed some help getting back into a proper job. I know of a local consultancy that specialises in high integrity systems, and a local firm that makes bespoke industrial equipment - mostly PLC based.

I might have acess to a laptop to use for learning, and getting involved in the hardware side will be useful to me.
Let's pick your question apart a bit. I'll break your points down into the following:
  1. background is in electronics and communications
  2. high integrity systems
  3. local firm that makes bespoke industrial equipment - mostly PLC based
  4. acess to a laptop to use for learning
  5. getting involved in the hardware side
  6. Python
  7. C

Your background is in electronics and communications. I will attempt to answer while building on those skills.

You want to get involved in the hardware side. That will help with the previous, but the question will be with how that fits in with potential employers. Find out what the "high integrity systems" company does, what sort of customers they have, what sort of solutions they provide, and what sort of skills they require. I can't really go into much more depth than that, as this is a pretty broad category of companies.

The "local firm that makes bespoke industrial equipment - mostly PLC based" I can go into more detail on however. If they are typical of most firms in that field, most of the kit they use plugs together or is wired to screw terminals. There generally isn't a lot of soldering involved. Understanding basic electronics will help in understanding the equipment and in troubleshooting, but most people can get by with a fairly rudimentary grasp of electronics.

On the other hand, having someone available who can provide electronics expertise can be handy when they need to cobble together a system which is out of the ordinary, but it's not something they would use every day.

For programming factory machinery, the core skill will be PLCs. These are programmed using proprietary development software in proprietary PLC languages which bear little resemblance to "normal" programming languages, and which run on proprietary hardware, and for which you will need a training lab set up to see tangible results. Courses put on by PLC manufacturers are generally expensive. Check to see what sort of post-secondary education and training courses are put on by colleges in the UK, or whoever it is that handles this sort of training. I don't know how post-secondary education and training works in the UK, especially when it comes to skills upgrading.

Manufacturer's courses are often based on assuming you already know all about programming PLCs, and just want certification on their specific brand and model. Their courses are typically run full time over several days. If you are new to PLCs, this is probably not for you.

In Canada, Community Colleges (which are distinct from universities) would teach the general skills from the ground up. Their courses are often available as evening courses. They will use a particular brand and model of PLC in their labs, but the emphasis is on the concepts. They may have basic industrial control (relays, valves, proximity sensors, etc.) as a prerequisite in one semester, with PLCs in the second semester (you use the PLCs to control the kit you spent the first semester learning about).

Once you've learned about one brand of PLC, learning another is pretty straightforward. I've never had a problem with picking up a manual and learning a new PLC. First though, you need to learn the concepts behind things like ladder logic (which is what 95 to 99% of PLCs are programmed in), which are very different from "normal" computer programming.

Once you know one PLC, learning another brand of PLC involves learning three things:
  • The "memory map". Everything is based around different kinds of addresses and different kinds of blocks of memory. This point may be hard to understand if you don't know anything about PLCs. In short though, addresses are not just places in memory, they are tied to inputs, outputs, timers, counters, and special features.
  • The instruction set. This is the instructions for doing boolean logic, timing, counting, and various other things.
  • The programming software, which you can think of as the IDE (the editor). Every PLC maker has at least one of their own. Some companies make them far too complicated (e.g. Siemens) while others have simpler ones. However, you have to use the one that works with whatever model of PLC the customer specifies (i.e. what they stock spares for and their staff are trained to swap parts for).
If you have a choice of courses (at say different community colleges) find out what they use in their labs and see how that lines up with what potential employers in your area tend to use. I wouldn't make that the sole reason for choosing one option over another, but given two more or less equal choices, it would tip the balance for me.

As well as the above, you should also know some basic 2D CAD for doing electrical schematics and panel layouts. Most companies that I know of tend to use some version of Autocad LT or the like. If you don't know CAD, see if you can take a basic course on it. Again, learning the concepts of CAD drawing are what matters, as CAD isn't just an electric pencil. Don't lay out any cash on the actual Autocad software, as it is way overpriced.

As for computer programming languages such as Python or C, you could go through a whole career in industrial automation knowing nothing but PLCs. Knowing languages such as that however could land you some of the choicer assignments (at least how I see them) doing things that PLCs can't. These would include things like writing a program to log production data to a database, or report on production data, or interface a PLC to an MRP/ERP system (software systems that run the business side of companies), or putting a web interface on a production reporting system, etc.

For stuff like that people use a variety of languages. As a starting point I would definitely suggest Python. As well as being a good language to start learning in, it's a good language for implementing these things in. If you wanted to learn another language after that, then I would definitely suggest C (not C++). Python and C actually work together very well, and a very useful thing to know is how to write "wrappers" for C libraries so they can be used from Python, as some hardware interface libraries you may need to use are provided only as C libraries. That is something to worry about only after you already know both languages however, and is really beyond where you are at this stage. It does show though that these issues can be inter-related.

Python runs on Windows, Linux, and Apple's OS/X. If you are just learning to program, then simply install it natively on whatever PC you are using. Most Linux systems come with Python already installed. Most Mac systems come with an old version already installed, so you will need to faff about with installing a more up to date version before using it for learning with.

If you want to learn to interface hardware with software, then that is what the Raspberry Pi is made for. Buy one and do some projects, using Python for the software side of things.


I think I've answered your questions, but now I'll make an additional suggestion. I'm not familiar with what sort of electronics background you may have, but you may also want to look at companies who do various sorts of specialised control systems, such as traffic control systems, or railway signalling systems, or electric grid monitoring, and the like. That might have a bit more direct relevance to your existing skills, and with fewer entry barriers to overcome than having to learn specialised kit like PLCs. These other systems of course have specialised kit of their own, but it tends to be so specialised they may not necessarily expect you to already know how to use it before you come in the door.

Knowing how to program will still be a useful skill though, since most kit these days needs to be programmed in some manner. Again, I would suggest Python. As well as teaching you the basics of programming, it may find a use in things like creating programs to test the kit they make, sell, or service. Learn Python, then buy a Raspberry Pi to learn how to interface software with hardware. When you can do that, you will have shown some skill and aptitude for knowing how the worlds of software and hardware interact with each other, which is something that many garden variety computer programmers struggle with.
 

Yokel

LE
High Integrity systems company - consultancy run by a guy who specialises in high integrity embedded systems but does other things as well. He had people working for him on an ad hoc basis.

Industrial Equipment company - all PLC based. A little bit of basic design and fault finding as required, but mostly the boss writes the programes and others deal with the mechanical side.

Me - hardware background, just need to get back up to speed with a number of things, including programming.
 
Hello ;)
Python is a general-purpose programming language used for web development and as a support language for software developers. It’s also widely used in scientific computing, data mining and machine learning. The continued growth and demand for machine learning developers may be driving the popularity of Python.
Python is regarded as one of the best and easiest programming languages for beginners. It’s a free and open source language that’s known for its dynamic, flexible, object-oriented, procedural, and functional programming styles. With its simple and readable code, the programmers can express concepts in lesser lines of code.
 
To be completely honest, any job that processes data in MS Excel really shouldn't any more!
The current mrs_mush left school with one CSE (the olden days) and worked in a variety of unskilled jobs before landing an secretarial job in her 20s'. Her boss, as many did and still do, used early spreadsheets (anyone remember Lotus123 and VisiCalc) to format and present data and she got involved in helping him out and started to teach herself how to use them.

25 Years later, she's a senior analyst working with complex spreadsheets as the front end to large datawarehouses, still entirely self taught. There's not a lot she doesn't know about Excel, even contractor techies, sometimes from Microsoft, don't know as much as she does. Often the IT dept will quote for a weeks sprint to get some data visualised, whereas she'll look at it and say "give me an hour of so" and she'll come back with what was asked for and more.

She could be earning big money as a contractor for some of a analytics firms but she's happy where she is, drawing a salary, topping up her pension and being appreciative if I cook anything decent for her.
 
" W de AW ,-R- We're at Max Beard now here -K-"
"RC, Max Beard +"
 
We acknowledge your expertise when it comes to bumming cheap South American whores whilst blind drunk. Allow the rest of us some modicum of experience in other areas to call our own.
Can't argue with that...
 

New Posts

Latest Threads

Top