Re: Language to learn prior to learning Go?

2,386 views
Skip to first unread message

AahanK

unread,
Oct 16, 2012, 11:06:19 AM10/16/12
to golan...@googlegroups.com
(Also, I've been advised that it's a good idea to read a computer science book or two and understand things before getting into programming in the first place.)

Scott Lawrence

unread,
Oct 16, 2012, 11:41:07 AM10/16/12
to AahanK, golan...@googlegroups.com
On Tue, 16 Oct 2012, AahanK wrote:

> I have read that beginner programmers can really start learning Go (golang)
> right away, but here are somethings I have also learnt (by the way, I only
> know HTML & CSS at this time).
>
> *It's often recommended that you at least learn JavaScript before learning
>> C, so that it would be easier and you'd understand the language better.*
>
>
> I am going to learn JS anyway. What else should I learn before getting into
> Go, so that I can understand what and how the languages does things.
>
> *Erlang and Scala are often recommended for applications relying on
>> concurrency, distributed computing, and also for developing real-time
>> applications.*
>
>
> No language can be very good at everything. And since Go is pretty much a
> general purpose language, I would like to know how it compares to Erlang
> and Scala in aforementioned scenarios. Is Go *roughly* just as good (if not
> better)?
>
> Thanks for your time!

IMHO, the first language one learns doesn't matter at all. I learned js before
c myself, and it certainly wasn't any easier for me than for people I know who
are learning it in the other order. The fact of the matter is, learning to
program is much the same no matter what language you pick (excepting a few
exotica, like INTERCAL, and maybe forth). If your end goal is knowing go (a
fine goal!), I'd recommend just starting straight with go.

Or you can think of it this way: many of the best programmers you've ever
heard of wrote their first programs on punchcards. Punchcards.

As for being good at concurrency, distributed computing, and real-time
applications... I've never worked with erlang (much), but most people I know
who know it hold it in high esteem, especially for concurrent stuff. (Warning:
small sample size!) Scala I know, and have used, and I'd recommend not
touching it with a 10-meter pole if at all possible.

--
Scott Lawrence

go version go1.0.3
Linux jagadai 3.6.2-1-ARCH #1 SMP PREEMPT Fri Oct 12 23:58:58 CEST 2012 x86_64 GNU/Linux

Harley Laue

unread,
Oct 16, 2012, 11:54:13 AM10/16/12
to golan...@googlegroups.com
Sorry, I forgot to hit reply to group in these messages.
On Tue, Oct 16, 2012 at 10:41 AM, Scott Lawrence <byt...@gmail.com> wrote:
> On Tue, 16 Oct 2012, AahanK wrote:
>
>> I have read that beginner programmers can really start learning Go
>> (golang)
>> right away, but here are somethings I have also learnt (by the way, I only
>> know HTML & CSS at this time).
>>
>> *It's often recommended that you at least learn JavaScript before learning
>>>
>>> C, so that it would be easier and you'd understand the language better.*
>>
>>
>>
>> I am going to learn JS anyway. What else should I learn before getting
>> into
>> Go, so that I can understand what and how the languages does things.
>>
>> *Erlang and Scala are often recommended for applications relying on
>>>
>>> concurrency, distributed computing, and also for developing real-time
>>> applications.*
>>
>>
>>
>> No language can be very good at everything. And since Go is pretty much a
>> general purpose language, I would like to know how it compares to Erlang
>> and Scala in aforementioned scenarios. Is Go *roughly* just as good (if
>> not
>>
>> better)?
>>
>> Thanks for your time!
>
>
> IMHO, the first language one learns doesn't matter at all. I learned js
> before c myself, and it certainly wasn't any easier for me than for people I
> know who are learning it in the other order.

I disagree, languages where you're less concerned with pointers and
memory locations and all are actually easier to grasp initially. The
first language I learned was Pascal (in school) and when we got to
pointers I was totally lost. Later that year, (again in school) I
learned C & BASIC, both ended up being a breeze because pointers
clicked that time around, and BASIC was, well, basic. I can't really
say if it would have been easier to have went from BASIC to Pascal to
C, because it may have been, I can't really say. I think it really
ends up depending on the person, their interest, and their drive to
continue learning.

