What is the best programming languaging for EEs and BMEs

<p>Actually python is not a bad first language. Java is better. MATLAB is a bad first language – not only because the language is very specialized but because most of the matlab programming guides/books focus on doing things like matrix algebra, using math tools in matlabs etc… when you just want to learn how to do a basic for loop or conditional statements which will be covered but most important programming topics will be ignored.</p>

<p>Start with Java, C++, or Python (there will be a 30 page debate about this, so just start with whatever you want or whatever is taught at the CS department of the school you’re going into)</p>

<p>I have no idea what would be best for EEs or BMEs, but I have to say that Python is a sweet language and very easy to learn. I’d start off with it and then move on to something more like C++ once you get basic programming ideas down. Or you can be extra cool and start with Scheme to get more recursion and parentheses than you’ll ever want. I went Scheme -> Python -> Java myself…</p>

<p>“but I have to say that Python is a sweet language and very easy to learn.”

  • I’d disagree that it’s sweet. Why do you say it is?</p>

<p>“Or you can be extra cool and start with Scheme to get more recursion and parentheses than you’ll ever want.”

  • I actually think Scheme isn’t a bad language to start with. I wouldn’t recommend it, but you could do worse (see: python, matlab, assembly, etc).</p>

<p>Here’s what I would actually recommend before you do any programming… is to be able to write pseudocode to solve a problem, and convince yourself the pseudocode works, without using the “monkey and a debugger”* approach. Once you can solve problems, all you have to learn is syntax.</p>

<ul>
<li>A monkey at a keyboard with a C debugger will eventually write every correct C program.</li>
</ul>

<p>Python is probably one of the best languages ever created. It offers the power, speed and reliability of C, with the ease of use, unicode support, auto-memory management, large system library, and dynamic typing that plague C. All in All, python is a AMAZING solution to the inadequacies of C. All while possessing everything that makes C one of the most affluential languages ever created. </p>

<p>Python is a very serious contender not only in applications but in OS’es, as well as the day to day tasks of sys admins and web server admins. Auburn I really don’t know why you consider it bad, but to say it is, simply shows your stubbornness to the disciple. If you ever want to survive being a programmer, I highly suggest you learn how to be eclectic. Its a must.</p>

<p>“Python is probably one of the best languages ever created.”

  • Perhaps, but that’s debatable, and you know it.</p>

<p>“It offers the power, speed and reliability of C, with the ease of use, unicode support, auto-memory management, large system library, and dynamic typing that plague C.”

  • Well, there are pros and cons to several of those features (auto memory management? dynamic typing?), and some of them are sort of questionable (Python offers the speed of C?). I agree it is in the same ballpark as C - it is a fully-featured programming language and interfaces well with C. Still, I think it’s a stretch to say that it’s better than C (let alone C++) in every respect.</p>

<p>“Python is a very serious contender not only in applications but in OS’es, as well as the day to day tasks of sys admins and web server admins.”

  • I agree that Python is good for the day-to-day tasks of sys admins and web server admins, and also (though to a lesser extent) for writing general applications, but I am skeptical that it would be well-suited to writing a full-featured OS. I’m not saying it can’t be done, but I don’t like the sound of it.</p>

<p>“Auburn I really don’t know why you consider it bad,”

  • I’m not a fan of the loose syntax. I prefer tighter syntax. I feel that there’s a balance between flexibility and structure that Python is missing. For instance, semantic whitespace leaves a bad taste in my mouth.</p>

<p>“but to say it is, simply shows your stubbornness to the disciple.”

  • I assume you mean “discipline”. I don’t think that’s a fair assessment of what my opinion shows. It just means I prefer other languages to Python… not so unreasonable. You choose the right tool for the job, but if the tool is a matter of taste, then it’s not “wrong” to choose one which you like more.</p>

<p>“If you ever want to survive being a programmer, I highly suggest you learn how to be eclectic. Its a must.”

  • Thanks for the advice, but I already “know how to be eclectic” (you have a very strange way of saying things) and I don’t think that liking Python is a prerequisite. I can write Python scripts, if I need to, and that’s good enough for me. There are legitimate reasons why I don’t think it’s a suitable language for learning and why I am hesitant to use it for general-purpose programming.</p>

