Go is recommended as the first programming language?

(Alexis Paques) #21

@iegomez I would do a Dynamic language for the exact same reason. Memory management is fundamental for a Software Engineer, but absolutely not for a beginner with great ideas.

While JS & Python are equally simple to start, I would give do Python over JS for the following reasons:

  • Has zero configuration environments (Pycharm, VS Code)
  • It forces you to indent your code and should give you cleaner habits.
  • You can create objects, OOP should be in the first language.

On the other side, for a web application, NodeJS is a good choice. There are plenty of libraries available and awesome stacks such as Mean (AngularJS) or Vue (best) but if you are not writing one of the latest standards such as ES6, it’s crappy.
I would not deploy a web application with Python for a lot of users, but for the first Proof of Concept or not many users, Python is very good. => Check Django or CherryPy, it makes it pretty simple for you to start with for your REST API. The front-end will still be with JS (try Vue.JS for the front-end, I love it)

(Ignacio Gómez) #22

That’s what I’m arguing: fundamentals are what matter, not easy languages to build toys and then mess up because you didn’t learn what was really going on. I’ve seen people learning with the “easy” stuff first and then struggling with something more serious or making awful mistakes. I think you need to understand well some concepts before taking shortcuts, and if anything, strict typing, compilation time errors, etc., are there to help someone new to programming.

(Vinicius Barreto) #23

Hello @iegomez, thank you very much for your response!
In some of the prerequisites you quoted I had opportunity to see in some courses and during work over the 12 years I have worked with server support, datacenters shell script and with Pascal / C in technical course.

Answering your question, I intend to develop for myself, in my entrepreneurial trajectory of startup.
I have some ideas in mind, but I know I want to do something that changes people’s lives and lives for the better.
It will be a web project where I think about separating the back end from the front end.

Once again I am very grateful to share your opinion :slight_smile:

(Michael De Barros) #24

No taxes for imported books to Brazil, as says the Constitution:

Limitations on the Power to Tax
Article 150. Without prejudice to any other guarantees ensured to the taxpayers,
the Union, the states, the Federal District and the municipalities are forbidden to: (CA
No. 3, 1993; CA No. 42, 2003)
VI – institute taxes on:
d) books, newspapers, periodicals and the paper intended for the printing

(Vinicius Barreto) #25

Hello @michaeldebarros thanks for the extremely helpful information!

(Jay Ts) #26


If you are able to get imported books without paying the import tax, can you please let me know? I have Brazilian friends who can use that information.

Oh … one more thing: Make sure to take a copy of the Constitution to your local Correios office when picking up your book! :wink: (That’s not a joke because I’ve heard many stories about government employees thinking that they know the rules, when actually they do not.)

From here (USA), I learned that I am not required to submit a Customs form when sending printed materials to Brazil, and the postal employees often don’t understand that. They tell me to include a form, and I say, “No, it’s ok for me to do this.” When I was able to get it past the local people, the rest worked, and it was delivered in Brazil.

(Vinicius Barreto) #27

Hello @jayts , it looks like the law is valid and is in effect!
The Brazilian federal constitution is not bad. On the contrary, she is good. The big problem is the government enforcing what the law determines.

Yes, I will remember this! :slight_smile:

(Steve Hook) #28

Hi @Vinicius_Barreto, from what you mentioned above. I also have production experience with PHP and Node.js. And some basic Java. From my experience I can tell that the language it’s just done the way a programming language should have always been made. So instead of picking another language and mess up your consciousness and taste I’d advice to pick up Go, it’s in fact very much like Node.js, with the ability to do easy prototyping, it’s powerful and blazing fast as C and of course statically typed which brings in a lot of advantages.

While that may sound very subjective, I can tell. dynamic languages are good, but it’s very often hard to maintain big projects written in dynamic languages and of course performance might be impacted. So when you want something which is fast and statically typed you would have definitely picked up something like C++ or Java. However they both have their interesting history and it’s really a big debate on this topic. And I myself liked C++ for performance and flexibility but hated it for memory management, and Java was just too verbose and the fact that is not run directly on machine also brought ambiguity to me.

Also good to mention Golang has build in nice architecture and clearly has taken advantage of many mistakes other languages have made and brought in the nicest features of other languages

So couple of good reasons for picking up Go are:

  1. It was created by geniuses
  2. It is easy to write and prototype
  3. It is statically typed and fast
  4. Has build in concurrency model
  5. It is meant to be kept simple and not overbloated
  6. The api is not likely to change or introduce breaking changes

Hope that helps

(David) #29

I am two years into a degree apprenticeship where I am studying CompSci/Business and work as an Application Development Analyst (basically a developer).

I have picked up Javascript, Python… and lately Go.