> The fact of the matter is,
> learning to program is much the same no matter what language you pick
> (excepting a few exotica, like INTERCAL, and maybe forth). If your end goal
> is knowing go (a fine goal!), I'd recommend just starting straight with go.

I don't disagree, but I do think there are easier languages to learn
first to get the basics out of the way before you learn about how
slices are passed around in Go, and some of the finer points of the
language that can be stumbling blocks for someone new to programming.

Harley Laue

unread,
Oct 16, 2012, 11:54:19 AM10/16/12
to golan...@googlegroups.com
Sorry, I forgot to hit reply to group in these messages.
On Tue, Oct 16, 2012 at 8:01 AM, AahanK <kr...@aahan.me> wrote:
> I have read that beginner programmers can really start learning Go (golang)
> right away, but here are somethings I have also learnt (by the way, I only
> know HTML & CSS at this time).
>
>> It's often recommended that you at least learn JavaScript before learning
>> C, so that it would be easier and you'd understand the language better.
>
>
> I am going to learn JS anyway. What else should I learn before getting into
> Go, so that I can understand what and how the languages does things.

Keep in mind, Javascript does some really stupid things that can end
up being dangerous or hard to debug (at least for a new-comer.) I'd
also suggest Javascript: The Good Parts after you have a general
understanding of the language as you begin to dig deeper. Another
fairly easy language to learn you might want to consider is Lua. It's
used is quite a few games, and that might be satisfying as your
learning to change the behaviour of a game. Not sure if that's really
your primary interest since you've mentioned HTML, CSS, & Javascript.
Oh, and being a web developer myself, currently, keep in mind that
there's usually two other languages you'll have to learn, something
server-side (Python, PHP, Ruby, Go, Perl, whatever) and SQL.

>> Erlang and Scala are often recommended for applications relying on
>> concurrency, distributed computing, and also for developing real-time
>> applications.
>
>
> No language can be very good at everything. And since Go is pretty much a
> general purpose language, I would like to know how it compares to Erlang and
> Scala in aforementioned scenarios. Is Go roughly just as good (if not
> better)?

I can't really speak too much on the subject, but I recall reading
that Erlang supported hot-swapping of code, so in the case of a
server, the server could be upgraded without ever bringing the server
down. That's something that would be extremely difficult to do with Go
(not impossible, but I think most people would just accept the short
downtime rather than trying to patch the executable on the fly.)

> (Also, I've been advised that it's a good idea to read a computer science book
> or two and understand things before getting into programming in the first place.)

That's good advice. The one thing I will point out, that's a pretty
broad statement: "read a computer science book." I'd say more
specifically you'll want to read a book designed to introduce you to
coding in whatever language you're interested in learning and an
algorithms book. Really though, you can get by initially without the
second book, but as you get further along, it's something you'll
definitely want to revisit. The first book will likely include a brief
overview of how things like arrays are stored in memory, what kinds of
conditionals and loops are available, and other specific topics to the
language.

AahanK

unread,
Oct 16, 2012, 12:03:50 PM10/16/12
to golan...@googlegroups.com
Now the tough part seems to be finding those good beginner-to-advanced (stage-by-stage) books on computer science & algorithms. Any suggestions would be very helpful.

Joubin Houshyar

unread,
Oct 16, 2012, 12:39:16 PM10/16/12
to golan...@googlegroups.com

On Tuesday, October 16, 2012 9:01:45 AM UTC-4, AahanK wrote:
I have read that beginner programmers can really start learning Go (golang) right away, but here are somethings I have also learnt (by the way, I only know HTML & CSS at this time).

It's often recommended that you at least learn JavaScript before learning C, so that it would be easier and you'd understand the language better.

I am going to learn JS anyway. What else should I learn before getting into Go, so that I can understand what and how the languages does things.

Erlang and Scala are often recommended for applications relying on concurrency, distributed computing, and also for developing real-time applications.

No language can be very good at everything. And since Go is pretty much a general purpose language, I would like to know how it compares to Erlang and Scala in aforementioned scenarios. Is Go roughly just as good (if not better)?

Programming is a contact sport, Ashan.

 

Thanks for your time!
 
 

