Jump to content

Coding 101 - The Python Collection


G+_Joe C. Hecht
 Share

Recommended Posts

Coding 101 - The Python Collection

 

Moving into Python was probably a smart decision for the hosts of Coding 101. Being a "typeless" language with automatic garbage collection and type conversion allowed the hosts of Coding 101 to skip over the presentation of the basics of computer programming all together and concentrate on the show's "just install it and break it" attitude.

 

The "Python Episodes" demonstrated advanced techniques of working with lists, but like previous episodes, left viewers short on the basic "know how" of programming.

 

If you have been following the show, 20 episodes equals about 15 hours of your life. and at this point, you might want to ask yourself what have you received for your viewing investment.

 

The biggest measurement of the show's value comes when you calculate the overall human investment. We do not know those numbers, but we can assume that it now numbers in the tens of thousands of viewing hours.

 

In my opinion, very little knowledge has been presented in those 15 hours, and the real winners are the show's owners and the advertisers.

 

The viewers who went off to actually learn computer programming skills should be congratulated for their hard work.

 

So I ask the hosts to please consider the following:

 

Given your opportunity to gain the audience of tens of thousands of human hours, what can you do to maximize the benefit to mankind?

 

Sure, that may sound "sappy", but it is a serious question. Here and now,  you have the ability to really make a difference. In the long run, you are helping to spend hundreds of thousands of man hours, perhaps even millions of man hours of viewing time. Should you not put your heart into making that really count? You really are holding a lot of potential in your hands, and not just for your viewers, but for your advertisers as well. It works for both sides.

 

I believe from the viewer's side of the investment, certainly there is much room for improvement.

 

Make it count. Make a difference. Teach some basics.

 

Joe C. Hecht - Code4Sale, LLC

Link to comment
Share on other sites

I agree with you that the show has been quite light on conveying real understanding of programming. I also agree that Python may not have been the best choice to help convey learning. However I disagree that the lack of a static type system (or rather a unityped system) is the problem.

 

My favourite programming language is Scheme, which pioneered the idea of automatic garbage collection and dynamic typing. I do not think Gerald Sussman and Guy Steele are idiots for putting those things in Scheme, though you're free to disagree. IMO the essence of computing has less to do with your particular language, although it is important to understand ideas like memory allocation and type systems if you want to really grok programming.

 

But I would be careful about equating static type systems with low-level/close to the machine programming. For example the programming language Haskell is statically typed, but is much higher level (and more expressive) than languages like C, although obviously it sacrifices that for a much greater complexity in the way it is implemented (the compiler is fairly complex with multiple intermediate languages and many passes).

 

Anyway, if people really want to understand programming here are my recommendations:

Start with http://htdp.org/2003-09-26/Book/

 

Then get a copy of K&R (The C Programming Language), do the exercises, re-implement some simple Unix utilities like wc and tail

 

From there you can probably start hacking on your own projects, but I recommend learning different languages, although "A language that doesn't affect the way you think about programming, is not worth knowing." (Alan Perlis)

 

Some good languages to learn in no particular order are: Racket, Haskell, Forth, C, Prolog, Common Lisp, Clean, Mercury

 

If you can write any substantial programs in those then learning other more popular languages such as C++ or C# will be an absolute breeze if you really feel a need to learn them.

 

And of course SICP (the book and the recorded lectures) are an absolute must :)

 

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/

Link to comment
Share on other sites

oh and one of the most enlightening things you can understand/learn as a programmer (imo) are the concept of pipes, specifically as they work under *nix systems. The idea of writing each piece of your program in isolation and testing each component and then being able to connect them is pretty damn cool. So I recommend everyone learn about pipes and use them in your programs if possible, especially if you decide to do C.

Link to comment
Share on other sites

[soapbox --on]

I have lost all trust in the company that makes my current operating system, and am slowly moving off to Linux as the main operating system of choice (wherever possible) for most of the fleet. That company totally blew my trust 4 times now, and will never be able to gain it back. I also try to spread the non-written word and experiences as far and wide as possible. On blowing trust, I'm not talking about security issues, i am talking trust, For example, if I check the box "don't upload my pictures to your cloud service", I do not expect to later find my photos uploaded to your cloud service. If I input my login data to my private mail server to your email program, then tell your email program to permanently remove all traces of the account, I do not expect to buy a new computer, login, then find the new computer checking the mail on all the accounts I permanently removed. If I have several computers, all but one with local accounts only and another with your "store" account, if I make changes to the computer with the store account, I do not expect your headquarters to remotely login (ie: hack in) to my other (local account) computers, and change my network shares. Finally, I have a real problem if I look at one of the computers running "that" OS, from a Linux box, only to find a mile wide security hole that a 7 year old could easily spot. Finally (2), according to my calculations, "that" company would make more money of they gave away the OS, and changed a nickle for every security update they released.

 

Yup, Linux rocks... Now if I could just find some setting to add mouse glide to my laptop touchpad, I would be happy.

[soapbox --off]

Link to comment
Share on other sites

The question is what are the "basics" of programming? I would define them (briefly) as using assignment, decision, IO and looping statements, combined with data structures, to perform a task. These things are language-independent and I don't think they were "skipped" in the Python segment - but there's obviously room for improvement. I have to say after watching the live recording of the 1st two Perl segments I think some of our concerns are being addressed.

Link to comment
Share on other sites

 Share

×
×
  • Create New...