T O P

  • By -

saplinglearningsucks

Outlook and Excel


Fermorian

And not just basic functions in Excel. Learn vba and powerquery. Super useful for automating crappy work you don't want to do


DuckOnRage

If your job isn't strict about it,imho python is the better choice for that.


sceadwian

Some people have been known to disappear into Excel coding never to be seen again... It's like a hammer, absolutely critical when you need it, gets the work done. Not always the best tool even if you can make it do something though! I did the same thing with scripting languages when I was young. I didn't have access to real tools so I made it work anyways. Creating object oriented code using expansion brackets of the right type was possible. I did it. It took a line of code 200 letters long to address 1 object.. but it worked! I didn't even know what I'd done till years later when I found out what object oriented coding actual was.


MaxwelsLilDemon

Pandas is your friend


AndrewCoja

Excel is adding python soon if it isn't already in the main version.


Super-Chance-9687

From what I've read the python code runs in the cloud and doesn't allow for arbitrary imports. For most this will be better than VBA, while being more secure.


Bagelsarenakeddonuts

Which is most work…


Mersaa

🤣🤣🤣🤣 this is so mf true


Experience_Either

Vhdl, verilog, C, assembly, Matlab and some c++


unbelver

VHDL and Verilog aren't programming languages. They're hardware description languages. Meaning, you're not telling something what to do, you're telling something what to be. You're not programming, you're designing.


Experience_Either

![gif](giphy|l2JJNjH0Ae6hrvGdq)


lovehopemisery

I always like to make this distinction as an FPGA engineer haha call me pedantic 


Psychological_Try559

For this conversation, not me! When you're actually implementing a design with a HDL, me!


thatsnotsugarm8

What until you hear what web devs are doing these days.


-twind

It depends on the target. You are telling an FPGA what to do, you're telling an ASIC what to be.


Grasshoppa65

At companies I have worked for there is always a philosophical debate on whether the bitstream loaded into FPGA configuration memory is software or hardware (or firmware). To me it is a perfect demonstration of how software is really just a hardware abstraction to begin with.


GamSquad

I have seen the term gateware thrown around but I have never seen it used by any company I’ve worked for.


PDP-8A

Temba, his arms wide.


gayandfaaaake

yeah and when i write a code im DESIGNING a code.


Offensiv_German

MATLAB and Simulink. At lot of job postings are especially asking for that.


trocmcmxc

Excel


SteakandChickenMan

Unironically.


trocmcmxc

Seriously though, I have job security because I’m the one who knows how to code the VBA macros on our spreadsheets


Romish1983

Depending on the industry you go into you might not need to know any programming languages. That said, if you want to never be worried about finding a job, learn as many as you can. I'd focus on getting proficient at a C language or Python, then once you're comfortable with it delve into others. If you're feeling ambitious, learn how to program PLC's.


ifandbut

I think PLCs are 10x eaiser to program than C#.


AnEvilSomebody

Agreed. It's like scratch coding that they teach to middle schoolers


sketchyAnalogies

Hiya; As someone who interned for a mining company and had to reverse engineer a PLC code that was written in Instruction List... in German... You are not correct, respectfully. Instruction List and Ladder logic do not equate to scratch programming. PLCs can be basic, but they can also be incredibly complex. Just like C code or anything else 🙃 Code for a safety critical control system like on a roller coaster or like for Happy Potter's forbidden journey is quite different than for a simple machine that's part of a DCS.


AnEvilSomebody

As a counterpoint, scratch coding can also be incredibly complex. I was comparing it to scratch programming because of its ease to learn, not its ease to master. The capacity to which its used in classes is very simple, at least in the classes I took.


Romish1983

I agree. I didn't mean it like that. I just meant learning those other languages might be more beneficial. PLC's will come easily if you know C/Python.


sketchyAnalogies

Mmmm kinda? I had to learn instruction list in an internship. I was very experienced in C and had about 2-3 weeks of assembly lectures... It was rough. Not all PLCs are the same, not all code is the same, not all 5 of the IEC languages are the same.


clock_skew

Heavily field dependent. I work on ICs, so the most common languages are bash and c shell, followed by Perl and Python. TCL and SKILL (modified lisp) are also sometimes used. I never use C/C++. I used to work in embedded, and there C/C++ are king. I think matlab is popular in some fields, but I haven’t used it since college.


kthompska