Archos

unread,
Oct 16, 2012, 1:09:18 PM10/16/12
to golan...@googlegroups.com
The languages that I'd recommend for novices are Pascal or Python (before of Go's birth) because they're very close to pseudocode, although Python can become to be complicated when you start to working with the classes. Note that Pascal is widely used so you'll find help and a great community.

Forget the functional languages like Erlang (while you're a novice); its methodology is very different to the imperative languages.
Scala is an extension of Java with the addition of actors (to handle the concurrency), but with the same problem that Java, it's too verbose and memory hungry.

If JavaScript is widely used is because it's the only way to develop the front-end of web pages. That is the reason that there are several compilers from another langues to JavaScript but what's going to happening when you can use another language in all browsers instead of JS? Bye,bye JavaScript.
In addition, JS has not well designed.

Then, you have the typical system programming languages, C and C++, where you can handle the memory manually but manual allocation and deallocation of memory is tedious and error prone. In addition, with C++ you finish having a project unredeable and no-maintainable.

But the world changes, for the good and bad. Today, you have Go wich has a simple sintaxis and with which you can replace the dynamic languages (Perl, Python, Ruby), Java and C++ for some tasks. It's well suited to develop the backend of web applications, command line applications in general, network apps., and administration programs in operating systems.
So, like first language you use Go.

By the another side, you have now Rust, a more complex language that can be safely used without the garbage collector at all, with which you'll can use it instead of C/C++ to build low level things like DBMS of high performance (i.e. databases like PostgreSQL or MySQL), file systems, kernels, access to audio/video, 3D games.

In short, you use Go like first language. It will work to learning and will be very useful in real applications.


El martes, 16 de octubre de 2012 14:01:45 UTC+1, AahanK escribió:
I have read that beginner programmers can really start learning Go (golang) right away, but here are somethings I have also learnt (by the way, I only know HTML & CSS at this time).

It's often recommended that you at least learn JavaScript before learning C, so that it would be easier and you'd understand the language better.

I am going to learn JS anyway. What else should I learn before getting into Go, so that I can understand what and how the languages does things.

Erlang and Scala are often recommended for applications relying on concurrency, distributed computing, and also for developing real-time applications.

No language can be very good at everything. And since Go is pretty much a general purpose language, I would like to know how it compares to Erlang and Scala in aforementioned scenarios. Is Go roughly just as good (if not better)?

Thanks for your time!

Archos

unread,
Oct 16, 2012, 1:10:44 PM10/16/12
to golan...@googlegroups.com

El martes, 16 de octubre de 2012 18:09:18 UTC+1, Archos escribió:
The languages that I'd recommend for novices are Pascal or Python (before of Go's birth) because they're very close to pseudocode, although Python can become to be complicated when you start to working with the classes. Note that Pascal is widely used so you'll find help and a great community.
Sorry, I mean it's Python which is widely used.

SCov

unread,
Oct 16, 2012, 2:36:51 PM10/16/12
to golan...@googlegroups.com
I went like: Basic -> Pascal -> C -> Java -> Go. I won't list scripting languages that I've had brief interactions with, assembly etc.

I'd say that while you can get some "training" going through at least one other programming language (Pascal is not a bad language at all for a novice to start with), you can go with...Go from the begining. You will only need to make sure you understand wholly some concepts that might sound like "old news" to older programmers. For example, getting to understand pointers vs values (or references) seems somewhat of a hurdle for certain people (I had to explain it with pencil and paper to mathematics and physics olympics, much to my surprise).

Then, of course, Go has many neat features that won't work if you try to apply them later in other programming languages. In a way, coming in from another background, enables me to better understand why Go is so cool. 

Dan Schmidt

unread,
Oct 16, 2012, 4:06:31 PM10/16/12
to golan...@googlegroups.com
I would recommend just heading over to learncodethehardway.com, choose either python or ruby, then work through the examples. If you're still interested in Go after that, then just dive into the tuts and code walks available on go-lang.org/doc/

Archos

unread,
Oct 16, 2012, 4:18:12 PM10/16/12
to golan...@googlegroups.com
If you want to learn Python, here you have a funny way to do it:

