Fog Creek Software
Discussion Board




my boy wants to learn modern & visual language

my 15 years "old" boy wants to learn an "modern+visual" language, but i don't sure how to answer!
(i hope he is not reading this).

Visual Basic don't have good press, you know: "not for professionals stuff, any secretary uses it when *programming* in access..."

maybe better recomendation would be MS C# or Visual C++?

he is looking for some good-not-too-complex book or tutorial (even online tutorial with samples and so) but oriented mainly to simple windows forms applications.

as you can see in may name, we are spanish (from Spain), so would be great if -aditionally- the book or services where available in spanish, but we prefer a good book/service in english than an not-so-good spanish one...

maybe he is preparing to be one of this super star programmers in the future...

Thanks for your recommendations.

Guillermo
Friday, October 24, 2003

Hey, let him start fro mthe ground up with logic, assembler, and move on from there. Cheeky little oik he is, asking to skip all those steps ;-)


Friday, October 24, 2003

realbasic is verra good

FullNameRequired
Friday, October 24, 2003

Purebasic is easy on the pocket (59 euro) and is geared up to what a 15 year old really wants to code - games.

Ged Byrne
Friday, October 24, 2003

http://www.purebasic.com

Ged Byrne
Friday, October 24, 2003

Somebody is working on a spanish translation of the manual. 

http://purebasic.myforums.net/viewtopic.php?t=7158

Ged Byrne
Friday, October 24, 2003

Point him to HTML, DHTML(JavaScript) language.
He could install on his computer web server Apache + PHP language and use visual editor (DreamWeaver?) for  editing HTML pages.

Or just get a Mozilla browser with integrated visual HTML editor :)

Nekto
Friday, October 24, 2003

If you have access to Microsoft Access, then that's a great "training wheels" language to start on. The best thing is that you start day one thinking in terms of data access.

When he gets to the point that he finds Access limiting, then I would try to steer him towards C++/ATL, just because it is such a foundation for all computer science.

Philo

Philo
Friday, October 24, 2003

" The best thing is that you start day one thinking in terms of data access"

Dear god Philo, he's a 15 year old boy.

There'll be plenty of time when he's older for the corporate life to suck the soul out of him.

 
Friday, October 24, 2003

C#. If you start off thinking in terms of objects it's so easy, it's only a more difficult concept when you've come from a non-OO standpoint. The .NET runtime is free, and there are some good free editors around for it too - http://www.icsharpcode.net/OpenSource/SD/

Will teach him everything from Hello World to any other buzzword compliant, n-tier, p2p, whatever other nonsense he decides to go with ;)

There's also a big user community, and good tutorials on the net, so you could learn all of this without ever spending a penny. And it'll be, to a fairly high degree, commercially useful for the next few years at least.

Andrew Cherry
Friday, October 24, 2003

>  I would try to steer him towards C++/ATL, just because it is such a foundation for all computer science.

ROFLMAO!

Now to answer the question seriously: it depends, mostly on the student.

To someone who is keenly interested in how things work.... point him to C, a foundation for modern computer science, and Linux, a paradise for tinkers and explorers.

To someone who wants to *do* things, point him towards Python or Ruby, on Windows or Linux. Of course you may "spoil" him for real world programming :)

To someone who wants to build things with a toolkit... the world's your oyster. The various basics that have been cited, Java, C#... pretty much any of them will do.

Portabella
Friday, October 24, 2003

As an easy language to get going with visual development, Delphi and C++ Builder are both excellent choices.  Delphi is particularly easy, as Pascal was designed as a learning language.  Both packages are highly visual though, which is the most important part.  Also, your son qualifies for the educational discount, which puts the pricetag around $50 for the basic package.

Possibly there's also a free version for download from the Borland site. They're pretty generous with previous versions of their software.

Clay Dowling
Friday, October 24, 2003

If he is looking to do just windows forms, then tell him to bite the bullet and go ahead and use VB.

Deride it all you want, but VB is geared very well toward simple windows form applications.

I find it strange that he is interested in forms based application programming though, when I was his age, we all wanted to write video games, which is why I learned to program to start with. 

Steve Barbour
Friday, October 24, 2003