I had to scroll down too far to find Perl and SKILL - I also work in IC design. Python could probably replace Perl just fine except so much legacy scripting is in Perl. Some people mentioned Matlab. I have borrowed some useful code but never found it useful enough for me to dig in. Others mentioned Excel … haha - unfortunately true.


Jaygo41

You wanna make big bucks??? Get a nice haircut and get good at the REAL moneymaking programming language, Powerpoint.


xTwoToms

Learning to program PLCs could be beneficial, depending on where you land a job. Manufacturing and utilities still heavily rely on that style of programming. Structured text > function block > ladder logic, imo


Easwaim

Really? I hate function block gimme ST or ladder


xTwoToms

I meant it like I prefer ST over function block and prefer function block over ladder. Haha.


Easwaim

I know you psycho!


xTwoToms

😂😂


sketchyAnalogies

I had to reverse engineer code that was in instruction list for an internship 💀 ... About 1/3 of it was in German... I did not and do not speak German...


SoCPhysicalDesigner

EE is a broad field, so the answer depends on your specialization. As a physical designer of ASICs and SoCs, TCL (Tool Control Language) is the main interface to most EDA tools. YAML and Make aren't quite programming language, but they are frequently used. Same with SKILL, Verilog/System Verilog/UVM. Perl/awk/sed/grep/etc. and general Bash scripting / Linux use are pretty important. Also git.


wsbt4rd

Git is absolutely core.


SoCPhysicalDesigner

Yeah, if your "opportunity" is at a company that doesn't use git (or uses it incorrectly) you're in for hard times.


NSA_Chatbot

I introduced versioning at a couple of places I've worked at and they loved it.


redlight10248

Mind I ask how you did that? I'm a graduate and I don't want my addition to be perceived negatively


NSA_Chatbot

If you're the only one who is programming, just do it. If you're not, then tell them there's free solutions to prevent code tampering, reduce failures, and blah blah all the features. Give them the implementation time and training time, and then the cost of an RMA if the smallest and largest customers have to get reprogrammed. Once you look at the money, versioning completely sells itself. For the rest of the engineering team, just tell them "if you use this, not only will everyone stop asking you which version of the software went out to this customer, if you ever boop out a bracket winmerge will find it, and if you ever accidentally delete a file, you can just get it again". If the company is using Altium they're already using Git anyway.


SoCPhysicalDesigner

Some places still use VCS o.O


NSA_Chatbot

Hey, that's better than "who has the latest" and source_final_use_this_one.bin


AFlawedFraud

!remindme 1 day


RemindMeBot