http://www.udacity.com/overview/Course/cs101/CourseRev/apr2012

Paul

unread,
Oct 16, 2012, 5:03:44 PM10/16/12
to golan...@googlegroups.com
It depends a lot on what kind of problems you are looking to solve. If you are going in the direction of systems programming then I think it is essential to understand machine architecture and machine language, at least one (perhaps x86). This will give you invaluable insight into what is really happening behind the scenes on the actual hardware at execution time. This is like a very basic revelation when it comes to programming, after that you just get it. 

When you understand the machine level stuff you will be able to check if your "language" is generatiing decent code, and if it is fully utilizing your hardware functionality to its full potential. That puts you in the know, and in the drivers seat. I was looking at a Q&A session by Linus Torvalds the other day, and he said the real performance critical stuff  he still hand codes it right down to machine level, this is what he always did from the start, he does it best and he enjoys it. If you read Ken thompson's "reflections on trusting trust" you will know it is essential for security reasons to be able to understand the machine language that is generated by your compiler.  

Other than that, C-language is so basic you can't go wrong learning it, or if you think that is too boring then Go is a good alternative. 

For advanced studies I would favor Lisp because it will teach you most of the advanced and essential  concepts.  

Thats all just my opinion though, 

Cheers. 


  

On Tuesday, October 16, 2012 10:18:12 PM UTC+2, Archos wrot

Rob Pike

unread,
Oct 16, 2012, 5:18:07 PM10/16/12
to Paul, golan...@googlegroups.com
Several methods.

A: Bottom up

1. Learn quantum mechanics.
2. Learn statistical mechanics.
3. Learn solid-state physics.
4. Learn semiconductor device physics.
5. Learn quantum electronics.
6. Learn electrical engineering.
7. Learn switching theory.
8. Learn computing architecture.
9. Learn machine language.
10. Learn assembly language.
11. Learn a systems language.

Now you know how a computer works and how to program it.

B: Top down

1. Learn geometry (Euclid; basics of theorem proving).
2. Learn arithmetic.
3. Learn number theory.
4. Learn logic.
5. Learn Boolean algebra.
6. Learn complexity theory.
7. Learn type theory.
8. Learn Lisp.
9. Learn a systems language.

Now you know how a computer can be applied to solve problems safely
and correctly.

C: Unified

Do A and B both.

I suggest option C.

-rob

Michael Jones

unread,
Oct 16, 2012, 5:29:03 PM10/16/12
to Rob Pike, Paul, golan...@googlegroups.com
Beautiful, Rob!

My addition is that language shapes thought, and has done so in human languages for millennia and computer languages since 1941. The ideas that are natural to express in a given computer language strongly influence the programmer's choices. Learning deeply about "how" to program is thus related to unlearning "how language X forced your thinking" since the underlying machine can do just about anything. Go discourages a few C-language ideas, like pointer arithmetic and explicit memory management and encourages a few new ones, such as easy concurrency, interfaces, and implicit memory management. Lisp encourages thinking about programs as data and recursion over iteration. Every enduring language has some concepts that it facilitates at the expense of others. Realizing this is the ultimate realization.


-rob

--





--
Michael T. Jones | Chief Technology Advocate  | m...@google.com |  +1 650-335-5765

Dean Mao

unread,
Oct 16, 2012, 4:51:48 PM10/16/12
to golan...@googlegroups.com
I might be biased, but I feel like one's first language should be something that has a REPL.  My first language was Scheme -- it was easy to learn, and had a prompt where I could enter short things to "play" around with the language.  It allowed me to do stuff like what-if-I-tried-this approach to learning.  Once you grasp the basic concepts of computer science, it's easy to graduate to other languages.


--
 
 

Skip Tavakkolian

unread,
Oct 16, 2012, 6:55:38 PM10/16/12
to AahanK, golan...@googlegroups.com
If you've not had a formal introduction to programming or CS, the
choice of a language is almost irrelevant. If this is your situation,
start here -- it is free, done by great instructors and you'll learn
Python among other things:

http://www.udacity.com/overview/Course/cs101/CourseRev/apr2012

then try something like:

http://www.udacity.com/overview/Course/cs212/CourseRev/apr2012