I'll put a plug in for Borland's C# Builder. It's free, has extensive help (which might be identical to MS's C# reference), and is a decent IDE.

In addition, it comes with a C# tutorial, although I'm not sure if the tutorial is available in Spanish. I recommend starting there.

Zahid
Friday, October 24, 2003

Give him dark or blitz basic to play with. Writing games is a great way to get into programming, he can learn how to do databases in college.

Mr Jack
Friday, October 24, 2003

I'd suggest Smalltalk. It's easy to learn, there's an open source implementation (Squeak), it's visual, and it's modern. Actually, it's old, but it's so old that it's modern again. (Viz. Agile/XP)

Groby
Friday, October 24, 2003

If he really wants to learn the whole computer science
mindset, and not just "how to program" he should look
at "Structure and Interpretation of Computer Programs".
(http://mitpress.mit.edu/sicp)  It might be over his head
still, but if he does manage to work through it, he would
have a background stronger than that of most professionals.

--jeffh
Friday, October 24, 2003

Interesting perspectives.

So if *your* kid had the aptitude and wanted to "learn computers" would you teach him the basics, or give him a 4GL and tell him not to worry about all that silly API stuff?

I, personally, think that it's important to learn the fundamentals, as it helps one to understand the higher-level concepts more easily. Learn pointers and memory management in C++ and you'll better appreciate what a "memory leak" really is.

I didn't suggest C only because of the number of times I've seen people say that going from C->C++ generally means unlearning bad habits (I have to go on hearsay there).

"Learn data access" -> "Dear god, he's a 15 year old boy"
Okay, sorry it put it in corporatese, but anyone who thinks they can "learn computers" without learning databases is an idiot, and will either soon learn differently or will never prosper. Access is nice because it's a straighforward designer-oriented app that keeps the developer UI-centric and, more importantly, data-centric while learning how to code.

Philo

Philo
Friday, October 24, 2003

> So if *your* kid had the aptitude and wanted to "learn computers"

To quote Charles Fort, "one measures a circle beginning anywhere".

There are lots of doors in to computers, and I wouldn't close any by insisting that this or that is the right thing to learn. Give him some alternatives, and let him pick.

*I* would steer him away from tar pits like C++, but that's just me.

Portabella
Friday, October 24, 2003

At some point, he should look at Lisp, if nothing else to see how much he's missing in the languages he'll need to use in a corporate environment.

If you really want to torture him, show him Interface Builder and Cocoa on the Mac.  He will then curse every other GUI builder 'til the end of his days.

Jim Rankin
Friday, October 24, 2003

>>Visual Basic don't have good press, you know: "not for professionals stuff, any secretary uses it when *programming* in access..."<<

You seem to be thinking of Visual Basic 6.  Visual Basic .Net is a remarkably powerful language -- it's built on the same .Net Framework foundation as C#, and is every bit as powerful. 

Either VB.Net or C# would be a great choice.  I'd suggest VB.Net -- the syntax is somewhat more friendly, and there may be more resources and books written for new programmers.

Robert Jacobson
Friday, October 24, 2003

PYTHON!!

Python was designed to be easy to learn. Its syntax is very clean, but it supports many of the deep computer science ideas from Lisp. Python works on Windows and Mac. It also has open-source libraries for making video games, including 3D FPS that are popular with kids these days. :-)

runtime
Friday, October 24, 2003

How could anyone say C++ is a tar pit?  How much of sotware that used everyday is written in C/C++?  I dare say most. 

C++ <fan>
Friday, October 24, 2003

C++ *is* a tar pit.  It combines the ease of assembly language with the small size and efficiency of a high-level language.

Just because it's popular doesn't mean it's the best language; English is the closest thing we have to an international language and THAT'S a tar pit too.

The reason why most people use C++ these days is because Microsoft only came out with Visual C++ and Visual Basic, and VC++ sucked less.

