Learning To Code: Are We Having Fun Yet? 226
theodp writes "Nate West has a nice essay on the importance of whimsy in learning to program. "It wasn't until I was writing Ruby that I found learning to program to be fun," recalls West. "What's funny is it really doesn't take much effort to be more enjoyable than the C++ examples from earlier...just getting to write gets.chomp and puts over cout > made all the difference. Ruby examples kept me engaged just long enough that I could find Why's Poignant Guide to Ruby." So, does the future of introductory computer programming books and MOOCs lie in professional, business-like presentations, or does a less-polished production with some genuine goofy enthusiasm help the programming medicine go down?"
It's all about keeping interest (Score:5, Insightful)
The important thing about learning to code is keeping interest/motivation to do so.
I agree with the general approach that the essay espouses - whimsy is a great way to keep interest; but it's certainly not the only way. Different things work for different people. My daughter is two and a half years old, and so far has totally rejected learning that involves traditional 'reward' such as the way gCompris shows 'happy' images on completing tasks vs 'sad' images when failing. However, what seems to do it for her is being able to 'show off'. When she can make her grandmother surprised by being able to point out letters of the alphabet on things, she is much more motivated to learn and get it right.
I'm sure my daughter's learning style will develop and change as she grows; I just wanted to use an example that demonstrates not everyone is motivated to learn in the same way. I don't think coding is any different.
Re: (Score:3)
Then the progression was moving to Basic on The Archimedes range of ARM workstations (UK) and writing desktop programs, defiantly fun to make your own desktop program back in the day with lots of "wow" factor.
Progressing to PC's a
Language lawyering (Score:3)
I find C++ much more fun, because it does exactly what I tell it to.
But you sometimes have to be a language lawyer [c2.com] to figure out exactly how templates, inheritance, the implicit conversion, and other C++ language features will interact in a given case. See C++ FQA Lite [yosefk.com] for a taste of the language lawyering that C++ programmers have to do in their heads to be competent in the language. In what way do you find this easier than figuring out the semantics of a particular dynamically typed language?
Python, PHP, Ruby
PHP is less strongly typed with its policy of playing loose with implicit convers
Re: (Score:2)
Dynamic languages aren't going away. You can try a TDD approach if you want something more strict.
Re: (Score:2)
I find C++ much more fun, because it does exactly what I tell it to.
I have a deterministic computer too, but I prefer to program it in something I can understand what I thought I told it to do, like C.
Re: (Score:3, Interesting)
I agree that everyone learns in different ways, I've certainly never been great under the classic schooling system but have always been way above the average when it comes to self directed learning in my own time but I'm not convinced this making learning fun thing works.
If we're talking about producing high calibre software developers then you don't need to do anything, the passion for the topic alone will keep them going and they wont find any of it boring enough to put them off and wont need special gimm
Re: (Score:3)
I'm not convinced this making learning fun thing works.
People can learn life's lessons the fun way or the hard way. Problem is, the lesson just happens, it's rarely, if ever, the students choice how it's delivered.
Re:It's all about keeping interest (Score:4, Interesting)
It's funny what you say about literature. I had a professor in college talking about what B F Skinner meant in a class and a student said, "You're wrong!" He said, "What makes you think I'm wrong?" And the student said, "Because I called B F Skinner and asked him the answers to all these questions."
To his credit the professor (who was actually a really cool guy) said, "Can I have a copy of your paper so I can teach the rest of the class?"
Re: (Score:2)
So sure the guy in the summary may have found Ruby a bit more fun, but honestly if he's not got the interest to learn the parts of development that made C++ boring for him his programming abilities are never going to get past the point of any relevance. Either you like the subject enough to push through the hard sometimes even boring bits or you don't.
The above is a huge oversimplification. If it was just a matter of "you're either interested enough to try or you're not", we could start teaching Calculus to first-graders and find out right away which ones were "interested enough" in math to succeed and which ones weren't.
The reality is that people learn at different rates, and presenting people with material that is too far beyond their current skill set will only frustrate them. If the author wasn't able to grok C++ at one stage in his learning develo
Re: (Score:2)
I think you are using the word "fun" too narrowly, perhaps. Interesting might be considered a kind of fun.
"Play" is the word we usually use to refer to the things that small humans, and members of every other species that learns, do to learn how to do things. The discovery that play is an effective way to learn should be totally unsurprising.
And willpower can make up for that, some, but it's a limited resource, and when you use it up making yourself pay attention, you have less cognitive capacity available
Re: (Score:2)
Well for me I find learning some things not fun at all, but the reason I say interesting is because I view them as a requirement to get to the next step that I will find fun.
For example, I did a whole course on statistics that used medical statistics as it's examples and I found it utterly piss boring, but it was a means to an end to get to the interesting parts that are relevant to things like machine learning. I'm sure in contrast though some students loved the medical statistics examples and if they'd us
Re: (Score:2)
You spoiled-rotten 21st century golden billion... Having to learn a trade has nothing to do with it, has it?
It must all be fun and games, or else you aren't going to bother getting up in the morning, are you?
Oh, well, for toddlers it is Ok, I suppose...
Re:It's all about keeping interest (Score:5, Insightful)
You spoiled-rotten 21st century golden billion... Having to learn a trade has nothing to do with it, has it?
Honestly, no. The vast majority of things that someone learns in this modern day and age have nothing to do with their 'job'.
I'm a software developer (and will be trying to transition to full-time author once I get a few more books out (especially with more mainstream subjects than my current one)). Nevertheless, most of my daily 'learning' is focused on chemistry, physics, linguistics, pharmacology, medicine, and writing. Sure, I still learn a lot for my day job - if you're a software developer and you don't, you won't last long - but it doesn't make up even 20% of what I learn each day.
I know a lot of coders. Most of them do it as a day job as well, but not all. Even amongst those who do, it's the passion for it that keeps them doing it rather than just putting food on the table. Sure, that's extremely important and a definite bonus, but they'd probably still code at home if they had jobs as accountants, lawyers, doctors, or McDonalds counter staff.
Re:It's all about keeping interest (Score:4, Informative)
Yttrium, you say in your sig that you wrote a book, but not what that book is about. Worse, your URLs are opaque (and aren't links). So there's no incentive for anyone to find out about your book.
Just an FYI, not meaning to harsh on you about this.
Re: (Score:2)
Yttrium, you say in your sig that you wrote a book, but not what that book is about. Worse, your URLs are opaque (and aren't links). So there's no incentive for anyone to find out about your book.
Just an FYI, not meaning to harsh on you about this.
I know... the problem is that Slashdot allows no more than 120 characters (which includes HTML code for links apparently) and ALSO has a bug whereby more than one link in the sig causes it to mess up the HTML in strange ways.
But, you're right - it makes much more sense to have one link with a description than three shortened URLs that aren't links.
How's this new one? I had to keep the shortened link to make it fit though...
Re: (Score:2)
Yes, that makes more sense.
Re: (Score:2)
The sig must have changed between the time you posted and now, because when I saw "My book about LSD and Self-Discovery" and "DroppingAcid" I twigged to the idea that the book likely had something to do with dropping acid. The link led to the book's page on Amazon.
Btw, I read some sample pages on Amazon; dude was there. His advice and descriptions pair nicely enough with what I found when I first tripped in '67. Well, I think it was '67. Sure seemed like it, all the way through '77, when I stopped doing
Re: (Score:2)
And my point was, this awesome state of affairs is a luxury — an un- (or, at best, under-) appreciated one.
Re: (Score:2)
I develop at work for money and at home for fun. If programming projects at home sucked i'd probably find a different hobby : /
Perl epiphanies (Score:5, Insightful)
I had much the same reaction to perl. I love perl for many reasons. One is that even though the native language without any imports is more powerful than almost any other languange (without imports) the O'reily nut shell guide is the thinest one on my shelf. It really says something about incomprehensibility when even the C++ nutshell guide is thicker than perl. It means that even though perl might seem very ad hoc, in fact it's so self consistent that you can write it all up in a tiny guide.
What really sold me on perl was writing object oriented perl. I had been doing object oriented programming for some time in multiple languages including java and Objective C, but what really made me understand it was perl. In perl you actually see the underside magic of what an object actually is. It's remarkable that the language of perl could go from not having any objects to having objects just by adding one additional command ("bless"). Nothing else in the language had to be re-written. Internally one is storing all the instance variables in a single hash. What's interesting is that you don't have to choose that mode of data organization. you can instead bless a scalar. then you can have the class rather than the instance manage the instance variables. Effectively a hash is a row oriented data base and a scalar is a column oriented data base. When I realized this I was sort of staggered how many high concept ideas were rolled up into the perl method of objects.
I went back and implemented a hash in fortran 77. After that I could write Object oriented fortran 77. yep that's right fortran can also be an object oriented language just doing the same trick perl does. All you then are missing is dynamic memory allocation for it to be complete.
While may people curse perls prefix sigils I actually find them conceptually compact. In most languages the notion of a type, and the construction of a primitives data, get conflated. Really these are different things. Perl makes this explicit. A primitive in perl can have a data organization (list, hash, scalar, reference, dereference, glob) signified by a pand it can separately have a package inheritance (@ISA) that is analogous to a type. In languages like C++ or most everything those two concepts are not distinguised heavily. As a result I find it easier to read a perl program because of all the explicit data structure prefixes.
What kills perl in the end for complex programs is not these sigils looking like cursing on the page, but rather that everyones programming style is different, so it gets pretty crazy to read because it's so compact. It's perhaps a compliment how compact it is. It's interesting that the less compact and less versatile a languages native syntax is the easier it is to read.
But it's true. Try reading APL, the most dense language ever devised. then try reading Lua or (early) python. Both of those are a breeze to read other people's code.
When I read ruby what I see mainly is an extended perl syntax that can avoid using these despised prefix sigils. It gives the objects syntacic sugar, like python does, to hide the object mechanics from you. So it's a very clean looking upgrade to perl.
Re:It's all about keeping interest (Score:5, Insightful)
You had better get involved and start steering her in the right direction, pronto.
People who grow up depending on recognition end up miserable. She's going to give it up when she's 13 to get approval from some boy she likes if you don't nip this in the bud.
To an extent, it's perfectly natural to depend on recognition. If she totally relies on it for value of herself, then yeh, that's bad. I'm not going to start worrying just yet though.
Regardless, I don't want her to be like me - socially retarded and awkward right until my early to mid twenties. A lot of 'geeks' like me think it's a prerequisite to be socially awkward if you're smart. It's not. You can be smart, geeky AND popular.
Sure, if she does end up being that way, I'll support her (I'll support her no matter how she ends up) but I'll do my best to steer her in the way that I feel is going to help her achieve the greatest amount of happiness in her life.
Re:It's all about keeping interest (Score:5, Interesting)
I think as kids grow up they may find other ways to gain attention and have other desires besides attention. But what I hope to instill in them at a young age is that people will like you if you can show them you are smart as opposed to showing them you can, I don't know, do something that gets you sent to the principals office.
Re: (Score:3)
To an extent, it's perfectly natural to depend on recognition.
Yep. Everybody wants attention, so long as it is sought in healthy ways that's not a problem, it's just normal humanity.
Re: (Score:3)
A lot of 'geeks' like me think it's a prerequisite to be socially awkward if you're smart. It's not. You can be smart, geeky AND popular.
If you are really "smart and geeky", it's highly unlikely you are spending time doing what "popular" people do, and that greatly controls what kind of social interactions you have with people.
When the "popular" people are doing whatever they do today (OK, I admit I'm old and don't know what the current version of "going to parties and hanging out at the mall" is), the geeks will be doing geeky things. World of Warcraft has more of a non-geek presence than D&D, but "playing video games" is still not som
Re: (Score:2)
I played basket ball from the age of 7 to 18 for fun. And I ran a BBS using Netware 3.11 when I was 14.... I think that proves you are mistaken. Everyone knew who I was in High school and would walk up and talk to me but I didn't goto many drinking parties but LAN parties and BBS get-togethers sure.
I will say I HATED school. It was the same fucking classes over and over again. Drove me mad.... still am insane, can't stand schools or colleges....
Re: (Score:3)
Reading Paul Graham's "Why nerds are unpopular" [paulgraham.com] seems relevant if one wishes to dig deeper into this topic.
Geeks by their very definition have have interests that set them apart from the popular kids. "Geek" and "popular" just don't mix, though one could be popular among fellow geeks, but I'm pretty sure that wasn't what the OP had is mind.
Re: (Score:3)
"Geek" and "popular" just don't mix, though one could be popular among fellow geeks, but I'm pretty sure that wasn't what the OP had is mind.
Actually, when I wrote that, I really just meant, "has an average or above-average sized circle of friends"; "is not considered 'someone to be abused' by a significant number of people"; and "is able to form new social connections with relative ease, given the normal factors of common interest and so on".
So, maybe 'popular' was the wrong choice of wording, but I was basically meaning it's possible to be a 'geek' and not be like I was...
Re: (Score:2)
She's 2 1/2 it's fine... after 6 then worry...
The classic (Score:3, Insightful)
I like to learn this way better than that way therefore this way is better.
Yes, for you. That way may better for others perhaps even most.
Q: "Are we having fun yet?" A: Chess (Score:2)
I agree with your point about how these articles are a waste of time to read b/c they are essentially just one random person's diary of their tech travails in life....
The question of the post, about coding being 'fun' I think goes to something deeper though, something that TFA tries lamely to address:
Coding languages are non-sensical. That's what makes them so 'hard' to learn.
First, let me contrast between 'easy' and 'hard' & 'simple' and 'complex'....so, the task of 'dig a 5x5x5' hole in the ground' is
Coding on Windows (Score:4, Funny)
Hello! I see you are trying to create an array which is bigger than the RAM on your computer. Would you like me to order additional RAM on amazon.com for you at the cost of USD$5,452,981,583 or would you rather create a 1 petabyte swap file on your 3 terabyte hard drive? - Clippy
Re:Coding on Windows (Score:4, Funny)
Hello! I see you are trying to create an array which is bigger than the RAM on your computer.
Is the array called make_prog_look_big [mit.edu]?
Re: (Score:2)
Re: (Score:2)
Dead, but not forgotten.
Ugh, I hated Why's Guide... (Score:4, Interesting)
Seriously? I hated Why's Guide... it was stupid. I'm sorry. Just get to the point. I'd rather have a BNF with some sample code, without the fluff. Lua's documentation was the best I've seen (for introduction to a programming language). Go's is pretty good too.
Re: (Score:2)
Seriously? I hated Why's Guide... it was stupid. I'm sorry. Just get to the point.
As someone not interested in learning Ruby I actually enjoyed reading Why's Guide. It's very creative and clever and fun. Why clearly has a talent for creative writing (and for drawing cute little foxes).
That said, would I use it as a way to really learn how to program in Ruby? Absolutely not. I'd much rather have something closer to an O'Reilly animal book, or Learn Python the Hard Way [learnpytho...ardway.org].
Lua's reference guide is great, but I prefer a bit more than just a language's grammar since part of learning a new la
Re: (Score:2)
Interesting data point: I hated it, and it was actually the reason I didn't try Ruby the first couple of times I heard about it, because everyone was SO enthusiastic about this, and I couldn't extract information from it.
But I actually love Ruby. It's probably my favorite language to work in.
So this is more subtle than just a do/don't like Ruby thing. And I don't know what the deal is. I do note, I'm autistic and sometimes get bogged down on poetry, and I think a lot of that writing is functionally poetry.
interesting that a newbie is telling the world how (Score:5, Interesting)
The author has a point, maybe. I did notice that he was ten years old in the nineties and learned to program after college, meaning he has maybe five years of experience. He may be missing the REASON you name it "XMLReader", not "SusieQ" or whatever he said. If he ever has to grok a medium sized project full of classes with "whimsical" names he may wish for clear, intuitive names.
My predecessor at work was whimsical - every script or class has a variable named "bob", which sometimes is important, sometimes does nothing. Occasionally, he forgot what he was using bob for in a particular function and tried to have it represent two different things. One of our tasks is to slowly replace all of his whimsical code with proper code that is reliable and self documenting
Re: (Score:3)
"The author has a point, maybe. I did notice that he was ten years old in the nineties and learned to program after college, meaning he has maybe five years of experience. He may be missing the REASON you name it "XMLReader", not "SusieQ" or whatever he said. If he ever has to grok a medium sized project full of classes with "whimsical" names he may wish for clear, intuitive names."
This holds true in the sysadmin world too. If you have just a couple servers, it's fun to give them whimsical names but once yo
Re: interesting that a newbie is telling the world (Score:2)
Re:interesting that a newbie is telling the world (Score:5, Interesting)
When I was an undergrad with a part time job helping out in a graduate chemistry lab, there was a suite of utilities written in FORTRAN. People depended heavily on this suite to calculate all manner of things related to their crystallography research.
The problem was, it was mostly written during one of those years where Lord of the Rings and the Hobbit were massively popular again, and people were learning to program with hunt-the-wumpus teletype programs. The original author "amused" himself by naming pretty much anything he could after some fantasy concept. CASTLE, FRODO, DRAGON, and so on. Okay, so to map out van der Waals surface strength, you ran CASTLE. Many things have quirky codenames, you get used to it. But all the variables followed suit. Now it was a bit more obscure to maintain the program or trace the logic.
Worst of all, the comments. In FORTRAN, columns 1 to 72 were for your program, and anything after 73 was a comment. The author wrote an "epic" of his own, all word-wrapped in the column space from 73 to 132 (the width of common teletype paper and long Hollerith punch cards). What a waste of his time, you might think. But it was also a huge impediment to maintenance; you see, people in the lab LIKED his story (for a while), so they had to figure out how to patch the logic without breaking the flow of the story. It took years before someone stripped all the prose and got the rest of the lab to follow the maintainable fork instead o the prosaic one.
Re:interesting that a newbie is telling the world (Score:5, Funny)
The author wrote an "epic" of his own, all word-wrapped in the column space from 73 to 132 (the width of common teletype paper and long Hollerith punch cards). What a waste of his time, you might think. But it was also a huge impediment to maintenance; you see, people in the lab LIKED his story (for a while), so they had to figure out how to patch the logic without breaking the flow of the story.
I've been a professional software developer for nearly 25 years now, and did it for fun for about 10 years prior to that. I'm old and jaded, and before this morning I thought I had come across every way in which a well-meaning person can make a computer program difficult to maintain.
Thank you more than words can express for restoring my sense of wonder in the universe today.
Re: (Score:2)
The books inspired Larry Wall to become a linguist and work at a job processing electronic communications, and that's how Perl was born.
That almost sounds like the story of Morgoth.
Re: (Score:2)
If he ever has to grok a medium sized project full of classes with "whimsical" names he may wish for clear, intuitive names.
I read that part of the summary about "getting" to write whatever it was (get.chomped or something like that) and immediately yearned for a computer programming language where you could calculate pi to 300 places using the commands:
Wouldn't you?
workplace violence (Score:2)
That would result in workplace violence.
a different perspective (Score:3)
It's all about fun (Score:3, Interesting)
When I hire a programmer, my first goal is to find out how much fun they have coding. Without that, I don't hire them.
Re:It's all about fun (Score:5, Funny)
My understanding is that management only hires people who have fun doing their job because management is largely made up of Funpires who need to slowly leech the fun out of their victims, leaving them soulless corpses.
Seriously, why else would they veto Pants-Free Fridays?
Re: (Score:2)
Seriously, why else would they veto Pants-Free Fridays?
Perhaps because they saw you in shorts once outside of work, and are still trying to pay off the therapy bills?
Translation (Score:4, Insightful)
When I hire a programmer, my first goal is to find out how much fun they have coding. Without that, I don't hire them.
Translation: I want someone to work his ass of to the bone for shitty pay because he loves it.
I USED to love to code. Then after about 4 -5 years of the 55 -60 hour work weeks to meet the deadlines set by sales and having to keep up with technology at home (more coding), I just got to the point of disliking it. Burnt out.
BUT - I get the specs: I get the job done - on time. And then go home to the family and my tennis game. I work to live: NOT live to work. I have balance in my life and I'm MUCH happier.
Having someone "Love" it is like dating in high school - they're out of love at the end of the Summer.
I talked to career councilors, they told me to stay in development/computers; so it's not me, it's the screwed up industry and its idiotic notions of what makes a "good" programmer and employee.
Perhaps if folks promoted folks who actually have grown up and gotten beyond the adolescent idea of "you are what you do" and "you must have passion" that maybe there would be changes in the working conditions.
Re:Translation (Score:4, Insightful)
Echostar was the least-fun place I've ever worked. Despite the fact that they had fairly interesting problems to solve and interesting hardware to work on, their corporate culture leads me to believe that they despise having to have employees, and the quality of their work reflects that. So it is actually possible to make fun problems to solve not-fun. Next job after that was back at IBM working with an AWESOME team with room to improve code quality as time went on. We generally only put 40 hours a week in there, got all our stuff out on time and could have kept our pace up indefinitely. Amazing how much of a difference corporate culture makes.
If you're not having fun programming on your job, maybe you're working for the wrong company. If you're the kind of programmer who actually enjoys programming, it's not that hard to find a position with a company that's more fun to work for. All you really have to do is look.
Re: (Score:2)
Re: (Score:2)
Then who does all the un-fun stuff like testing and documenting. Exactly.
LPMUD! (Score:4, Interesting)
The most fun I've seen people have while learning to program was back in the 90s, when people
learned to program for LPMUDs [wikipedia.org].
It takes about half a second for someone to understand object oriented programming with inheritance
if they create a key, or a door, or a special sword, or...
And they had so much fun programming. They never wanted to stop.
I wish someone could create a similar 3d MMORPG (with physics) to keep up with the times...
Re: (Score:2)
Re: (Score:2)
Actually a good idea - am thinking I'll try to use it some day.
The right tools, language, and project (Score:5, Insightful)
1. A toolset they can use to build useful projects
2. A language they can grasp easily
3. And a genuinely useful project they can achieve
Everyone's best coding experiences have come from a desire to do something, combined with the right tools to achieve it. In the early days of 8-bit computing and BASIC, this was about making a game where the computer said "I've thought of a number between 1 and 1,000", and then you guessed and it told you you were too high or too low.
When you got that going, that was an extraordinary sense of achievement. "Look ma! I've made a simple game, you can enjoy!"
And then came Windows and complex APIs, and languages like Visual Basic that abstracted too much from the users, such that much that happened was 'magic'. Who - given a computer these days - begins to think "how do I *make* something amazing?"
Fortunately, things are getting better. The right languages are now available - most notably Python, Lua and Ruby - all of which are proper programming languages, but which are also easy to learn.
And the Raspberry Pi [raspberrypi.org] project comes from the right place. The issue it has, perhaps, is that people don't want to produce Raspberry Pi apps - and that desktop apps for Linux, whether written in Ruby, Python or anything else, are hardly childs play.
A better option for deploying a *real* app, people want to use, a modern equivalent of the guess the numbers game, must be either an app for a smart phone, or it must be a web app which can be deployed (for free) in the cloud. In which case, I think there are two or three options. (There used to be more, but Heroku Garden is no more). For smartphone development, Corona SDK [coronalabs.com] is fairly mature and works with both Android and iOS. For a web app, there are a few more options, of which PythonAnywhere [pythonanywhere.com] is probably the best of the bunch.
I suspect a decade from now, the self-taught developers will have mostly learned their craft in one of these languages, building useful apps for smartphones or the web.
It's why I love Perl (Score:3)
I agree that some languages make Programming a very heartless and painful experience, but then others are just fun to get working. It's how I fell about Perl. I love that I can get to a solution via an assortment of different ways and that there's not just one way to do everything. It allows me to express my individuality and creativity and helps me maintain a sense of ownership. Sure, that's not always a top priority to your boss, but as a programmer, it makes you feel more than you're just another project resource... probably vanity or hubris, but sometimes you need something to have a little pride in doing--code that isn't just generated by next-year's code generator.
Re: (Score:2)
To much College mindset. Need more trade school (Score:2)
To much College mindset. Need more trade school / apprenticeship setting.
To have an AP that is Java based is good and bad (based on how much theory there is) It can be good for people doing Java work but may not so good for people doing other coding work. Also it may be a poor fit for people doing IT / network work.
But it can also be very Theory based that does not even tech you how to trun out workable java code.
IT / tech work needs to be less College and shorter class times / more skill based learning wit
Re: (Score:2)
Evidently, to much is still not enough!
Make stuff happen (Score:4, Interesting)
Re: (Score:2)
You're recommending a total newb to programming start with C or assembly and a circuit board? For most of us without infinite patience, that sounds like a sure recipe for the circuit board to get thrown against the wall after 5 hours of being horribly confused and getting nowhere...
Re:Make stuff happen (Score:4, Insightful)
Re: (Score:2)
I just started playing around with scratch, which lets you get stuff running easily without hardware headaches.
Simple stuff like making a sprite move or make noise in response to keypresses is pretty cool for little kids. And me.
The other think I like about it is the format. "Code" still looks like code, with nested for/if statements.
It can be slow ans it breaks down for medium to complex stuff, but making crappy flash games is easy. And they apparently have a decent version for dealing with NXT robots..
Stupid premise, stupid code (Score:5, Insightful)
I've rarely met a Ruby developer who was employable in another field because they simply don't know what constitutes good, clean, concise code.
I've got karma to burn...
Re: (Score:2, Insightful)
Amazing how many experienced coders are venting here about their favourite toys, my favourite colour is blue, I'd never use anything but an estwing hammer, snap on tools rock! Who gives a toss what language you love and which one you hate, the story was focussed on people learning to code, not the jaded ramblings of people who blame the technical implementations of others.
The best thing you can do is not learn to code at all if you end up sounding like a dick.
Re: (Score:2)
It's not that the language is inherently bad. No language is inherently bad. It's just that you need to use some very strict discipline when using it. If you write unit tests for everything and actually design your objects, it would be pretty goo
Re: (Score:2)
Maybe you could give an example of a "good programming language"?
Because "concise set of commands" and "concise code" seem to be contradictory.
To each his own, but I really like Ruby programs because they're usually much shorter and to the point, than say, Java, C or PHP equivalent.
I know I'm biased because I work with Ruby on a daily basis, but I think :
1.upto(10).each{|i| print i}
is self documenting.
Who cares if you could write an equivalent with
Range.new(1,10).each{|i| print i}
or
for i in [1,2,3,4,5,6,7,8,9,10] do
print i
end
?
Given the properties you're looking for, I suppose you prefer Python over Ruby.
The
Re: (Score:2)
Your ruby code is exactly unreadable. Why? As soon as you do many things on one line, it becomes unreadable. Ruby seems to encourage that behaviour.
You are probably just not good at interpreting it well; most humans have no problem with that. For instance- the single line I quoted from you contained several sentences but I had no problem understanding it.
1.upto(10).each{ |i|
print i
}
Case in point. You are actually doing 2-4 things on the first line of that code (depending on how you define a "thing"). But that is how you've structured the way you read code. Thinking that that is the best way because it's all you can muster is the height of hubris. Something simple like that
Re: (Score:2)
Also, relatively simple one-liners leave precious vertical space for more important parts of the code.
Re: (Score:2)
I see no reason that the 'same, simple function' needs to be restricted to a single mechanism. There may be advantages to that, but we should all be familiar with the troubles inherent in treating a language as a series of immutable building blocks. All the stats show; the fastest, most secure, most quickly written, and most maintainable code relies more on the programmer being comfortable with the language and allowed to write in their own style (both of which require experience), than it does which lang
Re: (Score:3)
I wish I could mod you up. 8 years ago I started a project for a client that turned into a company that I sold 2 years ago. I didn't make millions, but made enough to buy a house and a farm that pays me enough rent to cover my living expenses allowing me to work with other startups without having to worry about paying the bills. [Marrying a corporate attorney with an MBA helps too]
At any rate that was at the height of the RoR craze. I was in a college town, actually in law school after spending a few ye
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Which is pretty much why I avoid Python -- because since I happen not to have the exact same intuitions as the Python community, everything written in the "Pythonic" way is awkward and backwards to me. And there's no way for me to use the language without having to be a person who has a different set of intuitions.
I can fake it, but it's a lot of work and I find it unpleasant.
Go ahead, re-invent that wheel (Score:5, Insightful)
Perhaps the most soul crushing phrase you will ever hear as a programmer is: "Don't re-invent the wheel."
Go ahead, re-invent that wheel every now and then. That's why you got into programming in the first place. You can do a better job.
Re:Go ahead, re-invent that wheel (Score:5, Insightful)
Even if you don't wind up doing a better job, reinventing the wheel is a good way to understand how wheels work. So the effort isn't wasted if one learns something at the end of it.
Trend of the day (Score:2)
So Many (Score:3)
I tried a number of languages and books before I got "comfortable" doing any kind of programming. Assembly, C++, Java, PHP, Javascript, Perl; I would check out books constantly from the library growing up and spend weeks trying out different things. Some of the books were in the "For Dummies" series, and no amount of humor or so-so comics made Java fun. Same for the rest. Programming didn't start being fun until I actually had something to achieve - once I had a project in mind, the programming became much easier to understand. A book's approach of "now we'll make an address book program" is so dull and boring, it's just not something I can get in to. Maybe that's why I still have a hard time reading through language books today - even Learn Programming the Hard Way has been difficult for me, because I don't feel like I'm going to apply any of it in a meaningful (to me) way.
Re: (Score:2)
Horrible, disgusting things. Think "real estate."
Fun Joy Beauty (Score:5, Insightful)
Helps (Score:2)
These things help but, if you are into a good problem, even cout is a minor annoyance. I wonder if there isn't some self-selection bias going on here. There have always been terrible bores of teachers. Hell when I was in college I got sick with the chicken pox and, on my way home, realized I needed to talk to my calculous prof, but I couldn't remember his name. My roomate asked if it was Prof SoandSo, "Tall pale humerless pale guy, talks in a monotone voice?" "Yah that is him"...turns out it wasn't.
Perhaps
Re: (Score:2)
Frankly, I don't think it matters much what language you learn in...they all have their idiosyncrocies, but, with few exceptions (looking at you LISP) they are mostly the same
LISP isn't really all that different from other multiparadigm procedural languages like C++ or Java, particularly now that both are getting first-class anonymous functions. It's mainly the culture which places it in the functional programming camp, not the language per se. If you want to see something different, try Haskell (pure functional) or Prolog (declarative), languages which really force you to take a new approach to programming.
The dangers of humour (Score:2)
I think it is well documented that people learn better when they have fun - even to the extent that the fun doesn't have to be at all relevant to the subject. I recall an experiment where a comedy movie was shown on a screen while a teacher went through his lecture and his class remembered and understood the subject better than a class that didn't watch the movie.
The danger is that humour is sometimes difficult to get right; if you get it wrong, it prejudices the student against the subject. I've tried it m
I will never relate to this :/ (Score:2)
"What's funny is it really doesn't take much effort to be more enjoyable than the C++ examples from earlier...just getting to write gets.chomp and puts over cout > made all the difference. Ruby examples kept me engaged just long enough that I could find Why's Poignant Guide to Ruby.
To me, this just does not make any sense. The preference of gets.chomp over cout << (or viceversa) are so subjective that they borderline on the ridiculous. I don't think I will ever relate to such minutia. Even when I was in my formative years as a future programmer, such minutia seemed as irrelevant then as it does now.
At least for me my focus and motivation were always a) what can I create with this programming language, and b) how can I tame this beast. That's the approach I took with BASIC, wi
Re:You're doing it wrong (Score:5, Funny)
PHP is a much, much better choice! Everything just fucking works, even when some parameters are wrong and you're mixing variable types all over the place. /duck
Re:You're doing it wrong (Score:4, Insightful)
Everything just fucking works, even when some parameters are wrong and you're mixing variable types all over the place. /duck
That's probably because you're a "duck"-typing programmer.
Re: (Score:2)
Are you calling me a quack?
Re: (Score:2)
Re: (Score:2)
My uni used VB.NET for the beginner classes and Java for people in a programming major. It was ok for simple programs, but anything complex became an exercise in frustration. I only really got back into programming when I needed some PHP for a family reunion website I was working on. Even then, I don't think I would have stuck with it if I didn't find it 'fun'. I think 'fun' is essential for starting it because your early programs aren't going to be very rewarding when you look around at all of the complex
Re: (Score:2)
I don't have mod points today but I'd mod you up if I could.
I agree that fun can't be the motivation, however not-fun is detrimental and it's a totally subjective matter. I give two examples.
One. I started programming with C and Perl and used them for years and I was totally happy with them (especially with Perl's text processing capabilities). Then moved on to Java which looked as a big improvement: no malloc, no free, one wonders why we had to deal with them for so long (but C was quite a regression to th
Re: (Score:2)
The "fun" part isn't just getting entertaining teachers - that might certainly help slog through the coursework, but it won't make you stick with it. The "fun" part is when you learn to solve problems in an easier way. For example, maybe someone loves to play Sudoku? Teach them how to program a computer to solve (or even better, create) a Sudoku puzzle. Someone who is an avid golfer might like to create his own handicapping program. A sailor might have fun trying to solve for the best route around some buoy
Re: (Score:2)
It shouldn't need to be made 'fun', as it's the intrinsic motivation of getting the computer to do something is its own reward.
There is a large gap between not being able to program and being able to get the computer to do something you want it to do.
Before kids can create the games (or toys/tools/etc) they want to make, they have to go through a lot of intermediate steps.
Re: (Score:2)
You talk about not introducing unnecessary abstractions and then you propose python, ruby, and scheme?!?! Just what are you smoking?
My first computer had a built-in basic interpreter, which was cool in that you were expected to 'program' to some degree to use it, but basic was way too abstract to be fun for me. What made it fun was figuring out how to bypass it and use machine code. And what made programming so not-fun in Uni was all the high level gunk, C and Pascal were the rage at the time, boring mickey
Re: (Score:2)
Re: (Score:2)
Do you want the SCADA guys come up with an internet connected software that controls the nuclear reactor up the road...?
Re: (Score:3)
Everyone has to start somewhere. Just because you dive into something head first and sidestep academia does not mean you can't pick up better practices as you progress. A strong foundation which mainly includes jargon and basic structural programming practices. From there you will begin to pick up on things like good commenting, clean des
Re: (Score:2)
Six months later, my new wife and I played Adventure on an IBM 370. She just earned her CISSP. A little whimsy goes a long way.
All the way to the altar! What a swell story.
Re: (Score:2)
As long as you don't want more than a trivial-length program, sure.