Programming Language

<p>Warning: I’m EE to the bone, and don’t have much programming experience. I’ve taken an awesome introductory programming class where we learned how to program from the bottom up (a little comp architecture -> assembly programming for a little computer -> C), and an introductory systems programming class. I have no experience with OOP languages. That said, . . .</p>

<p>I don’t know. I think using all those things you said up there without really understanding what they map to could possibly lead to headaches and bad programming practices as well. I think learning something like C first would help programmers learn the fundamentals before they utilize all of fancy abstractions that newer languages offer.</p>

<p>Coming from a theory/CS background, I think your and my ideas of what constitutes “fundamentals” differs, hence our disagreement over what should be beneficial for a novice programmer.</p>

<p>I think that the low-level issues relating to hardware are more advanced, whereas you find them more fundamental. I think that the algorithmics and data structures are more fundemantal, whereas I’m guessing you consider them to more advanced (compared to other things, naturally).</p>

<p>silence kit i used that book a class, only class i ever dropped…i personally would avoid that book at all costs
it is a bottom up approach book, starts with explaining logic gates…which are not extremely relevant to engineering major interested in practical programming to them. (my opinion)</p>

<p>of course you can always skip to the c++ part…or you can buy a c++ book</p>

<p>I don’t think the major emphasis of the book is on digital circuits or assembly programming. It talks about them just enough so that when you start learning about C programming, you don’t get a lot of just-so stories; you get a sense as to how your C statements get mapped to asm instructions, and how those instructions would get carried out by a simple computer. </p>

<p>Anyway, I’ll stop talking about this. It isn’t very helpful to Xav.</p>

<p>I wouldn’t say that. I thin Xav would benefit from hearing different points of view. C certainly has a place in this world.</p>

<p>Wow, y’all are way over my head, but here’s a question.</p>

<p>Son is a junior in high school, and I have found a course taught at our local college, UNO, that he would be able to take, it’s Intro to Programming C++. This would be during the summer session, so it wouldn’t interfere with his regular coursework.</p>

<p>Son has no programming experience, just knows how to do Power Point and Excel spreadsheets, but plans to go away to college, where kids have probably already learned how to program.</p>

<p>Thought it would be a good idea to take a programming course, but could only find C++ offered. No JAVA available. </p>

<p>Would it totally screw him up to take this course, as he will probably have to learn JAVA in college, or would it be helpful just to have some familiarity with programming before he starts college?</p>

<p>Also, I thought it wouldn’t hurt on the job resume department if he could put down that he has taken C++, as well as whatever other courses he takes in college. </p>

<p>He plans to major in biomedical engineering, and may minor in computer engineering.</p>

<p>Son is very gifted at computers and had thought of just buying a book, but when I saw this opportunity for him to actually take a college course, get credit, and it would cost next to nothing, I thought, why not.</p>

<p>Any thoughts on this? </p>

<p>Especially interested to hear from Auburn guy, as you may be familiar with how computer illiterate we are over here in Louisiana. We aren’t 47th in the nation in technology for nothing.</p>

<p>But any other posters are welcome!</p>

<p>Thanks!</p>

<p>I never thought C was that umm…hardware, I suppose. I have heard complaints about it though. Then again, I’ve also heard that most people that use a C compiler don’t even realize.</p>

<p>So, for an Engineer, Java is more useful? I heard it has pre-programmed functions already.</p>

<p>Thanks again for all the input!</p>

<p>

</p>

<p>In my opinion it would be best to find a class that taught the fundamentals, i.e. data structures, algorithms, etc. Oftentimes these classes are taught primarily by pencil and paper, which aids in you not getting all caught up in trying to do X in a certain language because, as you say, your son will most likely have to switch to Java.</p>

<p>

</p>

<p>It’s not, but you can use inline assembly which does require hardware considerations.</p>

<p>C++ will not mess anybody up, no. It’s a more involved language than Java, but as long as the intro is object-oriented, I think it will be ok.</p>

