Advertisement

Do software engineers really need to know low level stuff anymore?

Started by March 25, 2011 03:11 PM
22 comments, last by Antheus 13 years, 7 months ago
Assembly is not useful unless you are doing specialized work. It has zero use in windows, you can just use c/c++ to do the same thing.
They hated on Jeezus, so you think I give a f***?!

As high level programming languages such as C#, Java... developing, many people claim that they will be alternative to language such as Assembly, C/C++, which gives you access and control to computer hardware


Do you need access to hardware:
Yes) Use C/C++/Assembly
No) Use something else

because programmers should focus on creating the program and solve problem, not wasting time dealing with the computer to make it work.[/quote]
Is your job to "create the program and solve the problem"
Yes) Use best tool for the job
No) Use whatever

With the hardware keeps improving,[/quote]
Is the hardware improving fast enough to outweigh the overhead of abstractions
Yes) Use the tool which allows faster development
No) Use the tool that will actually produce something working

the performance between C/C++ and Java will not be significant, and big game might be able to be programmed in language such Java.[/quote]
Does your work involve heavy multi-media work, user front end, low-latency/low-jitter response or client applications
Yes) Don't use Java
No) Use Java

Does that means everything we learn about low level stuffs is not practical for the software industry anymore?[/quote]
Is knowledge and experience rewarded at your workplace
Yes) Learn about all facets of development
No) Don't bother, your job will be outsourced by the end of the year

Does that means, Assembly and C/C++ will become relevant to electrical engineers only, since they would be the only ones who needs to program for their electrical components?[/quote]
Do their tools provide all functionality they need
Yes) They will use most productive tools
No) They will use whatever it takes to get the job done.




Were the replies above funny?
Yes) Yay!
No) Boo!
Advertisement
Absolutely, positively, yes. Who do you think designs the runtimes for C# and Java? Or works on kernels for existing or new operating systems? Or writes the code for robotics or space probes that have to make guarantees about timing? Or writes drivers for new hardware?

Even if you're working on an application, like Photoshop, sometimes performance really does matter. Do you know how to optimize a filter's execution against a 250MB image in memory? Do you know how the L1 and L2 caches operate? How common paging mechanisms operate? How spatial and temporal coherence affect all of those systems? Such knowledge can make a common operation like an image filter run an order of magnitude faster.
http://www.ibiblio.org/lifepatterns/src.41d/LifeGen.java


Some code I encountered whilst browsing game of life sites. This is written in Java, the language you are talking about.
"It's like naming him Asskicker Monstertrucktits O'Ninja" -Khaiy

Do software engineers really need to know low level stuff anymore?[/quote]

My short answer is yes.

End of topic ;)

"The only thing that interferes with my learning is my education"

Albert Einstein

"It is a miracle that curiosity survives formal education"

Albert Einstein


http://www.ibiblio.o...1d/LifeGen.java


Some code I encountered whilst browsing game of life sites. This is written in Java, the language you are talking about.


And here is picture of Theodore Roosevelt riding a moose.

Your point being...
Advertisement

Assembly is not useful unless you are doing specialized work. It has zero use in windows, you can just use c/c++ to do the same thing.




False.

Code generation, certain types of reflection, interoperation between virtual machines and native code... all make use of assembly language, or even native machine code.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

Math is like air. Everything you will do will involve some kind of math. Learn as much of it as soon as you can, because after that , it gets much harder to back track.

[quote name='mrchrismnh' timestamp='1301076860' post='4790438']
http://www.ibiblio.o...1d/LifeGen.java


Some code I encountered whilst browsing game of life sites. This is written in Java, the language you are talking about.


And here is picture of Theodore Roosevelt riding a moose.

Your point being...
[/quote]


The point is, OP is saying "Java is this high level language" and I'm like, "here is some Java code that is rather low level"
"It's like naming him Asskicker Monstertrucktits O'Ninja" -Khaiy

Casual games like the indie ones that are very popular the last few years through cell phones and networks like steam can, to a great extend rely on the fact that "computers are very fast nowadays", and be written in high level languages like java, even in cell phones! But there are games that need all the performace they can get and in these scenarios, if a given program is 10% slower in Java than in c++, its 10% slower no matter how fast is the computer. And by the way, if i am not mistaken, one cannot write SSE code in java at the source level so this may be a turn off for game engine writers. So it boils once again down to the fact that you have to choose and use the right tool for the job, and c++ is far from dying. As for mathematics, your life when programming games will be way easier if you are familiar with the associated math topics, like linear algebra, calculus and numerical methods. There are many users in these forums who ask game programming questions the answer to which is a simple formula with a few dot and cross products or 2-3 matrix multiplications. So sitting down and learning this stuff will make your game-coding life far easier and the time investment will pay off well.

This topic is closed to new replies.

Advertisement