Which Language Matters Most for Software and Electrical Engineers?

Click For Summary

Discussion Overview

The discussion centers around the importance of programming languages, specifically C, Java, and others, for software and electrical engineers. Participants explore the implications of language choice on learning, project requirements, and personal preferences, touching on both theoretical and practical aspects of programming.

Discussion Character

  • Debate/contested
  • Technical explanation
  • Conceptual clarification
  • Exploratory

Main Points Raised

  • Some participants suggest that C/C++ is more beneficial for understanding computer architecture and low-level operations, while Java is seen as more organized and easier for certain types of development.
  • Others argue that Java's extensive standard libraries contribute to its classification as a high-level language, while some believe it is just a simplified version of C++ with features removed.
  • A few participants express a preference for Python as a more elegant and beginner-friendly language compared to both C and Java.
  • There are differing opinions on Java's complexity, with some finding it unnecessarily bulky and others appreciating its structure and enforcement of good programming practices.
  • One participant shares a personal experience with Java, describing it as a "kludge" and expressing frustration with its framework requirements.
  • Some participants emphasize the importance of learning C/C++ for foundational knowledge, while others suggest starting with higher-level languages before transitioning to lower-level ones.
  • There is mention of other languages like Dolphin Smalltalk and Objective-C, with varying opinions on their utility for specific applications.

Areas of Agreement / Disagreement

Participants do not reach a consensus on which language is more important or preferable. Multiple competing views remain regarding the merits and drawbacks of C, Java, and other languages.

Contextual Notes

Participants express varying levels of experience and personal preferences, which influence their opinions on language utility. There are unresolved discussions about the definitions of elegance and complexity in programming languages.

Nothing000
Messages
403
Reaction score
0
Would the knowledge of C or Java be more important to software engineers? I know that most software engineers would know both languages, but which do you think would be more important to know.
And which one do you think would be more important to an electrical engineer?
 
Technology news on Phys.org
A good scripting language would be sufficient for an electrical engineer.

For a software engineer it really depends on what type of development you want to do. Most desktop software is still written in C/C++. Operating systems are in C/C++. Game development is C/C++. Java is popular in the enterprise, web services, etc.

If you go with C/C++ you'll definitely learn more about computer architecture in terms of memory allocation, addressing, low level operations, hardware interfacing, etc. Java tends to shield people from this type of stuff.
 
dduardo said:
If you go with C/C++ you'll definitely learn more about computer architecture in terms of memory allocation, addressing, low level operations, hardware interfacing, etc. Java tends to shield people from this type of stuff.

I definitely want to learn about these things.
 
If you can only learn one language, learn C/C++. It's essentially the lowest-common-denominator of languages. Everyone knows it, and you can use it on almost any project.

However, it's not the best language to start with. You will be better off if you begin with a high-level language like Python, then move to a lower-level language like C when your skills are more developed.

- Warren
 
Well, I know a little bit of Liberty Basic. I have written one very simple program that solves the pythagorean theorum for anyone angle or side if you give it known values of any two sides, or any two angles, or anyone side and anyone angle. This program is the only program I have ever written, and everything I wrote it with is everyting I know.
Would you like to see the program, and maybee you could see if I would be ready to jump into C and just skip Java.

For my degree I either have to learn C or Java.
 
You'll probably end up knowing both if you're a Computer Science Major. Java is a more organized language than C IMO, and is very well documented (http://java.sun.com/j2se/1.5.0/docs/api/). C is good for low level stuff where you want to squeeze out the best performance, but JAVA is a very clean, modular, language and, once you know it, it will probably be your favorite language because of how well designed it is. I can't say the same for C, last week i had to code a web server & client using C, it would have been extremely easy in JAVA, but was 10x as hard with C. When it comes down to it JAVA is much easier than C. On the other hand, if i were to pick being a pro at JAVA or a pro at C, i would pick C because if you really know it well, then you're a very capable programmer.
 
Last edited:
On the other hand, Java has loads of unnecessary syntactical "salt," lends itself to rather bloated code, and is not really that much "easier" than C. Python is my language of choice for newbies.

- Warren
 
JAVA is a very clean, modular, language and, once you know it, it will probably be your favorite language because of how well designed it is.
Not really. One of my friends made a great comment on this:

"The only reason java is considered a high-level language is because of its extensive standard libraries."

The language itself is more or less just C++ but with a lot of features removed.
 
chroot said:
On the other hand, Java has loads of unnecessary syntactical "salt," lends itself to rather bloated code, and is not really that much "easier" than C. Python is my language of choice for newbies.

- Warren
Modularity and good coding practices are not exactly "necessary" either, but they help you a lot in complex projects especially when working with groups. The "salt" you mentioned works in this direction. In my opinion, Java is the easiest language.

Not really. One of my friends made a great comment on this:

"The only reason java is considered a high-level language is because of its extensive standard libraries."

Java is as high-level as it gets, i can't imagine a more high-level language than Java, it would have to be some natural language. You don't have to like Java but it's hard to argue that it isn't the most rigorous and clean language there is, but if you disagree put forward your reasons.
 
Last edited:
  • #10
God, I hate Java... I wrote a web app for my Abstract algebra class that does modular arithmetic and will draw chords of circles, with each chord connecting an initial value and its modular counterpart (coordinates around the circle)

It was my first java project and I took it up because our prof had us had drawing a bunch of circles for a project thingy... (gug.. that was a lot of work in and of itself)

anyway... the language seemed more like a kluge to me than anything... It seemed more like you wrote classes that magically worked together than writing a program.

here is a link if you want to play with it:
http://acs.madonna.edu/~110236/ModCirc/ModCirc.html

I never got back around to actually drawing numbers to correspond to the coordinates on the circle in order to add any meaning... but it makes some pretty pictures :-)
 