Programming takes time to learn, more than anything I think that what makes it hard for a lot of people is that they don’t know how to learn and quickly become discouraged.

The reason that there are so many tools (programming languages and frameworks) is because of the great variety of requirements throughout the industry…

I like python because it’s super fast to write code that does something. It’s great to quickly take data and write the business logic.

I like Go because I can give my end users a native binary they can click on that will run the program. I feel it’s easier to write testable, maintainable code with Go. I’m just not as fast at writing it.

Another issue I have encountered is finding it difficult to grasp data flows in my javascript and python because they are not strongly typed. What I mean is I’ll struggle to understand why a function is not working, and realise it’s because the type is a string and not an integer.

There is of course typescript, and pyre but that’s now something I have to learn on top of the languages. I don’t mind learning more things, but it’s a waste of time learning the same thing but done differently in many different languages.

If I could start again, I would just have picked up Go, and maybe some python for data science. The Go community here is awesome.

(Vinicius Barreto) #30

Hello @steevehook thank you for your contribution!

Of all the languages ​​I’ve tried, the ones that I was able to absorb learning well and solve small problems on my own after completing the basic course were “PHP, C # and Java”, which I’ll call “first group” here in this comment.

The languages ​​where I found it more difficult to absorb learning in “JavaScript, Node.js, C and Golang”, which I call “second group”.

From the basic course of all these languages, I noticed an unusual thing, which is that teachers always considered that the students in the “first group” courses were beginners and so they were careful to teach the small details so that the didactics of teaching would be perfect and so the student would become discouraged and give up.

In the “second group” courses, I noticed that the teacher “jumped” small details because I considered that the student was already a developer and was only studying a second language, so I skipped basic concepts, which was where I saw great difficulty in learning “real” programming language studied.

Of all of them I was very impressed as Visual Studio (I only experienced with C #) which helps the beginner programmer with auto-compilation showing of errors immediately while writing the code and the rich debug with graphics and etc.

I’ve also seen things similar to Golang and I was very impressed with the self-formatting / indentation of the code, however, I’m just a beginner and by no means would I be able to evaluate Go or give an opinion that should be considered publicly.

I was reading this article that I found by chance in my research. Because you program in PHP and Node.js, I think you’ll like it:

(Vinicius Barreto) #31

Hello @maceacherndjh Thank you for your contribution!
I liked Golang for the same reason:
Multi platform, fast, logical architecture and simple code.

However, I am the “self-demanding” type of person who wants to completely dominate a tool before beginning to use it in production.
I realized that Go, although simple, is not trivial. He is intelligent and needs a brain that is minimally intelligent to actually learn it.
It’s not a tutorial that you read in 40 minutes and you’re done doing something.
With the help of previous comments and a good reflecting time, I have come to the conclusion that I need to study Golang calmly and gradually progressing by reading some books, practicing and understanding the examples and solving simple problems first.

In short, I’m glad I had the courage to start studying Golang and I can say that just by trying to learn it, I improved my ability to think and solve problems in other languages. It seems that we begin to visualize differently the paths that we have available to solve a certain problem. And that makes me very excited.

(Steve Hook) #32

Yep I read this one, seems like a good article to form an opinion, however it’s somewhere biased. I say try the language and you’ll have your own opinion. Do not let the biased people opinions dictate what you should learn. I mean my opinion is as well an experience of my own. Yours might be different and you might not like the taste of this language.

Be skeptic and tinker with the language and you’ll find it fun to work with and in the end have an opinion to wether or not you should continue

(framp) #33

Level set: My programming language background: Started with Algol68, then continued with Pascal, Fortran, C, C++, Smalltalk, Java, Python, now using Go.

I don’t think go is the right language to start programming. It should be an OOP, typed and systematic programming language with a garbage collector and no pointers. This allows the programming beginner to concentrate on programming and design principles without fiddling with tricky language syntax and sematic. OO is common today, a typed language helps to detect programming errors at compile time, garbage collector and no pointers eliminate memory exceptions.

Therefore I see Java or any other typed OOP language is the right language to use first. When you start to learn other languages you will profit from everything you learned before with this language.

Go is not fully an OOP, has some inconsistent syntax and sematic constructs (no pure contructors, make constructors) and others.

Keep in mind: As a professional you have to learn and use other programming languages later on in your programming career and you should build a profound programming base for all these different languages.

Note: I like go - but from my point of view it’s not the right language to start with.

(Vinicius Barreto) #34

I totally agree with you :slight_smile:

(Eric Lindblad) #35

Bjarne Stroustrup: The 5 Programming Languages You Need to Know

Larry Wall: 5 Programming Languages Everyone Should Know

John Ousterhout: A Philosophy of Software Design


Links on the blog Post to slides from an earlier version of the talk, and to Parnas (1972 circa) paper.