Alyosha`
Friday, October 24, 2003

That doesn't change the fact that the learning curve is very steep.

There are a lot of gotchas.  Depending on the level of determination of the student, the multiple failures to get anything useful done (at first) could kill his interest in computer science.

Now, you could give him a language like Python which is nice and forgiving to get his programming juices going and then quickly transition him to C++ once his interest and confidence is up.

I do strongly believe that every programming student should be forced to learn C or assembler at some point.  I would strongly encourage a comparitive programming languages course as well.

Richard Ponton
Friday, October 24, 2003

Hey, someone snuck in a reply while I was posting.  :P

Richard Ponton
Friday, October 24, 2003

Oh, one more thing.

Visual Basic as a career is a dead end.  MS clearly favors C# for the future.

Visual Basic as a tool to complement a programmer's skills (or even a non-programmer's skills) is a worthwhile investment.

Of course, one could argue that any "<insert language here> as a career " is a dead end.

Richard Ponton
Friday, October 24, 2003

> I do strongly believe that every programming student should be forced to learn

This is a common theme to this thread, but IMO it's wrong-headed.

We're talking about someone who wants to learn, as a hobby, as *fun*.

Talking about all the stuff they should be *forced to do* is just bogus. Let them follow their own interests, and see what happens.

I'm dubious about most "forced to learn" ideas anyway, in and out of computer science.

Portabella
Friday, October 24, 2003

Ah huh...  The tools available on windows would certainly explain the amount of C++ in use on Unix, where there are about 10 billion language choices available.  (ML anyone?) 

What language would you choose to write, say a SQL server? 

C++ has A LOT of faults.  At the same time it is still the most powerful language for developing large scale applications.    So most business apps don't need C++, I agree with that, but there are a huge number of applications where C++ is still the best choice.

C++ <fan>
Friday, October 24, 2003

I have a question.  What apps does microsoft ship that aren't written in C++... how about Adobe?  Macromedia?  How about a web browser?

C++ <fan>
Friday, October 24, 2003

From an academic point of view, not trying to start a cultural war, but what language is significantly easier to learn than English?  There might be one, but I don't know of it.

C++ <fan>
Friday, October 24, 2003

>Visual Basic as a career is a dead end.  MS clearly favors C# for the future.<

Utter nonsense.  Microsoft is making major enhancements to VB.Net for future versions of Visual Studio, and is positioning it as the best tool for rapid application development.

http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx

Currently, the choice just doesn't matter much -- the languages are virtually identical, except for syntax.  If you learn one, it's trivial to learn the other. 

Robert Jacobson
Friday, October 24, 2003

> but there are a huge number of applications where C++ is still the best choice.

This is a topic for another thread, but I disagree. I think C++ is a misfit, and its use will decline steadily.

Please don't count pure C applications as C++! C is still a great language for infrastructure: kernels, device drivers and so forth. Consider as examples: the Linux kernel and its drivers, MySQL, Postgres, Jabber, various JVMs, etc.

Java and C# are better for developing business logic, and Perl, Python, Ruby et al for prototyping.

If you counter that "C++ is out there and it works", then sure, I agree. But so does COBOL, and that doesn't say anything about the merit of the language, just about the adaptability of the programmers making it work.

Portabella
Friday, October 24, 2003

---"From an academic point of view, not trying to start a cultural war, but what language is significantly easier to learn than English?"-----

The general consensus is that all languages are equally complicated.

The ease of learning a language is in direct proportotion to how close it is to your native language (or another you  know), though if it is very close you are unlikely to ever learn it perfectly because of interferences.

When you learn a language you will normally find that the difficulties arise sooner or later. Because English has less grammaticalization than Latin, it appears easier at first, but the complexities catch up with you later. Try looking at modal verbs.

The mismatch between the alphabet (26 letters) and the number of phonemes (42 or so in Standard British English) doesn't help. Spanish or Arabic have a near to one to one relationship between letters and phonemes that makes spelling much easier, but have a steeper learining curve as far as grammaticalization goes.

Stephen Jones
Friday, October 24, 2003

Guillermo, if he has expressed an interest in windows forms and applications then I suggest Visual Basic. Things are in a bit of a mess at the moment, as Office still uses VBA, which is basically VB6, and but MS is pushing VB.Net.

If he really wants to program games, then consider one of the versions of Basic suggested here.

Forget about the  slur of the secretary using VB in Access. She probablly types the letters in the same language as Cervantes as well.

Stephen Jones
Friday, October 24, 2003

"What language would you choose to write, say a SQL server? "

Straight C?

Jim Rankin
Friday, October 24, 2003

>> "What language would you choose to write, say a SQL server? "

> Straight C?

For example, Postgres and MySQL.

I'd guess Oracle, Sybase, DB2 and Ingres as well.

Portabella
Friday, October 24, 2003

Stephen: I don't think that Spanish's grammar curve is all that steep; English speakers fear it only because the idea of changing a verb's ending to indicate "I" / "you" / "he", seems novel, not really noticing that we always conjugate the second and third person singular, as well as the verb "to be".

And true, Spanish has many irregular verbs, but then again English has more.  As far as grammatical *catagories*, Spanish and English are more or less similar.

But if it's grammar you fear, you COULD go to Chinese, which has very minimal grammar; of course you'd have to pick up a few more consanants and learn to distinguish tones.

The problem with English is that it is a hybrid of Germanic and Latin languages; which means we almost always have two different words for the same thing -- the "common" Germanic way and the more "educated" Latin way (for example, "arise" and "get up").  So you almost have to know two languages to speak English.

Alyosha`
Friday, October 24, 2003