-Skip

Dave Grijalva

unread,
Oct 16, 2012, 7:23:47 PM10/16/12
to golan...@googlegroups.com
I'd recommend English as much of the available documentation is written in it.  Though, it seems like you've got a fair enough grasp of that.

I don't really believe your first language matters as the concepts are fairly universal.  When I'm asked about how to learn to program, I usually recommend Learn to Program by Chris Pine.  It uses Ruby (a fine language) as to tool to teach the core concepts.  It's relatively short and well organized.  I've seen lots of people find success with it.


-dave

AahanK

unread,
Oct 16, 2012, 10:12:05 PM10/16/12
to golan...@googlegroups.com, Rob Pike, Paul
Rob: I am a bit terrified after reading your answer, dumbstruck, really. Every chapter/level (e.g. Learn quantum mechanics) doesn't seem to be as simple as learn this or learn that - they are big subjects aren't they?

The real problem, I can get the books somehow, but getting practical knowledge seems impossible as I am not going to be learning this stuff at a university or college.

Maybe I am missing something?


On Wednesday, October 17, 2012 2:59:49 AM UTC+5:30, Michael Jones wrote:
Beautiful, Rob!

My addition is that language shapes thought, and has done so in human languages for millennia and computer languages since 1941. The ideas that are natural to express in a given computer language strongly influence the programmer's choices. Learning deeply about "how" to program is thus related to unlearning "how language X forced your thinking" since the underlying machine can do just about anything. Go discourages a few C-language ideas, like pointer arithmetic and explicit memory management and encourages a few new ones, such as easy concurrency, interfaces, and implicit memory management. Lisp encourages thinking about programs as data and recursion over iteration. Every enduring language has some concepts that it facilitates at the expense of others. Realizing this is the ultimate realization.
Michael T. Jones | Chief Technology Advocate  |  +1 650-335-5765

Joubin Houshyar

unread,
Oct 16, 2012, 10:14:19 PM10/16/12
to golan...@googlegroups.com
Your question kept popping up in my mind today and the above one liner would also benefit from a bit of elaboration. 

"contact sport": Programming is clearly an intellectual endeavor, but imo has a substantial intuitive base that can only be developed through actual act of writing code.  I entirely agree with the view that language/tools affect thought processes, but for the beginning programmer, I do not believe this is a critical issue.  This is a bit crude but the analogy is that of reading a lot of books about kissing and asking whether your first girl friend should be x, y, or z.  Chances are you will move on but the key is to have practiced kissing.  And why pull out diagrams from Kama Sutra of computing ("Erlang, Scala, Distributed Computing, Concurrency .." !?) when you still haven't had your first kiss?

I would think a subset of Go is a good beginner language but there is great deal of subtlety underneath the user friendly facade of some of its constructs.  But it is a fun language and that's a huge plus. And there is always BASIC.  

Another possibility is to take a till-death-do-us-part approach, in which case, start (and end) with LISP.

 

Thanks for your time!  
 
 

Brad Fitzpatrick

unread,
Oct 16, 2012, 10:19:14 PM10/16/12
to Joubin Houshyar, golan...@googlegroups.com

On Tue, Oct 16, 2012 at 7:14 PM, Joubin Houshyar <jhou...@gmail.com> wrote:


On Tuesday, October 16, 2012 12:39:17 PM UTC-4, Joubin Houshyar wrote:

On Tuesday, October 16, 2012 9:01:45 AM UTC-4, AahanK wrote:
I have read that beginner programmers can really start learning Go (golang) right away, but here are somethings I have also learnt (by the way, I only know HTML & CSS at this time).

It's often recommended that you at least learn JavaScript before learning C, so that it would be easier and you'd understand the language better.

I am going to learn JS anyway. What else should I learn before getting into Go, so that I can understand what and how the languages does things.

Erlang and Scala are often recommended for applications relying on concurrency, distributed computing, and also for developing real-time applications.

No language can be very good at everything. And since Go is pretty much a general purpose language, I would like to know how it compares to Erlang and Scala in aforementioned scenarios. Is Go roughly just as good (if not better)?

Programming is a contact sport, Ashan.