<p>I’m curious… what do you think of my other point, that the first programming language one should learn is… well… the language of algorithmic thought, or pseudocode. Advantages?

  • It has no syntax issues associated with it. Pure semantics.
  • It embraces every existing programming paradigm (and even those that don’t exist… yet)
  • It has the potential to be applicable to the study of any other programming language.</p>

<p>Drawbacks would include…

  • You can’t let the Turbonic plague run through your body like an electric shock.
  • You won’t accidentally get anything right.
  • You can’t test it on an actual computer, per se…
  • It’s fairly high-level, I suppose…</p>

<p>I think the world would be a noticeably better place if programmers knew how to program before they learned a programming language. Doing it the other way around is just catering to the people who never want to learn that “theoretical” stuff.</p>

<p>

Um, Do you even know what Python is? I suggest you take a deep and hard look at what python is made up of. If you still need to ask the questions, above let me know.</p>

<p>

What makes you say that? possibly if you understood what python actually is you would have not made that claim. A OS does not need to be written in C, contrary to what most CS students are taught in their incredibly basic OS class.</p>

<p>

you can write python as tight as C and as loose as ruby, its your choice. Another feature which makes it great.</p>

<p>

</p>

<p>Simply your statements in earlier posts, show you simply don’t believe that the right tool for the job should be used. You instead choose based on opinion which is not a good quality of a programmer. I mainly work as a SE and see programmers all the time who are stuck in their opinion based ways. It doesn’t make you look good and always costs your company money. </p>

<p>

</p>

<p>Its not a prerequisite, but any good programmer would love to use and would have respect for python. Any good programmer is eclectic and simply uses the best tool for the job. Python would be a amazing language to learn with, as would ruby. It allows very clear code to be written, where the programmer spend much more time on the code vs the logic and syntax. The programmer in the end writes a program which is about a 3rd the size of a C based syntax language(which including java). Id love to hear those reasons.</p>

<p>

Somebody should already have pretty advanced skills in algorithmic thought if they have taken a HS level class in mathematics. You can write all the psudocode you want, but you will never become a better programmer by it. You need to program to become a better programmer. No way around it. The same is true with math and math based science. Many CS students come out of school thinking they are amazing programmers, truth be told they are usually the worst of the worst and the only reason they get hired is because they have potential. It takes a lot of work to become a good programmer, a lot of work. A lot more than a 4 year cs degree can provide. </p>

<p>You may not like python, you may not think its a good general language and the way you talk about it you seem to not understand its fundamentals, but is is the 6th most popular language in the world now and to say its not important and to ignore its benefits is foolish. </p>

<p>[TIOBE</a> Software: The Coding Standards Company](<a href=“http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html]TIOBE”>Home - TIOBE)</p>

<p>But if you like we can agree to disagree.</p>

<p>

</p>

<p>lol</p>

<p>Let’s just leave it at that. I’ll get back to you guys when I’m done with my VBA OS. Afterwards, I’ll write the python interpreter in HTML so we can roll out our pythOS.</p>

<p>“Um, Do you even know what Python is? I suggest you take a deep and hard look at what python is made up of. If you still need to ask the questions, above let me know.”

  • Yes, I know what Python is. No need to “take a deep look” into it. Language features have pros and cons, in general. And Python does not necessarily have all the language features you suggest.</p>

<p>“What makes you say that? possibly if you understood what python actually is you would have not made that claim. A OS does not need to be written in C, contrary to what most CS students are taught in their incredibly basic OS class.”

  • I remain skeptical. I don’t want to get into reasons, but trust me, there are reasons. In any event, regardless of whether it is technically possible or not (maybe it is?), Python is not well-suited - from a language features point of view - to write an OS in. You can write an OS in a <em>lot</em> of languages. It doesn’t make those languages “serious contenders”.</p>