The reason I suggested Access is because you can dive in and very quickly produce working applications. Then you can learn more as your temperament suits you. When you get frustrated with standard forms and wizards, you start learning macros and the query designer. When you get frustrated with *those*, you learn VBA and SQL. Access' query designer is one of the best in existence.

IMHO, Access is a perfect point of entry for programming, especially when one isn't sure where one's aptitude may be.

And it's funny that nobody pointed out that my two recommendations (Access and C++) are almost diametrically opposed. [grin]

I look at it this way - Access and C++ represent two opposite but classic approaches to providing children toys. Access is a Lego set, where you start by following the directions in the box and can do whatever you want from there. C++ is "sure you can use my woodshop; just clean up when you're done"

Philo

Philo
Friday, October 24, 2003

Maybe I'm horribly out of date, but what happened to Pascal?  It was designed as a teaching language and it's the one I first studied formally.  It was pretty good, as I recall, and a nice stepping stone to C.  Is Delphi it's ancestor?

For that matter, is there anything really simple like LOGO out there anymore?  Again, a very simple language where you could learn basic procedures and loops with a nice visual output to make it easy to "get" what your code was doing.

David
Friday, October 24, 2003

You could still use LOGO, bit Guillermo's kid is fifteen not five.

As for teaching languages that is partly what BASIC is. The B stands for Beginners.

And it can be used for nearly anything as well. The A stands for AllPurpose.

Stephen Jones
Saturday, October 25, 2003

Incidentally there are whole programs written in Javascript, if the kid wants really quick results.

Stephen Jones
Saturday, October 25, 2003

Delphi is the descendent of Pascal.  Borland refers to the language as Object Pascal.  That's part of the reason that I recommended Delphi.  Visual, and the language has an easy syntax. Add to that the fact that people are producing very powerful, nice looking packages with it and you've got a pretty good choice.

Of course, with the language culture wars going on, I'll bet that Guillermo has fled for the hills and decided that batch files are just the thing.

Clay Dowling
Saturday, October 25, 2003

// www.lingolanguage.com/downloads.html
// (after 1st Nov when I've updated the syntax)

Lingo 1 class HelloGuillermo

public function main()
code
  call Msgbox ("Hello", "Bongiorno Guillermo!")
end function

end class

Bill Rayer
Saturday, October 25, 2003

"anyone who thinks they can "learn computers" without learning databases is an idiot, "

This only pertains to those who want to work for corporations doing data processing or reporting. If you need to understand database take a day to learn SQL and how a database is made up.

Tom Vu
Saturday, October 25, 2003

---"If you need to understand database take a day to learn SQL and how a database is made up. "----

So you did Database 101 in a day and spent the evening learning SQL.

always thought those "Learn Neralry Everything in Ten Minutes" books were like the Seven Days in Genesis, allegorical. Seems I was wrong!

Stephen Jones
Saturday, October 25, 2003

Tom, I'll wager that if a program is properly designed, then the vast majority of applications have a requirement for data storage.