Your question kept popping up in my mind today and the above one liner would also benefit from a bit of elaboration. 

"contact sport": Programming is clearly an intellectual endeavor, but imo has a substantial intuitive base that can only be developed through actual act of writing code.  I entirely agree with the view that language/tools affect thought processes, but for the beginning programmer, I do not believe this is a critical issue.  This is a bit crude but the analogy is that of reading a lot of books about kissing and asking whether your first girl friend should be x, y, or z.  Chances are you will move on but the key is to have practiced kissing.  And why pull out diagrams from Kama Sutra of computing ("Erlang, Scala, Distributed Computing, Concurrency .." !?) when you still haven't had your first kiss?

PHP will kiss anyone.  Be careful, though.

Joubin Houshyar

unread,
Oct 16, 2012, 10:23:34 PM10/16/12
to golan...@googlegroups.com, Joubin Houshyar, brad...@golang.org
)) Good point.  BASIC is easy but virtuous.

Rob Pike

unread,
Oct 16, 2012, 10:30:56 PM10/16/12
to Brad Fitzpatrick, Joubin Houshyar, golan...@googlegroups.com
On Wed, Oct 17, 2012 at 1:19 PM, Brad Fitzpatrick <brad...@golang.org> wrote:
> PHP will kiss anyone. Be careful, though.

Is "kiss" the word you meant?

-rob

AahanK

unread,
Oct 16, 2012, 11:13:03 PM10/16/12
to golan...@googlegroups.com, Brad Fitzpatrick, Joubin Houshyar
Thanks for the detailed layout Rob.

Jon Renner

unread,
Oct 17, 2012, 12:48:08 AM10/17/12
to golan...@googlegroups.com
Has anyone learned Go without knowing C or C++ at all? I imagine pointers would be hard to grasp if you don't have that background.


On Tuesday, October 16, 2012 9:01:45 PM UTC+8, AahanK wrote:
I have read that beginner programmers can really start learning Go (golang) right away, but here are somethings I have also learnt (by the way, I only know HTML & CSS at this time).

It's often recommended that you at least learn JavaScript before learning C, so that it would be easier and you'd understand the language better.

I am going to learn JS anyway. What else should I learn before getting into Go, so that I can understand what and how the languages does things.

Erlang and Scala are often recommended for applications relying on concurrency, distributed computing, and also for developing real-time applications.

No language can be very good at everything. And since Go is pretty much a general purpose language, I would like to know how it compares to Erlang and Scala in aforementioned scenarios. Is Go roughly just as good (if not better)?

Thanks for your time!

Jesse McNelis

unread,
Oct 17, 2012, 1:07:23 AM10/17/12
to Jon Renner, golan...@googlegroups.com
On Wed, Oct 17, 2012 at 3:48 PM, Jon Renner <renn...@gmail.com> wrote:
> Has anyone learned Go without knowing C or C++ at all? I imagine pointers
> would be hard to grasp if you don't have that background.

People coming from python etc. tend to have trouble grasping values.
As a side effect of this they think they are having trouble grasping
pointers.





--
=====================
http://jessta.id.au

Kosztka Imre Dávid

unread,
Oct 17, 2012, 1:37:01 AM10/17/12
to Antonio Rodrigues, golan...@googlegroups.com
> Second question: it depends on the project but, to my best knowledge, Go can
> do everything Scala or Erlang do, albeit much more easily.

As far as I know with Erlang you are able to change one function on a
live system. So you can fix or upgrade without restarting the running
program.

--
Name : Kosztka Imre Dávid
E-mail: kosz...@gmail.com
Phone number: +36309213462
Mailing address: H-3700, Hungary Kazincbarcika Szeder utca 2.

Jan Mercl

unread,
Oct 17, 2012, 4:06:09 AM10/17/12
to Jon Renner, golan...@googlegroups.com
On Wed, Oct 17, 2012 at 6:48 AM, Jon Renner <renn...@gmail.com> wrote:
> Has anyone learned Go without knowing C or C++ at all?

Yes, me.

> I imagine pointers
> would be hard to grasp if you don't have that background.

No, C and C++ are not the only languages with pointers ;-)

-j

Ingo Oeser