<p>It would be nice to have a pencil-and-paper based data structures / algorithms course, but realistically, that can wait until he gets to college. For pre-college stuff, especially if he’s not going the CS route, just an introduction to the idea of programming, including syntax familiarization and the other things you do in an introductory course, should be more than adequate to help him see if he likes it.</p>

<p>I’d say go for the C++ class.</p>

<p>“So, for an Engineer, Java is more useful? I heard it has pre-programmed functions already.”</p>

<p>At the beginning, I asked why you wanted to learn. You said personal interest. Had you said “Engineer”, I would have recommended C++ rather than Java. It’s harder, but it’s a better compromise between high-level and low-level. If you want to get a leg up in non-CS engineering, I’d say C++.</p>

<p>It’s kinda a little bit of both.</p>

<p>I don’t need to take a programming class in college, but I have an interest in it. I figure I might as well try to double dip and try to actually get something out of learning a programming language than just for fun. So why is C++ better than Java for engineers?</p>

<p>It offers more low-level capabilities, such as:
inlining assembly
pointers
easier hardware interfacing
explicit memory management</p>

<p>It allows both OOP <em>and</em> procedural code to be written. You’ll definitely have to deal with the latter as an engineer, even if the former is better.</p>

<p>Generally speaking, it’s more flexible and powerful. And, despite what people might tell you, it’s a little quicker most of the time. Learning it will position you better to learn C or Java, and it’s a relatively painless transition from C++ to Matlab when that sad day arrives, as it does for most engineers.</p>

<p>I think you definitely get more of a feel for optimization and hardware techniques using C++ as compared to Java. I doubt many engineers consider Java as their primary language.</p>

<p>

</p>

<p>It’s pretty easy to learn Java if you know C++, so no, it won’t screw him.</p>

<p>Also, this essay by an acquaintance, while I think it somewhat oversimplifies things, seems relevant to the conversation.</p>

<p>[The</a> Hacker, the Academic, and the Corporation](<a href=“http://www.consistent.org/terran/2001/mentality.shtml]The”>The Hacker, the Academic, and the Corporation)</p>

<p>montegut, once you learn a language to a certain extent whether it be c c++ java, i would say that the new programmer gains a confidence in programming and changing to another one of these languages will not be that hard since its only an intro class and the fundamentals of the language are covered.</p>

<p>i would say that if he takes that c++ course in high school…learns everything that intro class teaches well and practices… picking up java will be almost innate.
as an intro to programming java is much easier for beginners but c++ is used as an intro in lots of places</p>

<p>Surprised no Python fan has shown up to advocate for Python…</p>

<p>I heard that’s the language used (don’t think they deign to “teach” a language) in the first course in (EE)CS at MIT.</p>

<p>I think that’s accurate.</p>

<p>And Python is a very versatile language. It’s not a bad idea… although I wouldn’t consider it as mainstream as C++ or Java (or even C…)</p>

<p>If you’re really looking for a worthwhile language, learn LISP. You’ll find yourself that much more enlightened when you finally figure it out.</p>

<p>I learned Java as a first language. Perl would also make a good starting choice.</p>

<p>Here we go!</p>

<p>LISP or Scheme… well, some people advocate that. I can see the allure, but at the same time I don’t think I would recommend it as a first language. It definitely has its advantages, but… oh well. It’s a valid option.</p>

<p>Java is a common first language. It gets a lot of bad press, but it’s a good object-oriented language with modern features and a C-style syntax. You can do a lot worse for a first language.</p>

<p>I would not recommend Perl as a first language. The other options mentioned all have things going for them, but I would need a lot of convincing. So, why Perl?</p>

<p>Python is a beautiful and productive language to begin with— I would definitely start with Python. Perl is kind of out of the question— it’s incredibly powerful, but it’s designed with seasoned veterans in mind who want every little shortcut possible. </p>

<p>C/C++ are the standards for low-level/system-level or performance-dependent programming. But I would learn Java first if I wanted to learn OOP. C++ makes it too easy to write horrible code if you don’t know what you’re doing. (Python also has OOP but I haven’t tried it).</p>