<p>My younger son started with Visual Basic for Dummies when he was seven. When he went to a week of computer camp in 6th grade or so, they persuaded him to learn Java. Then he went on to teach himself other more useful stuff, but those two languages served him well for a long time. I don’t think my husband (cancer research) who has written any number of programs for lab work uses anything else.</p>
<p>She should check what language is used most in the Astrophysics department at her school. The physics dept at my DS uni uses VPython for student work and C++ for research work.</p>
<p>The “Learn this language in 21 Days” books are generally good for getting the basics of a language.</p>
<p>FWIW both DH and I are professional programmers.</p>
<p>It is indeed the case that my daughter is already using Vpython in her Physics class.</p>
<p>Is it useful for her to spend time learning Python? Or would it be better to work on C ++, since she’s already been exposed to Vpython?</p>
<p>From looking it up on Wikipedia, I see that Vpython has the capability to produce “real-time 3D scenes.” It makes sense that such capability is useful for physics related programming.</p>
<p>Don’t kids learn Matlab in college for non-programmers? It was required for D1 as a math major. C++ and Java are more for true programmers, which I absolutely hate. Your daughter would need to be pretty advanced to create 3D scene with C++.</p>
<p>For people with physics, math, finance background, programming language should be viewed as a tool to help them do various complex calculations. They don’t need a complicated (native) language to manage messaging, memory, ports, and such. It is best to use a language that could manage those things gracefully already. </p>
<p>Many moons ago, I learned APL, Basic and Fortran on the job, and then later on K.</p>
<p>This thread is a good heads-up for parents whose kids are going to be STEM majors. Your kid needs to learn some kind of programming language before going to college, the earlier the better. After you learn that first one, you can teach yourself other languages.</p>
<p>It is not just for people going into computer science. Now programming is used to solve problems in math and physics (I don’t know about biology). I’m guessing engineering needs it, too.</p>
<p>I sent my kid to a summer camp where he learned JAVA. After that, he taught himself Python, Lisp, Mathematica (is that a computer language–I don’t know), and maybe others.</p>
<p>In college, he programs whenever he needs to, and learns new languages when he needs to.</p>
<p>I use Mathematica - it’s a very powerful package, with all the capabilities of Matlab, but something unique: it does symbolic calculations! For programming, I use C++ and (dating myself) Fortran.</p>
<p>Understand that for a first language, C++ would be a much bigger project than Java would be. Java is basically C++ dumbed down by removal of pointers and other capabilities that allow programmers to do stupid (but powerful) things.</p>
<p>Among the very first applications of programming were to solve physics problems, such as the trajectories of long-range shells and designs for the fusion bomb (the latter via the ENIAC circa 1950), so physics and computers/programming have long overlapped.</p>
<p>
</p>
<p>This really depends on what physics is involved. Dealing with instrumentation at a low level may very well require some C/C++ programming involving memory, ports, etc. But as someone mentioned, learning to program with Java, VPython, etc. is a perfectly reasonable way to start. If someone is majoring in astrophysics, programming should not be the major challenge.</p>
<p>
</p>
<p>Java is under the GPL license, which isn’t public domain but essentially does mean that it is free. Common tools to program in Java such as Eclipse are also free.</p>
<p>Kids in the science majors need to learn “real” programming languages because that is what research is done in. </p>
<p>DS took AP CS which teaches Java. He says VPython was really easy to pick up for uni physics course work. But it he wants to get onto a physics research project, he needs c++.</p>
<p>Also, he had a job at Fermilab last summer. He only had Java under his belt at that time and muddled through C++, some scripting languages and actually some old Fortran! He didn’t use matlab or Java once while there.</p>
<p>So yes, science majors need to know “real” programming languages. They don’t need to know it like a programmer who uses it to write an operating system. But they need to know it to crunch their research numbers.</p>
<p>I’m a professional programmer too. Especially if there has already been some exposure through VPython, python is good choice. If there interest in scientific programming look especially at the SciPy package, an extension of the numeric package. With python and these packages, you can do a lot.</p>
<p>S (math major, theoretical CS guy) loves Haskell, but it’s not a typical programming language. Started off in Basic and html in elem school, then Visual Basic, moved to C++ and Java, has played around in Python. Picked up MatLab and Mathematica along the way. </p>
<p>He would argue that if you understand the foundations of computer science and algorithmic programming, which language one learns is irrelevant.</p>
<p>He writes English papers in LaTeX.</p>
<p>Will also mention that S’s STEM friends who can program have a serious leg up in grad school and research.</p>
<p>Yes, it’s very helpful if STEM kids get some programming experience in hs. The earlier the better. But it is possible to survive if that has not been possible, especially if the student has the affinity for it. </p>
<p>One of my kids had a tough time in some college courses without hs comp sci prep. The other without hs cs has been done very well picking up languages (java, c++, python, matlab) in classes and self study.</p>
<p>Programming is like art or music - the medium or language is largely irrelevant when learning the basics. </p>
<p>Every once in a while some smart dude or another comes up with a language that solves a problem or two wonderfully (Perl, Python, Lisp) and tries to convince the world that indeed, we can do everything in this or that. In practice, good luck. The language’s applicability to different tasks and its development environment determine how easy it is to learn.</p>
<p>My suggestion as a professional software developer since the Carter administration is to stick with the language that has (a) the easiest and most no-brainer installation possible (b) is widely used so when you get stuck you can Google for help and (c) has a very good debugger that allows one to single step code easily and effortlessly.</p>
<p>Based on these three, my suggestions would be the dreaded by many Microsoft Visual Studio (free) or Express series - probably Visual Basic .NET Express, or C# Express (or whatever Microsoft calls them these days). </p>
<p>For Java, you can debug easily with Eclipse, but setting up the environment and Eclipse to do single-step debug is not as easy as a download and run (Microsoft). BlueJ is also pretty good for Java.</p>
<p>Programming is all about seeing how a problem is partitioned into bits and pieces, and is usually unrelated to the language or environment used.</p>