<div class="gmail_quote">On Thu, Feb 9, 2012 at 10:25 AM, Massimo Di Pierro <span dir="ltr"><<a href="mailto:massimo.dipierro@gmail.com">massimo.dipierro@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im"><br>
On Feb 9, 2012, at 12:03 PM, Steven D'Aprano wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Massimo Di Pierro wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Here is another data point:<br>
<a href="http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/" target="_blank">http://redmonk.com/sogrady/<u></u>2012/02/08/language-rankings-<u></u>2-2012/</a><br>
Unfortunately the TIOBE index does matter. I can speak for python in education and trends I seen.<br>
Python is and remains the easiest language to teach but it is no longer true that getting Python to run is easer than alternatives (not for the average undergrad student).<br>
</blockquote>
<br>
Is that a commentary on Python, or the average undergrad student?<br>
</blockquote>
<br></div>
I teach so the average student is my benchmark. Please do not misunderstand. While some may be lazy, but the average CS undergrad is not stupid but quite intelligent. They just do not like wasting time with setups and I sympathize with that. Batteries included is the Python motto.<div class="im">

<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
It used to be you download python 2.5 and you were in business. Now you have to make a choice 2.x or 3.x. 20% of the students cannot tell one from the other (even after been told repeatedly which one to use). Three weeks into the class they complain with "the class code won't compile" (the same 20% cannot tell a compiler form an interpreter).<br>


</blockquote>
<br>
Python has a compiler. The "c" in .pyc files stands for "compiled" and Python has a built-in function called "compile". It just happens to compile to byte code that runs on a virtual machine, not machine code running on physical hardware. PyPy takes it even further, with a JIT compiler that operates on the byte code.<br>


<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
50+% of the students have a mac and an increasing number of packages depend on numpy. Installing numpy on mac is a lottery.<br>
Those who do not have a mac have windows and they expect an IDE like eclipse. I know you can use Python with eclipse but they do not. They download Python and complain that IDLE has no autocompletion, no line numbers, no collapsible functions/classes.<br>


>From the hard core computer scientists prospective there are usually three objections to using Python:<br>
- Most software engineers think we should only teach static type languages<br>
- Those who care about scalability complain about the GIL<br>
</blockquote>
<br>
How is that relevant to a language being taught to undergrads? Sounds more like an excuse to justify dislike of teaching Python rather than an actual reason to dislike Python.<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
- The programming language purists complain about the use of reference counting instead of garbage collection<br>
</blockquote>
<br>
The programming language purists should know better than that. The choice of which garbage collection implementation (ref counting is garbage collection) is a quality of implementation detail, not a language feature.<br>


</blockquote>
<br></div>
Don't shoot the messenger please.<br>
<br>
You can dismiss or address the problem. Anyway... undergrads do care because they will take 4 years to grade and they do not want to come out with obsolete skills. Our undergrads learn Python, Ruby, Java, Javascript and C++. Many know other languages which they learn on their own (Scala and Clojure are popular).</blockquote>

<div><br>I'd give those students a bonus for being in touch with what's popular in academia. Point them to Haskell next. They may amount to something.<br> </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

 They all agree multi-core is the future and whichever language can deal with them better is the future too.<br></blockquote><div><br>Surely not JavaScript (which is single-threaded and AFAIK also uses refcounting :-). Also, AFAIK Ruby has a GIL much like Python. I think it's time to start a PR offensive explaining why these are not the problem the trolls make them out to be, and how you simply have to use different patterns for scaling in some languages than in others. And note that a single-threaded event-driven process can serve 100,000 open sockets  -- while no JVM can create 100,000 threads.<br>

 <br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
As masklinn says, the difference between garbage collection and reference counting is more than an implementation issue.<br clear="all"></blockquote></div><br>-- <br>--Guido van Rossum (<a href="http://python.org/~guido">python.org/~guido</a>)<br>