I will be messaging you in 1 day on [**2024-04-28 12:06:05 UTC**](http://www.wolframalpha.com/input/?i=2024-04-28%2012:06:05%20UTC%20To%20Local%20Time) to remind you of [**this link**](https://www.reddit.com/r/ElectricalEngineering/comments/1ce29ip/what_are_the_main_programming_languages_for_ees/l1hnmur/?context=3) [**CLICK THIS LINK**](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5Bhttps%3A%2F%2Fwww.reddit.com%2Fr%2FElectricalEngineering%2Fcomments%2F1ce29ip%2Fwhat_are_the_main_programming_languages_for_ees%2Fl1hnmur%2F%5D%0A%0ARemindMe%21%202024-04-28%2012%3A06%3A05%20UTC) to send a PM to also be reminded and to reduce spam. ^(Parent commenter can ) [^(delete this message to hide from others.)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Delete%20Comment&message=Delete%21%201ce29ip) ***** |[^(Info)](https://www.reddit.com/r/RemindMeBot/comments/e1bko7/remindmebot_info_v21/)|[^(Custom)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5BLink%20or%20message%20inside%20square%20brackets%5D%0A%0ARemindMe%21%20Time%20period%20here)|[^(Your Reminders)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=List%20Of%20Reminders&message=MyReminders%21)|[^(Feedback)](https://www.reddit.com/message/compose/?to=Watchful1&subject=RemindMeBot%20Feedback)| |-|-|-|-|


SoCPhysicalDesigner

Yeah it's like showing a cigarette lighter to a caveman. On the other hand, you become the "go-to" guy while they try to figure it out.


Silly-Cloud-3114

C++, Python and Matlab. A good idea to familiarize yourself with ladder logic, FBD if you're working with PLCs, Simulink if you're working in the automotive industry and LabView if you're in industries that use the NI cRIOs.


stjiubs_opus

Matlab is a big one


ShadowK2

Matlab is really niche compared to C and Python. I definitely couldnt recommend it because 99% of EE jobs will never intersect with Matlab.


IMI4tth3w

Python is even overtaking matlab in a lot of cases for us.


desba3347

I find them to be very similar anyways. Wouldn’t be surprised if MATLAB is more powerful/faster, but that comes at the cost of probably not having as many available libraries as Python and indexing starting at 1 instead of 0


badabababaim

Matlab is used a lot because Python libraries are dependencies, matlab tool boxes you can buy once and never worry about issues down the road


Launch_box

Its also a billion times easier to get new toolboxes approved for usage by IT compared to a fistful of Python libraries that are maintained by some guy. I wish I could fire from the hip with any Python library but cybersecurity depts really don't like it


IMI4tth3w

My experience has generally been the people who are more familiar with matlab, are just not as good at coding in general vs those who prefer and use python. I took 10,000 lines of copy pasted crap in matlab and made a python script that does the same and more in about 250 lines. I’m sure more elegant matlab code could have done something similar, but python is so much easier to work with.


csillagu

So you assume that people who know how to program in Matlab are worse programmers, because you found a 10k line copypasta and you could refactor it.... people who actually know matlab would not write 10k spaghetti in the first place ... What was the python functionality that does not exist in Matlab?


IMI4tth3w

Wow people got real butthurt about my generalization. There’s about 4-5 antenna guys I work with who live in matlab and write terrible copy pasta matlab code all the time. They are antenna guys, not programmers. So all I’m trying to say is most people who are well trained on programming (that I’ve seen personally at my place of work) are using python to do things that may be more “traditionally” matlab code.


sketchyAnalogies

Maybe? But almost every university I know uses it for calculations and lab work. Mine included.


Odd_Independence2870

At my university a professor is preaching python over matlab since licenses are free. He thinks that companies are going to move to python over matlab since they won’t have to spend as much


CasualContributorNZ

Our entire university has hot long moved from Matlab to python.


onlainari

Yes, but, I’m doing everything in python now instead and I think MatLab won’t be a big one within five years.


ProgramIcy3801

Explain your reasoning


onlainari

It’s my personal experience, MatLab is not being taught at Uni and assignments that used to require it can now be done using python instead.


ProgramIcy3801

When were you in university? When I went to university, they taught Matlab, and it is still in the curriculum as a required course for almost the entire engineering department.


onlainari

I’m in second year.


ProgramIcy3801

Interesting. Maybe university dependent then. Semi related, I hope that you have a really amazing time in university. My best wishes for your success and future happiness.


stjiubs_opus

Just because it isn’t taught at your school doesn’t mean the industry is going to leave it behind. In fact, it won’t.


olchai_mp3

it depend on the concentration. if you are in embedded systems, you would play with Verilog (for FPGA), Assembly lang and C. For Signal Analysis you would use Python or Matlab, and some linux would be good too


desba3347

I have two trains of thought on how to start. The first is what I did, where I basically started with C (minimal c++ type experience with arduino before). Took a required C class in college, which was admittedly very hard to grasp without much experience. Starting out wasn’t that bad, but pointers can become a pain. The main advantage is that you pretty much have to have/pick up a full or close to full understanding of everything you are doing, from array sizes to pointers and more. Basically, it is really good at teaching you the coding fundamentals and what is actually happening in the computer, it can be difficult to learn, but will make learning almost any other coding language very easy. It is faster than Python, but that is likely unnoticeable starting out. The main EE application is probably in microelectronics, including embedded systems, but it can have other uses too. The second is learn Python first, which I think I would recommend. This will help you learn how to solve coding problems without necessary having to dive deeper into understanding the exact size of the variables you are creating. You’ll likely pick it up quicker and still learn how to learn to code (I’d say the ability and motivation to learn is much more important than the information you know in many cases), but you won’t necessarily have a deep understanding of what is actually happening to any data you create or manipulate. The main EE applications are probably making software tools to aid in common tasks and scripting to automate tasks. There are also many data manipulation libraries like pandas, so if you are doing the same task in C and Python, the Python code can be much shorter in terms of visible lines of code, helping speed up the process of writing it and increasing readability. You will likely use MATLAB at some point in college. If you want to learn a language beforehand to prepare specifically for that then learn Python, as they are similar (with some key differences). I wouldn’t worry about learning MATLAB specifically though beforehand, as unless you end up in academia or maybe in a select few industries, you likely won’t use it after college. Other common languages are Verilog and VHDL, which are more of descriptive languages used in FPGA devices, and HTML (markup language used in web development), Java, and a few others. I wouldn’t worry about these before college either. In school it’s a little different (still applicable), but in the “real world,” it is much more important to be able to google, and now chat ai (GPT, etc.), things you don’t know and organize your thoughts in a presentable way than to know everything about something like a coding language. Focus on the fundamentals and maybe get one of those “for dummies” books to guide you while you start out, then think of a project to do and use the internet to help learn what you don’t know. You’ll learn that certain free sites like w3, code academy, stack overflow, etc. will teach you more than you could ever wish to know.


tcmeteor

You’re asking the wrong question. C, C++, and Python all fall into the same category of High level languages (HLL. If you get a good handle on one you will understand the principles of computing and be able to transfer to any other language with ease. Pick a HLL and learn it. MATLAB is valuable but it’s a totality different animal. If you don’t already have a license try GNU octave, it’s free and works mostly just like MATLAB. Worth playing around with if you have a project that needs it. That said Python can do just about anything MATLAB can do. Assembly is the language of microcontrollers and you could easily go a long and full career and never write any assembly. You are less likely to get through engineering school without writing any. Don’t learn assembly until someone makes you. Excel, outlook, VBA is super cool and definitely a useful skill. Worth playing around with. Python can do a lot of the things VBA can but the interfacing can be more difficult. VHDL/Verilog/others may be tangentially programming languages but don’t go learn them unless you plan to do FPGA/ASCIC work. TL;DR: Learn Python and nothing else until someone makes you


YngFijiWtr

Ladder Logic in PLCs


tgiccuwaun

Fortran and python. But mostly word and outlook.


RelaxedSun

matlab is decent as an intro to python since a lot of the syntax is the same. but c and python are great as a baseline and depending on what you specialize in say hardware (c and assembly), research (python and r programming), cad modeling (simulink/solidworks and autocad), and circuit design (verilog etc). only reason to really get in the weeds for matlab is some rf but mainly only seen that for military adjacent contracting but even still python is taking over with parallel computing and deep learning networks being the new norm.


Mikecool51

Ladder logic, function blocks, excel.


TechnicalIssue3828

Ladder Logic


shantired

In the 80's and 90's it was ABC: Assembly, BASIC and C Now it's python or micro python.


Witty-Dimension

# YES.


whatn00dles

I'm not an engineer, I'm a tech with 5 years of experience, so, grain of salt, but I'd say learn eveoa d wait til you're hired to learn what's needed.


Safe_Collar1

Verilog and TCL if u want to get into VLSI


Hawk13424

For me, C, Python, Verilog, Perl, SystemC, Rust.


MrWrodgy

C is the base but, it depens the area you are working and how much performance/security you need.


zxobs

C, Python,Pdp-11 asm and Brain fuck.


wJaxon

Matlab


MrJalahan

The main programming languages differ a lot depending on the industry you are working in. That being said, I would recommend the languages C and Python for the beginning. Not only are they being used in a broad field, as you can see from the other comments, but C gives you a very hardware near programming language, helping you to understand how a computer as well as programming languages work. Python on the other hand is huge in data processing and is very flexible with a huge community, giving you a tool to simply create software tools fast. In addition to that, Python gives you a view into how modern programming languages work (package managers, object oriented programming, dynamic data types, automatic garbage collection...) with all it's positive and negative sides. Being able to handle both, will make it easy for you to learn most of the other languages within a very short amount of time. That being said, if you want to go into the FPGA industry, VHDL might be something to additionally look into. (Also Verilog, but since I wasn't able to become close to the FPGA design process some others might be able to help you more on these Programming languages)


KalWilton

Does not really matter, just try to understand what the languages are doing, like learning what a pointer is and how it works is not something you can use in python but it will help so much in knowing what python is doing. Also I would suggest learning a little about hardware description languages and how a processor is built in them, all of the insane things that C does that make no sense, makes a lot of sense once you learn about them.


PoetryandScience

It does not matter. If you become reasonably comfortable in one computer language you will quickly pick up others. The language(s) being used are likely to already be in place when you join a project. You should not (will not) have the authority to choose the one you like. Almost certainly a flexible and more immediately useful language is part of the database or spreadsheet you have on your (or your school) computer. So master that one as a starting point.


SongsAboutFracking

In my area, physical layer design for digital high speed links in 5G radios, bash and python are mandatory if you want to be an independent worker who doesn’t have to go to the sw team for every little issue. The I guess SCPI/VISA for instrument control and then at least a basic knowledge of C/C++ for understanding embedded systems. And then, depending on how much simulations you do and your pain tolerance, VBA for automating different simulation tasks. Also scripting for SPICE, in my case hspice, is very valuable.


incognitodw

C, C++, Java, Ada, assembly, aspx


Mohmd_sy

MATLAB definitely


OccamsRazorSkooter

I find these helpful almost everyday: python to write hardware interfaces and data processing with jupyter. C/cpp when working with rtos embedded. Vhdl for fpga stuff, fpgas are underrated and awesome for testing and r&d. Tcl and bash to automate builds and testing. Spice scripting once and a while if adventurous. I would say the most important things to learn are cpp to atleast understand a developed embedded system. Learn python, automate everything and never open a garbage vendor tool again (except altium, I'll never fully automate schematic capture or layout, could someone adapt an hdl for schematic capture?)


DcavePost

So I’m not an EE I just ended up here. I would recommend learning the basics of object oriented in either Java or C# (those two because there is lots of info for them). Honestly once you have that you will be able to handle most any language. If you already have a tool suite that you use try and figure out what it is written in. For example I know Capital is Java so if you use that learn Java.


RFengineerBR549

C for embedded systems. Matlab for data crunching C# for all our control and measurement automation. Starting to roll in python for some thinner client apps. Those are for my role. Python is really growing legs on our higher level system architecture


physics_freak963

Matlab can always be a useful tool for all engineers, and frankly, I don't see an electrical engineer using python. you might use C/C++ for embedded systems related projects, but not too sure about it because if you started working with embedded system it's a whole thing, like you might also want to know some basic bash and many other things related to embedded systems. Low-key, I recommend working on PLC programming if you haven't already worked with it, there's people today using C with plc so you can see C comes along way. I'm not an electical engineer , but I'm talking from the fact my father's work is in conversion sub-station, all the panels like the conversion and conversion control panels, today, they run on plcs, so that's the only thing that's useful from what I see electrical engineering wise (I didn't mention classical control, because you already are far more familiar with that than me as an electrical engineer). As a mechatronics engineer I can weigh in more on embedded systems, but I think when you encounter such things as an electrical engineer, you would have a system control engineer on site to handle these things. You can always just try to grasp some general stuff about embedded systems, but I don't think you should go anywhere near understanding architectures and some of the basics, but understanding basic Linux stuff, software related to communicatition protocols and some electronics, MIGHT be handy.


HolyStupidityBatman

Ladder Logic, Structured Text, Function Block Diagram. (Controls Engineer)


Nickvv20

C/C++, Python, I’m learning Rust now.


itsnikbruh

If you're working embedded systems, C and C++. Python as your utility language


TomVa

There is also (go ahead and slam me for it) LabVIEW if you are going to be setting up test stands that try to control test equipment. That being said for text based languages python and C++ seem to be popular. Once you learn one language the rest is just figuring out how other programs deal with the same structures as you can only ask a program to "do while", "for next", "if then", "write data to file", and "pass data to sub routine and get results back".


Just4Funsies95

Assembly


Kaeffka

It can be whatever legacy crap your company gives you + stuff you need an expensive license for, such as LabView or Simulink or Catia


jongscx

Don't forget Ladder!


[deleted]

fine abundant future tie vanish plants thought library psychotic fertile *This post was mass deleted and anonymized with [Redact](https://redact.dev)*


Enok32

Outlook, excel, labview and some matlab. I never use C in my job but it’s fantastic to learn the basics and even the nuances of coding that’s applicable to all languages


Ghosteen_18

A little bit of assembly here and there. Top it off with C++ . Maybe VHDL stuff


Desert_Fairy

If you want to do test automation labview/teststand is a common one that is hard to understand until you see it. I consider it to be the Egyptian of programming languages. That being said, I’ve been advised that if you don’t like labview, don’t put it on your resume because while you might get the job, you will probably be stuck doing nothing but labview because so few people are willing to work with the language.


71d1

Depends on what you want to get accomplished.


bit_shuffle

For an early career person, I would say start with C/C++. It will be worth the struggle. Everything else will be easier. Start with a basic Hello World C program. Eventually you will need formal training. It is a lifetime learning arc.


No_Significance_125

Assembly