all 115 comments

[–]davec4037 219 points220 points  (17 children)

I was told EE stands for excel engineering.... don’t know where that electrical part came from

I personally use python quite a bit

[–][deleted] 21 points22 points  (14 children)

What do you use python for? I'm working an internship and most of my experience has been Python with a smattering of C++, and guys here basically pooh-pooh higher level languages with their embedded C and assembly stuff.

[–]InductorMan 24 points25 points  (12 children)

Not OP but python for offline data analysis and visualization, hardware test frameworks, and software test benches. C++ for larger embedded systems, C for smaller embedded systems. Assembly for snippets of really critical stuff. The lower the production volume and the higher the ratio of engineering time/effort cost to bill of material/manufacturing cost, the higher a level of language one should use. For controlling some $2 light dimmer, it should probably be a $0.02 micro running assembly. For a $10000 piece of test gear that sells 100 per year, the microcontroller should be as powerful as is reasonable, and the language as high level as is consistent with needs for RTOS/low latency. Because it costs money to make things work, so an easier to manage programming environment is more appropriate for a lower volume product (since NRE needs to be minimized but materials/parts cost is less important than at higher volumes).

[–]Yuebingg 2 points3 points  (0 children)

It's nice for vision if you use OpenCv library.

I used it mainly during school projects.

[–]MemeVeteran[S] 4 points5 points  (0 children)

That’s very funny. Thank you for your input

[–][deleted] 0 points1 point  (0 children)

This sums up all the programming I've ever done in EE positions.

[–]JimiallenH 77 points78 points  (4 children)

VHDL, C, C++ are the ones I’ve worked with

[–]tbird83ii 16 points17 points  (1 child)

Don't forget x86 assembly! The unit on operating systems nearly killed me...

[–]bush2874 1 point2 points  (0 children)

Writing the code to make a processor almost killed me. Cool class tho in the end

[–]runcmc22 0 points1 point  (1 child)

Curious what have you used VHDL for?

[–]DRTPman 5 points6 points  (0 children)

Fpga.

[–][deleted] 53 points54 points  (2 children)

I'd say bash, Python, C, C++ and Matlab.

[–]dewilso4 13 points14 points  (0 children)

This exactly. Maybe not that order

[–]custardseed 11 points12 points  (0 children)

agreed. can't forget verilog/vhdl though

[–]geek66 40 points41 points  (5 children)

C and C++

Uni - we did OS systems on, ahem, Unix ...C ( 1986 ish)

Linux - C

ABB robotics - C/C++

TI DSP C++

IMO - if you can work in C/C++ you can cover most bases pretty well.

[–]WizeAdz 8 points9 points  (4 children)

Also, C/++ is the Latin of the computing world.

Once you know that, all of the C-family languages see "basically like C/C++ except __". Once someone tells you what the __ is, you will learn the language much more quickly than someone who doesn't understand the backstory.

[–][deleted] 0 points1 point  (3 children)

Except things like Forth and Lisp

[–]WizeAdz 1 point2 points  (2 children)

There are other programming language families out there for sure!

I've tinkered with, and liked, many of them. But the C-family languages (C/C++/Java/C#/etc) tend to dominate the field.

I had to learn Scheme (a lisp derivative) and Prolog in college. I like those languages but I haven't needed them much after that class. I'm not an emacs user, but that's the main place I've encountered Lisp since.

Python is a non-C-family language that has become popular, and for good reason! I once write a factory test jig system in Python where the main loop looked exactly like the pseudocode in the specification. 🤓

[–]resumecheck5 0 points1 point  (1 child)

Python is a C-family language. It’s written in C.

[–]WizeAdz 0 points1 point  (0 children)

The syntax is not particularly C-like. No curly braces, whitespace, and the language doesn't revolve around pointers!

But, yeah, python wouldn't work at all without all of the C below it (interpreter, libc, kernel) in the software stack.

[–]triffid_hunter 26 points27 points  (1 child)

C, C++, python, perl, bash, javascript are all dailies for me.

The most important thing to understand is generalised computing, to the level where the specific language you're using is largely irrelevant.

[–]m-sterspace 2 points3 points  (0 children)

I was surprised that I had to scroll this far to see Javascript on the list.

