[BangPypers] Google Go

Roshan Mathews rmathews at gmail.com
Wed Nov 11 16:36:35 CET 2009


Harish,

I [shall carefully reply to] you because I had
[searched my mail and found] that you were a serious
man, to be treated with respect. But I must say no to
you and let me give you my reasons. It's true I have a
lot of friends in [software], but they wouldn't be so
friendly if they knew my business was [pontificating]
instead of [flaming] which they consider a harmless
vice. But [pontification], that's a dirty business.

On Wed, Nov 11, 2009 at 7:49 PM, Harish Mallipeddi
<harish.mallipeddi at gmail.com> wrote:
> Going by the popular definition of weak/strong typing, what has weak typing
> in C/C++ anything to do with buffer overflow errors? Javascript is weakly
> typed but you don't have buffer overflow problems there.
>

Hmm... this is going to get tricky, since everyone
seems to have different opinions on what these terms
mean.  I'm very confused about JavaScript.  Why do you
say it's weakly typed?

I did a quick web search on this, and most people seem
to agree with you, based on the fact that in
JavaScript:

>>> "hello" + 10
"hello10"
>>> 10 + "hello"
"10hello"

So everything can be, uh, "promoted" to a String.  But
can I, say, take an Object and treat it as a number?
Or an Array as a String?  Or is JavaScript weak in
certain directions and strong in others?

Maybe you should let on what you mean by strong/weak
typing.

What I meant by saying that weak typing in C/C++ causes
buffer overruns is that everything is just a memory
location, since you can arbitrarily switch between
pointers and types, which means that you can't have
sanity checks for array accesses (which are your buffer
overruns) without changing the language itself.

> I would assume that people are arguing for strong typing for
>> efficiency.  A language with run time dynamic dispatch, like say
>> Python, will always be slower than something which is statically
>> typed.
>>
>>
> Again why would strong typing get you efficiency?
>

Am I comparing apples and potatoes, if I am please do
let me know.  I say that run time dynamic dispatch is
slow because you always need to look things up,
specially in python since you can arbitrarily change
anything at runtime, on the other hand, if you have a
strongly typed language (thanks for catching that) then
you know at compile time what you want your code to do,
hence you don't have to find that out at runtime, time
saved doing that makes your language faster all other
things being equal.

I could be horribly wrong, I don't know enough about
programming languages to be sure.  So please do let me
know if you think so.

How about this, lets make it less controversial and
bring the talk back to safer ground: the best Python
code will always be slower than high quality C++ code
no matter how good the Python optimizers get.  Speed
might not be always important and yada-yada-yada,
that's irrelevant to the last statement. I write more
Python than C++, so yeah, I've heard of most of those
reasons.

Roshan


More information about the BangPypers mailing list