<p>“you can write python as tight as C and as loose as ruby, its your choice. Another feature which makes it great.”

  • The syntax is ugly to me. That’s not to say C/C++/Java syntax is beautiful… if you ask me, the nicest syntax ever was Ada-like. That’s beside the point. Python just looks bad to me. Not having to declare variables leaves another bad taste in my mouth. These are fundamentally the differences between programming and scripting languages… however, I find even the syntax of Prolog and Lisp/Scheme to be much more elegant than that of Python. Lisp is actually a beautiful language, in particular.</p>

<p>“Its not a prerequisite, but any good programmer would love to use and would have respect for python. Any good programmer is eclectic and simply uses the best tool for the job. Python would be a amazing language to learn with, as would ruby. It allows very clear code to be written, where the programmer spend much more time on the code vs the logic and syntax. The programmer in the end writes a program which is about a 3rd the size of a C based syntax language(which including java). Id love to hear those reasons.”

  • Every programming language has its strong points, doesn’t mean a good programmer has to like them all.</p>

<p>"Somebody should already have pretty advanced skills in algorithmic thought if they have taken a HS level class in mathematics. You can write all the psudocode you want, but you will never become a better programmer by it. You need to program to become a better programmer. No way around it. The same is true with math and math based science. Many CS students come out of school thinking they are amazing programmers, truth be told they are usually the worst of the worst and the only reason they get hired is because they have potential. It takes a lot of work to become a good programmer, a lot of work. A lot more than a 4 year cs degree can provide. "

  • Yeah, disagree. Programming isn’t (read: shouldn’t) be about monkey-programming, it should be about figuring out how to solve problems. I think we are doing students a great disservice by making programming a “skill” when it should be one of the purest intellectual activities there is, close to (if not the same as) mathematics. Typing the code onto a computer… that is a skill, and I don’t think that should be emphasized (I think there’s a general move away from that in academic circles, anyway).</p>

<p>"You may not like python, you may not think its a good general language and the way you talk about it you seem to not understand its fundamentals, but is is the 6th most popular language in the world now and to say its not important and to ignore its benefits is foolish. "

  • I don’t like Python, but I accept that others do and that’s alright. It’s not my favorite language, but I make do. I like to think I understand its “fundamentals”. Popularity of a language does not really mean it is a good language… just that a lot of people like it. Bandwagon fallacy.</p>

<p>"But if you like we can agree to disagree. "

  • I would <em>love</em> that.</p>

<p>

</p>

<p>Laugh all you want, there is absolutely no reason why a kernel could not be written in python. Not python alone, but no kernel is written in pure C either.</p>

<p>

</p>

<p>The problem is you dont. When I made the comments about the relationship between python and C you didn’t see and dint understand the link between them. It seems you still dont, which Is why I suggested a deep look. </p>

<p>You do understand that python is basically a OO version of C. The underlying constructs of python are C. So when we write a Python program, all the types we use and everything we write is basically a higher and easier to use C. If say I want to sort a vector in python, the algorithm to do so is written in C, As is 100% of pythons huge system library.</p>

<p>If you actually knew any of this, I cant see any reason why you made all of the clueless comments.</p>

<p>There are also python versions written in Java. Though cPython is the standard.</p>

<p>

</p>

<p>One of pythons main features and the reason so many people use it, is its syntax. ugly? the code is incredibly clean and incredibly concise. </p>

<p>The difference of variable declaration has nothing to do with whether the language is programming or scripting. It has to due if they are statically or dynamically typed. You say you think the syntax of Prolog is more elegant. Prolog is a declarative language with almost no structure or control flow. You claim to like Prolog and not like Python based on the pythons dynamic typing. Though Prolog is itself a dynamically types language. </p>

<p>The thing I am most shocked at is you thinking that Lisp or scheme is statically typed. Sorry pal, but Lisp is what started the whole reign of dynamically typed languages. So from what I get you like Prolog and Lisp due to their static type checking(like Ada), though they both do dynamic type checking. In fact Python and Lisp/Scheme are both strongly typed. </p>

<p>BTW Prolog is another great language to write kernels in, and its not C.</p>

<p>

You still need people to write the code, to input it into the computer. Your way is incredibly expensive and its something that should be a personnel choice. </p>

<p>

</p>

