A Story

Story: Which is the best programming language for beginners?Total Replies: 8
Author Content
dotmatrix

Feb 24, 2017
10:35 PM EDT
The first personal computing platform I owned was an Apple II compatible machine called a Laser 128:

https://en.wikipedia.org/wiki/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?"

https://en.wikipedia.org/wiki/Where_in_the_World_Is_Carmen_Sandiego?_(1985)

and

"Swashbuckler"

https://en.wikipedia.org/wiki/Swashbuckler_(video_game)

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.

So...

I found some book in the local library on Apple II Shape Tables and tried some programming:

https://en.wikipedia.org/wiki/Shape_table

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.

So...

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.
mbaehrlxer

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.

javascript is not bad, but the syntax could be simpler. and despite what everyone says about it, i think most difficulties come from javascript doing some things differently than other languages. (prototypical OO, scoping issues, both of which won't bother a beginner much)

greetings, eMBee.
flufferbeer

Feb 26, 2017
11:43 AM EDT
@dm, @mb

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!!

2c
mbaehrlxer

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.

greetings, eMBee.
penguinist

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.

With ruby:

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.
gus3

Feb 26, 2017
5:43 PM EDT
From your description, Ruby sounds a lot like Smalltalk....
penguinist

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.
gary_newell

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.

Which programming language should people learn as their first language? It kind of depends on what they are planning to do. Anyone who intends to create web applications would do well to learn JavaScript and in particular frameworks such as Angular. Learning how to develop Web APIs is a big thing for the future as well so pick a language and learn how to create Restful APIs. The language in this case doesn't overly matter.

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.

If you want to learn programming to earn lots of money then clearly the most jobs are in web programming so languages such as JavaScript, .NET (C#/ASP.NET) and/or Java are the way forward. Another good career choice is to learn SQL Easy to learn and well paid and isn't moving forward as the same pace as programming so you won't get left behind.

The alarming thing for me as a programmer over the past 10 years is the rate things change.....

I started out in 1995 writing COBOL, moved on to Visual basic, then C++, then C# Winforms, C# Webforms, then MVC came about and that is dying as a concept on the server side as Angular has replaced it with MVC on the client side. Now we are in a world of Javascript frameworks on the client and Web APIs on the server. Software development is an incredibly fast paced ever changing world. Keep up with the trends and try not to get pigeonholed in one technology stack





mbaehrlxer

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...

greetings, eMBee.

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!