Feb 24, 2017
10:35 PM EDT
|The first personal computing platform I owned was an Apple II compatible machine called a Laser 128:
I hated the thing. It was horrible. There was no obvious way to do anything with it except load the two games I could find in local stores:
"Where in the World is Carmen San Diego?"
I got tired of these games and wanted to 'make my own'... So, I set out to do that. There was no Internet, and I had no idea where to even begin.
I found some book in the local library on Apple II Shape Tables and tried some programming:
I was mildly successful in some ways. I could create objects on the screen and manipulate them... but I've never been one to create something polished.
I had programmed before in school; BASIC on Commodore computers with tape drive storage.
What was my first programming language?
I have no idea.
The truth is:
It doesn't matter.
However, if I were to pick a language to start programming... I would choose Assembly. Why?
Assembly teaches how computers work. It teaches how interrupts work... It provides a visceral realization of what it means to write past the end of an array.
Programming is not like Particle Physics. If an individual learns one computer language, all the others can be learned relatively quickly. It's all the same, just in different syntax.
Feb 24, 2017
11:47 PM EDT
|a beginner language should be conceptually and syntactically simple at the start.
assembly fits that because with only learning a few concepts you can start building something.
rosatta code has examples: http://rosettacode.org/wiki/Hello_world/Text
any language here that requires more than a few keywords to be learned fails the test.
in assembly a few simple concepts are needed to be learned: define data, execute instructions, interrupts.
it's not the shortest code, but on the other hand there are not that many more concepts left to learn.
compare java, where you get exposed to class definition, and function definition before you can even start doing anything. and class is a monster of a thing that beginners should not have to be exposed to on their first day of learning. (i have been programming for years before i understood object oriented programming)
any time, a teacher needs to say: you don't need to understand this now, in order to continue, is a complete fail
a beginner language should also be relatively consistent as that also reduces the need to learn.
after that, i think it is good if a language is applicable to a wide range of problems.
python fits all three requirements quite well.
so does smalltalk, and lisp. those two have the advantage of an extremly simple syntax.
python wins over them only because it enforces indenting, which is something i believe is a must for a beginner to get used to.
Feb 26, 2017
11:43 AM EDT
OTOH, a number of 40yr+ sysadmins tell me that the C language was one of their very 1st goto pgm'ing languages -- and WITHOUT the ancient "spaghetti-code GoTo" statements ;)
Apparently, the greatUnix devs from at least a generation ago, Brian Kernighan and Dennis Ritchie, published a milestone book on C entitled 'The C Programming Language 2nd Edition'. These sysadmins adamantly swear by C as at least a SECOND programming language, if not a first, as horrible as those "in the know"keep sayingabout C!!
Feb 26, 2017
1:33 PM EDT
|well, of course at that time there were not many more suitable languages available. lisp and smalltalk did exist, although smalltalk was priced out of reach for many at that time.
C is rather easy, as long as you can avoid pointers and memory-management.
Feb 26, 2017
5:29 PM EDT
|When you mentioned smalltalk it brought to my mind Ruby. As languages go ruby is one of my favorites.
1. Everything is an object
2. Objects have methods
3. Methods return objects
Think about the impact of that structure. It is often possible to express complete algorithms in a single line of code.
In spite of my love for ruby as an elegant language, I have settled on using python as my favorite working language largely due to python's very extensive library. c/c++ still plays an important roll for those pieces that require the performance. Fortunately for me python let's you easily drop down to c for those few functions that really need optimization.
Feb 26, 2017
5:43 PM EDT
|From your description, Ruby sounds a lot like Smalltalk....|
Feb 26, 2017
7:20 PM EDT
|The inventor/developer of ruby, Yukihiro Matsumoto (Matz), admits that his language was inspired by smalltalk.
Matz took smalltalk and gave it an elegant Japanese flavor, a courteous and understated character that makes ruby a joy to use. Matz described his philosophy this way:
Matz wrote:Instead of emphasizing the what, I want to emphasize the how part: how we feel while programming. That's Ruby's main difference from other language designs. I emphasize the feeling, in particular, how I feel using Ruby.
Feb 27, 2017
2:48 PM EDT
|Learning programming is much about learning concepts as opposed to learning commands.
All programming languages have the same core constructs such as the ability to create variables, manipulate strings, add numbers, control logic and perform loops.
The concepts are the key things to learn.
The concept of a class isn't a difficult thing to grasp and I find it amazing that a teacher/lecturer would say we will come back to that at a later point.
If you can understand the basic concepts then everything else is mainly syntax.
Desktop programming appears to be dying out. Everything is either a web application or an app for a tablet.
I don't see that learning assembly is a worthwhile venture unless you are an engineer.
The alarming thing for me as a programmer over the past 10 years is the rate things change.....
Feb 28, 2017
3:44 AM EDT
Quoting:Which programming language should people learn as their first language? It kind of depends on what they are planning to do.
yes and no. on the job, sure. learning as a hobby, maybe.
but when you go to school you don't know yet what you want to to. the point there is to explore what you can do, and then pick what you are interested in. also, different students in a class have very different interests, so a programming-class can't pick a language that depends on what you are planning to do. it needs to be something generic that introduces the concepts and teaches something students can build on later.
for students i find assembly a very interesting idea. it teaches them how a CPU works. they will not use that knowledge directly, but it will serve as a base for everything computer related they learn and actually do in the future.
we built logic gates out of transistors in my school. i don't know how excited i was about that at the time, but now looking back i feel like it was looking at a computer through a microscope, and gives me an understanding how things work deep down, how it translates to binary, etc...
Posting in this forum is limited to members of the group: [ForumMods, SITEADMINS, MEMBERS.]
Becoming a member of LXer is easy and free. Join Us!