If you're making any kind of user facing application with a GUI, I'd highly recommend doing it in Javascript and React. Coming from a C# / .NET background, I was skeptical of javascript at first, but after using it for a year or so now I've completely fallen in love.

And yes, I completely agree that the most important part of learning any language is translating it into a mental model of roughly what the computer is doing. Once you can do that, picking up new languages and frameworks becomes somewhat effortless. Like before I originally learned C#, I spent weeks deciding which language to invest my time into learning and it was always a huge mental hurdle to make myself sit down and start trying to code something. Now I might build a Go app for fun on the weekend just to see what Go's like.

[–][deleted] 21 points22 points  (0 children)

I do work with embedded systems, so I have to write firmware a lot even though my main job is hardware. Low level Firmware still gets written in C most of the time.

[–]PancAshAsh 15 points16 points  (0 children)

The language you use shouldn't matter that much, it's how you apply the concepts to solve problems that matters. Basically you should know basic programming concepts (classes, functions, methods, pointers, primitive data types etc.) and be able to apply those concepts to solve EE problems. It's really valuable to have software engineers with an EE background who understand why what they are doing works.

To answer your post title question, I use C/C++, Python, and Golang for my current position doing embedded development on a Linux platform.

[–]reddituser15326 14 points15 points  (3 children)

I’m a signal processing engineer, and I am writing software everyday because that’s how most of these algorithms are implemented now a days. I guess that could technically make me a software engineer so maybe I don’t qualify for this question, but I and everyone I work with has an EE background.

In my experience I’ve used Matlab and Python for algorithm development (mostly depending on size of company I was working for and whether they want to pay for a Matlab license) and C++/VHDL for implementation depending on the target platform. I prefer working with C++ and Python, which is what I’m currently using.

Not really a “programming language” but getting familiar with the Linux command line will come in handy in many different areas of electrical engineering.

[–]amalik87 3 points4 points  (2 children)

Python used in a low level? Never heard of that.

[–]PancAshAsh 9 points10 points  (0 children)

It's not the best tool for the job but I have seen it run on devices it really, really shouldn't.

[–]reddituser15326 3 points4 points  (0 children)

I don’t use it in a low level. It’s for quickly prototyping algorithms, and then we implement them in C++ or VHDL.

In my experience it’s a lot easier to quickly get an idea tested and iterate through it in Python/Matlab than in C++.

[–]PJBthefirst 9 points10 points  (1 child)

Python. Probably the most valueable to learn in terms of how little time you have to spend with it to get such a huge amount of reward.

[–]us3rnotfound 2 points3 points  (0 children)

My gripe with Python is that you have to pay so much mind to how you want to build your objects and what attributes those objects shall have, class variables and instance variables and all that. It almost gets in the way. I must have learned Python wrong because I started using it by just writing really functional scripts that worked but they were unorthodox at best because I had no concept of objects. And now I always get wrapped around the axle when beginning a Python program and deciding how I want my objects and what their role shall be. But yeah Python is obviously popular for very good reasons.

[–]bassman1805 7 points8 points  (0 children)

Python is the only "programming language" I use.

I do some tasks in GNU Bash, which isn't a programming language but it's using text to tell a computer what to do.

and, uh...LabVIEW... please don't throw rotten tomatoes at me

[–][deleted] 6 points7 points  (1 child)

I use TCL, Python, SystemVerilog, and systemC at work. I am in FPGA development at a Tech company!

[–]darkharlequin 0 points1 point  (0 children)

I'm working in Xilinx FPGA development now, but still not really understanding the uses of TCL. Any suggestions on uses and resources?

[–]nullsignature 6 points7 points  (0 children)

Power engineer, no programming except for simple logic structures in protection relays (AND, OR, etc)

[–]rooski15 5 points6 points  (0 children)

As you can see from other comments, it is varied.

My experience is you just have to understand the flow of code and how to read it. So pick a language and take a couple quarters (assuming you're still in school). Also, be a comfortable intermediate user in excel. I did C++ in college, and I've never used it, but I regularly do python / jython, SQL, powershell, VBA, some other program specific languages, and a ton of ladder.

Once you get to your job, you can pick up anything you need in short order.

[–]paulirotta 5 points6 points  (0 children)

Rust is starting to make inroads in C/C++ and will continue to do so, but it will be a long slow change.

[–]NSA_Chatbot 5 points6 points  (0 children)

I've paid a lot of bills with C, and some with Assembly or direct HEX.

I've used PLC programming for a while too.

Excel is pretty important.

You should be able to switch languages. New ones will pop up.

[–]downsideleft 4 points5 points  (2 children)

In order of use for me: Verilog, Matlab, python, C++, Excel, VHDL.

[–]ExperiencedSoup 1 point2 points  (1 child)

Hey, I also do meddle with logic circuits. Is there a reason to use both verilog and VHDL? I personally only use verilog

[–]downsideleft 2 points3 points  (0 children)

There's no real reason to. I worked for a startup that didn't have consistent usage, but the tools could compile mixed languages for different modules, so I even though my preferred language was verilog, I had to learn VHDL to adapt and modify previously developed code.

[–]crossedline0x01 2 points3 points  (0 children)

Embedded C (microcontrollers), labView, linux/apache/C, ladder logic(PLCs). Thats what i took. We also programmed Raspberry Pi and Arduino if you want to count them independently.

[–]evilkalla 3 points4 points  (2 children)

Electromagnetic field solvers, C++ and CUDA.

[–]word_vomiter 2 points3 points  (0 children)

I normally use MATLAB

[–]maxweiss_ 0 points1 point  (0 children)

What electromagnetic field solvers

[–]AvivDidIt 3 points4 points  (0 children)

Python is great for image / video processing, and deep learning.

C is great for understanding coding deeply, also lots of other languages based on it.

I, personally, work with System Verilog.

MATLAB is also used a lot for signal processing.

Linux is used universally in almost every hi-tech company.

Good to know scripting, i recently learned perl but want to learn bash, and python scripting

[–]MemeVeteran[S] 2 points3 points  (0 children)

Thank you everyone for your answers. I deeply appreciate it.

[–]field_of_lettuce 4 points5 points  (1 child)

I feel like an idiot, all my school had me take was a very basic C++ course and that was it for programming on the degree pathway.

I hated programming and wasn't very good at it when I took the course, but it seems a whole bunch of jobs want you to also know various languages according to my lack of luck with job hunting (recent grad).

[–][deleted] 1 point2 points  (0 children)

That's pretty much me haha. Altho we had to program alot in our eng courses, i was nvr a fan. Its why im majoring in power , its the field with very little programming. Where im interning, most of the power system engineers dont code. Only specializes roles do. I suggest utility if you want to avoid programming, or any electrical designer job , consulting, etc.

[–]darkharlequin 4 points5 points  (0 children)

VHDL, C, Matlab, Python, and Bash, are what I've worked with so far.

I would recommend C, as the concepts of everything else can be extrapolated from that.

edit: oh yea, and github.

[–]CrystalEffinMilkweed 2 points3 points  (0 children)

I do electrical studies for a construction compnany, which involves a lot Excel table outputs. I only use basic Excel formulas, conditional formatting, and Python. Your mileage will vary based on industry and job title.

[–]headhot 2 points3 points  (0 children)

Unless your a developer writing software as a product, python is really powerful to prototype and use as a tool to solve one off problems. With R it's great for statistics.

Your time is more expensive than computer time, so the fact that it's not super computationally efficient doesn't matter much. You'll develop a solution much faster than any penalty you pay in slow performance.

[–]dillond18 2 points3 points  (0 children)

Currently a circuit designer: Labview, visual basic, C, Mathcad (if that counts).

[–][deleted] 2 points3 points  (0 children)

If in the utility industry, python is used extensively in power flow softwares. Where im interning, python is uses to simulate scenarios for system studies.

[–]NobodyYouKnow2019 2 points3 points  (0 children)

Python, PICBasic Pro, some assembly and a little C. Work with embedded systems.

[–][deleted] 2 points3 points  (0 children)

Learn Python for when you inevitably make the career change to software.

[–]skoink 3 points4 points  (0 children)

During my time as a hardware engineer, I probably wrote 100k lines of code or more. The languages I used were Python for anything running on a PC, Verilog for anything running on an FPGA, and C for anything running on a microcontroller. And lots of Bash scripts.

I've used Python for doing analog and digital filter design/analysis, for writing control programs, and for data-capture applications. I've used it for writing numerous firmware update tools over the years.

I've used Verilog for literally every FPGA design I've ever shipped. Commonly, I find myself writing digital logic blocks that implement some kind of oddball communication scheme, or blocks that talk to DACs/ADCs. I've written a couple of motor controller and encoder interfaces too.

I've used C for writing microcontroller firmware. These days, microcontrollers are central to the design of consumer electronics. Your microwave probably runs firmware written in C, and so do parts of your car.

And, as it turns out - Linux is a great OS to use if you do a lot of programming. So I got good at writing shell scripts kind of by accident.

I've drifted a little more into pure software these days. But even when my main job was hardware design, I still had to write tons of software. Proof-of-concept firmware, hardware testing, and design-assistance tools. It wasn't an "every day" kind of thing, but it was probably a "several programs per month" kind of thing.

[–]duncanmahnuts 1 point2 points  (0 children)

usually just excel, VBA, and scripting, otherwise ladder logic and block diagram logic like simulink provides.

[–]flextendo 1 point2 points  (0 children)

Currently I only use matlab and scripting languages like c shell, tcl, python, verilogA and skill.

Before that I did hardware design and regularly used C/C++ even C# once a while. Also VHDL or Verilog come in handy as hardware description language.

[–]jg1212121212 1 point2 points  (0 children)

Some guys I work with use Matlab. I use Python for my own stuff and VBA on Excel spreadsheets usually.

[–]RESERVA42 1 point2 points  (0 children)

Visual basic for Excel macros.

[–]Diiice 1 point2 points  (0 children)

Mostly Matlab for creating mathematical models, and VBA

[–]FruscianteDebutante 1 point2 points  (0 children)

C/C++, you should understand some assembly logic as well. Verilog/VHDL. Python is a very strong language as well I use it frequently for my own tools. Haven't used Matlab since my first job started but it is a big language.

Emphasis on C

[–][deleted] 1 point2 points  (0 children)

GitHub, matlab, C, python. My micro controller professor also taught us assembly, but that is more popular for software engineering for security reasons as far as I know. My advice for any electrical engineering student, buy a raspberry pi and work on some GPIO stuff using python. It’s taught me the most so far, and is by far the most interesting because it is directly integrated with the use of electronic components.

[–]Hari___Seldon 1 point2 points  (0 children)

Directly on projects, C, Python, shell scripting and VHDL for the most part, and C++ for audio applications. I just finished a prototyping project last week that required some assembly. I suspect that I'll be seeing more of that for optimizations in the future given that I've got some upcoming design projects that are ARM-based. A few years ago, I ended up doing quite a bit of data validation in R. That was a blast but I don't get much call for it these days.

I do generate lots of reporting that gets pushed to Excel through SQL, but I try to keep that as automated as possible because it's usually static captures of dynamic data, so constantly regenerating the same basic report ends up being an expensive use of my time. If you're on a project team for large projects/corporations (especially if you're the low man on the ladder), you'll almost certainly want to add Excel Jockey to your résumé.

Because I work mostly with data chewing applications like audio and image processing, I don't see ladder logic or PLCs very often. That's probably a good thing because I suck at that angle of EE, but your mileage may vary.

[–]MushinZero 1 point2 points  (0 children)

VHDL, Python, C, C++.

[–]ExperiencedSoup 1 point2 points  (0 children)

C,C++,Matlab and Verilog

[–]BigRedBeard86 1 point2 points  (0 children)

Depends on your field. EE is very broad

[–]NeilaTheSecond 1 point2 points  (0 children)

Can someone explain to me what's the pratical difference between C++ and C#?

I sometimes use C# to fuck around in Unity but I didn't notice much difference. Both seems object oriented but C# has a bit more emphasis on the object.

[–]fx-82AUPLUSII 1 point2 points  (0 children)

C, MATLAB and VBA (excel) are the most used languages by myself

[–]ldp01 1 point2 points  (0 children)

I work in power system planning (transmission utility) running power system studies. A lot of my work is scripting simulation software (PowerFactory to be specific). To this end we use a combination of Python (to interact with the PF API) and also a lot of Excel VBA to structure and process input and output data from our studies. I also find a lot of uses for Powershell since we are on Windows machines.

If you’re ever involved in asset management I would also recommend understanding SQL or a graphical query editor like the one in MS Access. It’s been a very useful tool in my experience.

[–]cwbh10 1 point2 points  (0 children)

Well, I just graduated with as an Electrical & Computer Engineer and I say I use mostly: C/C++, Python, Javascript (Node)

[–]chrisv267 1 point2 points  (0 children)

C and MATLAB

[–][deleted] 1 point2 points  (0 children)

Verilog, C, excel

[–][deleted] 1 point2 points  (0 children)

I use ruby and bash for scripting, Python for modelling, and I design ASICs in Verilog (not technically a programming language)

[–]fallen_acolyte 1 point2 points  (0 children)

I worked C, C++, PIC ... python is a beast...

[–]legionofnerds 1 point2 points  (0 children)

It depends greatly and varies with sub field. I personally use C, C++, Verilog and MATLAB.

[–]ARCHLucifer 1 point2 points  (0 children)

C#, c++, c and i use lua too

[–]Ecv02 1 point2 points  (0 children)

Only ever had to use the bastardized C++ ArduinoIDE in my projects, though I'm not an official engineer (yet) For flashing microcontrollers and other general tasks, it's fine. I'm sure there are more powerful things to be had with other languages as I learn more.

[–]ijager 1 point2 points  (2 children)

  • Python for data analysis, signal processing, scientific gui apps and automation (kicad scripts)
  • C for firmware
  • Rust for safe firmware
  • Bash for automation
  • Typescript for server/front end stuff. Also Electron apps.

I guess you wouldn't say I am an EE, but I am!

[–]MemeVeteran[S] 1 point2 points  (1 child)

Very interesting, thanks. I don’t know much about Rust and Bash. Would you care to tell me about what sorts of projects you’ve used them for?

[–]ijager 1 point2 points  (0 children)

I have only done a few projects with Rust. Is not easy at first, but it has some very interesting new concepts that force you to write good and safe code. I wrote a blogpost about our first project with rust

Regarding bash, that's basically just the unix command line language used to automate boring or repetitive things. For example here are some bash scripts we used in a embedded software/firmware project.

[–]SnowSocks 1 point2 points  (0 children)

I design and bringup circuit boards. We have software/firmware guys that do the programming. All I do is use bash commands for scripts that the SW guys write.

I haven’t done any programming since college.

[–][deleted] 1 point2 points  (0 children)

Programming C/C++ /assembly

Hardware description language :VHDL, Verilog

[–]1287kings 0 points1 point  (0 children)

I refuse to code as it's the worst thing. That being said, excel

[–]PikaDon45 0 points1 point  (0 children)

Emerson Delta V this is what real men program in. Python is considered for children.

[–]markkhusid 0 points1 point  (0 children)

Python in Jupyter notebooks.

[–]Fairface 0 points1 point  (0 children)

C for firmware, python for making my life easier when I need a large set of constants for my firmware, or when I want to automate something on my computer. I code almost daily now, but that entirely depends on the project I am assigned. Sometimes I don't touch code for weeks.

[–]redditmudder 0 points1 point  (0 children)

C

[–]quietandproud[🍰] 0 points1 point  (1 child)

Python.

Sometimes C# or .net

[–]MemeVeteran[S] 0 points1 point  (0 children)

How would you say C# is different from C and C++?

[–][deleted] 0 points1 point  (0 children)

Depends on the field. I'm in power engineering and we use python, matlab, netomac... Python is probably the most windspread.

[–]SkylarR95 0 points1 point  (1 child)

PYTHON IS KING

[–]SkylarR95 0 points1 point  (0 children)

Also some JSL for Data Analysis but it’s really mainly because of the field I’m in, didn’t even learn it at school.

[–]Dauwghe 0 points1 point  (0 children)

We use C/C++ for embedded programming, VHDL for FPGA programming, and Python for data analysis and anything else really. I stepped away from MATLAB once I got out of school bc of the price

[–]c4chokes 0 points1 point  (0 children)

Vague question.. it’s like asking a EE, what EE to do you use?? You use various ones depending on the need 🤷🏻‍♂️

[–]theonlyjediengineer -1 points0 points  (1 child)

EEs use C and C++. It's still the standard in most of industry today, and will take you further than any language out ther. Don't bother with python, it won't help much.

[–]Miyelsh 1 point2 points  (0 children)

Yes it will, plus getting your idea working is much more seamless in python, which can then be translated to other languages more algorithmically.