Open Side Menu Go to the Top

10-05-2012 , 07:52 PM
Just for the record Python is certainly my #1 choice for programming language to teach. My coworkers actually think JAVA is suitable for that which kind of makes me go "WTF"

I mean...hello world in JAVA requires a ****load of knowledge (public vs private, WTF is static etc pp)

Like I said before when it comes to programming languages I sometimes think people that are not me are thinking in entirely different ways. JAVA as a first language just seems crazy to me just like PHP for anything seems crazy.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
$25m Guaranteed WPM on CoinPoker
Join the action now
Daily Rewards • Splash Pots • CoinRaces
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
10-05-2012 , 09:15 PM
Quote:
Originally Posted by daveT
Python was created *as* a teaching language or was it just widely adopted as such?
Actually that's a fair question. I don't know rightly the answer. But I've seen it referred to by Python evangelists as a great language for teaching so many times, and seen so many pushes to have it replace C++ and Java in school environments.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 02:12 AM
I think most people in this sub-forum agree that Python >> Java for teaching the basics.

I think trying to replace C++ and Java with Python in a school environment is an idiotic idea. I always think that people with years of programming experience forget what it is like to be a beginner, and yeah, they can use Python because they understand the mechanisms that are cleanly abstracted away, but for someone with no prior knowledge, learning other languages is very important.

Maybe its my own naive opinion, but there is something magical about learning about meta-circular evaluation, pointers, and other nearer to the metal concepts that you simply cannot get to when dealing with Python. What happens to the Python students when they are faced with employer who expect them to be familiar with these ideas, or even worse, when they are faced with situations that Python doesn't handle to well?

I also think that sticking to one language for years on end is a bland place to be for a beginner. One thing that keeps me going is the idea of learning a new language with wholly unfamiliar syntax and mind-set.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 03:43 AM
how about they learn close to the metal stuff after they learn python and have a basic grasp of high level programming ideas?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 04:32 AM
Quote:
how about they learn close to the metal stuff after they learn python and have a basic grasp of high level programming ideas?
Yeah that seems way better imo
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 04:50 AM
as someone who is in the process of learning programming, i'm happy that i first learned (still learning) c++ because it makes things like python much easier to understand.

that said, if my school taught python instead of c++ as an introductory language, i'd almost certainly say the opposite.

i think the big benefit to teaching higher level languages like python first is that you'll have a lot more students who don't immediately say "wow what the **** is this?" and give up. if i didn't already have a strong understanding of computing fundamentals, i would have definitely burned out. it's just so much harder to teach a language when simple things like data types are a totally new concept to most people who take an intro to programming course.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 07:06 AM
Jesus, do you guys wanna tell some stories about having to walk miles in the snow to school too?

The way things advance is by allowing some level of abstraction to take place. For example did you know nobody knows how to build a pencil? Really nobody does. Leonard Read said that in his 1958 essay "I, Pencil".

The way you're talking about programmers having to learn a C++ or Java(I was taught C myself) is like saying "you know those pencil makers should really have to learn how to run a lumbermill, and mine for graphite before they get to that higher level stuff like building pencils".
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 12:07 PM
Snow? Please. The "teaching" language used on me was COBOL.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 02:03 PM
Quote:
Originally Posted by kerowo
Snow? Please. The "teaching" language used on me was COBOL.
Well if you would have had to walk through snow it would have been
Spoiler:
SNOBOL

Spoiler:
:P
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 02:22 PM
Quote:
Originally Posted by kerowo
Snow? Please. The "teaching" language used on me was COBOL.
Me too - though in year 2 we got to use Pascal so we could use recursion.

Having to fill in an 'identification division' just to make the damn program compile still tilts me though.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 02:55 PM
The first language my college taught was Visual Basic. (The same curriculum as my second high school programming class)

Despite that, I have a career.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 03:04 PM
lol, walking through the snow. I learned on Applesoft BASIC in elementary school. The graphics were really slow. I remember trying to write some scrolling routines in 6502 machine language in middle school (not assembly... issued a "call -151" and entered the hex). Thanks to Woz's "ingenuity", the graphics memory map was bizarre, err, efficient. 1 Byte = 7 dots + 1 color bit, every other pixel belonged to a different color group, and two side by side = white; so you couldn't just rotate bits and carry them over. After each line, the next line jumped 1/3 down the screen (WTF Woz?) for some reason, so vertical scrolling wasn't any better. Never got those routines working.

Looking back, I wish I'd stuck with programming more consistently over the years. I might've done something with my life.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 03:17 PM
The benefit of Python as a learning language is that it maps fairly directly between someone's thought process and the actual code.