<p>The TIOBE rankings are that of businesses using the language. Im sure they are on the Bandwagon on a nearly 20 year old language.</p>

<p>Wow!!! never realized there would be so many responses to my question which is great. I noticed in some of the comments it mentioned majoring in CS, but for me its EE then hopefully go on to BME. Working in neuroengineering is my main goal, but thats still too far off to think about. I feel that being fluent in a couple of programming languages/system tools would make me more marketable when I graduate. Im embarrassed to say that I have a BS from Devry and their C++ and Java courses were very broad. Even though I passed the classes with a C and B I was still lost. I do have to say that we also used Matlab and VHDL,but very little. Yesterday I went to the public library and checked out the C++ for Dummies book to work on. I havent started yet but Im sure it will refresh some things I did learn. I missed Fall registration for U of H so I have to wait till Spring. At least that gives me some time to explore all these options that were mentioned.</p>

<p>member:</p>

<p>I was going to write a lengthy, thoughtful response to what you said, but let me just sum it up and let’s call it a day:</p>

<p>I disagree with almost everything you say. We are coming from very different places and using very different criteria in evaluating languages.</p>

<p>Let’s agree to disagree. It doesn’t have to make either one of us right or wrong. Difference of opinion.</p>

<p>I am simply stating fact, to be honest I question your ability to provide a thoughtful and lengthy rebuttal. What I have said is basic undergrad CS curriculum material. There is no basis for opinion here(nor have I shed any of my own opinion), python is a dynamically checked and strongly typed language which was created to fill some of the shortcomings of C while keeping its best traits.</p>

<p>“Laugh all you want, there is absolutely no reason why a kernel could not be written in python. Not python alone, but no kernel is written in pure C either.”

  • He’s laughing because the notion of writing an OS in Python is almost preposterous. Reasonable people know that.</p>

<p>"The problem is you dont. When I made the comments about the relationship between python and C you didn’t see and dint understand the link between them. It seems you still dont, which Is why I suggested a deep look. "</p>

<p>“You do understand that python is basically a OO version of C.”

  • C++ is an OO version of C. Python is a multiparadigm programming language with C-like (to varying degrees, and not so much, really) syntax.</p>

<p>“The underlying constructs of python are C.”

  • Granted, but it need not be so. Accident, not essence.</p>

<p>“So when we write a Python program, all the types we use and everything we write is basically a higher and easier to use C. If say I want to sort a vector in python, the algorithm to do so is written in C, As is 100% of pythons huge system library”

  • That’s a cop out and you know it. That’s just saying that when speed is a factor, use C. That’s what I said. The fact that you can call C from Python doesn’t make Python as fast as C.</p>

<p>“If you actually knew any of this, I cant see any reason why you made all of the clueless comments.”

  • All of your comments are inflammatory and ignorant. If anything, this is the pot calling the kettle black.</p>

<p>“One of pythons main features and the reason so many people use it, is its syntax. ugly? the code is incredibly clean and incredibly concise.”

  • It’s concise, but that doesn’t make it clean and it doesn’t make it readable, in my opinion.</p>

<p>“The difference of variable declaration has nothing to do with whether the language is programming or scripting.”

  • No, but dynamic typing and ‘on the fly’ variable declaration is very common in scripting languages and not so much in programming languages. Reasonable people accept this as true.</p>

<p>“You say you think the syntax of Prolog is more elegant. Prolog is a declarative language with almost no structure or control flow.”

  • It is not an imperative language, true. That doesn’t mean it has weak syntax or is less than beautiful.</p>

<p>“You claim to like Prolog and not like Python based on the pythons dynamic typing. Though Prolog is itself a dynamically types language.”

  • I apologize if you got this from what I wrote. I know that Prolog is not a statically typed language with forced type declarations. I see this as a shortcoming of Prolog. I would much prefer a Prolog with static types. It seems like such a thing should be possible.</p>

<p>“The thing I am most shocked at is you thinking that Lisp or scheme is statically typed.”

  • Nope, sorry if you misinterpreted what I said. If I said it in a less-than-clear fashion, again, you’re not so innocent yourself.</p>

