Dear Chris,
Thanks for reading further into the site.
Yes, it is complicated to provide a good comparison. It isn't always accurate
and I welcome feedback.
Please be aware that orange does not mean problem - it simply means take note
that there may be potential issues that you need to consider. It is highly
subjective, so I appreciate your feedback. The red dot is when there is
definitely an issue that needs to be taken into consideration. It isn't "Okay,
Warning, Error" because it isn't possible to make this kind of judgement
without being omnipotent.
There are several reason why I decided to rate the syntax as not being simple.
1) Indentation model is not appreciated by everyone - I think its a
good model, but feedback from some other people has been that they don't like
it. Also, I've had perfectly good Python code fall to bits after editing in a
different editor. I'm not saying that this was the fault of Python, but in an
educational context it might be a problem, since people are fairly limited and
don't understand these issues.
2) I don't think that the list comprehension integrates well with the
rest of the language. It is an additional syntactic construct which seems to be
separate from the rest of the language. It would be nice if list comprehension
was implemented in a way that was more general, using a general closure syntax
for example. This is just my opinion, and it might not be valid (I don't
research this point very heavily).
I appreciate that in general the Python syntax is good and concise. It is hard.
Some teacher might want to consider these issues more carefully. Do you think I
should change that spot to green? I don't have a problem with doing that, as
long as it makes sense.
Thanks for providing the syntax images, they are very interesting.
With regards to Perl, yes, this is probably something I need to investigate
further. It is not always easy to do a comparison of this nature. From my
experience, Perl generally seems to have a robust object model that is
consistently implemented (even if the syntax is pretty wonky at times).
However, in a sense, it is no better or worse than Python implementation... so
why is it green dot? Do you think I should change Perl to orange or Python to
green.
The main criteria is whether it is going to be an issue in an educational
context - this means, for new programmers, or those who might make error easily
(syntax, semantic), etc.
Also, I wonder if Visual Basic needs to be reevaluated on this criteria too. I
guess what is important is the relative importance.
I will bring this issue up on the Perl mailing list in order to get advice.
Would you recommend changing Perl to orange?
Thanks for your well thought out response, it is very helpful.
Kind regards,
Samuel
On 4/05/2010, at 1:06 AM, Chris Rebert wrote:
> On Mon, May 3, 2010 at 5:29 AM, Chris Rebert <[email protected]> wrote:
>> On Mon, May 3, 2010 at 5:05 AM, Samuel Williams
>> <[email protected]> wrote:
>>> Dear Friends,
>>>
>>> I'm looking for some help from the Python community. I hope this is the
>>> right place to ask for information.
>>>
>>> I'm putting together a website aimed at high school students and teachers,
>>> and would like to make sure the following page is as good as possible:
>>> http://programming.dojo.net.nz/languages/python/index
>>> In particular, "Why would I learn this language?" section needs to have a
>>> few paragraphs. I don't use Python predominantly so I hoped that you could
>>> provide the main reasons why Python is a language someone would want to
>>> learn about.
> <snip>
>> - A very clean syntax and elegant design, compared to other languages
>
> Also, I take issue with your classifying Python as orange with regard
> to "Is the general syntax simple and concise?" on
> http://programming.dojo.net.nz/resources/programming-language-comparison/index
> Python's syntax is at least as simple, if not simpler, than Ruby's,
> which you rate as green. Ruby may be /slightly/ more concise than
> Python in certain cases due to its Perl influences, but those
> instances of specialized syntax also make it more complex.
> To wit, I refer you to
> http://webcache.googleusercontent.com/search?q=cache:dyugd_KlqvcJ:blog.nicksieger.com/articles/2006/10/27/visualization-of-rubys-grammar+ruby+grammar+visualization&cd=1&hl=en&ct=clnk&gl=us
> Note the complexity of the graph for Ruby's grammar. By comparison,
> here is the same graph for Python (generated from a file linked to in
> the post's comment thread):
> http://rebertia.com/images/python_grammar_graph.png
> (Disclaimer: Neither of the graphs are current.)
>
> Additionally, you rate Python orange but Perl green for "Does the
> language provide a useful and consistent set of object oriented
> constructs?". Could you explain your reasoning for this? While neither
> Python nor Perl have the level of object-oriented purity of Ruby or
> Smalltalk, my understanding is that short of using CPAN libraries for
> Perl or dealing in Perl 6, Perl and Python have a substantially
> similar object model, so I don't how Python could rate below Perl in
> this area.
>
> Cheers,
> Chris
> --
> http://blog.rebertia.com
--
http://mail.python.org/mailman/listinfo/python-list