
Google's Python Class - ShouldNotBeHere
https://developers.google.com/edu/python/
======
andrewstuart
It's hard to understand that they could think Python 2 to be the valid choice
for this, as though Python 3 was "the future" and things are heading there.

Python 3 is the present, we are there, Python 2 is the past and in 2 short
years it will be unsupported and whatever you learned from this resource will
need to be re-learned for Python 3 pretty damn quick.

Recommendation to those learning Python: avoid this Google resource and
instead use Zed Shaw's "Learn Python 3 The Hard Way"
[https://learnpythonthehardway.org/python3/](https://learnpythonthehardway.org/python3/)

Or you could do things Google's way and then follow up with learning how to
use DOS
[http://people.uncw.edu/pattersone/121/labs/L1_MSDOS_Primer.p...](http://people.uncw.edu/pattersone/121/labs/L1_MSDOS_Primer.pdf)
because I believe things are heading that way.

~~~
hsivonen
The notion that the Python core devs get to decide when Python 2 should stop
being used is not cool.

Under the freedoms provided by Free Software licensing, users who have a need
to continue to use Python 2 should be able pool their effort to continue to
support Python 2.

There was an effort called Python 2.8 to do this, but the Python Software
Foundation made it change its name and I don't recall what the new name is.
It's not particularly nice that the thing that's compatible with what was
called Python to begin with is the one that got renamed.

~~~
kej
This feels kind of entitled, to be honest. The core devs don't owe you
indefinite support for your chosen version. Absolutely they get to decide when
they want to stop supporting it (and they already gave it a ridiculously
extended support lifetime!).

The PSF also owns the "Python" trademark and the whole purpose of trademarks
is to prevent confusion about who made something, i.e. exactly the kind of
confusion a Python 2.8 that isn't made by the same people who made Python 2.7
would have caused.

The new name, for what it's worth, is Tauthon:
[https://github.com/naftaliharris/tauthon](https://github.com/naftaliharris/tauthon)

~~~
hsivonen
> This feels kind of entitled, to be honest.

Entitled to the name perhaps, but _not_ entitled to indefinite support by the
core devs.

> The core devs don't owe you indefinite support for your chosen version.
> Absolutely they get to decide when they want to stop supporting it (and they
> already gave it a ridiculously extended support lifetime!).

I agree! I said the users of Python 2 should be able to pool effort to
continue to support Python 2.

Yet, there is a lot of sentiment in this thread that whether Python 2 should
continue to be used should be tied to whether the Python core devs are still
supporting it. Similarly, there is widespread sentiment that e.g. Linux
distros should drop Python 2 and packaging Tauthon in its place doesn't even
make it to the agenda.

> The PSF also owns the "Python" trademark and the whole purpose of trademarks
> is to prevent confusion about who made something, i.e. exactly the kind of
> confusion a Python 2.8 that isn't made by the same people who made Python
> 2.7 would have caused.

I'm well aware that the PSF is legally entitled to exclude Tauthon from being
called Python 2.8. It's still not particularly nice towards the users of the
language who bet on Python 2 and who'd benefit from easy discovery of Tauthon.

Imagine if Stroustrup had gone on to develop the language that's in reality
called D but insisted that it be called C++ and the language everyone else
knows as C++ be renamed if developed further in a backward-compatible way.

Once there is no longer a Python 2.x by the Python core devs to confuse
Tauthon with, it's arguably more confusing for Python 2 and Python 3 to share
a name but Python 2.x and Tauthon not to. (For clarity, the previous sentence
is not a legal argument. I'm well aware that the public who could be confused
about names doesn't have standing under trademark law.)

> The new name, for what it's worth, is Tauthon:
> [https://github.com/naftaliharris/tauthon](https://github.com/naftaliharris/tauthon)

Thanks.

------
danso
FWIW from the prelude:

> _Originally created during the Python 2.4 days, we 've tried to keep the
> content universal and exercises relevant, even for newer releases. As
> mentioned on the setup page, this material covers Python 2. While we
> recommend "avoiding" Python 3 for now, recognize that it is the future, as
> all new features are only going there._

~~~
otakucode
Yeah, for some reason Google is adamantly opposed to adopting Python 3. I have
no idea why. It's clearly much better, more well designed, etc. I mean come
on... print as a statement rather than a function call? That alone should be
enough to make the decision I'd think.

~~~
mjevans
Python 3 has some architectural decisions that make working with data
difficult; mostly ///my opinion/// is that it completely botched Unicode
handling.

The idea of data being encoded should be an extremely high level idea, with
foundations that are supported by the internal libraries and maybe even
compiler.

I feel that golang has a much more data-structure friendly view of Unicode.

    
    
        * The ancient paradigm of bytes remains
        * Strings are immutable sequences of bytes; but are trivial to cast back and forth.
        * 'runes' (distinct Unicode code points) also exist
    

However to actually validate or do anything fancy to a Unicode sequence a
programmer would need libraries from
[https://godoc.org/golang.org/x/text](https://godoc.org/golang.org/x/text)
which shows how truly complex /proper/ handling of Unicode data is; instead of
just the simple copy / append / search (is this inside of / a match to it)
operations that make up 99% of my handling of Unicode data.

~~~
Siecje
What about Python3's unicode handling is botched?

~~~
hsivonen
It optimized for O(1) indexing to Unicode scalar values instead of optimizing
for more useful things. Also, even though the API semantics are UTF-32, the
storage may be USC-2 or Latin-1, so there's a surprise performance effect when
a string gets it first non-Latin-1 character or its first non-BMP character.
So much for O(1) behavior.

The best in-memory representation of Unicode is UTF-8. No alignment issues,
ingest "decode" is mere validation and output "encode" step is a no-op. Space
requirements are favorable to common computer language syntaxes. Byte-wise
lexical sort matches code point-wise lexical sort.

However, since "narrow builds" of Python 2 already used UTF-16 which allowed
for things like bridging strings with Cocoa, Python would have done well to
stick to UTF-16 and get rid of the "wide builds".

Not having both "narrow" (UTF-16, Python 2 on Mac) and "wide" (UTF-32, Python
2 on Debian) is an improvement, though.

~~~
jwilk
Python strings are immutable. The only time a string can get its first non-
Latin-1 character is at construction time, which is necessarily O(n).

------
dec0dedab0de
This changed my life. In 2010 I downloaded all the videos, and learned python
as I was riding home on the bus. By the end of the year I was scripting stuff
at work, within 4 years I had a new job as a full time developer.

Sure it's mostly outdated, but it really clicked for me. Nick Parlante does a
great job, and his codingbat.com was the perfect step 2.

~~~
dpflan
Awesome! Did you use other Google resources like this along the way?

~~~
dec0dedab0de
No, None of the other ones were really as good at the time. I haven't checked
in a while. Going to my local PUG is what really helped me get to the next
level.

~~~
dpflan
Ah, I see. How did the PUG (Python Users Group) help?

~~~
dec0dedab0de
By introducing me to new libraries, and ways of doing things. Really just
being able to talk about Python, and programming/computers in general in a
social atmosphere made it feel like more than just a hobby or something i was
doing for my job.

------
therockspush
I watched the original Nick Parlante videos that this material is based off 7
years ago, and recommend it to anybody that thinks they need to learn
programming.

First Lecture.
[https://www.youtube.com/watch?v=tKTZoB2Vjuk](https://www.youtube.com/watch?v=tKTZoB2Vjuk)

I took a couple C classes in college that were geared for people who already
knew how to program and hated it. Never wanted to think about it again.

Those videos helped abstract a lot of the low level muck away and build real
stuff. Once I was able to understand some of these concepts and why you would
actually use them I could go back and learn all the things that were too deep
in the weeds to understand.

Its a bit dated now but still some of the best training videos I've seen.

~~~
mav3r1ck
Agreed! The Great Treat List Recursion problem from Parlante's intro to CS
page is really good practice with pointers.

------
dpflan
I like that they are continuing to share resources and education. Google has
also collaborated on a myriad of courses on Udacity. If you check the course
catalog and search for "Google", there are 62 results for "IN COLLABORATION
WITH: Google". They run the gamut from Android development to web development
to Google APIs to Design to Business Development to ....

> [https://www.udacity.com/courses/all](https://www.udacity.com/courses/all)

It's an interesting mix of empowering the learner and getting the learner to
use Google products (e.g. you finally make that Android app, you learn how to
iterate development, gain traction with users, grow). I wonder to what extent
learning from the resources can bring up to parity with a Google developer.

------
justifier
Anyone ever searched a flag for a python library and been swept away into some
weird gamified recruitment test?

Some years ago in a googs search box i searched for some flag for 'python3
itertools' and googs immediately took me to a subdomain saying, 'does this
sort of thing interest you? This is the kind of work we do here at the goog.'
then something to the effect of enter your email and answer some obscure
python question

Out of curiosity I answered the first few questions but after about four I was
more bothered than intrigued and closed the tab and redid the search and this
time googs gave me the results I was looking for

It was the only time it's ever happened to me..

Has anyone else ever seen this?

~~~
therockspush
Saw it looking for 'python lambda' then proceeded to bomb the test.

[https://thehustle.co/the-secret-google-interview-that-
landed...](https://thehustle.co/the-secret-google-interview-that-landed-me-a-
job)

------
dcgudeman
_Last updated March 9, 2016._

------
beal
Finally I can write Python libraries that are as good as those created by
google.

------
askvictor
I read this as an OO class that access Google's API. Given the overloading of
the term, a better title might be 'Learn Python with Google' or some such.

------
fermienrico
Does anyone feel that this is more oriented towards String processing? Not a
general purpose Python class.

------
indiependente
Is there any edu/golang version of this?

------
cryptoz
Title should include a (2016).

~~~
levesque
More like 2010, the date when it was still controversial to use python3.