Sure, they don't all have or need SQL Server or Oracle, but they're storiing data. And if you want to understand how to store data *well*, you'll start with SQL and devolve from there (old saw - you have to know the rules before you can understand when not to apply them)

So I'll just say "thanks for validating my point" [grin]

Philo

Philo
Saturday, October 25, 2003

really impressive all your comments!
thanks a lot for your advices.

i want to speak with my son about the complexity of selecting only one language (or plattform as well) before learn some basics, but surely he wants to jump several steps.

I think He is looking for an "complete" system, not only an compiler, because maybe an entire GUI-based plattform can achieve more finished applications ("having the job done").

I'm sure the kid is very clever, but not having the habit of be constant (maybe too usual these days), the asking for an shortcut to develop "applications" without the internals.

My son have her proper PC since was able to sitting in a chair, "expert" in eMule, Kazaa, knows some html, JS, ftp, frontpage/dreamweaver, and now is "developing" a site (i've paid the domain) in PHP+MySql about HipHop (not asking, i like Eagles, Eric Clapton and Pink Floyd mainly).
Hi have made formal (but not high quality) short courses in VB, C (don't remember what flavour) and PHP.

The site in PHP+MySql is stopped because having some troubles developing the poll part. He was able to put questions about some of this troubles in experts-exchange, and found solutions (the same day!)... so the boy knows Internet, some of english...
but being very quiet, reserved and anxious.

this summer asking me about Linux, and after the conversation he is wating to install... Get Mandrake from an PC magazine, install it in an second hard disk... but after this initial pressure Linux is now not interesting.

also i think he is not interested in developing games, though of course He is gaming everyday using PC, game boy, nintendo...

I notice that he is changing too fast, not concentrating in any thing and wanting to some new after started some one.

therefore we would found some complete development system in a try to concentrate the efforts.

... but maybe now are speaking of adolescent psychology instead of computer-language learning.

Best wishes to all.

Guillermo
Saturday, October 25, 2003

Also i've noted only a few comments about Java or J2EE.

i don't like Java (sorry) but with all this pressure about java today (IBM is wasting a lot of money supporting Java and Linux during years) maybe also Java would be an option?

Guillermo
Saturday, October 25, 2003

>You could still use LOGO, bit Guillermo's kid is fifteen not
>five.

Logo is not just for five year old kids. You can teach
real computer science with it - in a very intuitive way (and still encourage experimentation).

http://www.cs.berkeley.edu/~bh/

- the page has links to books that teach many advanced
computer science concepts in a clear way - readable for 15 year old kids.

If you prefer learning concepts - and not just another syntax that will be out of date once your boy reaches college, then Brian Harveys approach is the best path.

Michael Moser
Saturday, October 25, 2003

Guillermo,

I'd strongly encourage your kid to look at either C# or Visual Basic .Net.  Either one would be fine -- the languages are basically the same, just with different styles for syntax.

They both come with a great IDE (development environment), strong tools for developing regular Windows applications, plus strong support for developing Internet applications (using ASP.Net.)  Plus, they're widely used in the "real world," and there are plenty of books available (at least in English, and probably some in Spanish too.)

Also, this link might help:
http://www.microsoft.com/spanish/msdn/default.asp

Robert Jacobson
Saturday, October 25, 2003

Forgot to mention that if your kid wants to program in either VB.Net or C#, the best package is Visual Studio .Net Professional 2003.  It supports both VB and C#.

In the USA, at least, Visual Studio normally costs about $500.  However, there is an "academic" version for students that only costs about $70.  Your kid should qualify, I think.  I believe there is a Spanish-language version of Visual Studio available, too.

Robert Jacobson
Saturday, October 25, 2003

Esto es alguna mierda loca!

One of the nicest trolls I've ever seen.

Never, ever, ask a software forum for advice on which software language to learn first, it's like asking which god to follow ;)

On a side note, and because I can't help add my 2 cents. You can get the .NET SDK and compilers from MS for free - they're relevant to today, and there are plenty of sites out there with tips and beginners tutorials.

http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml&frame=true

Jack of all
Monday, October 27, 2003

*  Recent Topics

*  Fog Creek Home