Last edited by a moderator:
  • #11
Well, Java's certainly not a kludgy language... if anything, it's much too strict, and requires too much framework code.

- Warren
 
  • #12
I personally use C/C++. I like it becouse it's fast and it's really great for low-level stuff. But if you want too do something with graphics and soo on it's qouit ugley. For larger projects I prefer using Dolphin Smalltalk. It's not really in (donm't believe it ever was either), but for duing large things it's great (aldo it's hard to learne for a beginner).
 
  • #13
chroot said:
Well, Java's certainly not a kludgy language... if anything, it's much too strict, and requires too much framework code.

- Warren

well,

Kludge:
1.A system, especially a computer system, that is constituted of poorly matched elements or of elements originally intended for other applications.
2. A clumsy or inelegant solution to a problem.

inelegantI would say that the framework problem fits the second definition of kludge perfectly. Java is certainly ineligant.
 
  • #14
LENIN said:
I personally use C/C++. I like it because it's fast and it's really great for low-level stuff. But if you want too do something with graphics and soo on it's qouit ugley. For larger projects I prefer using Dolphin Smalltalk. It's not really in (donm't believe it ever was either), but for duing large things it's great (aldo it's hard to learne for a beginner).

Objective-C has been said to be great for gfx applications as well... it inherits its object-oriented nature from smalltalk.
 
  • #15
I learned both as an EE. I've only used C++ so far outside of my programming classes, however.

I spend most of my time programming stuff in MATLAB.
 
  • #16
Inelegant, Java? I couldn't disagree more. You guys know where i stand, i don't want to argue matters of personal opinion any further. But in my opinion Java is a very elegant language. I don't understand how someone can know Java and call it inelegant. Bulky, i agree with because there is a lot of code that might be deemed superfluous, but it is certainly an elegant language. It is the most Object Oriented language i know.
 
  • #17
It's inelegant, in my opinion, because of its rigidity and its bulk. Elegant languages let you accomplish complex tasks easily, with simple, readable, easily-maintained code. An ideal programming language allows the programmer to focus on the specific operation of his/her program; Java requires so much skeleton and bookkeeping code that programmers are distracted from the meat.

On the other hand, Java does a good job of enforcing good programming standards (like catching exceptions, respecting encapsulation, and so on), so I give it credit there.

In my opinion, Python is the most elegant language in use today. Rarely ever do you find yourself muddled in its syntax, and its high-level features are dramatically more useful than those of Java.

- Warren
 
  • #18
Java programs are easier to maintain than C programs. They are more modular and object oriented not to mention they are far more readable. Elegance in my opinion is connected with how something is structured, and Java is a very well architectured languaged. I can't say the same for C. I don't want to put down C, but i feel that not arguing for Java's elegance would earn me a beating by the Java community. It's practically what the language stands for.
I'm not familiar with Python, but I'm definitely going to look at it to see if you are correct.
 
  • #19
In my opinion, "structure" has very little to do with elegance. Imagine that someone uses language X to write a concise, functioning program with only a few passes through the compile-execute-debug cycle, then hands it to me. I pick it up, look at it briefly, and can see immediately what the program intends to do, how it performs the intended function, and whether or not it's likely to contain bugs. That's elegance. I could care less how strict or explicit the language's syntax is.

That was Java's hallmark "feature": it appealed to purists with its extremely strong typing and explicit, verbose, formal syntax. The architects of Java felt that if you eliminated "syntactical shortcuts," you could enforce good programming practices, and thus create better-quality code. This approach is arguably successful; Java programs are certainly much less "gotcha"-prone that are C programs. On the other hand, Java fails to appeal to the way human beings actually approach a software engineering task. It provides a million classes, but virtually none of the low-level tools involved in efficient algorithm design. Languages with built-in (syntactically trivial) support for lists, dictionaries, hashes, iterators, and other algorithm building-blocks permit rapid, obvious, and correct algorithm design. Consider that the collections hierarchy was only introduced to the Java language somewhat recently, even though such structures are essentially the bread and butter of all algorithms. At least they're present now, but their use is still crippled by all the unnecessary syntactical baggage of the Java language itself.

I'll note that I used to be in your camp: I used to think Java was the greatest thing since sliced bread. I used to teach classed on it. I tried to use it everywhere, all the time. I eventually got over it and found better languages. I still find situations where Java is the appropriate language, but they're becoming more infrequent every day.

- Warren
 
  • #20
-Job- said:
Java is as high-level as it gets, i can't imagine a more high-level language than Java, it would have to be some natural language.

You're speaking out of ignorance. Languages like Python, for example, are much, much higher-level than Java, and are rapidly gaining market share.

- Warren
 
  • #21
Very well, i'll get back to you on that.
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
2K
Replies
46
Views
4K
Replies
86
Views
3K
Replies
38
Views
4K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 102 ·
4
Replies
102
Views
3K
Replies
16
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 29 ·
Replies
29
Views
4K
Replies
4
Views
3K