Second major benefit that kind of follows from that is that it is easy to read. I mean well written programs can often be understood right away by people with no programming background.

I also think the typical "treat it as magic untill we talk about it later" when it comes to "public static void" in JAVA hello worlds breeds a very dangerous attitude. I think it's really important that one knows what every part of a program does at all times and never gets into the habit of trusting authority.

The more interesting stuff can be tought just as well in Python. I'd much rather teach someone how A* works than spending extra time covering language features.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 04:55 PM
Quote:
Originally Posted by jtollison78
I learned on Applesoft BASIC in elementary school.
Dating myself, but in primary school we did Logo on a Kontiki 100 which was mad fun.



We got to use the computers in the school library (the evenings when it was open) and a few of us would meet there pretty much any time we could to try to outdo eachother in drawing cool stuff with the turtle

Funniest (mainly because it didn't happen to me) evening was when we were all working on an assignment to be delivered the next day - we'd all been working for hours with a number of different tasks when one of the schools regular troublemakers came in. We didn't really notice him until he pulled the plug out of the machine of one of the guys there and then ran out while laughing like a maniac. The poor guy hadn't saved the stuff he was working on for the last hour(s) and after the initial shock got up and gave chase - probably the first and only time in our school history that a raging nerd chased a bully instead of the other way around. He didn't catch him, which was probably for the best for both of them
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 05:37 PM
QBasic for me followed by Turbo Pascal. After fiddling around with QBasic for a bit I tried to write a program that output sounds to the pc speaker and figured random length, frequency and so forth for the sounds would be all right and then I'd figure out some way of making it harmonic later...I dunno why I came up with that idea especially because I have 0 relation to music but needless to say the results where catastropic

Next thing I wrote was a GOTO laden choose your own adventure and a "password protection system" at which point I switched to Turbo Pascal because I couldn't create an executable via QBasic and obviously what I did was put "pwthingy.exe" into autoexec.bat. Dunno how I figured that out tbh since this was pre having internet so clearly I couldn't just google. Pretty much had no friends/family that were interested in computers in any way, shape or form.

I actually got Turbo Pascal because the book looked pretty cool (there was a computer related books section where the video games were located)
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 07:13 PM
I learned on Microsoft Advanced BASIC, then Turbo Pascal 5. By the time I had LOGO in school, I could make that turtle do things.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 09:34 PM
Quote:
Originally Posted by LA_Price
Jesus, do you guys wanna tell some stories about having to walk miles in the snow to school too?

The way things advance is by allowing some level of abstraction to take place. For example did you know nobody knows how to build a pencil? Really nobody does. Leonard Read said that in his 1958 essay "I, Pencil".

The way you're talking about programmers having to learn a C++ or Java(I was taught C myself) is like saying "you know those pencil makers should really have to learn how to run a lumbermill, and mine for graphite before they get to that higher level stuff like building pencils".
I used to walk 3 or 4 miles to school, through snow, but at least it wasn't uphill both ways. My school district didn't have bus transportation for students within (I think) 10 miles.

I think there's better analogies, and I also think that abstractions enhance productivity, but it does not enhance progress. I would go further to say that abstraction actually inhibit progress.

An analogy I am more familiar with is cooking. The most productive cooks are the fast-food cooks. They can push out thousands of burgers in one day. There is no real preparation and little cooking. It is designed to be fast.

A short-order cook actually does have to cook. He (99% he, mkay?) does know how to time a deep fry or cook a steak to medium-rare, he knows how to season the meat, but he isn't creating anything.

Under the short-order cook is a prep-cook. This person is not far-removed from the short-order cook in that he chops tomatoes and mixes ingredients, following a precise procedure. The seasoning is pre-made, and many other elements are pre-fab as well. They can combine, but they can't create or innovate.

A chef, on the other hand, understands the theory of ingredients and cooking. If he doesn't like the seasoning, he has the power, knowledge, and creativity to make his own. If the meat comes in beneath his expected quality, he can tell you why the meat sucks simply by looking at the marbling, texture, and color. If he wants to change the ingredients of a sauce, he can do so, and if he wan't to create his own house-special sauce, he can do so. He can innovate, create, and progress the world from eating calf intestines to Tex-Mex or Cali-Asian food. If he was simply building on abstractions, using pre-packaged ingredients or going by what the bum on the street says is "good" product, he would not have the requisite knowledge to innovate.

The same, IMO, goes with programming. I can run install scripts all day and do superficial things, but those guys who created map-reduce, the google algorithms, NoSQL, and other modern-day innovations didn't pile things on abstractions. They rewrote the black-boxes and modified it to the needs of their problem sets.

I guess it depends on how you define progress:
-- creating more and larger programs progress?
-- rethinking the current world's issues and creating solutions to these problems?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 09:35 PM
10-06-2012 , 10:04 PM
i think the idea is that in order to become a chef, you first need to learn how to do things like follow a recipe and measure ingredients. it's probably best to master those things before moving on to things like how much salt affects taste or how brulee'd your creme should be.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 10:07 PM
the afterlife page and the penny juice page were both awesome btw
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-06-2012 , 11:08 PM
Quote:
Originally Posted by MinusEV
Funniest (mainly because it didn't happen to me) evening was when we were all working on an assignment to be delivered the next day - we'd all been working for hours with a number of different tasks when one of the schools regular troublemakers came in. We didn't really notice him until he pulled the plug out of the machine of one of the guys there and then ran out while laughing like a maniac. The poor guy hadn't saved the stuff he was working on for the last hour(s) and after the initial shock got up and gave chase - probably the first and only time in our school history that a raging nerd chased a bully instead of the other way around. He didn't catch him, which was probably for the best for both of them
We had these "marc" Z80 boards to program at school (a 90's "raspberry pi" type thing) and all was fine until somebody discovered they could crash everybody's in the room by unplugging their own with the power on (either lack of shielding or sucky PSUs I guess)... You can imaging how much fun it was working on them after that!

Juk
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-07-2012 , 12:59 AM
"marc", I wonder if that was similar to ours, we had "Emma 2" boards - also a 90s (80s?) Raspberry Pi. My first course taught programming was awesome! We had 2 different classes a couple of times each week. One "Visual Programming" using VB6, which was OK, and I can't remember the course name but it was 6502 Assembly programming on the Emma 2, which had only a hex keypad and a photocopied list of cpu instructions documentation Most people, even complete novices soon grasped binary, memory addressing and hex opcodes. There's def something to be said for learning low-level stuff. Much easier to understand and learn the higher level languages once you know there is no real "int", "string" etc. only binary memory. Or at least I think so. Probably everyone thinks how they learned was great, if it was good enough for them to stick with it
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-07-2012 , 01:08 AM
Quote:
The same, IMO, goes with programming. I can run install scripts all day and do superficial things, but those guys who created map-reduce, the google algorithms, NoSQL, and other modern-day innovations didn't pile things on abstractions. They rewrote the black-boxes and modified it to the needs of their problem sets.
If I understand your post correctly you are somehow implying that a language that is easy to learn is somehow less suitable for innovation?
That might be true if you limit innovation to some pretty specifically defined area but by and large people use languages as tools to work on their ideas. A language like Python actually leads to tons of innivation outside the realm of CS, for example it's basically the goto language in many scientific fields (I'd say due to the fact that it's easy to learn not despite it)
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-07-2012 , 03:05 AM
Quote:
Originally Posted by clowntable
If I understand your post correctly you are somehow implying that a language that is easy to learn is somehow less suitable for innovation?
That might be true if you limit innovation to some pretty specifically defined area but by and large people use languages as tools to work on their ideas. A language like Python actually leads to tons of innivation outside the realm of CS, for example it's basically the goto language in many scientific fields (I'd say due to the fact that it's easy to learn not despite it)
I was saying more in the realm of CS actualizing CS, if you can take it as truth that I'm not shifting goalposts.

I'm thinking that the use of C has allowed for many innovations in areas such as PostgreSQL and other databases, operating systems, game development, and serves as the base of many languages. I think that the need to abstract C, assembly, JVM, etc, has lead to many innovations, thus abstraction has led to many innovations, but I don't think that the abstractions themselves have lent to many innovations, a'la RoR (abstraction of Ruby, but what has RoR really led to?), or PHP abstracted to CMS, or even C abstracted to Python, etc.

I do think that the need to recreate abstractions because the current ones aren't good enough for certain problems has led to many innovations via functional over imperative for concurrency or logic over functional for databases, Sinatra instead of RoR, etc.

I know I'm toeing a thin line here and I'm certainly open to a history lesson.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-07-2012 , 07:03 AM
I think languages like Python are used a lot for prototyping new ideas when it comes to developing algorithms.

Specifically in AI for many search algorithms (informed search) the real value comes from finding good heuristics for a specific problem space and not so much in squeezing out the last drop of CPU etc you can get (which of course you'll want to do once you have found the actual algorithm).
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
$25m Guaranteed WPM on CoinPoker
Join the action now
Daily Rewards • Splash Pots • CoinRaces
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **

      
m