unread,
Oct 17, 2012, 4:07:09 AM10/17/12
to golan...@googlegroups.com, Antonio Rodrigues
Actually you can do this always with the underlying machine as any kind of linker, many debuggers, any plugin, auto (re-)loading functionality or malware like e.g a virus proves. 
Erlang just provides ways to do that more easily and handles the actual event of doing this in a good way.

Rory McGuire

unread,
Oct 17, 2012, 4:19:30 AM10/17/12
to golan...@googlegroups.com
Here is my answer from a similar thread:
Re: [go-nuts] Good Computer Science & Algorithms Books(s) To Read Before Getting Into Programming?
On Wednesday, 17 October 2012 05:37:42 UTC+2, Patrick Higgins wrote:
I'm tempted to tell you to just pick up a copy of K&R and learn C. 
--Patrick
100% agree, learn C. Or alternatively don't learn C just spend a week or two doing this assignment(partime):
Make you own malloc(), calloc() and free() these should track allocations and on program shutdown should output memory usage and warn of any memory that was not freed.
Make a Hash table using your allocation functions. To test your hash table make a word counter that outputs the number of words and the number of times each word is used

Jump in!

my two cents.

Job van der Zwan

unread,
Oct 17, 2012, 4:59:06 AM10/17/12
to golan...@googlegroups.com, Paul
D:

Step 0: Invent the universe.
Step 1: Do A and B.

Larry Clapp

unread,
Oct 17, 2012, 7:44:20 AM10/17/12
to golan...@googlegroups.com
I would say just learn Go.  There are several books out there already.

30-odd years ago I started with BASIC (before it was "Basic", when it still had line numbers), then Pascal, then Turbo Pascal, some 8086 assembler, then C, some Lisp, and over the years since then ksh, some C++ (ew), more Lisp, and lots and lots of Perl (which I rather like, thank you very much, but Go is certainly growing on me.  :)  With tiny bits of APL and Forth and assorted other exotica thrown in.

I don't know that I really have a point there, except that a) whatever you learn to start off won't be the only language you ever know, by a long shot, and b) the important part is not really what you learn first, but writing code.  Pick an application you think is neat and have at it.  My first program was a D&D character generator in BASIC.  Later programs were Life, a Lisp interpreter, and a "Tradewars" BBS-game clone.  I learned a lot from each, and they were all really fun.  (You'd be surprised what you can learn about graph traversal cloning a game like Tradewars.  :)

Given how good Go is for web servers, I'd say try something webbish.  Cloning Reddit is popular in some circles.  Or write a blog (that is, write software to manage a blog; blogging about it is optional).

Whatever book you use, if it has exercises, do them.  There is no substitute for writing code.  (And running it, too!  "Beware of bugs in the above code; I have only proved it correct, not tried it."  -- Knuth)

My two cents.

-- Larry

Amirreza G

unread,
Oct 17, 2012, 7:52:29 AM10/17/12
to golan...@googlegroups.com
everyone who intrested in programming, needs to learn a very important language: English
if english is your first language, you will never understant how important this is for all of us non-native english speakers :-)

my first programming language was QBASIC, but if you want the truth, it was C that makes me understand what 
programming actually is. to me, Go is a high-level system programming language! so if you want to learn it, having
experience with a language like C could be really helpfull. i like the bottom-up approach.

Justin Israel

unread,
Oct 18, 2012, 5:35:36 PM10/18/12
to Jon Renner, golan...@googlegroups.com
Just my experience... I decided to finally try and learn C++ after having written Python for 7+ years. Then I discovered Go and got completely side-tracked. In comparing the two, I had trouble learning C++ because I was just so bored with it every time I would try learning. 
But I found Go to be a really simple way for a higher level programmer to get a fast, compiled language under their belt relatively easily. 


--
 
 

joel...@gmail.com

unread,
Nov 2, 2013, 6:46:47 PM11/2/13
to golan...@googlegroups.com, AahanK
Thanks for your help.

joel...@gmail.com

unread,
Nov 2, 2013, 7:31:15 PM11/2/13
to golan...@googlegroups.com
Very well-founded arguments, concise and very helpful explanations. Thanks!!!
Reply all
Reply to author
Forward
0 new messages