Hacker News new | past | comments | ask | show | jobs | submit login

Wow, no need to get so defensive.

You basically gave your child a job training, concentrating on technology which is popular today (and probably at the time when he is looking for a junior maintenance developer position, too). Nothing wrong with that.

If I decided to teach my child programming, I would certainly try and pick the best, most consistent, fun & exciting, state of the art technologies out there which would expand the mind of my child about what's possible today and inspire my kid to push the boundaries when he grows up (if he/she ever decides to pursue that career option).

Different decisions, and one could make the case for both.




Well, I apologize. I did not appreciate your mock translation of what I said as it really was way out there and not at all in line with the reality and motives for my choosing C, Forth, Java and Python. In other words, what you said is not what I said. And then you sarcastically expressed incredulity for my choices.

Really, saying that these are "the most horrible to learn languages" is beyond my comprehension. There's nothing "horrible" or, for that matter, difficult about any of them.

C is easy as pie. It's the most fundamental language.

Forth is a super-cool game. My kid already rocks on an HP-41 calculator (RPN). When I introduced him to Forth he literally said: "Wow! I can program in RPN!".

Java, was a short stepping stone as I wanted to give him a quick taste of OO but not drown him in the details. He actually wrote a dozen little games with graphical interfaces and all. Great fun.

Now with Python we are going through the Project Euler site problem by problem implementing solutions mostly in Python but then looking at C and Forth where it makes sense.

It's hard work. At the same time I like it because it keeps me on my toes. At one point I'll have to choose whether to move him towards developing, say, iOS apps or web apps. In other words, there's at least one fork in the road ahead.

However, the principles are all the same. The constructs are fundamentally equal. A state-machine driven website is no different than a state-machine driven iPhone app. Same concepts, you just "say" them differently in code.

And so I fail to see or agree with people who make categorical statements such as "C is horrible" or "C is hard to learn". I don't get it. Yeah, from the vantage point of someone with no frame of reference whatsoever even basket-weaving is horrible and hard to learn. At one point you start taking steps towards learning and, if a good foundation is built, nothing is really horrible, difficult or impossible to learn.

To me, C is the foundation of nearly all you'd want to understand in programming. Only assembler would give you more perspective. I have written plenty of software with complex data structures in assembler. Not for the weak of heart, but you do learn a lot. With a solid foundation in C you can undertake just about anything in any domain, from embedded to web and mobile programming.

So, yes, I felt that taking what I said so far out of context and then expressing surprise for your own made-up statement had to come from ignorance. Perhaps I shouldn't have said it the way I did. So, again, I apologize.


  C is easy as pie. It's the most fundamental language.

  Forth is a super-cool game. My kid already rocks on
  an HP-41 calculator (RPN). When I introduced him to
  Forth he literally said: "Wow! I can program in RPN!".

  Java, was a short stepping stone as I wanted to give
  him a quick taste of OO but not drown him in the
  details. He actually wrote a dozen little games with
  graphical interfaces and all. Great fun.

  Now with Python we are going through the Project Euler
  site problem by problem implementing solutions mostly
  in Python but then looking at C and Forth where it
  makes sense.

That would have been a sound choice ... in 1990. Since then, there has been a lot of progress in language design.

C is fundamental, but calling it “easy as pie”? 90% of C consists of undefined behaviour, just waiting to screw you over.

Forth ... why not some Lisp instead? I don't like Lisps in general, but they are at least not as completely obscure as Forth.

The designers of Java had some good ideas, but the execution of the language itself is terrible. Java is what gives OO a bad name, why not pick a language which is good at OO?

Python, well sounds sort of OK, at least no PHP or JavaScript.

====

I guess my choice would have been something like that:

- Assembler - ML/OCaml/ATS/Rust - Scala - Haskell


> 90% of C consists of undefined behaviour, just waiting to screw you over.

I've been coding in C for thirty years. Anything from mission critical embedded to system code. I've never been screwed over by the language. So it is reasonable to assume that I just don't get it because I haven't had the experience. Is it because I started at a very low level and have a solid foundation? Don't know. I've seen people comment on C being horrible and hard to learn and I can't find any scenario in my life where I, even remotely, had that opinion of the language. It is easy. Very easy.

> Forth ... why not some Lisp instead?

I wanted to expose him to the ideas of TIL's. They are very powerful, particularly if you think embedded.

Yes, I'll teach him Lisp too. I can't throw everything at him right now. Remember, he's only 14.

So, C laid the foundation. Java doesn't look too weird. It's easy to make the transition from C to Java at a basic level. I am not having him do anything massive in Java so he isn't running into the ugliness. This is more about teaching conceptually than anything else. I used Java to teach him about basic OO. For that purpose it worked just fine.

Forth was a trip in a different direction. The concepts from C can be applied in that conditionals, looping, arrays and other constructs can still be executed in Forth. It's an interpreted language, which makes it different and fun. I made sure I got him rocking on an HP41 calculator first. He used the HP41 in school for a year before I revealed Forth to him. After being comfortable with C and the HP41 the transition to RPN programming was easy. The interpreter made it fun for him to experiment and learn. I saw huge value in this.

As for Python, well, I like it.

PHP, JavaScript. He will learn those if we push in the direction of web design. They are easy. Perhaps my point is that with a solid foundation in programming all languages are easy. I have yet to run into a language where I stop cold and say "Wow, this is hard. I don't understand it. It will take ages to learn.". Quite the opposite, there's a huge ecosystem of languages that are C/C++ like. Easy to learn. In most cases you spend more time learning libraries and "the way of..." but that's it.

Take something like Objetive-C. Once you get past the notation/syntax quirks it's all about knowing what's available to you in the libraries and off you go. There's nothing hard about O-C. If you have a solid foundation in memory allocation through C it is easy to understand memory allocation in O-C.

The last age survey on HN showed that the site is dominated by folks in their twenties. Perhaps this is the reason things are seen as "hard" or "horrible". Not enough experience. Or, what could be worst, not enough experience solving difficult problems. Not to get political, but our youth lives within a level of entitlement and "I want it easy and now" mentality that I can see someone looking at C and saying "It's hard, I want it easy" in a five year old voice.

As an older engineer I stopped seeing things as hard a long time ago. There's nothing I cannot do given the time, dedication and the right mental attitude. I've walked into territory I knew nothing about many times over the years. After you do that a few times your approach and your view of things changes.

It's like the first time my oldest kid had to swim in murky lake water to enter our local Junior Lifeguard program. He was freaked out. A life of swimming in a clean pool. Now you jump into water where you can't see the fingers on your hand. He was kicking and screaming for half an hour. I didn't let him quit. He eventually passed the test and got into the program. Now, a couple of years later, we went for a swim in the ocean. His demeanor was completely different. Instead of being afraid of the waves he asked the right questions: How do we approach this? What's the best entry/exit technique? What can go wrong?, etc. We had a great time.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: