Learning to Program - Start with Assembly or High Level?
1970-01-01 00:00:00 UTC
Learning to Program - Start with Assembly or High Level?
Seven answers:
2016-05-29 01:11:13 UTC
Basically, the higher up you go in that hierarchy, the more like English the code looks, so depending on how easy you want to learn it, i would say that assembly programming is harder to use than high level programming.
Fred W
2007-11-09 08:07:27 UTC
"Computer Science is no more about computers than astronomy is about telescopes." Edsger Dijkstra

Get Knuth's books (The Art of Computer Programming, 3 volumes). Look at "Structure and Interpretation of Computer Programs" (SICP, available on the Web).

As to language -- I would recommend SCHEME (SICP language), and, concurrently, study SNOBOL4 (an example of the "wrong thing done right"). Knuth uses a hypothetical machine called MIX, and gives examples in assembler for that machine. MIX simulators are available. SCIP uses SCHEME, which is a teaching *and* practical language (a SCHEME variant called GUILE is the basis for the extension language of many GNU projects. Also, small SCHEME implementations have been used for low level programming. A variant of SCHEME is used as the implementation language for the famous EMACS editor).

Pascal is also a good pedagogical language (Pascal is an alternative to Algol68, as a "protest" to it) -- also have a look at Algol68 (read the "Revised Report", available on the Web -- people have actually gone from zero to expert based on this alone).

Good luck with your studies.
2007-11-08 18:24:09 UTC
The real challenge is to learn software development best practices such as Design Patterns. To code such things, you'll need a language.

will get you started. It is Object Oriented. Learn what that means.

Take note that Java is still #1 See

The recruiters and people who hire people look for what language you know. It's a fact of life.

Good luck
2007-11-08 17:54:28 UTC
Hi InsaneOne, definitely start at the high level and work your way down. One thing that you will discover as a programmer is that you do not need to know all of the detail, all of the time - there is just too much to know and most of it is largely irrelevant to the task at hand anyway.

I would recommend learning an object oriented language like Java or C# initially. These languages are type safe and much cleaner than say VB 6.0. If you start with a language like VB (especially VB 6.0), you are more than likely to pick up some bad habits which may become difficult to break.
Wizard Of OS
2007-11-08 17:53:08 UTC
Ok lets separate programming from learning a language. Programming is a discipline and once you learn the discipline you can use that with any language.

As for assembly language, each is dependent upon the chip and command set, and some so called assembly languages are actually macro languages. Yes you have to know more about the hardware to write in Assembler.

C++ is not an easy language to learn since it has a difficult syntax and is not very forgiving to beginners to learn to program and learn that details of the language at the same time is not easy.

I would suggest you start out with the BASIC language which is very easy to learn but really quite powerful. That way you can learn programming without getting tied up in language syntax. See below for some free BASIC compilers. And you can learn that at home. There are any number of programming books and some that use BASIC for examples.

You might also look at Python and Perl to start with.

As for starting from the bottom up or top down. I started with Fortran which is an old high level language and almost gave up after that. Then took an Assembler class(IBM Mainframe BAL -Basic Assembler Language) and then it made all kinds of sense. Now I write in at least 4 languages not counting job control and scripting languages.

Very few programmers write in assembler other than system programmers and operating system or compiler developers. By the way most of Linux is written in C.

Good Luck
2007-11-08 17:38:16 UTC
Should start with something easy like VB and work your way up.

C++ is great. Brush up on your symbolic logic !

2007-11-09 05:10:17 UTC
When I went back to college I took Computing and Fine Arts courses to balance each other out. The logic of both was entirely reasonable to me but they were also mutually exclusive so sitting in either one helped me recover from the other.

Computers are the same whether you are using a high-level language or what I believe Douglas Hoffstadter called the computer's DNA (Assembly). The difference is that high-level languages impose a level of abstraction or simplification between you and what the computer is doing.

The difference is that between drawing a clothed model and a nude one. A clothed model has folds on the fabric of his or her clothes, but you see the shapes of muscle masses, which are fairly easy to draw. With even a model with a high body fat/muscle ratio you get to see a lot of these muscles. The drawing will usually be very complex and it really is harder than the clothed model. That is why Assembly is generally considered an advanced topic.

I recommend starting with something like perl, which is a high-level interpreted language which will show you what a computer has a relatively easy time doing. Batch programming or shell-scripting is also a very good idea for something to do early.

I also, strongly, recommend getting comfortable working on every operating system you can. I will assume you use and have access to Windows. If you are used to the mac, fine. If not, borrow one or find a library where you can use it. If you use ubuntu, great. If not, rather than getting it, I recommend getting your hands on Knoppix (information at and click on the Union Jack/U. S. Flag to get the english version of the pages) which is a Linux LiveCD designed by a computer consultant for his own use. As such, you can boot it on any Windows computer. It will not write anything to disk unless you tell it to. And by playing with it you can learn about Unix concepts and programs which the Mac OS uses and which also influenced a lot of the Windows Operating System.

We often take for granted a lot of what we think we know, especially about computers. While it's true that some of the best innovations come from people who don't know what is impossible in a given discipline, writing in assembly is so much work that you are very likely to feel too snowed under to make your brilliant idea work unless you already have some comfort doing things with a computer.

I actually do not recommend Java or Visual Basic as first languages precisely because they are such sophisticated and high-level languages. Any such language will make some choices difficult for you, but for those two languages it is actually part of their strengths -- I'm not saying they shouldn't be among the first languages you learn. I definitely do not think Assembly should be the first language you learn. If you want to ignore me check out NASM at

This content was originally posted on Y! Answers, a Q&A website that shut down in 2021.