<p>“Sorry pal, but Lisp is what started the whole reign of dynamically typed languages. So from what I get you like Prolog and Lisp due to their static type checking(like Ada), though they both do dynamic type checking. In fact Python and Lisp/Scheme are both strongly typed.”

  • I know all of this. It makes you look like you’re trying to insult to assume anyone who talks about it doesn’t know. It’s so trivial it’s almost embarrassing you’re making such a big deal out of it.</p>

<p>“BTW Prolog is another great language to write kernels in, and its not C.”

  • “Great”? You’re being facetious now.</p>

<p>“You still need people to write the code, to input it into the computer. Your way is incredibly expensive and its something that should be a personnel choice.”

  • No, you can “solve” computational problems without running a line of code. I agree that you wouldn’t want to do this to make all software, but I feel like it would be a better way to begin programming… for learning purposes. The computer is a crutch for the beginner… and in fact many people never get past the beginning phase because of the crutch. Beginning programs in introductory programming courses are mostly teaching syntax of a programming language… It seems like a shame.</p>

<p>"The TIOBE rankings are that of businesses using the language. Im sure they are on the Bandwagon on a nearly 20 year old language. "

  • Please make sense. And for that matter, take the time to type in your posts without blatant typos/grammar issues/etc. That’s basic courtesy.</p>

<p>First of all nearly everything that you have typed is false.</p>

<p>

There is absolutely no reason why you could not write a kernel in python, or any other language for that matter. Any competent person who understands how a computer works would know that. </p>

<p>

How is it a cop out, its the truth. It is how Python is designed and implemented. You don’t call C from Python, Python is C at a higher level. </p>

<p>

First of all, C++ is not a OO version of C, as C++ is not a OO language. Pythons syntax is nothing like C, python itself is written in C(or java your choice) as is its system library. A python int is a C int, a python array is a C array, etc. </p>

<p>

It doesn’t need to be so, but if we use the standard python, then yes it is all C. Otherwise we choose java. But we are not talking about Jpython.</p>

<p>

Do you know the definition of concise?, you contradicted yourself here. Here it is
----expressing or covering much in few words; brief in form but comprehensive in scope;</p>

<p>

</p>

<p>Well alot of programming languages do this including Python, Lisp, Scheme, SmallTalk, Ruby.</p>

<p>

</p>

<p>Its your opinion which if fine, but you are in the minority. </p>

<p>

</p>

<p>How can it be possible when prolog doesn’t even have types?</p>

<p>

</p>

<p>There was no misinterpretation and this I call a real copout on your part. </p>

<p>

</p>

<p>Well I thought anybody would know only kernels can be written in C? To write a Kernel in Python would be drastically easier than in Prolog. </p>

<p>You seem like one of these people, that even when wrong you will just keep coming back. Im not trying to be a *******, its just you were wrong. Im not going to check or reply back to this thread, ive said enough.</p>

<p>

<a href=“http://www.research.att.com/~bs/oopsla.pdf[/url]”>http://www.research.att.com/~bs/oopsla.pdf&lt;/a&gt;&lt;/p&gt;

<p>I’m great with you not saying anything else, member. Try that more often, unless you have a freaking clue about what you’re claiming to be an expert on.</p>

<p>noimagination, there are many different variations of the definition of what OO is, using classic definitions languages like Java are not OO but languages like SmallTalk are.<br>
[Java</a> is not Object Oriented: LispCast](<a href=“http://www.lispcast.com/drupal/Java-is-not-Object-Oriented.html]Java”>http://www.lispcast.com/drupal/Java-is-not-Object-Oriented.html)</p>

<p>Auburn, you have been wrong on literally everything you said.</p>

<p>^ I know, which is why I referred you to a paper written by the original designer of C++ in which he explains his definition and implementation of OO.</p>

<p>“Auburn, you have been wrong on literally everything you said.”

  • lol. Apparently somebody slept in the day they explained what the phrase “pot calling the kettle black” meant.</p>

<p>C or Java maybe if you’re working with embedded devices. Assembly language of your choice if you’re feeling hardcore.</p>